forked from jasder/antlr
Add warning 125: implicit definition of token in parser
This commit is contained in:
parent
3849cd572d
commit
b433c2ae34
|
@ -31,6 +31,7 @@ package org.antlr.v4.semantics;
|
||||||
|
|
||||||
import org.antlr.v4.analysis.LeftRecursiveRuleTransformer;
|
import org.antlr.v4.analysis.LeftRecursiveRuleTransformer;
|
||||||
import org.antlr.v4.parse.ANTLRParser;
|
import org.antlr.v4.parse.ANTLRParser;
|
||||||
|
import org.antlr.v4.runtime.Token;
|
||||||
import org.antlr.v4.tool.*;
|
import org.antlr.v4.tool.*;
|
||||||
import org.antlr.v4.tool.ast.GrammarAST;
|
import org.antlr.v4.tool.ast.GrammarAST;
|
||||||
|
|
||||||
|
@ -174,6 +175,9 @@ public class SemanticPipeline {
|
||||||
String lit = alias.getChild(1).getText();
|
String lit = alias.getChild(1).getText();
|
||||||
g.defineTokenAlias(name, lit);
|
g.defineTokenAlias(name, lit);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
g.defineTokenName(alias.getText());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// DEFINE TOKEN TYPES FOR X : 'x' ; RULES
|
// DEFINE TOKEN TYPES FOR X : 'x' ; RULES
|
||||||
|
@ -187,7 +191,13 @@ public class SemanticPipeline {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// DEFINE TOKEN TYPES FOR TOKEN REFS LIKE ID, INT
|
// DEFINE TOKEN TYPES FOR TOKEN REFS LIKE ID, INT
|
||||||
for (GrammarAST idAST : tokenIDs) { g.defineTokenName(idAST.getText()); }
|
for (GrammarAST idAST : tokenIDs) {
|
||||||
|
if (g.getTokenType(idAST.getText()) == Token.INVALID_TYPE) {
|
||||||
|
g.tool.errMgr.grammarError(ErrorType.IMPLICIT_TOKEN_DEFINITION, g.fileName, idAST.token, idAST.getText());
|
||||||
|
}
|
||||||
|
|
||||||
|
g.defineTokenName(idAST.getText());
|
||||||
|
}
|
||||||
|
|
||||||
// DEFINE TOKEN TYPES FOR STRING LITERAL REFS LIKE 'while', ';'
|
// DEFINE TOKEN TYPES FOR STRING LITERAL REFS LIKE 'while', ';'
|
||||||
for (String s : strings) { g.defineStringLiteral(s); }
|
for (String s : strings) { g.defineStringLiteral(s); }
|
||||||
|
|
|
@ -144,6 +144,8 @@ public enum ErrorType {
|
||||||
RULE_WITH_TOO_FEW_ALT_LABELS(122, "rule <arg>: must label all alternatives or none", ErrorSeverity.ERROR),
|
RULE_WITH_TOO_FEW_ALT_LABELS(122, "rule <arg>: must label all alternatives or none", ErrorSeverity.ERROR),
|
||||||
ALT_LABEL_REDEF(123, "rule alt label <arg> redefined in rule <arg2>, originally in <arg3>", ErrorSeverity.ERROR),
|
ALT_LABEL_REDEF(123, "rule alt label <arg> redefined in rule <arg2>, originally in <arg3>", ErrorSeverity.ERROR),
|
||||||
ALT_LABEL_CONFLICTS_WITH_RULE(124, "rule alt label <arg> conflicts with rule <arg2>", ErrorSeverity.ERROR),
|
ALT_LABEL_CONFLICTS_WITH_RULE(124, "rule alt label <arg> conflicts with rule <arg2>", ErrorSeverity.ERROR),
|
||||||
|
IMPLICIT_TOKEN_DEFINITION(125, "implicit definition of token <arg> in parser", ErrorSeverity.WARNING),
|
||||||
|
|
||||||
/** Documentation comment is unterminated */
|
/** Documentation comment is unterminated */
|
||||||
//UNTERMINATED_DOC_COMMENT(, "", ErrorSeverity.ERROR),
|
//UNTERMINATED_DOC_COMMENT(, "", ErrorSeverity.ERROR),
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue