Emit grammar file name instead of generated class file name in generated implementation of getGrammarFileName(). Implement getGrammarFileName() in generated parser.

This commit is contained in:
Sam Harwell 2012-02-20 17:14:19 -06:00
parent 8773c34375
commit d166e6d5d1
3 changed files with 10 additions and 1 deletions

View File

@ -133,6 +133,9 @@ public class <parser.name> extends <superclass> {
<parser:(ctor)()>
<funcs; separator="\n">
@Override
public String getGrammarFileName() { return "<parser.grammarFileName>"; }
@Override
public String[] getTokenNames() { return tokenNames; }
@Override
@ -720,7 +723,7 @@ public class <lexer.name> extends Lexer {
_interp = new LexerATNSimulator(this,_ATN);
}
public String getGrammarFileName() { return "<lexerFile.fileName>"; }
public String getGrammarFileName() { return "<lexer.grammarFileName>"; }
@Override
public String[] getTokenNames() { return tokenNames; }

View File

@ -35,6 +35,7 @@ import org.antlr.v4.tool.Grammar;
import org.antlr.v4.tool.LexerGrammar;
import org.antlr.v4.tool.Rule;
import java.io.File;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
@ -42,6 +43,7 @@ import java.util.Set;
public class Lexer extends OutputModelObject {
public String name;
public String grammarFileName;
public Map<String,Integer> tokens;
public LexerFile file;
public String[] tokenNames;
@ -58,6 +60,7 @@ public class Lexer extends OutputModelObject {
this.factory = factory;
this.file = file; // who contains us?
Grammar g = factory.getGrammar();
grammarFileName = new File(g.fileName).getName();
name = g.getRecognizerName();
tokens = new LinkedHashMap<String,Integer>();
LexerGrammar lg = (LexerGrammar)g;

View File

@ -33,11 +33,13 @@ import org.antlr.v4.codegen.*;
import org.antlr.v4.codegen.model.chunk.*;
import org.antlr.v4.tool.*;
import java.io.File;
import java.util.*;
/** */
public class Parser extends OutputModelObject {
public String name;
public String grammarFileName;
public String grammarName;
@ModelElement public ActionChunk superclass;
public Map<String,Integer> tokens;
@ -55,6 +57,7 @@ public class Parser extends OutputModelObject {
this.factory = factory;
this.file = file; // who contains us?
Grammar g = factory.getGrammar();
grammarFileName = new File(g.fileName).getName();
grammarName = g.name;
name = g.getRecognizerName();
tokens = new LinkedHashMap<String,Integer>();