Package org.antlr.v4.semantics
Class BasicSemanticChecks
java.lang.Object
org.antlr.runtime.BaseRecognizer
org.antlr.runtime.tree.TreeParser
org.antlr.v4.parse.GrammarTreeVisitor
org.antlr.v4.semantics.BasicSemanticChecks
No side-effects except for setting options into the appropriate node.
TODO: make the side effects into a separate pass this
Invokes check rules for these:
FILE_AND_GRAMMAR_NAME_DIFFER
LEXER_RULES_NOT_ALLOWED
PARSER_RULES_NOT_ALLOWED
CANNOT_ALIAS_TOKENS
ARGS_ON_TOKEN_REF
ILLEGAL_OPTION
REWRITE_OR_OP_WITH_NO_OUTPUT_OPTION
NO_RULES
REWRITE_FOR_MULTI_ELEMENT_ALT
HETERO_ILLEGAL_IN_REWRITE_ALT
AST_OP_WITH_NON_AST_OUTPUT_OPTION
AST_OP_IN_ALT_WITH_REWRITE
CONFLICTING_OPTION_IN_TREE_FILTER
WILDCARD_AS_ROOT
INVALID_IMPORT
TOKEN_VOCAB_IN_DELEGATE
IMPORT_NAME_CLASH
REPEATED_PREQUEL
TOKEN_NAMES_MUST_START_UPPER
-
Nested Class Summary
Nested classes/interfaces inherited from class org.antlr.v4.parse.GrammarTreeVisitor
GrammarTreeVisitor.action_return, GrammarTreeVisitor.actionElement_return, GrammarTreeVisitor.alternative_return, GrammarTreeVisitor.astOperand_return, GrammarTreeVisitor.atom_return, GrammarTreeVisitor.block_return, GrammarTreeVisitor.blockSet_return, GrammarTreeVisitor.blockSuffix_return, GrammarTreeVisitor.channelSpec_return, GrammarTreeVisitor.channelsSpec_return, GrammarTreeVisitor.delegateGrammar_return, GrammarTreeVisitor.delegateGrammars_return, GrammarTreeVisitor.DFA38, GrammarTreeVisitor.ebnfSuffix_return, GrammarTreeVisitor.element_return, GrammarTreeVisitor.elementOption_return, GrammarTreeVisitor.elementOptions_return, GrammarTreeVisitor.exceptionGroup_return, GrammarTreeVisitor.exceptionHandler_return, GrammarTreeVisitor.finallyClause_return, GrammarTreeVisitor.grammarSpec_return, GrammarTreeVisitor.labeledElement_return, GrammarTreeVisitor.lexerAlternative_return, GrammarTreeVisitor.lexerAtom_return, GrammarTreeVisitor.lexerBlock_return, GrammarTreeVisitor.lexerCommand_return, GrammarTreeVisitor.lexerCommandExpr_return, GrammarTreeVisitor.lexerElement_return, GrammarTreeVisitor.lexerElements_return, GrammarTreeVisitor.lexerOuterAlternative_return, GrammarTreeVisitor.lexerRule_return, GrammarTreeVisitor.lexerRuleBlock_return, GrammarTreeVisitor.lexerSubrule_return, GrammarTreeVisitor.locals_return, GrammarTreeVisitor.mode_return, GrammarTreeVisitor.option_return, GrammarTreeVisitor.optionsSpec_return, GrammarTreeVisitor.optionValue_return, GrammarTreeVisitor.outerAlternative_return, GrammarTreeVisitor.prequelConstruct_return, GrammarTreeVisitor.prequelConstructs_return, GrammarTreeVisitor.range_return, GrammarTreeVisitor.rule_return, GrammarTreeVisitor.ruleAction_return, GrammarTreeVisitor.ruleBlock_return, GrammarTreeVisitor.ruleModifier_return, GrammarTreeVisitor.ruleref_return, GrammarTreeVisitor.ruleReturns_return, GrammarTreeVisitor.rules_return, GrammarTreeVisitor.setElement_return, GrammarTreeVisitor.subrule_return, GrammarTreeVisitor.terminal_return, GrammarTreeVisitor.throwsSpec_return, GrammarTreeVisitor.tokenSpec_return, GrammarTreeVisitor.tokensSpec_return
-
Field Summary
FieldsModifier and TypeFieldDescriptionboolean
When this istrue
, the semantic checks will reportErrorType.UNRECOGNIZED_ASSOC_OPTION
where appropriate.private boolean
Value of caseInsensitive option (false if not defined)private boolean
This istrue
from the timediscoverLexerRule(org.antlr.v4.tool.ast.RuleAST, org.antlr.v4.tool.ast.GrammarAST, java.util.List<org.antlr.v4.tool.ast.GrammarAST>, org.antlr.v4.tool.ast.GrammarAST, org.antlr.v4.tool.ast.GrammarAST)
is called for a lexer rule with thefragment
modifier untilexitLexerRule(org.antlr.v4.tool.ast.GrammarAST)
is called.protected int
This field is used for reporting theErrorType.MODE_WITHOUT_RULES
error when necessary.Set of valid imports.Fields inherited from class org.antlr.v4.parse.GrammarTreeVisitor
ACTION, ACTION_CHAR_LITERAL, ACTION_ESC, ACTION_STRING_LITERAL, ALT, ARG_ACTION, ARG_OR_CHARSET, ASSIGN, AT, BLOCK, CATCH, CHANNELS, CLOSURE, COLON, COLONCOLON, COMBINED, COMMA, COMMENT, currentModeName, currentOuterAltNumber, currentOuterAltRoot, currentRuleAST, currentRuleName, dfa38, DOC_COMMENT, DOLLAR, DOT, ELEMENT_OPTIONS, EOF, EPSILON, ERRCHAR, ESC_SEQ, FINALLY, FOLLOW_ACTION_in_action596, FOLLOW_ACTION_in_actionElement1679, FOLLOW_ACTION_in_actionElement1687, FOLLOW_ACTION_in_block2430, FOLLOW_ACTION_in_element1868, FOLLOW_ACTION_in_element1897, FOLLOW_ACTION_in_elementOption2733, FOLLOW_ACTION_in_exceptionHandler998, FOLLOW_ACTION_in_finallyClause1025, FOLLOW_ACTION_in_lexerElement1468, FOLLOW_ACTION_in_lexerElement1497, FOLLOW_action_in_prequelConstruct234, FOLLOW_ACTION_in_ruleAction1139, FOLLOW_ALT_in_alternative1730, FOLLOW_ALT_in_alternative1743, FOLLOW_ALT_in_lexerElements1428, FOLLOW_alternative_in_block2433, FOLLOW_alternative_in_outerAlternative1362, FOLLOW_ARG_ACTION_in_exceptionHandler996, FOLLOW_ARG_ACTION_in_locals1055, FOLLOW_ARG_ACTION_in_rule817, FOLLOW_ARG_ACTION_in_ruleref2467, FOLLOW_ARG_ACTION_in_ruleReturns1080, FOLLOW_ASSIGN_in_delegateGrammar420, FOLLOW_ASSIGN_in_elementOption2683, FOLLOW_ASSIGN_in_elementOption2707, FOLLOW_ASSIGN_in_elementOption2727, FOLLOW_ASSIGN_in_elementOption2749, FOLLOW_ASSIGN_in_option295, FOLLOW_AT_in_action585, FOLLOW_AT_in_ruleAction1135, FOLLOW_atom_in_astOperand1959, FOLLOW_atom_in_element1856, FOLLOW_block_in_astOperand1976, FOLLOW_BLOCK_in_block2422, FOLLOW_block_in_element1937, FOLLOW_BLOCK_in_lexerBlock1543, FOLLOW_BLOCK_in_lexerRuleBlock1217, FOLLOW_BLOCK_in_ruleBlock1281, FOLLOW_block_in_subrule2034, FOLLOW_block_in_subrule2041, FOLLOW_blockSet_in_astOperand1967, FOLLOW_blockSet_in_atom2225, FOLLOW_blockSet_in_element1928, FOLLOW_blockSet_in_lexerAtom1592, FOLLOW_blockSet_in_lexerAtom1603, FOLLOW_blockSuffix_in_lexerSubrule2066, FOLLOW_blockSuffix_in_subrule2032, FOLLOW_CATCH_in_exceptionHandler994, FOLLOW_CHANNELS_in_channelsSpec532, FOLLOW_channelSpec_in_channelsSpec534, FOLLOW_channelsSpec_in_prequelConstruct224, FOLLOW_delegateGrammar_in_delegateGrammars391, FOLLOW_delegateGrammars_in_prequelConstruct204, FOLLOW_DOT_in_atom2163, FOLLOW_DOT_in_atom2174, FOLLOW_ebnfSuffix_in_blockSuffix2102, FOLLOW_element_in_alternative1735, FOLLOW_element_in_labeledElement2007, FOLLOW_ELEMENT_OPTIONS_in_elementOptions2630, FOLLOW_elementOption_in_elementOptions2632, FOLLOW_elementOptions_in_actionElement1689, FOLLOW_elementOptions_in_actionElement1707, FOLLOW_elementOptions_in_alternative1732, FOLLOW_elementOptions_in_alternative1745, FOLLOW_elementOptions_in_atom2190, FOLLOW_elementOptions_in_element1899, FOLLOW_elementOptions_in_element1912, FOLLOW_elementOptions_in_lexerAtom1616, FOLLOW_elementOptions_in_lexerElement1499, FOLLOW_elementOptions_in_lexerElement1512, FOLLOW_elementOptions_in_ruleref2470, FOLLOW_elementOptions_in_setElement2288, FOLLOW_elementOptions_in_setElement2302, FOLLOW_elementOptions_in_terminal2543, FOLLOW_elementOptions_in_terminal2582, FOLLOW_EPSILON_in_alternative1748, FOLLOW_EPSILON_in_lexerElement1520, FOLLOW_exceptionGroup_in_rule918, FOLLOW_exceptionHandler_in_exceptionGroup965, FOLLOW_FINALLY_in_finallyClause1023, FOLLOW_finallyClause_in_exceptionGroup968, FOLLOW_FRAGMENT_in_lexerRule712, FOLLOW_GRAMMAR_in_grammarSpec85, FOLLOW_ID_in_action589, FOLLOW_ID_in_action594, FOLLOW_ID_in_atom2165, FOLLOW_ID_in_atom2176, FOLLOW_ID_in_channelSpec557, FOLLOW_ID_in_delegateGrammar424, FOLLOW_ID_in_delegateGrammar428, FOLLOW_ID_in_delegateGrammar443, FOLLOW_ID_in_elementOption2663, FOLLOW_ID_in_elementOption2687, FOLLOW_ID_in_elementOption2691, FOLLOW_ID_in_elementOption2709, FOLLOW_ID_in_elementOption2729, FOLLOW_ID_in_elementOption2751, FOLLOW_ID_in_grammarSpec87, FOLLOW_ID_in_labeledElement2005, FOLLOW_ID_in_lexerCommand1776, FOLLOW_ID_in_lexerCommand1794, FOLLOW_ID_in_mode664, FOLLOW_ID_in_option297, FOLLOW_ID_in_ruleAction1137, FOLLOW_ID_in_throwsSpec1108, FOLLOW_ID_in_tokenSpec502, FOLLOW_IMPORT_in_delegateGrammars389, FOLLOW_INT_in_elementOption2755, FOLLOW_labeledElement_in_element1851, FOLLOW_LEXER_ACTION_CALL_in_lexerCommand1774, FOLLOW_LEXER_ALT_ACTION_in_lexerAlternative1384, FOLLOW_LEXER_CHAR_SET_in_lexerAtom1635, FOLLOW_LEXER_CHAR_SET_in_setElement2397, FOLLOW_lexerAlternative_in_lexerBlock1548, FOLLOW_lexerAlternative_in_lexerOuterAlternative1340, FOLLOW_lexerAtom_in_lexerElement1456, FOLLOW_lexerBlock_in_lexerSubrule2068, FOLLOW_lexerBlock_in_lexerSubrule2075, FOLLOW_lexerCommand_in_lexerAlternative1388, FOLLOW_lexerCommandExpr_in_lexerCommand1778, FOLLOW_lexerElement_in_lexerElements1430, FOLLOW_lexerElements_in_lexerAlternative1386, FOLLOW_lexerElements_in_lexerAlternative1400, FOLLOW_lexerOuterAlternative_in_lexerRuleBlock1236, FOLLOW_lexerRule_in_mode668, FOLLOW_lexerRule_in_rules631, FOLLOW_lexerRuleBlock_in_lexerRule745, FOLLOW_lexerSubrule_in_lexerElement1461, FOLLOW_LOCALS_in_locals1053, FOLLOW_locals_in_rule856, FOLLOW_mode_in_grammarSpec125, FOLLOW_MODE_in_mode662, FOLLOW_NOT_in_astOperand1965, FOLLOW_NOT_in_astOperand1974, FOLLOW_NOT_in_element1926, FOLLOW_NOT_in_element1935, FOLLOW_NOT_in_lexerAtom1590, FOLLOW_option_in_optionsSpec261, FOLLOW_OPTIONS_in_optionsSpec259, FOLLOW_optionsSpec_in_block2424, FOLLOW_optionsSpec_in_lexerBlock1545, FOLLOW_optionsSpec_in_lexerRule724, FOLLOW_optionsSpec_in_prequelConstruct194, FOLLOW_optionsSpec_in_rule871, FOLLOW_optionValue_in_option301, FOLLOW_outerAlternative_in_ruleBlock1300, FOLLOW_prequelConstruct_in_prequelConstructs167, FOLLOW_prequelConstructs_in_grammarSpec106, FOLLOW_range_in_element1920, FOLLOW_range_in_lexerAtom1645, FOLLOW_RANGE_in_range2507, FOLLOW_RANGE_in_setElement2366, FOLLOW_RETURNS_in_ruleReturns1078, FOLLOW_RULE_in_lexerRule694, FOLLOW_RULE_in_rule790, FOLLOW_rule_in_rules629, FOLLOW_RULE_REF_in_rule792, FOLLOW_RULE_REF_in_ruleref2463, FOLLOW_ruleAction_in_block2427, FOLLOW_ruleAction_in_rule885, FOLLOW_ruleBlock_in_rule916, FOLLOW_ruleModifier_in_rule806, FOLLOW_RULEMODIFIERS_in_lexerRule708, FOLLOW_RULEMODIFIERS_in_rule801, FOLLOW_ruleref_in_atom2178, FOLLOW_ruleref_in_atom2235, FOLLOW_ruleref_in_lexerAtom1655, FOLLOW_ruleReturns_in_rule830, FOLLOW_rules_in_grammarSpec123, FOLLOW_RULES_in_rules624, FOLLOW_SEMPRED_in_actionElement1697, FOLLOW_SEMPRED_in_actionElement1705, FOLLOW_SEMPRED_in_element1882, FOLLOW_SEMPRED_in_element1910, FOLLOW_SEMPRED_in_lexerElement1482, FOLLOW_SEMPRED_in_lexerElement1510, FOLLOW_SET_in_blockSet2260, FOLLOW_set_in_labeledElement1999, FOLLOW_setElement_in_blockSet2262, FOLLOW_STRING_LITERAL_in_elementOption2713, FOLLOW_STRING_LITERAL_in_range2509, FOLLOW_STRING_LITERAL_in_range2511, FOLLOW_STRING_LITERAL_in_setElement2286, FOLLOW_STRING_LITERAL_in_setElement2312, FOLLOW_STRING_LITERAL_in_setElement2370, FOLLOW_STRING_LITERAL_in_setElement2374, FOLLOW_STRING_LITERAL_in_terminal2541, FOLLOW_STRING_LITERAL_in_terminal2566, FOLLOW_subrule_in_element1861, FOLLOW_terminal_in_atom2167, FOLLOW_terminal_in_atom2217, FOLLOW_terminal_in_lexerAtom1579, FOLLOW_THROWS_in_throwsSpec1106, FOLLOW_throwsSpec_in_rule843, FOLLOW_TOKEN_REF_in_lexerRule696, FOLLOW_TOKEN_REF_in_setElement2300, FOLLOW_TOKEN_REF_in_setElement2337, FOLLOW_TOKEN_REF_in_terminal2580, FOLLOW_TOKEN_REF_in_terminal2593, FOLLOW_TOKENS_SPEC_in_tokensSpec477, FOLLOW_tokenSpec_in_tokensSpec479, FOLLOW_tokensSpec_in_prequelConstruct214, FOLLOW_WILDCARD_in_atom2188, FOLLOW_WILDCARD_in_atom2201, FOLLOW_WILDCARD_in_lexerAtom1614, FOLLOW_WILDCARD_in_lexerAtom1627, FRAGMENT, GRAMMAR, grammarName, GT, HEX_DIGIT, ID, IMPORT, INT, LEXER, LEXER_ACTION_CALL, LEXER_ALT_ACTION, LEXER_CHAR_SET, LOCALS, LPAREN, LT, MODE, NameChar, NameStartChar, NESTED_ACTION, NLCHARS, NOT, OPTIONAL, OPTIONS, OR, PARSER, PLUS, PLUS_ASSIGN, POSITIVE_CLOSURE, POUND, PRIVATE, PROTECTED, PUBLIC, QUESTION, RANGE, RARROW, RBRACE, RETURNS, rewriteEBNFLevel, RPAREN, RULE, RULE_REF, RULEMODIFIERS, RULES, SEMI, SEMPRED, SET, SRC, STAR, STRING_LITERAL, THROWS, TOKEN_REF, tokenNames, TOKENS_SPEC, UNICODE_ESC, UNICODE_EXTENDED_ESC, UnicodeBOM, WILDCARD, WS, WSCHARS, WSNLCHARS
Fields inherited from class org.antlr.runtime.tree.TreeParser
DOWN, input, UP
Fields inherited from class org.antlr.runtime.BaseRecognizer
DEFAULT_TOKEN_CHANNEL, HIDDEN, INITIAL_FOLLOW_STACK_SIZE, MEMO_RULE_FAILED, MEMO_RULE_UNKNOWN, NEXT_TOKEN_RULE_NAME, state
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
actionInAlt
(ActionAST action) void
blockOption
(GrammarAST ID, GrammarAST valueAST) private void
checkCaseInsensitiveOption
(org.antlr.runtime.Token optionID, GrammarAST valueAST, int parentType) (package private) void
checkChannelDefinition
(org.antlr.runtime.Token tokenID) protected void
Make sure that action is last element in outer alt; here action, a2, z, and zz are bad, but a3 is ok: (RULE A (BLOCK (ALT {action} 'a'))) (RULE B (BLOCK (ALT (BLOCK (ALT {a2} 'x') (ALT 'y')) {a3}))) (RULE C (BLOCK (ALT 'd' {z}) (ALT 'e' {zz})))(package private) boolean
checkElementOptions
(GrammarASTWithOptions elem, GrammarAST ID, GrammarAST valueAST) Check option is appropriate for elem; parent of ID is ELEMENT_OPTIONS(package private) void
checkGrammarName
(org.antlr.runtime.Token nameToken) (package private) void
checkImport
(org.antlr.runtime.Token importID) (package private) void
checkInvalidRuleDef
(org.antlr.runtime.Token ruleID) (package private) void
checkInvalidRuleRef
(org.antlr.runtime.Token ruleID) (package private) void
checkNumPrequels
(List<GrammarAST> options, List<GrammarAST> imports, List<GrammarAST> tokens) (package private) void
checkNumRules
(GrammarAST rulesNode) (package private) void
checkOptions
(GrammarAST parent, org.antlr.runtime.Token optionID, GrammarAST valueAST) Check option is appropriate for grammar, rule, subrule(package private) boolean
checkRuleRefOptions
(RuleRefAST elem, GrammarAST ID, GrammarAST valueAST) (package private) void
checkTokenDefinition
(org.antlr.runtime.Token tokenID) (package private) boolean
checkTokenOptions
(TerminalAST elem, GrammarAST ID, GrammarAST valueAST) void
void
void
discoverGrammar
(GrammarRootAST root, GrammarAST ID) void
discoverLexerRule
(RuleAST rule, GrammarAST ID, List<GrammarAST> modifiers, GrammarAST options, GrammarAST block) void
discoverRule
(RuleAST rule, GrammarAST ID, List<GrammarAST> modifiers, ActionAST arg, ActionAST returns, GrammarAST thrws, GrammarAST options, ActionAST locals, List<GrammarAST> actions, GrammarAST block) void
discoverRules
(GrammarAST rules) void
elementOption
(GrammarASTWithOptions elem, GrammarAST ID, GrammarAST valueAST) protected void
enterChannelsSpec
(GrammarAST tree) protected void
enterLexerCommand
(GrammarAST tree) protected void
enterLexerElement
(GrammarAST tree) protected void
enterMode
(GrammarAST tree) protected void
enterTerminal
(GrammarAST tree) protected void
exitLexerRule
(GrammarAST tree) protected void
exitMode
(GrammarAST tree) void
finishPrequels
(GrammarAST firstPrequel) void
finishRule
(RuleAST rule, GrammarAST ID, GrammarAST block) void
grammarOption
(GrammarAST ID, GrammarAST valueAST) void
importGrammar
(GrammarAST label, GrammarAST ID) void
label
(GrammarAST op, GrammarAST ID, GrammarAST element) void
modeDef
(GrammarAST m, GrammarAST ID) void
process()
void
ruleOption
(GrammarAST ID, GrammarAST valueAST) void
ruleRef
(GrammarAST ref, ActionAST arg) Methods inherited from class org.antlr.v4.parse.GrammarTreeVisitor
action, actionElement, alternative, astOperand, atom, block, blockSet, blockSuffix, channelSpec, channelsSpec, delegateGrammar, delegateGrammars, discoverAlt, discoverOuterAlt, ebnfSuffix, element, elementOption, elementOptions, enterAction, enterActionElement, enterAlternative, enterAstOperand, enterAtom, enterBlock, enterBlockSet, enterBlockSuffix, enterChannelSpec, enterDelegateGrammar, enterDelegateGrammars, enterEbnfSuffix, enterElement, enterElementOption, enterElementOptions, enterExceptionGroup, enterExceptionHandler, enterFinallyClause, enterGrammarSpec, enterLabeledElement, enterLexerAlternative, enterLexerAtom, enterLexerBlock, enterLexerCommandExpr, enterLexerElements, enterLexerOuterAlternative, enterLexerRule, enterLexerRuleBlock, enterLexerSubrule, enterLocals, enterOption, enterOptionsSpec, enterOptionValue, enterOuterAlternative, enterPrequelConstruct, enterPrequelConstructs, enterRange, enterRule, enterRuleAction, enterRuleBlock, enterRuleModifier, enterRuleref, enterRuleReturns, enterRules, enterSetElement, enterSubrule, enterThrowsSpec, enterTokenSpec, enterTokensSpec, exceptionGroup, exceptionHandler, exitAction, exitActionElement, exitAlternative, exitAstOperand, exitAtom, exitBlock, exitBlockSet, exitBlockSuffix, exitChannelSpec, exitChannelsSpec, exitDelegateGrammar, exitDelegateGrammars, exitEbnfSuffix, exitElement, exitElementOption, exitElementOptions, exitExceptionGroup, exitExceptionHandler, exitFinallyClause, exitGrammarSpec, exitLabeledElement, exitLexerAlternative, exitLexerAtom, exitLexerBlock, exitLexerCommand, exitLexerCommandExpr, exitLexerElement, exitLexerElements, exitLexerOuterAlternative, exitLexerRuleBlock, exitLexerSubrule, exitLocals, exitOption, exitOptionsSpec, exitOptionValue, exitOuterAlternative, exitPrequelConstruct, exitPrequelConstructs, exitRange, exitRule, exitRuleAction, exitRuleBlock, exitRuleModifier, exitRuleref, exitRuleReturns, exitRules, exitSetElement, exitSubrule, exitTerminal, exitThrowsSpec, exitTokenSpec, exitTokensSpec, finallyAction, finallyClause, finishAlt, finishGrammar, finishLexerRule, finishOuterAlt, finishRules, getDelegates, getGrammarFileName, getTokenNames, globalNamedAction, grammarSpec, labeledElement, lexerAlternative, lexerAtom, lexerBlock, lexerCallCommand, lexerCommand, lexerCommand, lexerCommandExpr, lexerElement, lexerElements, lexerOuterAlternative, lexerRule, lexerRuleBlock, lexerSubrule, locals, mode, option, optionsSpec, optionValue, outerAlternative, prequelConstruct, prequelConstructs, range, rule, ruleAction, ruleBlock, ruleCatch, ruleModifier, ruleref, ruleReturns, rules, sempredInAlt, setElement, stringRef, subrule, terminal, throwsSpec, tokenRef, tokenSpec, tokensSpec, traceIn, traceOut, visit, visitGrammar, wildcardRef
Methods inherited from class org.antlr.runtime.tree.TreeParser
getAncestor, getCurrentInputSymbol, getErrorHeader, getErrorMessage, getMissingSymbol, getSourceName, getTreeNodeStream, inContext, inContext, matchAny, recoverFromMismatchedToken, reset, setTreeNodeStream
Methods inherited from class org.antlr.runtime.BaseRecognizer
alreadyParsedRule, beginResync, combineFollows, computeContextSensitiveRuleFOLLOW, computeErrorRecoverySet, consumeUntil, consumeUntil, displayRecognitionError, emitErrorMessage, endResync, failed, getBacktrackingLevel, getNumberOfSyntaxErrors, getRuleInvocationStack, getRuleInvocationStack, getRuleMemoization, getRuleMemoizationCacheSize, getTokenErrorDisplay, match, memoize, mismatchIsMissingToken, mismatchIsUnwantedToken, pushFollow, recover, recoverFromMismatchedSet, reportError, setBacktrackingLevel, toStrings, traceIn, traceOut
-
Field Details
-
validImportTypes
Set of valid imports. Maps delegate to set of delegator grammar types. validDelegations.get(LEXER) gives list of the kinds of delegators that can import lexers. -
g
-
ruleCollector
-
errMgr
-
checkAssocElementOption
public boolean checkAssocElementOptionWhen this istrue
, the semantic checks will reportErrorType.UNRECOGNIZED_ASSOC_OPTION
where appropriate. This may be set tofalse
to disable this specific check.The default value is
true
. -
nonFragmentRuleCount
protected int nonFragmentRuleCountThis field is used for reporting theErrorType.MODE_WITHOUT_RULES
error when necessary. -
inFragmentRule
private boolean inFragmentRuleThis istrue
from the timediscoverLexerRule(org.antlr.v4.tool.ast.RuleAST, org.antlr.v4.tool.ast.GrammarAST, java.util.List<org.antlr.v4.tool.ast.GrammarAST>, org.antlr.v4.tool.ast.GrammarAST, org.antlr.v4.tool.ast.GrammarAST)
is called for a lexer rule with thefragment
modifier untilexitLexerRule(org.antlr.v4.tool.ast.GrammarAST)
is called. -
grammarCaseInsensitive
private boolean grammarCaseInsensitiveValue of caseInsensitive option (false if not defined)
-
-
Constructor Details
-
BasicSemanticChecks
-
-
Method Details
-
getErrorManager
- Overrides:
getErrorManager
in classGrammarTreeVisitor
-
process
public void process() -
discoverGrammar
- Overrides:
discoverGrammar
in classGrammarTreeVisitor
-
finishPrequels
- Overrides:
finishPrequels
in classGrammarTreeVisitor
-
importGrammar
- Overrides:
importGrammar
in classGrammarTreeVisitor
-
discoverRules
- Overrides:
discoverRules
in classGrammarTreeVisitor
-
enterMode
- Overrides:
enterMode
in classGrammarTreeVisitor
-
exitMode
- Overrides:
exitMode
in classGrammarTreeVisitor
-
modeDef
- Overrides:
modeDef
in classGrammarTreeVisitor
-
discoverRule
public void discoverRule(RuleAST rule, GrammarAST ID, List<GrammarAST> modifiers, ActionAST arg, ActionAST returns, GrammarAST thrws, GrammarAST options, ActionAST locals, List<GrammarAST> actions, GrammarAST block) - Overrides:
discoverRule
in classGrammarTreeVisitor
-
discoverLexerRule
public void discoverLexerRule(RuleAST rule, GrammarAST ID, List<GrammarAST> modifiers, GrammarAST options, GrammarAST block) - Overrides:
discoverLexerRule
in classGrammarTreeVisitor
-
exitLexerRule
- Overrides:
exitLexerRule
in classGrammarTreeVisitor
-
ruleRef
- Overrides:
ruleRef
in classGrammarTreeVisitor
-
grammarOption
- Overrides:
grammarOption
in classGrammarTreeVisitor
-
ruleOption
- Overrides:
ruleOption
in classGrammarTreeVisitor
-
blockOption
- Overrides:
blockOption
in classGrammarTreeVisitor
-
defineToken
- Overrides:
defineToken
in classGrammarTreeVisitor
-
enterChannelsSpec
- Overrides:
enterChannelsSpec
in classGrammarTreeVisitor
-
defineChannel
- Overrides:
defineChannel
in classGrammarTreeVisitor
-
elementOption
- Overrides:
elementOption
in classGrammarTreeVisitor
-
finishRule
- Overrides:
finishRule
in classGrammarTreeVisitor
-
checkGrammarName
void checkGrammarName(org.antlr.runtime.Token nameToken) -
checkNumRules
-
checkNumPrequels
-
checkInvalidRuleDef
void checkInvalidRuleDef(org.antlr.runtime.Token ruleID) -
checkInvalidRuleRef
void checkInvalidRuleRef(org.antlr.runtime.Token ruleID) -
checkTokenDefinition
void checkTokenDefinition(org.antlr.runtime.Token tokenID) -
checkChannelDefinition
void checkChannelDefinition(org.antlr.runtime.Token tokenID) -
enterLexerElement
- Overrides:
enterLexerElement
in classGrammarTreeVisitor
-
enterLexerCommand
- Overrides:
enterLexerCommand
in classGrammarTreeVisitor
-
actionInAlt
- Overrides:
actionInAlt
in classGrammarTreeVisitor
-
checkElementIsOuterMostInSingleAlt
Make sure that action is last element in outer alt; here action, a2, z, and zz are bad, but a3 is ok: (RULE A (BLOCK (ALT {action} 'a'))) (RULE B (BLOCK (ALT (BLOCK (ALT {a2} 'x') (ALT 'y')) {a3}))) (RULE C (BLOCK (ALT 'd' {z}) (ALT 'e' {zz}))) -
label
- Overrides:
label
in classGrammarTreeVisitor
-
enterTerminal
- Overrides:
enterTerminal
in classGrammarTreeVisitor
-
checkOptions
Check option is appropriate for grammar, rule, subrule -
checkCaseInsensitiveOption
private void checkCaseInsensitiveOption(org.antlr.runtime.Token optionID, GrammarAST valueAST, int parentType) -
checkElementOptions
Check option is appropriate for elem; parent of ID is ELEMENT_OPTIONS -
checkRuleRefOptions
-
checkTokenOptions
-
checkImport
void checkImport(org.antlr.runtime.Token importID)
-