public class RuleCollector extends 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.labeledLexerElement_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
Modifier and Type | Field and Description |
---|---|
Map<String,String> |
altLabelToRuleName |
ErrorManager |
errMgr |
Grammar |
g
which grammar are we checking
|
OrderedHashMap<String,Rule> |
rules |
org.stringtemplate.v4.misc.MultiMap<String,GrammarAST> |
ruleToAltLabels |
ACTION, ACTION_CHAR_LITERAL, ACTION_ESC, ACTION_STRING_LITERAL, ALT, ALTLIST, ARG, ARG_ACTION, ARG_OR_CHARSET, ARGLIST, ASSIGN, AT, BLOCK, CATCH, CHANNELS, CHAR_RANGE, 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_actionElement1716, FOLLOW_ACTION_in_actionElement1724, FOLLOW_ACTION_in_block2467, FOLLOW_ACTION_in_element1905, FOLLOW_ACTION_in_element1934, FOLLOW_ACTION_in_elementOption2770, FOLLOW_ACTION_in_exceptionHandler990, FOLLOW_ACTION_in_finallyClause1017, FOLLOW_ACTION_in_lexerElement1465, FOLLOW_ACTION_in_lexerElement1494, FOLLOW_action_in_prequelConstruct234, FOLLOW_ACTION_in_ruleAction1131, FOLLOW_ALT_in_alternative1767, FOLLOW_ALT_in_alternative1780, FOLLOW_ALT_in_lexerElements1420, FOLLOW_alternative_in_block2470, FOLLOW_alternative_in_outerAlternative1354, FOLLOW_ARG_ACTION_in_exceptionHandler988, FOLLOW_ARG_ACTION_in_locals1047, FOLLOW_ARG_ACTION_in_rule809, FOLLOW_ARG_ACTION_in_ruleref2504, FOLLOW_ARG_ACTION_in_ruleReturns1072, FOLLOW_ASSIGN_in_delegateGrammar420, FOLLOW_ASSIGN_in_elementOption2720, FOLLOW_ASSIGN_in_elementOption2744, FOLLOW_ASSIGN_in_elementOption2764, FOLLOW_ASSIGN_in_elementOption2786, FOLLOW_ASSIGN_in_option295, FOLLOW_AT_in_action585, FOLLOW_AT_in_ruleAction1127, FOLLOW_atom_in_astOperand1996, FOLLOW_atom_in_element1893, FOLLOW_block_in_astOperand2013, FOLLOW_BLOCK_in_block2459, FOLLOW_block_in_element1974, FOLLOW_block_in_labeledLexerElement1555, FOLLOW_BLOCK_in_lexerBlock1580, FOLLOW_BLOCK_in_lexerRuleBlock1209, FOLLOW_BLOCK_in_ruleBlock1273, FOLLOW_block_in_subrule2071, FOLLOW_block_in_subrule2078, FOLLOW_blockSet_in_astOperand2004, FOLLOW_blockSet_in_atom2262, FOLLOW_blockSet_in_element1965, FOLLOW_blockSet_in_lexerAtom1629, FOLLOW_blockSet_in_lexerAtom1640, FOLLOW_blockSuffix_in_lexerSubrule2103, FOLLOW_blockSuffix_in_subrule2069, FOLLOW_CATCH_in_exceptionHandler986, FOLLOW_CHANNELS_in_channelsSpec532, FOLLOW_channelSpec_in_channelsSpec534, FOLLOW_channelsSpec_in_prequelConstruct224, FOLLOW_delegateGrammar_in_delegateGrammars391, FOLLOW_delegateGrammars_in_prequelConstruct204, FOLLOW_DOT_in_atom2200, FOLLOW_DOT_in_atom2211, FOLLOW_ebnfSuffix_in_blockSuffix2139, FOLLOW_element_in_alternative1772, FOLLOW_element_in_labeledElement2044, FOLLOW_ELEMENT_OPTIONS_in_elementOptions2667, FOLLOW_elementOption_in_elementOptions2669, FOLLOW_elementOptions_in_actionElement1726, FOLLOW_elementOptions_in_actionElement1744, FOLLOW_elementOptions_in_alternative1769, FOLLOW_elementOptions_in_alternative1782, FOLLOW_elementOptions_in_atom2227, FOLLOW_elementOptions_in_element1936, FOLLOW_elementOptions_in_element1949, FOLLOW_elementOptions_in_lexerAtom1653, FOLLOW_elementOptions_in_lexerElement1496, FOLLOW_elementOptions_in_lexerElement1509, FOLLOW_elementOptions_in_ruleref2507, FOLLOW_elementOptions_in_setElement2325, FOLLOW_elementOptions_in_setElement2339, FOLLOW_elementOptions_in_terminal2580, FOLLOW_elementOptions_in_terminal2619, FOLLOW_EPSILON_in_alternative1785, FOLLOW_EPSILON_in_lexerElement1517, FOLLOW_exceptionGroup_in_rule910, FOLLOW_exceptionHandler_in_exceptionGroup957, FOLLOW_FINALLY_in_finallyClause1015, FOLLOW_finallyClause_in_exceptionGroup960, FOLLOW_FRAGMENT_in_lexerRule712, FOLLOW_GRAMMAR_in_grammarSpec85, FOLLOW_ID_in_action589, FOLLOW_ID_in_action594, FOLLOW_ID_in_atom2202, FOLLOW_ID_in_atom2213, FOLLOW_ID_in_channelSpec557, FOLLOW_ID_in_delegateGrammar424, FOLLOW_ID_in_delegateGrammar428, FOLLOW_ID_in_delegateGrammar443, FOLLOW_ID_in_elementOption2700, FOLLOW_ID_in_elementOption2724, FOLLOW_ID_in_elementOption2728, FOLLOW_ID_in_elementOption2746, FOLLOW_ID_in_elementOption2766, FOLLOW_ID_in_elementOption2788, FOLLOW_ID_in_grammarSpec87, FOLLOW_ID_in_labeledElement2042, FOLLOW_ID_in_labeledLexerElement1550, FOLLOW_ID_in_lexerCommand1813, FOLLOW_ID_in_lexerCommand1831, FOLLOW_ID_in_mode664, FOLLOW_ID_in_option297, FOLLOW_ID_in_ruleAction1129, FOLLOW_ID_in_throwsSpec1100, FOLLOW_ID_in_tokenSpec502, FOLLOW_IMPORT_in_delegateGrammars389, FOLLOW_INT_in_elementOption2792, FOLLOW_labeledElement_in_element1888, FOLLOW_labeledLexerElement_in_lexerElement1448, FOLLOW_LEXER_ACTION_CALL_in_lexerCommand1811, FOLLOW_LEXER_ALT_ACTION_in_lexerAlternative1376, FOLLOW_LEXER_CHAR_SET_in_lexerAtom1672, FOLLOW_LEXER_CHAR_SET_in_setElement2434, FOLLOW_lexerAlternative_in_lexerBlock1585, FOLLOW_lexerAlternative_in_lexerOuterAlternative1332, FOLLOW_lexerAtom_in_labeledLexerElement1553, FOLLOW_lexerAtom_in_lexerElement1453, FOLLOW_lexerBlock_in_lexerSubrule2105, FOLLOW_lexerBlock_in_lexerSubrule2112, FOLLOW_lexerCommand_in_lexerAlternative1380, FOLLOW_lexerCommandExpr_in_lexerCommand1815, FOLLOW_lexerElement_in_lexerElements1422, FOLLOW_lexerElements_in_lexerAlternative1378, FOLLOW_lexerElements_in_lexerAlternative1392, FOLLOW_lexerOuterAlternative_in_lexerRuleBlock1228, FOLLOW_lexerRule_in_mode668, FOLLOW_lexerRule_in_rules631, FOLLOW_lexerRuleBlock_in_lexerRule737, FOLLOW_lexerSubrule_in_lexerElement1458, FOLLOW_LOCALS_in_locals1045, FOLLOW_locals_in_rule848, FOLLOW_mode_in_grammarSpec125, FOLLOW_MODE_in_mode662, FOLLOW_NOT_in_astOperand2002, FOLLOW_NOT_in_astOperand2011, FOLLOW_NOT_in_element1963, FOLLOW_NOT_in_element1972, FOLLOW_NOT_in_lexerAtom1627, FOLLOW_option_in_optionsSpec261, FOLLOW_OPTIONS_in_optionsSpec259, FOLLOW_optionsSpec_in_block2461, FOLLOW_optionsSpec_in_lexerBlock1582, FOLLOW_optionsSpec_in_prequelConstruct194, FOLLOW_optionsSpec_in_rule863, FOLLOW_optionValue_in_option301, FOLLOW_outerAlternative_in_ruleBlock1292, FOLLOW_prequelConstruct_in_prequelConstructs167, FOLLOW_prequelConstructs_in_grammarSpec106, FOLLOW_range_in_element1957, FOLLOW_range_in_lexerAtom1682, FOLLOW_RANGE_in_range2544, FOLLOW_RANGE_in_setElement2403, FOLLOW_RETURNS_in_ruleReturns1070, FOLLOW_RULE_in_lexerRule694, FOLLOW_RULE_in_rule782, FOLLOW_rule_in_rules629, FOLLOW_RULE_REF_in_rule784, FOLLOW_RULE_REF_in_ruleref2500, FOLLOW_ruleAction_in_block2464, FOLLOW_ruleAction_in_rule877, FOLLOW_ruleBlock_in_rule908, FOLLOW_ruleModifier_in_rule798, FOLLOW_RULEMODIFIERS_in_lexerRule708, FOLLOW_RULEMODIFIERS_in_rule793, FOLLOW_ruleref_in_atom2215, FOLLOW_ruleref_in_atom2272, FOLLOW_ruleref_in_lexerAtom1692, FOLLOW_ruleReturns_in_rule822, FOLLOW_rules_in_grammarSpec123, FOLLOW_RULES_in_rules624, FOLLOW_SEMPRED_in_actionElement1734, FOLLOW_SEMPRED_in_actionElement1742, FOLLOW_SEMPRED_in_element1919, FOLLOW_SEMPRED_in_element1947, FOLLOW_SEMPRED_in_lexerElement1479, FOLLOW_SEMPRED_in_lexerElement1507, FOLLOW_SET_in_blockSet2297, FOLLOW_set_in_labeledElement2036, FOLLOW_set_in_labeledLexerElement1544, FOLLOW_setElement_in_blockSet2299, FOLLOW_STRING_LITERAL_in_elementOption2750, FOLLOW_STRING_LITERAL_in_range2546, FOLLOW_STRING_LITERAL_in_range2548, FOLLOW_STRING_LITERAL_in_setElement2323, FOLLOW_STRING_LITERAL_in_setElement2349, FOLLOW_STRING_LITERAL_in_setElement2407, FOLLOW_STRING_LITERAL_in_setElement2411, FOLLOW_STRING_LITERAL_in_terminal2578, FOLLOW_STRING_LITERAL_in_terminal2603, FOLLOW_subrule_in_element1898, FOLLOW_terminal_in_atom2204, FOLLOW_terminal_in_atom2254, FOLLOW_terminal_in_lexerAtom1616, FOLLOW_THROWS_in_throwsSpec1098, FOLLOW_throwsSpec_in_rule835, FOLLOW_TOKEN_REF_in_lexerRule696, FOLLOW_TOKEN_REF_in_setElement2337, FOLLOW_TOKEN_REF_in_setElement2374, FOLLOW_TOKEN_REF_in_terminal2617, FOLLOW_TOKEN_REF_in_terminal2630, FOLLOW_TOKENS_SPEC_in_tokensSpec477, FOLLOW_tokenSpec_in_tokensSpec479, FOLLOW_tokensSpec_in_prequelConstruct214, FOLLOW_WILDCARD_in_atom2225, FOLLOW_WILDCARD_in_atom2238, FOLLOW_WILDCARD_in_lexerAtom1651, FOLLOW_WILDCARD_in_lexerAtom1664, FRAGMENT, GRAMMAR, grammarName, GT, HEX_DIGIT, ID, IMPORT, INITACTION, INT, LABEL, LEXER, LEXER_ACTION_CALL, LEXER_ALT_ACTION, LEXER_CHAR_SET, LIST, LOCALS, LPAREN, LT, MODE, NameChar, NameStartChar, NESTED_ACTION, NLCHARS, NOT, OPTIONAL, OPTIONS, OR, PARSER, PLUS, PLUS_ASSIGN, POSITIVE_CLOSURE, POUND, PREC_RULE, PRIVATE, PROTECTED, PUBLIC, QUESTION, RANGE, RARROW, RBRACE, RESULT, RET, RETURNS, rewriteEBNFLevel, RPAREN, RULE, RULE_REF, RULEACTIONS, RULEMODIFIERS, RULES, SEMI, SEMPRED, SET, SRC, STAR, STRING_LITERAL, SYNPRED, TEMPLATE, THROWS, TOKEN_REF, tokenNames, TOKENS_SPEC, TREE_GRAMMAR, UNICODE_ESC, UNICODE_EXTENDED_ESC, UnicodeBOM, WILDCARD, WS, WSCHARS, WSNLCHARS
Constructor and Description |
---|
RuleCollector(Grammar g) |
Modifier and Type | Method and Description |
---|---|
void |
discoverLexerRule(RuleAST rule,
GrammarAST ID,
List<GrammarAST> modifiers,
GrammarAST block) |
void |
discoverOuterAlt(AltAST alt) |
void |
discoverRule(RuleAST rule,
GrammarAST ID,
List<GrammarAST> modifiers,
ActionAST arg,
ActionAST returns,
GrammarAST thrws,
GrammarAST options,
ActionAST locals,
List<GrammarAST> actions,
GrammarAST block) |
ErrorManager |
getErrorManager() |
void |
process(GrammarAST ast) |
action, actionElement, actionInAlt, alternative, astOperand, atom, block, blockOption, blockSet, blockSuffix, channelSpec, channelsSpec, defineChannel, defineToken, delegateGrammar, delegateGrammars, discoverAlt, discoverGrammar, discoverRules, ebnfSuffix, element, elementOption, elementOption, elementOptions, enterAction, enterActionElement, enterAlternative, enterAstOperand, enterAtom, enterBlock, enterBlockSet, enterBlockSuffix, enterChannelSpec, enterChannelsSpec, enterDelegateGrammar, enterDelegateGrammars, enterEbnfSuffix, enterElement, enterElementOption, enterElementOptions, enterExceptionGroup, enterExceptionHandler, enterFinallyClause, enterGrammarSpec, enterLabeledElement, enterLabeledLexerElement, enterLexerAlternative, enterLexerAtom, enterLexerBlock, enterLexerCommand, enterLexerCommandExpr, enterLexerElement, enterLexerElements, enterLexerOuterAlternative, enterLexerRule, enterLexerRuleBlock, enterLexerSubrule, enterLocals, enterMode, enterOption, enterOptionsSpec, enterOptionValue, enterOuterAlternative, enterPrequelConstruct, enterPrequelConstructs, enterRange, enterRule, enterRuleAction, enterRuleBlock, enterRuleModifier, enterRuleref, enterRuleReturns, enterRules, enterSetElement, enterSubrule, enterTerminal, 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, exitLabeledLexerElement, exitLexerAlternative, exitLexerAtom, exitLexerBlock, exitLexerCommand, exitLexerCommandExpr, exitLexerElement, exitLexerElements, exitLexerOuterAlternative, exitLexerRule, exitLexerRuleBlock, exitLexerSubrule, exitLocals, exitMode, 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, finishPrequels, finishRule, finishRules, getDelegates, getGrammarFileName, getTokenNames, globalNamedAction, grammarOption, grammarSpec, importGrammar, label, labeledElement, labeledLexerElement, lexerAlternative, lexerAtom, lexerBlock, lexerCallCommand, lexerCommand, lexerCommand, lexerCommandExpr, lexerElement, lexerElements, lexerOuterAlternative, lexerRule, lexerRuleBlock, lexerSubrule, locals, mode, modeDef, option, optionsSpec, optionValue, outerAlternative, prequelConstruct, prequelConstructs, range, rule, ruleAction, ruleBlock, ruleCatch, ruleModifier, ruleOption, ruleref, ruleRef, ruleReturns, rules, sempredInAlt, setElement, stringRef, subrule, terminal, throwsSpec, tokenRef, tokenSpec, tokensSpec, traceIn, traceOut, visit, visitGrammar, wildcardRef
getAncestor, getCurrentInputSymbol, getErrorHeader, getErrorMessage, getMissingSymbol, getSourceName, getTreeNodeStream, inContext, inContext, matchAny, recoverFromMismatchedToken, reset, setTreeNodeStream
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
public Grammar g
public ErrorManager errMgr
public OrderedHashMap<String,Rule> rules
public org.stringtemplate.v4.misc.MultiMap<String,GrammarAST> ruleToAltLabels
public RuleCollector(Grammar g)
public ErrorManager getErrorManager()
getErrorManager
in class GrammarTreeVisitor
public void process(GrammarAST ast)
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)
discoverRule
in class GrammarTreeVisitor
public void discoverOuterAlt(AltAST alt)
discoverOuterAlt
in class GrammarTreeVisitor
public void discoverLexerRule(RuleAST rule, GrammarAST ID, List<GrammarAST> modifiers, GrammarAST block)
discoverLexerRule
in class GrammarTreeVisitor
Copyright © 1992–2020 ANTLR. All rights reserved.