python3-parser 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +13 -0
- data/README.md +59 -0
- data/Rakefile +21 -0
- data/ext/python3-parser/Python3LexerBase.cpp +112 -0
- data/ext/python3-parser/Python3LexerBase.h +34 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.cpp +10 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.h +167 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.cpp +10 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.h +121 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.cpp +34 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.h +27 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.cpp +155 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.h +69 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.cpp +61 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.h +59 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.cpp +25 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.h +36 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.cpp +414 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.h +200 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.cpp +11 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.h +37 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.cpp +195 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.h +158 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.cpp +39 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.h +74 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.cpp +78 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.h +79 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.cpp +15 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.h +35 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.cpp +333 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.h +466 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.cpp +84 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.h +80 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.cpp +64 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.h +99 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.cpp +51 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.h +32 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.cpp +18 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.h +24 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.cpp +12 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.h +218 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.cpp +19 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.h +45 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.cpp +295 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.h +196 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.cpp +75 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.h +52 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.cpp +36 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.h +31 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.cpp +92 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.h +88 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.cpp +46 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.h +42 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.cpp +648 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.h +467 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.cpp +306 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.h +179 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.cpp +141 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.h +147 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.cpp +53 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.h +38 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.cpp +66 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.h +98 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.cpp +167 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.h +164 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.cpp +143 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.h +137 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.cpp +27 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.h +32 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.cpp +53 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.h +155 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.cpp +9 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.h +92 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenFactory.h +30 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.cpp +9 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.h +85 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.cpp +11 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.h +137 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +425 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.h +293 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp +211 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.h +123 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.cpp +270 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.h +115 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.cpp +104 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.h +193 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.cpp +9 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.h +23 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-common.h +137 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-runtime.h +167 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.cpp +209 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.h +112 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +113 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.h +148 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp +228 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.h +110 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.cpp +64 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.h +50 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp +758 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.h +85 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.cpp +621 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.h +61 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.cpp +63 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.h +87 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.cpp +72 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.h +133 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNType.h +20 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.cpp +14 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.h +24 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.cpp +33 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.h +33 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.cpp +16 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.h +68 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.cpp +82 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.h +43 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.cpp +31 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.h +30 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.cpp +12 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.h +22 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.cpp +12 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.h +21 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.cpp +15 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.h +24 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.cpp +9 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.h +21 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.cpp +14 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.h +47 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.cpp +14 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.h +70 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.cpp +25 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.h +227 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.cpp +17 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.h +30 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.cpp +35 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.h +27 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.cpp +35 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.h +39 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.cpp +15 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.h +43 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.cpp +158 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.h +109 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp +84 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.h +44 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp +628 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.h +210 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.cpp +9 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.h +66 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.cpp +107 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.h +115 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionType.h +55 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.cpp +55 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.h +63 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.cpp +62 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.h +87 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.cpp +63 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.h +82 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.cpp +56 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.h +61 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.cpp +47 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.h +57 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.cpp +47 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.h +57 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.cpp +56 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.h +61 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.cpp +47 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.h +55 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.cpp +56 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.h +55 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.cpp +16 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.h +42 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.cpp +12 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.h +22 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.cpp +27 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.h +25 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.cpp +12 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.h +20 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.cpp +102 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.h +102 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp +1366 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h +904 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.cpp +12 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.h +25 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.cpp +12 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.h +22 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.cpp +32 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.h +29 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp +17 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h +62 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.cpp +34 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.h +39 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.cpp +662 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.h +254 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.cpp +201 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.h +436 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp +179 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h +60 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.cpp +30 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.h +29 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.cpp +16 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.h +25 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.cpp +12 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.h +25 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.cpp +37 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.h +40 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.cpp +377 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.h +222 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.cpp +32 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.h +30 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp +81 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.h +36 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.cpp +12 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.h +21 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.cpp +15 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.h +35 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.cpp +19 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.h +21 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.cpp +12 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.h +21 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.cpp +44 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.h +76 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.cpp +25 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.h +25 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.cpp +127 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.h +91 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.cpp +67 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.h +32 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.cpp +100 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.h +144 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.cpp +20 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.h +23 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.cpp +124 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.h +31 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.cpp +89 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.h +84 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.cpp +521 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.h +198 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.cpp +134 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.h +76 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.cpp +4 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.h +21 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.cpp +13 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.h +170 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.cpp +43 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.h +110 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/BitSet.h +76 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.cpp +248 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.h +78 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Declarations.h +163 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.cpp +36 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.h +54 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.cpp +303 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.h +112 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/AbstractParseTreeVisitor.h +128 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.cpp +9 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.h +19 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.cpp +23 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.h +33 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.cpp +71 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.h +53 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.cpp +15 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.h +102 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.cpp +9 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.h +39 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeProperty.h +50 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.cpp +9 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.h +57 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.cpp +49 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.h +31 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.cpp +9 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.h +32 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.cpp +57 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.h +33 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.cpp +241 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.h +78 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.cpp +9 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.h +44 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.cpp +69 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.h +132 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.cpp +64 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.h +105 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp +371 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.h +185 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.cpp +77 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.h +117 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.cpp +39 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.h +86 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.cpp +28 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.h +51 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.cpp +36 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.h +80 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.cpp +154 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.h +86 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.cpp +31 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.h +40 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.cpp +173 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.h +56 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.cpp +13 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.h +22 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.cpp +20 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.h +27 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.cpp +30 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.h +26 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.cpp +20 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.h +25 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.cpp +33 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.h +26 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.cpp +23 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.h +23 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.cpp +24 -0
- data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.h +23 -0
- data/ext/python3-parser/antlrgen/Python3Lexer.cpp +1024 -0
- data/ext/python3-parser/antlrgen/Python3Lexer.h +91 -0
- data/ext/python3-parser/antlrgen/Python3Lexer.interp +339 -0
- data/ext/python3-parser/antlrgen/Python3Lexer.tokens +181 -0
- data/ext/python3-parser/antlrgen/Python3Parser.cpp +10550 -0
- data/ext/python3-parser/antlrgen/Python3Parser.h +1811 -0
- data/ext/python3-parser/antlrgen/Python3Parser.interp +295 -0
- data/ext/python3-parser/antlrgen/Python3Parser.tokens +181 -0
- data/ext/python3-parser/antlrgen/Python3ParserBaseListener.cpp +7 -0
- data/ext/python3-parser/antlrgen/Python3ParserBaseListener.h +284 -0
- data/ext/python3-parser/antlrgen/Python3ParserBaseVisitor.cpp +7 -0
- data/ext/python3-parser/antlrgen/Python3ParserBaseVisitor.h +364 -0
- data/ext/python3-parser/antlrgen/Python3ParserListener.cpp +7 -0
- data/ext/python3-parser/antlrgen/Python3ParserListener.h +277 -0
- data/ext/python3-parser/antlrgen/Python3ParserVisitor.cpp +7 -0
- data/ext/python3-parser/antlrgen/Python3ParserVisitor.h +196 -0
- data/ext/python3-parser/extconf.rb +34 -0
- data/ext/python3-parser/python3_parser.cpp +10103 -0
- data/lib/python3-parser.rb +2 -0
- data/lib/python3-parser/version.rb +3 -0
- data/python3-parser.gemspec +31 -0
- data/spec/parser_spec.rb +105 -0
- data/spec/spec_helper.rb +9 -0
- metadata +391 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
|
2
|
+
* Use of this file is governed by the BSD 3-clause license that
|
|
3
|
+
* can be found in the LICENSE.txt file in the project root.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
#include "misc/MurmurHash.h"
|
|
7
|
+
#include "atn/PredictionContext.h"
|
|
8
|
+
#include "SemanticContext.h"
|
|
9
|
+
|
|
10
|
+
#include "atn/ATNConfig.h"
|
|
11
|
+
|
|
12
|
+
using namespace antlr4::atn;
|
|
13
|
+
|
|
14
|
+
const size_t ATNConfig::SUPPRESS_PRECEDENCE_FILTER = 0x40000000;
|
|
15
|
+
|
|
16
|
+
ATNConfig::ATNConfig(ATNState *state_, size_t alt_, Ref<PredictionContext> const& context_)
|
|
17
|
+
: ATNConfig(state_, alt_, context_, SemanticContext::NONE) {
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
ATNConfig::ATNConfig(ATNState *state_, size_t alt_, Ref<PredictionContext> const& context_, Ref<SemanticContext> const& semanticContext_)
|
|
21
|
+
: state(state_), alt(alt_), context(context_), semanticContext(semanticContext_) {
|
|
22
|
+
reachesIntoOuterContext = 0;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
ATNConfig::ATNConfig(Ref<ATNConfig> const& c) : ATNConfig(c, c->state, c->context, c->semanticContext) {
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
ATNConfig::ATNConfig(Ref<ATNConfig> const& c, ATNState *state_) : ATNConfig(c, state_, c->context, c->semanticContext) {
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
ATNConfig::ATNConfig(Ref<ATNConfig> const& c, ATNState *state, Ref<SemanticContext> const& semanticContext)
|
|
32
|
+
: ATNConfig(c, state, c->context, semanticContext) {
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
ATNConfig::ATNConfig(Ref<ATNConfig> const& c, Ref<SemanticContext> const& semanticContext)
|
|
36
|
+
: ATNConfig(c, c->state, c->context, semanticContext) {
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
ATNConfig::ATNConfig(Ref<ATNConfig> const& c, ATNState *state, Ref<PredictionContext> const& context)
|
|
40
|
+
: ATNConfig(c, state, context, c->semanticContext) {
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
ATNConfig::ATNConfig(Ref<ATNConfig> const& c, ATNState *state, Ref<PredictionContext> const& context,
|
|
44
|
+
Ref<SemanticContext> const& semanticContext)
|
|
45
|
+
: state(state), alt(c->alt), context(context), reachesIntoOuterContext(c->reachesIntoOuterContext),
|
|
46
|
+
semanticContext(semanticContext) {
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
ATNConfig::~ATNConfig() {
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
size_t ATNConfig::hashCode() const {
|
|
53
|
+
size_t hashCode = misc::MurmurHash::initialize(7);
|
|
54
|
+
hashCode = misc::MurmurHash::update(hashCode, state->stateNumber);
|
|
55
|
+
hashCode = misc::MurmurHash::update(hashCode, alt);
|
|
56
|
+
hashCode = misc::MurmurHash::update(hashCode, context);
|
|
57
|
+
hashCode = misc::MurmurHash::update(hashCode, semanticContext);
|
|
58
|
+
hashCode = misc::MurmurHash::finish(hashCode, 4);
|
|
59
|
+
return hashCode;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
size_t ATNConfig::getOuterContextDepth() const {
|
|
63
|
+
return reachesIntoOuterContext & ~SUPPRESS_PRECEDENCE_FILTER;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
bool ATNConfig::isPrecedenceFilterSuppressed() const {
|
|
67
|
+
return (reachesIntoOuterContext & SUPPRESS_PRECEDENCE_FILTER) != 0;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
void ATNConfig::setPrecedenceFilterSuppressed(bool value) {
|
|
71
|
+
if (value) {
|
|
72
|
+
reachesIntoOuterContext |= SUPPRESS_PRECEDENCE_FILTER;
|
|
73
|
+
} else {
|
|
74
|
+
reachesIntoOuterContext &= ~SUPPRESS_PRECEDENCE_FILTER;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
bool ATNConfig::operator == (const ATNConfig &other) const {
|
|
79
|
+
return state->stateNumber == other.state->stateNumber && alt == other.alt &&
|
|
80
|
+
((context == other.context) || (*context == *other.context)) &&
|
|
81
|
+
*semanticContext == *other.semanticContext &&
|
|
82
|
+
isPrecedenceFilterSuppressed() == other.isPrecedenceFilterSuppressed();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
bool ATNConfig::operator != (const ATNConfig &other) const {
|
|
86
|
+
return !operator==(other);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
std::string ATNConfig::toString() {
|
|
90
|
+
return toString(true);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
std::string ATNConfig::toString(bool showAlt) {
|
|
94
|
+
std::stringstream ss;
|
|
95
|
+
ss << "(";
|
|
96
|
+
|
|
97
|
+
ss << state->toString();
|
|
98
|
+
if (showAlt) {
|
|
99
|
+
ss << "," << alt;
|
|
100
|
+
}
|
|
101
|
+
if (context) {
|
|
102
|
+
ss << ",[" << context->toString() << "]";
|
|
103
|
+
}
|
|
104
|
+
if (semanticContext != nullptr && semanticContext != SemanticContext::NONE) {
|
|
105
|
+
ss << "," << semanticContext.get();
|
|
106
|
+
}
|
|
107
|
+
if (getOuterContextDepth() > 0) {
|
|
108
|
+
ss << ",up=" << getOuterContextDepth();
|
|
109
|
+
}
|
|
110
|
+
ss << ')';
|
|
111
|
+
|
|
112
|
+
return ss.str();
|
|
113
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
|
2
|
+
* Use of this file is governed by the BSD 3-clause license that
|
|
3
|
+
* can be found in the LICENSE.txt file in the project root.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
#pragma once
|
|
7
|
+
|
|
8
|
+
namespace antlr4 {
|
|
9
|
+
namespace atn {
|
|
10
|
+
|
|
11
|
+
/// <summary>
|
|
12
|
+
/// A tuple: (ATN state, predicted alt, syntactic, semantic context).
|
|
13
|
+
/// The syntactic context is a graph-structured stack node whose
|
|
14
|
+
/// path(s) to the root is the rule invocation(s)
|
|
15
|
+
/// chain used to arrive at the state. The semantic context is
|
|
16
|
+
/// the tree of semantic predicates encountered before reaching
|
|
17
|
+
/// an ATN state.
|
|
18
|
+
/// </summary>
|
|
19
|
+
class ANTLR4CPP_PUBLIC ATNConfig {
|
|
20
|
+
public:
|
|
21
|
+
struct Hasher
|
|
22
|
+
{
|
|
23
|
+
size_t operator()(ATNConfig const& k) const {
|
|
24
|
+
return k.hashCode();
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
struct Comparer {
|
|
29
|
+
bool operator()(ATNConfig const& lhs, ATNConfig const& rhs) const {
|
|
30
|
+
return (&lhs == &rhs) || (lhs == rhs);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
using Set = std::unordered_set<Ref<ATNConfig>, Hasher, Comparer>;
|
|
36
|
+
|
|
37
|
+
/// The ATN state associated with this configuration.
|
|
38
|
+
ATNState * state;
|
|
39
|
+
|
|
40
|
+
/// What alt (or lexer rule) is predicted by this configuration.
|
|
41
|
+
const size_t alt;
|
|
42
|
+
|
|
43
|
+
/// The stack of invoking states leading to the rule/states associated
|
|
44
|
+
/// with this config. We track only those contexts pushed during
|
|
45
|
+
/// execution of the ATN simulator.
|
|
46
|
+
///
|
|
47
|
+
/// Can be shared between multiple ANTConfig instances.
|
|
48
|
+
Ref<PredictionContext> context;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* We cannot execute predicates dependent upon local context unless
|
|
52
|
+
* we know for sure we are in the correct context. Because there is
|
|
53
|
+
* no way to do this efficiently, we simply cannot evaluate
|
|
54
|
+
* dependent predicates unless we are in the rule that initially
|
|
55
|
+
* invokes the ATN simulator.
|
|
56
|
+
*
|
|
57
|
+
* <p>
|
|
58
|
+
* closure() tracks the depth of how far we dip into the outer context:
|
|
59
|
+
* depth > 0. Note that it may not be totally accurate depth since I
|
|
60
|
+
* don't ever decrement. TODO: make it a boolean then</p>
|
|
61
|
+
*
|
|
62
|
+
* <p>
|
|
63
|
+
* For memory efficiency, the {@link #isPrecedenceFilterSuppressed} method
|
|
64
|
+
* is also backed by this field. Since the field is publicly accessible, the
|
|
65
|
+
* highest bit which would not cause the value to become negative is used to
|
|
66
|
+
* store this field. This choice minimizes the risk that code which only
|
|
67
|
+
* compares this value to 0 would be affected by the new purpose of the
|
|
68
|
+
* flag. It also ensures the performance of the existing {@link ATNConfig}
|
|
69
|
+
* constructors as well as certain operations like
|
|
70
|
+
* {@link ATNConfigSet#add(ATNConfig, DoubleKeyMap)} method are
|
|
71
|
+
* <em>completely</em> unaffected by the change.</p>
|
|
72
|
+
*/
|
|
73
|
+
size_t reachesIntoOuterContext;
|
|
74
|
+
|
|
75
|
+
/// Can be shared between multiple ATNConfig instances.
|
|
76
|
+
Ref<SemanticContext> semanticContext;
|
|
77
|
+
|
|
78
|
+
ATNConfig(ATNState *state, size_t alt, Ref<PredictionContext> const& context);
|
|
79
|
+
ATNConfig(ATNState *state, size_t alt, Ref<PredictionContext> const& context, Ref<SemanticContext> const& semanticContext);
|
|
80
|
+
|
|
81
|
+
ATNConfig(Ref<ATNConfig> const& c); // dup
|
|
82
|
+
ATNConfig(Ref<ATNConfig> const& c, ATNState *state);
|
|
83
|
+
ATNConfig(Ref<ATNConfig> const& c, ATNState *state, Ref<SemanticContext> const& semanticContext);
|
|
84
|
+
ATNConfig(Ref<ATNConfig> const& c, Ref<SemanticContext> const& semanticContext);
|
|
85
|
+
ATNConfig(Ref<ATNConfig> const& c, ATNState *state, Ref<PredictionContext> const& context);
|
|
86
|
+
ATNConfig(Ref<ATNConfig> const& c, ATNState *state, Ref<PredictionContext> const& context, Ref<SemanticContext> const& semanticContext);
|
|
87
|
+
|
|
88
|
+
ATNConfig(ATNConfig const&) = default;
|
|
89
|
+
virtual ~ATNConfig();
|
|
90
|
+
|
|
91
|
+
virtual size_t hashCode() const;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* This method gets the value of the {@link #reachesIntoOuterContext} field
|
|
95
|
+
* as it existed prior to the introduction of the
|
|
96
|
+
* {@link #isPrecedenceFilterSuppressed} method.
|
|
97
|
+
*/
|
|
98
|
+
size_t getOuterContextDepth() const ;
|
|
99
|
+
bool isPrecedenceFilterSuppressed() const;
|
|
100
|
+
void setPrecedenceFilterSuppressed(bool value);
|
|
101
|
+
|
|
102
|
+
/// An ATN configuration is equal to another if both have
|
|
103
|
+
/// the same state, they predict the same alternative, and
|
|
104
|
+
/// syntactic/semantic contexts are the same.
|
|
105
|
+
bool operator == (const ATNConfig &other) const;
|
|
106
|
+
bool operator != (const ATNConfig &other) const;
|
|
107
|
+
|
|
108
|
+
virtual std::string toString();
|
|
109
|
+
std::string toString(bool showAlt);
|
|
110
|
+
|
|
111
|
+
private:
|
|
112
|
+
/**
|
|
113
|
+
* This field stores the bit mask for implementing the
|
|
114
|
+
* {@link #isPrecedenceFilterSuppressed} property as a bit within the
|
|
115
|
+
* existing {@link #reachesIntoOuterContext} field.
|
|
116
|
+
*/
|
|
117
|
+
static const size_t SUPPRESS_PRECEDENCE_FILTER;
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
} // namespace atn
|
|
121
|
+
} // namespace antlr4
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
// Hash function for ATNConfig.
|
|
125
|
+
|
|
126
|
+
namespace std {
|
|
127
|
+
using antlr4::atn::ATNConfig;
|
|
128
|
+
|
|
129
|
+
template <> struct hash<ATNConfig>
|
|
130
|
+
{
|
|
131
|
+
size_t operator() (const ATNConfig &x) const
|
|
132
|
+
{
|
|
133
|
+
return x.hashCode();
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
template <> struct hash<std::vector<Ref<ATNConfig>>>
|
|
138
|
+
{
|
|
139
|
+
size_t operator() (const std::vector<Ref<ATNConfig>> &vector) const
|
|
140
|
+
{
|
|
141
|
+
std::size_t seed = 0;
|
|
142
|
+
for (auto &config : vector) {
|
|
143
|
+
seed ^= config->hashCode() + 0x9e3779b9 + (seed << 6) + (seed >> 2);
|
|
144
|
+
}
|
|
145
|
+
return seed;
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
|
2
|
+
* Use of this file is governed by the BSD 3-clause license that
|
|
3
|
+
* can be found in the LICENSE.txt file in the project root.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
#include "atn/PredictionContext.h"
|
|
7
|
+
#include "atn/ATNConfig.h"
|
|
8
|
+
#include "atn/ATNSimulator.h"
|
|
9
|
+
#include "Exceptions.h"
|
|
10
|
+
#include "atn/SemanticContext.h"
|
|
11
|
+
#include "support/Arrays.h"
|
|
12
|
+
|
|
13
|
+
#include "atn/ATNConfigSet.h"
|
|
14
|
+
|
|
15
|
+
using namespace antlr4::atn;
|
|
16
|
+
using namespace antlrcpp;
|
|
17
|
+
|
|
18
|
+
ATNConfigSet::ATNConfigSet(bool fullCtx) : fullCtx(fullCtx) {
|
|
19
|
+
InitializeInstanceFields();
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
ATNConfigSet::ATNConfigSet(const Ref<ATNConfigSet> &old) : ATNConfigSet(old->fullCtx) {
|
|
23
|
+
addAll(old);
|
|
24
|
+
uniqueAlt = old->uniqueAlt;
|
|
25
|
+
conflictingAlts = old->conflictingAlts;
|
|
26
|
+
hasSemanticContext = old->hasSemanticContext;
|
|
27
|
+
dipsIntoOuterContext = old->dipsIntoOuterContext;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
ATNConfigSet::~ATNConfigSet() {
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
bool ATNConfigSet::add(const Ref<ATNConfig> &config) {
|
|
34
|
+
return add(config, nullptr);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
bool ATNConfigSet::add(const Ref<ATNConfig> &config, PredictionContextMergeCache *mergeCache) {
|
|
38
|
+
if (_readonly) {
|
|
39
|
+
throw IllegalStateException("This set is readonly");
|
|
40
|
+
}
|
|
41
|
+
if (config->semanticContext != SemanticContext::NONE) {
|
|
42
|
+
hasSemanticContext = true;
|
|
43
|
+
}
|
|
44
|
+
if (config->getOuterContextDepth() > 0) {
|
|
45
|
+
dipsIntoOuterContext = true;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
size_t hash = getHash(config.get());
|
|
49
|
+
ATNConfig *existing = _configLookup[hash];
|
|
50
|
+
if (existing == nullptr) {
|
|
51
|
+
_configLookup[hash] = config.get();
|
|
52
|
+
_cachedHashCode = 0;
|
|
53
|
+
configs.push_back(config); // track order here
|
|
54
|
+
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// a previous (s,i,pi,_), merge with it and save result
|
|
59
|
+
bool rootIsWildcard = !fullCtx;
|
|
60
|
+
Ref<PredictionContext> merged = PredictionContext::merge(existing->context, config->context, rootIsWildcard, mergeCache);
|
|
61
|
+
// no need to check for existing.context, config.context in cache
|
|
62
|
+
// since only way to create new graphs is "call rule" and here. We
|
|
63
|
+
// cache at both places.
|
|
64
|
+
existing->reachesIntoOuterContext = std::max(existing->reachesIntoOuterContext, config->reachesIntoOuterContext);
|
|
65
|
+
|
|
66
|
+
// make sure to preserve the precedence filter suppression during the merge
|
|
67
|
+
if (config->isPrecedenceFilterSuppressed()) {
|
|
68
|
+
existing->setPrecedenceFilterSuppressed(true);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
existing->context = merged; // replace context; no need to alt mapping
|
|
72
|
+
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
bool ATNConfigSet::addAll(const Ref<ATNConfigSet> &other) {
|
|
77
|
+
for (auto &c : other->configs) {
|
|
78
|
+
add(c);
|
|
79
|
+
}
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
std::vector<ATNState*> ATNConfigSet::getStates() {
|
|
84
|
+
std::vector<ATNState*> states;
|
|
85
|
+
for (auto c : configs) {
|
|
86
|
+
states.push_back(c->state);
|
|
87
|
+
}
|
|
88
|
+
return states;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Gets the complete set of represented alternatives for the configuration
|
|
93
|
+
* set.
|
|
94
|
+
*
|
|
95
|
+
* @return the set of represented alternatives in this configuration set
|
|
96
|
+
*
|
|
97
|
+
* @since 4.3
|
|
98
|
+
*/
|
|
99
|
+
|
|
100
|
+
BitSet ATNConfigSet::getAlts() {
|
|
101
|
+
BitSet alts;
|
|
102
|
+
for (ATNConfig config : configs) {
|
|
103
|
+
alts.set(config.alt);
|
|
104
|
+
}
|
|
105
|
+
return alts;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
std::vector<Ref<SemanticContext>> ATNConfigSet::getPredicates() {
|
|
109
|
+
std::vector<Ref<SemanticContext>> preds;
|
|
110
|
+
for (auto c : configs) {
|
|
111
|
+
if (c->semanticContext != SemanticContext::NONE) {
|
|
112
|
+
preds.push_back(c->semanticContext);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return preds;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
Ref<ATNConfig> ATNConfigSet::get(size_t i) const {
|
|
119
|
+
return configs[i];
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
void ATNConfigSet::optimizeConfigs(ATNSimulator *interpreter) {
|
|
123
|
+
if (_readonly) {
|
|
124
|
+
throw IllegalStateException("This set is readonly");
|
|
125
|
+
}
|
|
126
|
+
if (_configLookup.empty())
|
|
127
|
+
return;
|
|
128
|
+
|
|
129
|
+
for (auto &config : configs) {
|
|
130
|
+
config->context = interpreter->getCachedContext(config->context);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
bool ATNConfigSet::operator == (const ATNConfigSet &other) {
|
|
135
|
+
if (&other == this) {
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if (configs.size() != other.configs.size())
|
|
140
|
+
return false;
|
|
141
|
+
|
|
142
|
+
if (fullCtx != other.fullCtx || uniqueAlt != other.uniqueAlt ||
|
|
143
|
+
conflictingAlts != other.conflictingAlts || hasSemanticContext != other.hasSemanticContext ||
|
|
144
|
+
dipsIntoOuterContext != other.dipsIntoOuterContext) // includes stack context
|
|
145
|
+
return false;
|
|
146
|
+
|
|
147
|
+
return Arrays::equals(configs, other.configs);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
size_t ATNConfigSet::hashCode() {
|
|
151
|
+
if (!isReadonly() || _cachedHashCode == 0) {
|
|
152
|
+
_cachedHashCode = 1;
|
|
153
|
+
for (auto &i : configs) {
|
|
154
|
+
_cachedHashCode = 31 * _cachedHashCode + i->hashCode(); // Same as Java's list hashCode impl.
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return _cachedHashCode;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
size_t ATNConfigSet::size() {
|
|
162
|
+
return configs.size();
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
bool ATNConfigSet::isEmpty() {
|
|
166
|
+
return configs.empty();
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
void ATNConfigSet::clear() {
|
|
170
|
+
if (_readonly) {
|
|
171
|
+
throw IllegalStateException("This set is readonly");
|
|
172
|
+
}
|
|
173
|
+
configs.clear();
|
|
174
|
+
_cachedHashCode = 0;
|
|
175
|
+
_configLookup.clear();
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
bool ATNConfigSet::isReadonly() {
|
|
179
|
+
return _readonly;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
void ATNConfigSet::setReadonly(bool readonly) {
|
|
183
|
+
_readonly = readonly;
|
|
184
|
+
_configLookup.clear();
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
std::string ATNConfigSet::toString() {
|
|
188
|
+
std::stringstream ss;
|
|
189
|
+
ss << "[";
|
|
190
|
+
for (size_t i = 0; i < configs.size(); i++) {
|
|
191
|
+
ss << configs[i]->toString();
|
|
192
|
+
}
|
|
193
|
+
ss << "]";
|
|
194
|
+
|
|
195
|
+
if (hasSemanticContext) {
|
|
196
|
+
ss << ",hasSemanticContext = " << hasSemanticContext;
|
|
197
|
+
}
|
|
198
|
+
if (uniqueAlt != ATN::INVALID_ALT_NUMBER) {
|
|
199
|
+
ss << ",uniqueAlt = " << uniqueAlt;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
if (conflictingAlts.size() > 0) {
|
|
203
|
+
ss << ",conflictingAlts = ";
|
|
204
|
+
ss << conflictingAlts.toString();
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
if (dipsIntoOuterContext) {
|
|
208
|
+
ss << ", dipsIntoOuterContext";
|
|
209
|
+
}
|
|
210
|
+
return ss.str();
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
size_t ATNConfigSet::getHash(ATNConfig *c) {
|
|
214
|
+
size_t hashCode = 7;
|
|
215
|
+
hashCode = 31 * hashCode + c->state->stateNumber;
|
|
216
|
+
hashCode = 31 * hashCode + c->alt;
|
|
217
|
+
hashCode = 31 * hashCode + c->semanticContext->hashCode();
|
|
218
|
+
return hashCode;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
void ATNConfigSet::InitializeInstanceFields() {
|
|
222
|
+
uniqueAlt = 0;
|
|
223
|
+
hasSemanticContext = false;
|
|
224
|
+
dipsIntoOuterContext = false;
|
|
225
|
+
|
|
226
|
+
_readonly = false;
|
|
227
|
+
_cachedHashCode = 0;
|
|
228
|
+
}
|