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)()> <parser:(ctor)()>
<funcs; separator="\n"> <funcs; separator="\n">
@Override
public String getGrammarFileName() { return "<parser.grammarFileName>"; }
@Override @Override
public String[] getTokenNames() { return tokenNames; } public String[] getTokenNames() { return tokenNames; }
@Override @Override
@ -720,7 +723,7 @@ public class <lexer.name> extends Lexer {
_interp = new LexerATNSimulator(this,_ATN); _interp = new LexerATNSimulator(this,_ATN);
} }
public String getGrammarFileName() { return "<lexerFile.fileName>"; } public String getGrammarFileName() { return "<lexer.grammarFileName>"; }
@Override @Override
public String[] getTokenNames() { return tokenNames; } 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.LexerGrammar;
import org.antlr.v4.tool.Rule; import org.antlr.v4.tool.Rule;
import java.io.File;
import java.util.Collection; import java.util.Collection;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
@ -42,6 +43,7 @@ import java.util.Set;
public class Lexer extends OutputModelObject { public class Lexer extends OutputModelObject {
public String name; public String name;
public String grammarFileName;
public Map<String,Integer> tokens; public Map<String,Integer> tokens;
public LexerFile file; public LexerFile file;
public String[] tokenNames; public String[] tokenNames;
@ -58,6 +60,7 @@ public class Lexer extends OutputModelObject {
this.factory = factory; this.factory = factory;
this.file = file; // who contains us? this.file = file; // who contains us?
Grammar g = factory.getGrammar(); Grammar g = factory.getGrammar();
grammarFileName = new File(g.fileName).getName();
name = g.getRecognizerName(); name = g.getRecognizerName();
tokens = new LinkedHashMap<String,Integer>(); tokens = new LinkedHashMap<String,Integer>();
LexerGrammar lg = (LexerGrammar)g; 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.codegen.model.chunk.*;
import org.antlr.v4.tool.*; import org.antlr.v4.tool.*;
import java.io.File;
import java.util.*; import java.util.*;
/** */ /** */
public class Parser extends OutputModelObject { public class Parser extends OutputModelObject {
public String name; public String name;
public String grammarFileName;
public String grammarName; public String grammarName;
@ModelElement public ActionChunk superclass; @ModelElement public ActionChunk superclass;
public Map<String,Integer> tokens; public Map<String,Integer> tokens;
@ -55,6 +57,7 @@ public class Parser extends OutputModelObject {
this.factory = factory; this.factory = factory;
this.file = file; // who contains us? this.file = file; // who contains us?
Grammar g = factory.getGrammar(); Grammar g = factory.getGrammar();
grammarFileName = new File(g.fileName).getName();
grammarName = g.name; grammarName = g.name;
name = g.getRecognizerName(); name = g.getRecognizerName();
tokens = new LinkedHashMap<String,Integer>(); tokens = new LinkedHashMap<String,Integer>();