|
|
@@ -19,7 +19,7 @@ import org.antlr.v4.runtime.CommonTokenStream;
|
|
|
import org.antlr.v4.runtime.Lexer;
|
|
|
import org.antlr.v4.runtime.Parser;
|
|
|
import org.antlr.v4.runtime.ParserRuleContext;
|
|
|
-import org.antlr.v4.runtime.Token;
|
|
|
+import org.antlr.v4.runtime.Vocabulary;
|
|
|
import org.antlr.v4.runtime.tree.RuleNode;
|
|
|
import org.antlr.v4.runtime.tree.TerminalNode;
|
|
|
|
|
|
@@ -38,7 +38,9 @@ class G4ParserGenerated implements G4Parser {
|
|
|
|
|
|
protected final G4ErrorHandler handler;
|
|
|
|
|
|
- private final String[] lexerRules;
|
|
|
+ private final Vocabulary vocabulary;
|
|
|
+
|
|
|
+ private final Set<String> lexerRules;
|
|
|
|
|
|
private final String[] parserRules;
|
|
|
|
|
|
@@ -49,8 +51,13 @@ class G4ParserGenerated implements G4Parser {
|
|
|
this.parser = parser;
|
|
|
this.handler = handler;
|
|
|
|
|
|
- this.lexerRules = (String[])lexer.field("ruleNames").get().getStatic();
|
|
|
+ this.vocabulary = (Vocabulary)parser.field("VOCABULARY").get().getStatic();
|
|
|
this.parserRules = (String[])parser.field("ruleNames").get().getStatic();
|
|
|
+ this.lexerRules = new OpenSet<>();
|
|
|
+
|
|
|
+ for(int i = 0, n = vocabulary.getMaxTokenType(); i<=n; i++) {
|
|
|
+ lexerRules.add(vocabulary.getSymbolicName(i));
|
|
|
+ }
|
|
|
|
|
|
this.branchValidator = new OpenSet<>();
|
|
|
|
|
|
@@ -82,7 +89,7 @@ class G4ParserGenerated implements G4Parser {
|
|
|
|
|
|
@Override
|
|
|
public boolean validateTokenName(String tokenName) {
|
|
|
- return Arrays.asList(lexerRules).contains(tokenName);
|
|
|
+ return lexerRules.contains(tokenName);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -97,13 +104,7 @@ class G4ParserGenerated implements G4Parser {
|
|
|
|
|
|
@Override
|
|
|
public String tokenName(int tokenIndex) {
|
|
|
- if(tokenIndex == Token.EOF) {
|
|
|
- return "EOF";
|
|
|
- }
|
|
|
- if(tokenIndex <0 || tokenIndex>=lexerRules.length) {
|
|
|
- return "?";
|
|
|
- }
|
|
|
- return lexerRules[tokenIndex-1];
|
|
|
+ return vocabulary.getSymbolicName(tokenIndex);
|
|
|
}
|
|
|
|
|
|
@Override
|