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
-
public class BasicSemanticChecks extends GrammarTreeVisitor
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
Fields Modifier and Type Field Description boolean
checkAssocElementOption
When this istrue
, the semantic checks will reportErrorType.UNRECOGNIZED_ASSOC_OPTION
where appropriate.ErrorManager
errMgr
Grammar
g
protected int
nonFragmentRuleCount
This field is used for reporting theErrorType.MODE_WITHOUT_RULES
error when necessary.RuleCollector
ruleCollector
static org.stringtemplate.v4.misc.MultiMap<Integer,Integer>
validImportTypes
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
-
-
Constructor Summary
Constructors Constructor Description BasicSemanticChecks(Grammar g, RuleCollector ruleCollector)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
actionInAlt(ActionAST action)
void
blockOption(GrammarAST ID, GrammarAST valueAST)
protected void
checkElementIsOuterMostInSingleAlt(GrammarAST tree)
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})))void
defineChannel(GrammarAST ID)
void
defineToken(GrammarAST ID)
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)
ErrorManager
getErrorManager()
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 Detail
-
validImportTypes
public static final org.stringtemplate.v4.misc.MultiMap<Integer,Integer> 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
public Grammar g
-
ruleCollector
public RuleCollector ruleCollector
-
errMgr
public ErrorManager errMgr
-
checkAssocElementOption
public boolean checkAssocElementOption
When 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 nonFragmentRuleCount
This field is used for reporting theErrorType.MODE_WITHOUT_RULES
error when necessary.
-
-
Constructor Detail
-
BasicSemanticChecks
public BasicSemanticChecks(Grammar g, RuleCollector ruleCollector)
-
-
Method Detail
-
getErrorManager
public ErrorManager getErrorManager()
- Overrides:
getErrorManager
in classGrammarTreeVisitor
-
process
public void process()
-
discoverGrammar
public void discoverGrammar(GrammarRootAST root, GrammarAST ID)
- Overrides:
discoverGrammar
in classGrammarTreeVisitor
-
finishPrequels
public void finishPrequels(GrammarAST firstPrequel)
- Overrides:
finishPrequels
in classGrammarTreeVisitor
-
importGrammar
public void importGrammar(GrammarAST label, GrammarAST ID)
- Overrides:
importGrammar
in classGrammarTreeVisitor
-
discoverRules
public void discoverRules(GrammarAST rules)
- Overrides:
discoverRules
in classGrammarTreeVisitor
-
enterMode
protected void enterMode(GrammarAST tree)
- Overrides:
enterMode
in classGrammarTreeVisitor
-
exitMode
protected void exitMode(GrammarAST tree)
- Overrides:
exitMode
in classGrammarTreeVisitor
-
modeDef
public void modeDef(GrammarAST m, GrammarAST ID)
- 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
protected void exitLexerRule(GrammarAST tree)
- Overrides:
exitLexerRule
in classGrammarTreeVisitor
-
ruleRef
public void ruleRef(GrammarAST ref, ActionAST arg)
- Overrides:
ruleRef
in classGrammarTreeVisitor
-
grammarOption
public void grammarOption(GrammarAST ID, GrammarAST valueAST)
- Overrides:
grammarOption
in classGrammarTreeVisitor
-
ruleOption
public void ruleOption(GrammarAST ID, GrammarAST valueAST)
- Overrides:
ruleOption
in classGrammarTreeVisitor
-
blockOption
public void blockOption(GrammarAST ID, GrammarAST valueAST)
- Overrides:
blockOption
in classGrammarTreeVisitor
-
defineToken
public void defineToken(GrammarAST ID)
- Overrides:
defineToken
in classGrammarTreeVisitor
-
enterChannelsSpec
protected void enterChannelsSpec(GrammarAST tree)
- Overrides:
enterChannelsSpec
in classGrammarTreeVisitor
-
defineChannel
public void defineChannel(GrammarAST ID)
- Overrides:
defineChannel
in classGrammarTreeVisitor
-
elementOption
public void elementOption(GrammarASTWithOptions elem, GrammarAST ID, GrammarAST valueAST)
- Overrides:
elementOption
in classGrammarTreeVisitor
-
finishRule
public void finishRule(RuleAST rule, GrammarAST ID, GrammarAST block)
- Overrides:
finishRule
in classGrammarTreeVisitor
-
enterLexerElement
protected void enterLexerElement(GrammarAST tree)
- Overrides:
enterLexerElement
in classGrammarTreeVisitor
-
enterLexerCommand
protected void enterLexerCommand(GrammarAST tree)
- Overrides:
enterLexerCommand
in classGrammarTreeVisitor
-
actionInAlt
public void actionInAlt(ActionAST action)
- Overrides:
actionInAlt
in classGrammarTreeVisitor
-
checkElementIsOuterMostInSingleAlt
protected void checkElementIsOuterMostInSingleAlt(GrammarAST tree)
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
public void label(GrammarAST op, GrammarAST ID, GrammarAST element)
- Overrides:
label
in classGrammarTreeVisitor
-
enterTerminal
protected void enterTerminal(GrammarAST tree)
- Overrides:
enterTerminal
in classGrammarTreeVisitor
-
-