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,33 @@
|
|
|
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
|
+
#include "tree/TerminalNode.h"
|
|
9
|
+
|
|
10
|
+
namespace antlr4 {
|
|
11
|
+
namespace tree {
|
|
12
|
+
|
|
13
|
+
class ANTLR4CPP_PUBLIC TerminalNodeImpl : public virtual TerminalNode {
|
|
14
|
+
public:
|
|
15
|
+
Token *symbol;
|
|
16
|
+
|
|
17
|
+
TerminalNodeImpl(Token *symbol);
|
|
18
|
+
|
|
19
|
+
virtual Token* getSymbol() override;
|
|
20
|
+
virtual void setParent(RuleContext *parent) override;
|
|
21
|
+
virtual misc::Interval getSourceInterval() override;
|
|
22
|
+
|
|
23
|
+
virtual antlrcpp::Any accept(ParseTreeVisitor *visitor) override;
|
|
24
|
+
|
|
25
|
+
virtual std::string getText() override;
|
|
26
|
+
virtual std::string toStringTree(Parser *parser, bool pretty = false) override;
|
|
27
|
+
virtual std::string toString() override;
|
|
28
|
+
virtual std::string toStringTree(bool pretty = false) override;
|
|
29
|
+
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
} // namespace tree
|
|
33
|
+
} // namespace antlr4
|
|
@@ -0,0 +1,241 @@
|
|
|
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 "tree/ErrorNode.h"
|
|
7
|
+
#include "Parser.h"
|
|
8
|
+
#include "ParserRuleContext.h"
|
|
9
|
+
#include "support/CPPUtils.h"
|
|
10
|
+
#include "tree/TerminalNodeImpl.h"
|
|
11
|
+
#include "atn/ATN.h"
|
|
12
|
+
#include "misc/Interval.h"
|
|
13
|
+
#include "Token.h"
|
|
14
|
+
#include "CommonToken.h"
|
|
15
|
+
#include "misc/Predicate.h"
|
|
16
|
+
|
|
17
|
+
#include "tree/Trees.h"
|
|
18
|
+
|
|
19
|
+
using namespace antlr4;
|
|
20
|
+
using namespace antlr4::misc;
|
|
21
|
+
using namespace antlr4::tree;
|
|
22
|
+
|
|
23
|
+
using namespace antlrcpp;
|
|
24
|
+
|
|
25
|
+
Trees::Trees() {
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
std::string Trees::toStringTree(ParseTree *t, bool pretty) {
|
|
29
|
+
return toStringTree(t, nullptr, pretty);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
std::string Trees::toStringTree(ParseTree *t, Parser *recog, bool pretty) {
|
|
33
|
+
if (recog == nullptr)
|
|
34
|
+
return toStringTree(t, std::vector<std::string>(), pretty);
|
|
35
|
+
return toStringTree(t, recog->getRuleNames(), pretty);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
std::string Trees::toStringTree(ParseTree *t, const std::vector<std::string> &ruleNames, bool pretty) {
|
|
39
|
+
std::string temp = antlrcpp::escapeWhitespace(Trees::getNodeText(t, ruleNames), false);
|
|
40
|
+
if (t->children.empty()) {
|
|
41
|
+
return temp;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
std::stringstream ss;
|
|
45
|
+
ss << "(" << temp << ' ';
|
|
46
|
+
|
|
47
|
+
// Implement the recursive walk as iteration to avoid trouble with deep nesting.
|
|
48
|
+
std::stack<size_t> stack;
|
|
49
|
+
size_t childIndex = 0;
|
|
50
|
+
ParseTree *run = t;
|
|
51
|
+
size_t indentationLevel = 1;
|
|
52
|
+
while (childIndex < run->children.size()) {
|
|
53
|
+
if (childIndex > 0) {
|
|
54
|
+
ss << ' ';
|
|
55
|
+
}
|
|
56
|
+
ParseTree *child = run->children[childIndex];
|
|
57
|
+
temp = antlrcpp::escapeWhitespace(Trees::getNodeText(child, ruleNames), false);
|
|
58
|
+
if (!child->children.empty()) {
|
|
59
|
+
// Go deeper one level.
|
|
60
|
+
stack.push(childIndex);
|
|
61
|
+
run = child;
|
|
62
|
+
childIndex = 0;
|
|
63
|
+
if (pretty) {
|
|
64
|
+
++indentationLevel;
|
|
65
|
+
ss << std::endl;
|
|
66
|
+
for (size_t i = 0; i < indentationLevel; ++i) {
|
|
67
|
+
ss << " ";
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
ss << "(" << temp << " ";
|
|
71
|
+
} else {
|
|
72
|
+
ss << temp;
|
|
73
|
+
while (++childIndex == run->children.size()) {
|
|
74
|
+
if (stack.size() > 0) {
|
|
75
|
+
// Reached the end of the current level. See if we can step up from here.
|
|
76
|
+
childIndex = stack.top();
|
|
77
|
+
stack.pop();
|
|
78
|
+
run = run->parent;
|
|
79
|
+
if (pretty) {
|
|
80
|
+
--indentationLevel;
|
|
81
|
+
}
|
|
82
|
+
ss << ")";
|
|
83
|
+
} else {
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
ss << ")";
|
|
91
|
+
return ss.str();
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
std::string Trees::getNodeText(ParseTree *t, Parser *recog) {
|
|
95
|
+
return getNodeText(t, recog->getRuleNames());
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
std::string Trees::getNodeText(ParseTree *t, const std::vector<std::string> &ruleNames) {
|
|
99
|
+
if (ruleNames.size() > 0) {
|
|
100
|
+
if (is<RuleContext *>(t)) {
|
|
101
|
+
size_t ruleIndex = dynamic_cast<RuleContext *>(t)->getRuleIndex();
|
|
102
|
+
std::string ruleName = ruleNames[ruleIndex];
|
|
103
|
+
size_t altNumber = dynamic_cast<RuleContext *>(t)->getAltNumber();
|
|
104
|
+
if (altNumber != atn::ATN::INVALID_ALT_NUMBER) {
|
|
105
|
+
return ruleName + ":" + std::to_string(altNumber);
|
|
106
|
+
}
|
|
107
|
+
return ruleName;
|
|
108
|
+
} else if (is<ErrorNode *>(t)) {
|
|
109
|
+
return t->toString();
|
|
110
|
+
} else if (is<TerminalNode *>(t)) {
|
|
111
|
+
Token *symbol = dynamic_cast<TerminalNode *>(t)->getSymbol();
|
|
112
|
+
if (symbol != nullptr) {
|
|
113
|
+
std::string s = symbol->getText();
|
|
114
|
+
return s;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// no recog for rule names
|
|
119
|
+
if (is<RuleContext *>(t)) {
|
|
120
|
+
return dynamic_cast<RuleContext *>(t)->getText();
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (is<TerminalNodeImpl *>(t)) {
|
|
124
|
+
return dynamic_cast<TerminalNodeImpl *>(t)->getSymbol()->getText();
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return "";
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
std::vector<ParseTree *> Trees::getAncestors(ParseTree *t) {
|
|
131
|
+
std::vector<ParseTree *> ancestors;
|
|
132
|
+
ParseTree *parent = t->parent;
|
|
133
|
+
while (parent != nullptr) {
|
|
134
|
+
ancestors.insert(ancestors.begin(), parent); // insert at start
|
|
135
|
+
parent = parent->parent;
|
|
136
|
+
}
|
|
137
|
+
return ancestors;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
template<typename T>
|
|
141
|
+
static void _findAllNodes(ParseTree *t, size_t index, bool findTokens, std::vector<T> &nodes) {
|
|
142
|
+
// check this node (the root) first
|
|
143
|
+
if (findTokens && is<TerminalNode *>(t)) {
|
|
144
|
+
TerminalNode *tnode = dynamic_cast<TerminalNode *>(t);
|
|
145
|
+
if (tnode->getSymbol()->getType() == index) {
|
|
146
|
+
nodes.push_back(t);
|
|
147
|
+
}
|
|
148
|
+
} else if (!findTokens && is<ParserRuleContext *>(t)) {
|
|
149
|
+
ParserRuleContext *ctx = dynamic_cast<ParserRuleContext *>(t);
|
|
150
|
+
if (ctx->getRuleIndex() == index) {
|
|
151
|
+
nodes.push_back(t);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// check children
|
|
155
|
+
for (size_t i = 0; i < t->children.size(); i++) {
|
|
156
|
+
_findAllNodes(t->children[i], index, findTokens, nodes);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
bool Trees::isAncestorOf(ParseTree *t, ParseTree *u) {
|
|
161
|
+
if (t == nullptr || u == nullptr || t->parent == nullptr) {
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
ParseTree *p = u->parent;
|
|
166
|
+
while (p != nullptr) {
|
|
167
|
+
if (t == p) {
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
p = p->parent;
|
|
171
|
+
}
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
std::vector<ParseTree *> Trees::findAllTokenNodes(ParseTree *t, size_t ttype) {
|
|
176
|
+
return findAllNodes(t, ttype, true);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
std::vector<ParseTree *> Trees::findAllRuleNodes(ParseTree *t, size_t ruleIndex) {
|
|
180
|
+
return findAllNodes(t, ruleIndex, false);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
std::vector<ParseTree *> Trees::findAllNodes(ParseTree *t, size_t index, bool findTokens) {
|
|
184
|
+
std::vector<ParseTree *> nodes;
|
|
185
|
+
_findAllNodes<ParseTree *>(t, index, findTokens, nodes);
|
|
186
|
+
return nodes;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
std::vector<ParseTree *> Trees::getDescendants(ParseTree *t) {
|
|
190
|
+
std::vector<ParseTree *> nodes;
|
|
191
|
+
nodes.push_back(t);
|
|
192
|
+
std::size_t n = t->children.size();
|
|
193
|
+
for (size_t i = 0 ; i < n ; i++) {
|
|
194
|
+
auto descentants = getDescendants(t->children[i]);
|
|
195
|
+
for (auto entry: descentants) {
|
|
196
|
+
nodes.push_back(entry);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return nodes;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
std::vector<ParseTree *> Trees::descendants(ParseTree *t) {
|
|
203
|
+
return getDescendants(t);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
ParserRuleContext* Trees::getRootOfSubtreeEnclosingRegion(ParseTree *t, size_t startTokenIndex, size_t stopTokenIndex) {
|
|
207
|
+
size_t n = t->children.size();
|
|
208
|
+
for (size_t i = 0; i < n; i++) {
|
|
209
|
+
ParserRuleContext *r = getRootOfSubtreeEnclosingRegion(t->children[i], startTokenIndex, stopTokenIndex);
|
|
210
|
+
if (r != nullptr) {
|
|
211
|
+
return r;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
if (is<ParserRuleContext *>(t)) {
|
|
216
|
+
ParserRuleContext *r = dynamic_cast<ParserRuleContext *>(t);
|
|
217
|
+
if (startTokenIndex >= r->getStart()->getTokenIndex() && // is range fully contained in t?
|
|
218
|
+
(r->getStop() == nullptr || stopTokenIndex <= r->getStop()->getTokenIndex())) {
|
|
219
|
+
// note: r.getStop()==null likely implies that we bailed out of parser and there's nothing to the right
|
|
220
|
+
return r;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return nullptr;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
ParseTree * Trees::findNodeSuchThat(ParseTree *t, Ref<Predicate> const& pred) {
|
|
227
|
+
if (pred->test(t)) {
|
|
228
|
+
return t;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
size_t n = t->children.size();
|
|
232
|
+
for (size_t i = 0 ; i < n ; ++i) {
|
|
233
|
+
ParseTree *u = findNodeSuchThat(t->children[i], pred);
|
|
234
|
+
if (u != nullptr) {
|
|
235
|
+
return u;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
return nullptr;
|
|
240
|
+
}
|
|
241
|
+
|
|
@@ -0,0 +1,78 @@
|
|
|
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
|
+
#include "tree/TerminalNode.h"
|
|
9
|
+
#include "ParserRuleContext.h"
|
|
10
|
+
#include "Recognizer.h"
|
|
11
|
+
|
|
12
|
+
namespace antlr4 {
|
|
13
|
+
namespace tree {
|
|
14
|
+
|
|
15
|
+
/// A set of utility routines useful for all kinds of ANTLR trees.
|
|
16
|
+
class ANTLR4CPP_PUBLIC Trees {
|
|
17
|
+
public:
|
|
18
|
+
/// Print out a whole tree in LISP form. getNodeText is used on the
|
|
19
|
+
/// node payloads to get the text for the nodes. Detect
|
|
20
|
+
/// parse trees and extract data appropriately.
|
|
21
|
+
static std::string toStringTree(ParseTree *t, bool pretty = false);
|
|
22
|
+
|
|
23
|
+
/// Print out a whole tree in LISP form. getNodeText is used on the
|
|
24
|
+
/// node payloads to get the text for the nodes. Detect
|
|
25
|
+
/// parse trees and extract data appropriately.
|
|
26
|
+
static std::string toStringTree(ParseTree *t, Parser *recog, bool pretty = false);
|
|
27
|
+
|
|
28
|
+
/// Print out a whole tree in LISP form. getNodeText is used on the
|
|
29
|
+
/// node payloads to get the text for the nodes. Detect
|
|
30
|
+
/// parse trees and extract data appropriately.
|
|
31
|
+
static std::string toStringTree(ParseTree *t, const std::vector<std::string> &ruleNames, bool pretty = false);
|
|
32
|
+
static std::string getNodeText(ParseTree *t, Parser *recog);
|
|
33
|
+
static std::string getNodeText(ParseTree *t, const std::vector<std::string> &ruleNames);
|
|
34
|
+
|
|
35
|
+
/// Return a list of all ancestors of this node. The first node of
|
|
36
|
+
/// list is the root and the last is the parent of this node.
|
|
37
|
+
static std::vector<ParseTree *> getAncestors(ParseTree *t);
|
|
38
|
+
|
|
39
|
+
/** Return true if t is u's parent or a node on path to root from u.
|
|
40
|
+
* Use == not equals().
|
|
41
|
+
*
|
|
42
|
+
* @since 4.5.1
|
|
43
|
+
*/
|
|
44
|
+
static bool isAncestorOf(ParseTree *t, ParseTree *u);
|
|
45
|
+
static std::vector<ParseTree *> findAllTokenNodes(ParseTree *t, size_t ttype);
|
|
46
|
+
static std::vector<ParseTree *> findAllRuleNodes(ParseTree *t, size_t ruleIndex);
|
|
47
|
+
static std::vector<ParseTree *> findAllNodes(ParseTree *t, size_t index, bool findTokens);
|
|
48
|
+
|
|
49
|
+
/** Get all descendents; includes t itself.
|
|
50
|
+
*
|
|
51
|
+
* @since 4.5.1
|
|
52
|
+
*/
|
|
53
|
+
static std::vector<ParseTree *> getDescendants(ParseTree *t);
|
|
54
|
+
|
|
55
|
+
/** @deprecated */
|
|
56
|
+
static std::vector<ParseTree *> descendants(ParseTree *t);
|
|
57
|
+
|
|
58
|
+
/** Find smallest subtree of t enclosing range startTokenIndex..stopTokenIndex
|
|
59
|
+
* inclusively using postorder traversal. Recursive depth-first-search.
|
|
60
|
+
*
|
|
61
|
+
* @since 4.5.1
|
|
62
|
+
*/
|
|
63
|
+
static ParserRuleContext* getRootOfSubtreeEnclosingRegion(ParseTree *t,
|
|
64
|
+
size_t startTokenIndex, // inclusive
|
|
65
|
+
size_t stopTokenIndex); // inclusive
|
|
66
|
+
|
|
67
|
+
/** Return first node satisfying the pred
|
|
68
|
+
*
|
|
69
|
+
* @since 4.5.1
|
|
70
|
+
*/
|
|
71
|
+
static ParseTree* findNodeSuchThat(ParseTree *t, Ref<misc::Predicate> const& pred);
|
|
72
|
+
|
|
73
|
+
private:
|
|
74
|
+
Trees();
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
} // namespace tree
|
|
78
|
+
} // namespace antlr4
|
|
@@ -0,0 +1,9 @@
|
|
|
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 "tree/pattern/Chunk.h"
|
|
7
|
+
|
|
8
|
+
antlr4::tree::pattern::Chunk::~Chunk() {
|
|
9
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
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
|
+
#include "antlr4-common.h"
|
|
9
|
+
|
|
10
|
+
namespace antlr4 {
|
|
11
|
+
namespace tree {
|
|
12
|
+
namespace pattern {
|
|
13
|
+
|
|
14
|
+
/// <summary>
|
|
15
|
+
/// A chunk is either a token tag, a rule tag, or a span of literal text within a
|
|
16
|
+
/// tree pattern.
|
|
17
|
+
/// <p/>
|
|
18
|
+
/// The method <seealso cref="ParseTreePatternMatcher#split(String)"/> returns a list of
|
|
19
|
+
/// chunks in preparation for creating a token stream by
|
|
20
|
+
/// <seealso cref="ParseTreePatternMatcher#tokenize(String)"/>. From there, we get a parse
|
|
21
|
+
/// tree from with <seealso cref="ParseTreePatternMatcher#compile(String, int)"/>. These
|
|
22
|
+
/// chunks are converted to <seealso cref="RuleTagToken"/>, <seealso cref="TokenTagToken"/>, or the
|
|
23
|
+
/// regular tokens of the text surrounding the tags.
|
|
24
|
+
/// </summary>
|
|
25
|
+
class ANTLR4CPP_PUBLIC Chunk {
|
|
26
|
+
public:
|
|
27
|
+
Chunk() = default;
|
|
28
|
+
Chunk(Chunk const&) = default;
|
|
29
|
+
virtual ~Chunk();
|
|
30
|
+
|
|
31
|
+
Chunk& operator=(Chunk const&) = default;
|
|
32
|
+
|
|
33
|
+
/// This method returns a text representation of the tag chunk. Labeled tags
|
|
34
|
+
/// are returned in the form {@code label:tag}, and unlabeled tags are
|
|
35
|
+
/// returned as just the tag name.
|
|
36
|
+
virtual std::string toString() {
|
|
37
|
+
std::string str;
|
|
38
|
+
return str;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
} // namespace pattern
|
|
43
|
+
} // namespace tree
|
|
44
|
+
} // namespace antlr4
|
data/ext/python3-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.cpp
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
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 "Exceptions.h"
|
|
7
|
+
|
|
8
|
+
#include "tree/pattern/ParseTreeMatch.h"
|
|
9
|
+
|
|
10
|
+
using namespace antlr4::tree;
|
|
11
|
+
using namespace antlr4::tree::pattern;
|
|
12
|
+
|
|
13
|
+
ParseTreeMatch::ParseTreeMatch(ParseTree *tree, const ParseTreePattern &pattern,
|
|
14
|
+
const std::map<std::string, std::vector<ParseTree *>> &labels,
|
|
15
|
+
ParseTree *mismatchedNode)
|
|
16
|
+
: _tree(tree), _pattern(pattern), _labels(labels), _mismatchedNode(mismatchedNode) {
|
|
17
|
+
if (tree == nullptr) {
|
|
18
|
+
throw IllegalArgumentException("tree cannot be nul");
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
ParseTreeMatch::~ParseTreeMatch() {
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
ParseTree* ParseTreeMatch::get(const std::string &label) {
|
|
26
|
+
auto iterator = _labels.find(label);
|
|
27
|
+
if (iterator == _labels.end() || iterator->second.empty()) {
|
|
28
|
+
return nullptr;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return iterator->second.back(); // return last if multiple
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
std::vector<ParseTree *> ParseTreeMatch::getAll(const std::string &label) {
|
|
35
|
+
auto iterator = _labels.find(label);
|
|
36
|
+
if (iterator == _labels.end()) {
|
|
37
|
+
return {};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return iterator->second;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
std::map<std::string, std::vector<ParseTree *>>& ParseTreeMatch::getLabels() {
|
|
44
|
+
return _labels;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
ParseTree *ParseTreeMatch::getMismatchedNode() {
|
|
48
|
+
return _mismatchedNode;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
bool ParseTreeMatch::succeeded() {
|
|
52
|
+
return _mismatchedNode == nullptr;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const ParseTreePattern& ParseTreeMatch::getPattern() {
|
|
56
|
+
return _pattern;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
ParseTree * ParseTreeMatch::getTree() {
|
|
60
|
+
return _tree;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
std::string ParseTreeMatch::toString() {
|
|
64
|
+
if (succeeded()) {
|
|
65
|
+
return "Match succeeded; found " + std::to_string(_labels.size()) + " labels";
|
|
66
|
+
} else {
|
|
67
|
+
return "Match failed; found " + std::to_string(_labels.size()) + " labels";
|
|
68
|
+
}
|
|
69
|
+
}
|