expressir 1.2.3 → 1.2.6
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 +4 -4
- data/.cross_rubies +0 -6
- data/.github/workflows/rake.yml +223 -31
- data/.gitignore +7 -1
- data/.gitmodules +3 -0
- data/.rubocop.yml +13 -4
- data/README.adoc +8 -0
- data/Rakefile +4 -1
- data/bin/console +0 -1
- data/bin/rspec +3 -3
- data/exe/expressir +4 -2
- data/exe/format +1 -1
- data/exe/format-test +25 -25
- data/exe/generate-parser +16 -13
- data/expressir.gemspec +11 -9
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/CMakeLists.txt +44 -9
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2013.vcxproj +11 -5
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2013.vcxproj.filters +0 -3
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2015.vcxproj +11 -4
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2015.vcxproj.filters +0 -3
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2017.vcxproj +11 -4
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2017.vcxproj.filters +0 -3
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj +19 -4
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj.filters +0 -3
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.pbxproj +51 -35
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4.xcscheme +1 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_ios.xcscheme +1 -5
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_static.xcscheme +1 -5
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.cpp +1 -12
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.h +9 -6
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.cpp +43 -18
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.h +16 -6
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.cpp +2 -4
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.cpp +1 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.h +1 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.cpp +16 -13
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.cpp +2 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.h +2 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.cpp +5 -4
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.h +1 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.h +1 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.cpp +2 -3
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.h +9 -9
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.cpp +0 -15
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.h +1 -7
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.cpp +2 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.h +2 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.cpp +51 -31
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.h +1 -7
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.cpp +27 -39
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.h +1 -7
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.cpp +20 -23
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.h +21 -21
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.cpp +4 -4
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.cpp +0 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.cpp +16 -27
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.h +12 -17
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.cpp +4 -3
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.h +5 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.cpp +2 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.h +7 -7
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.h +1 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +6 -6
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.h +4 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp +15 -18
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.h +12 -18
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Version.h +42 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.cpp +13 -53
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.h +11 -27
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-common.h +19 -58
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-runtime.h +7 -5
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.cpp +6 -57
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.h +35 -15
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +29 -36
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.h +36 -27
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp +58 -54
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.h +77 -31
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.cpp +22 -32
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.h +22 -24
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp +335 -464
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.h +9 -62
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.cpp +9 -39
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.h +6 -22
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.cpp +10 -26
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.h +42 -36
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNStateType.cpp +33 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNStateType.h +36 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.cpp +2 -6
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.h +4 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.cpp +49 -22
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.h +20 -12
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.cpp +1 -5
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.h +5 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.h +4 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.h +4 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.h +5 -3
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.h +10 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.h +1 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.cpp +0 -5
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.h +12 -8
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.cpp +2 -6
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.h +6 -3
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.cpp +139 -108
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.h +10 -43
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp +16 -33
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.h +12 -12
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp +69 -82
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.h +17 -28
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.cpp +12 -6
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.h +45 -11
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.cpp +48 -44
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.h +31 -18
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionType.h +3 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.cpp +14 -26
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.h +12 -16
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.cpp +15 -32
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.h +12 -24
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.cpp +23 -29
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.h +13 -19
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.cpp +13 -26
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.h +12 -16
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.cpp +6 -17
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.h +12 -16
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.cpp +6 -17
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.h +12 -16
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.cpp +13 -26
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.h +12 -16
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.cpp +6 -17
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.h +11 -15
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.cpp +13 -26
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.h +13 -17
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.h +5 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.cpp +1 -6
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.h +4 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.cpp +6 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.h +8 -3
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp +169 -152
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h +26 -19
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulatorOptions.h +50 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.h +5 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.h +5 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.cpp +2 -11
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.h +15 -9
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp +2 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h +2 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.cpp +4 -14
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.h +22 -11
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.cpp +255 -338
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.h +87 -116
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextCache.cpp +56 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextCache.h +64 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.cpp +167 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.h +101 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCacheOptions.h +71 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextType.h +21 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.cpp +18 -17
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.h +1 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp +2 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h +2 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.cpp +1 -5
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.h +4 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.h +4 -3
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.h +4 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.cpp +1 -5
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.h +5 -3
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.cpp +197 -156
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.h +92 -81
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContextType.h +23 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SerializedATNView.h +101 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.cpp +2 -6
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.h +11 -3
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp +39 -34
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.h +17 -10
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.h +5 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.h +4 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.cpp +6 -6
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.h +6 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.h +5 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.cpp +1 -9
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.h +11 -22
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TransitionType.cpp +27 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TransitionType.h +33 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.cpp +1 -5
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.h +4 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.cpp +11 -23
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.h +20 -15
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.cpp +2 -9
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.h +4 -4
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.cpp +9 -50
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.h +57 -48
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.cpp +1 -4
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.h +3 -4
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.cpp +2 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.h +3 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.cpp +1 -29
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.h +10 -10
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.cpp +15 -28
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.h +1 -9
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.cpp +54 -68
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.h +35 -9
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.cpp +0 -5
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.h +1 -155
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.cpp +2 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.h +39 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/BitSet.h +1 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.cpp +13 -54
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.h +16 -29
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Casts.h +34 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Declarations.h +0 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.cpp +25 -23
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.h +2 -40
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Unicode.h +28 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Utf8.cpp +242 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Utf8.h +54 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/AbstractParseTreeVisitor.h +13 -12
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.h +7 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.cpp +36 -5
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.h +14 -4
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.cpp +14 -19
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.cpp +0 -3
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.h +14 -5
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeType.h +22 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.h +4 -4
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.cpp +8 -9
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.h +30 -6
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.h +10 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.cpp +2 -5
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.h +4 -5
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.cpp +1 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.cpp +1 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp +1 -2
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.cpp +1 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.cpp +128 -119
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.h +18 -27
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.cpp +1 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.cpp +1 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/tests/Utf8Test.cpp +110 -0
- data/ext/express-parser/antlrgen/Express.interp +1 -1
- data/ext/express-parser/antlrgen/ExpressBaseListener.cpp +1 -1
- data/ext/express-parser/antlrgen/ExpressBaseListener.h +1 -1
- data/ext/express-parser/antlrgen/ExpressBaseVisitor.cpp +1 -1
- data/ext/express-parser/antlrgen/ExpressBaseVisitor.h +200 -200
- data/ext/express-parser/antlrgen/ExpressLexer.cpp +645 -1129
- data/ext/express-parser/antlrgen/ExpressLexer.h +20 -27
- data/ext/express-parser/antlrgen/ExpressLexer.interp +1 -1
- data/ext/express-parser/antlrgen/ExpressListener.cpp +1 -1
- data/ext/express-parser/antlrgen/ExpressListener.h +1 -1
- data/ext/express-parser/antlrgen/ExpressParser.cpp +1754 -1447
- data/ext/express-parser/antlrgen/ExpressParser.h +219 -223
- data/ext/express-parser/antlrgen/ExpressVisitor.cpp +1 -1
- data/ext/express-parser/antlrgen/ExpressVisitor.h +200 -200
- data/ext/express-parser/express_parser.cpp +165 -101
- data/ext/express-parser/extconf.rb +14 -14
- data/lib/expressir/config.rb +1 -1
- data/lib/expressir/express/parser.rb +17 -15
- data/lib/expressir/express/visitor.rb +7 -3
- data/lib/expressir/model.rb +78 -78
- data/lib/expressir/version.rb +1 -1
- data/rakelib/antlr4-native.rake +161 -0
- data/rakelib/cross-ruby.rake +213 -162
- data/spec/acceptance/version_spec.rb +17 -2
- data/spec/expressir/express/cache_spec.rb +23 -5
- data/spec/expressir/express/formatter_spec.rb +54 -8
- data/spec/expressir/express/parser_spec.rb +47 -11
- data/spec/expressir/model/model_element_spec.rb +198 -146
- data/spec/spec_helper.rb +7 -0
- metadata +79 -91
- data/demo.rb +0 -18
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.cpp +0 -621
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.h +0 -61
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.cpp +0 -14
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.h +0 -24
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.cpp +0 -12
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.cpp +0 -12
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.cpp +0 -15
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.cpp +0 -9
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.cpp +0 -35
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.h +0 -27
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.cpp +0 -12
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Makefile +0 -67
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.cpp +0 -12
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.cpp +0 -12
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.cpp +0 -16
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.cpp +0 -12
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.cpp +0 -12
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.cpp +0 -15
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.cpp +0 -12
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.cpp +0 -303
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.h +0 -112
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.cpp +0 -9
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.cpp +0 -9
- data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.exp +0 -9589
- data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.owl +0 -36619
- data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.xml +0 -13294
- data/original/examples/employment/eclipse/.project +0 -17
- data/original/examples/employment/eclipse/Export/Employment.png +0 -0
- data/original/examples/employment/eclipse/Express/employment_schema.exp +0 -33
- data/original/examples/employment/eclipse/Express/employment_schema.xmi +0 -77
- data/original/examples/employment/eclipse/Express/employment_schema.xml +0 -93
- data/original/examples/employment/eclipse/Models/Employment.uml +0 -4
- data/original/examples/employment/eclipse/Models/Employment.umldi +0 -240
- data/original/examples/employment/eclipse/readme.txt +0 -7
- data/original/examples/employment/employment_schema.exp +0 -33
- data/original/examples/employment/employment_schema.rb +0 -232
- data/original/examples/employment/employment_schema.xml +0 -93
- data/original/examples/employment/employment_schema___module.rb +0 -46
- data/original/examples/employment/employment_schema___p28attr.rb +0 -126
- data/original/examples/employment/employment_schema___p28inst.rb +0 -26
- data/original/examples/employment/example_employment_data.xml +0 -1
- data/original/examples/employment/example_employment_data_copy.xml +0 -1
- data/original/examples/employment/example_employment_reader.rb +0 -30
- data/original/examples/employment/example_employment_writer.rb +0 -51
- data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.exp +0 -3710
- data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.owl +0 -35880
- data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xmi +0 -15357
- data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xml +0 -9468
- data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.exp +0 -8404
- data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.owl +0 -43147
- data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xmi +0 -18341
- data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xml +0 -11632
- data/original/exp2ruby.rb +0 -525
- data/original/expsm.rb +0 -34
- data/original/mapping_owl.rb +0 -1018
- data/original/mapping_sysml.rb +0 -2281
- data/original/mapping_uml2.rb +0 -599
- data/original/mapping_uml2_eclipse.rb +0 -433
- data/original/reeper.rb +0 -134
- data/spec/expressr_spec.rb +0 -5
@@ -12,10 +12,11 @@
|
|
12
12
|
#include "atn/RuleTransition.h"
|
13
13
|
#include "atn/ATN.h"
|
14
14
|
#include "atn/ATNState.h"
|
15
|
+
#include "support/StringUtils.h"
|
16
|
+
#include "support/Casts.h"
|
15
17
|
#include "Parser.h"
|
16
18
|
#include "CommonToken.h"
|
17
19
|
#include "Vocabulary.h"
|
18
|
-
#include "support/StringUtils.h"
|
19
20
|
|
20
21
|
#include "DefaultErrorStrategy.h"
|
21
22
|
|
@@ -106,10 +107,10 @@ void DefaultErrorStrategy::sync(Parser *recognizer) {
|
|
106
107
|
}
|
107
108
|
|
108
109
|
switch (s->getStateType()) {
|
109
|
-
case atn::
|
110
|
-
case atn::
|
111
|
-
case atn::
|
112
|
-
case atn::
|
110
|
+
case atn::ATNStateType::BLOCK_START:
|
111
|
+
case atn::ATNStateType::STAR_BLOCK_START:
|
112
|
+
case atn::ATNStateType::PLUS_BLOCK_START:
|
113
|
+
case atn::ATNStateType::STAR_LOOP_ENTRY:
|
113
114
|
// report error and recover if possible
|
114
115
|
if (singleTokenDeletion(recognizer) != nullptr) {
|
115
116
|
return;
|
@@ -117,8 +118,8 @@ void DefaultErrorStrategy::sync(Parser *recognizer) {
|
|
117
118
|
|
118
119
|
throw InputMismatchException(recognizer);
|
119
120
|
|
120
|
-
case atn::
|
121
|
-
case atn::
|
121
|
+
case atn::ATNStateType::PLUS_LOOP_BACK:
|
122
|
+
case atn::ATNStateType::STAR_LOOP_BACK: {
|
122
123
|
reportUnwantedToken(recognizer);
|
123
124
|
misc::IntervalSet expecting = recognizer->getExpectedTokens();
|
124
125
|
misc::IntervalSet whatFollowsLoopIterationOrRule = expecting.Or(getErrorRecoverySet(recognizer));
|
@@ -292,11 +293,13 @@ size_t DefaultErrorStrategy::getSymbolType(Token *symbol) {
|
|
292
293
|
}
|
293
294
|
|
294
295
|
std::string DefaultErrorStrategy::escapeWSAndQuote(const std::string &s) const {
|
295
|
-
std::string result
|
296
|
-
|
297
|
-
|
298
|
-
antlrcpp::
|
299
|
-
|
296
|
+
std::string result;
|
297
|
+
result.reserve(s.size() + 2);
|
298
|
+
result.push_back('\'');
|
299
|
+
antlrcpp::escapeWhitespace(result, s);
|
300
|
+
result.push_back('\'');
|
301
|
+
result.shrink_to_fit();
|
302
|
+
return result;
|
300
303
|
}
|
301
304
|
|
302
305
|
misc::IntervalSet DefaultErrorStrategy::getErrorRecoverySet(Parser *recognizer) {
|
@@ -306,7 +309,7 @@ misc::IntervalSet DefaultErrorStrategy::getErrorRecoverySet(Parser *recognizer)
|
|
306
309
|
while (ctx->invokingState != ATNState::INVALID_STATE_NUMBER) {
|
307
310
|
// compute what follows who invoked us
|
308
311
|
atn::ATNState *invokingState = atn.states[ctx->invokingState];
|
309
|
-
atn::RuleTransition *rt =
|
312
|
+
const atn::RuleTransition *rt = downCast<const atn::RuleTransition*>(invokingState->transitions[0].get());
|
310
313
|
misc::IntervalSet follow = atn.nextTokens(rt->followState);
|
311
314
|
recoverSet.addAll(follow);
|
312
315
|
|
@@ -10,7 +10,7 @@ using namespace antlr4;
|
|
10
10
|
RuntimeException::RuntimeException(const std::string &msg) : std::exception(), _message(msg) {
|
11
11
|
}
|
12
12
|
|
13
|
-
const char* RuntimeException::what() const
|
13
|
+
const char* RuntimeException::what() const noexcept {
|
14
14
|
return _message.c_str();
|
15
15
|
}
|
16
16
|
|
@@ -19,7 +19,7 @@ const char* RuntimeException::what() const NOEXCEPT {
|
|
19
19
|
IOException::IOException(const std::string &msg) : std::exception(), _message(msg) {
|
20
20
|
}
|
21
21
|
|
22
|
-
const char* IOException::what() const
|
22
|
+
const char* IOException::what() const noexcept {
|
23
23
|
return _message.c_str();
|
24
24
|
}
|
25
25
|
|
@@ -16,7 +16,7 @@ namespace antlr4 {
|
|
16
16
|
public:
|
17
17
|
RuntimeException(const std::string &msg = "");
|
18
18
|
|
19
|
-
virtual const char* what() const
|
19
|
+
virtual const char* what() const noexcept override;
|
20
20
|
};
|
21
21
|
|
22
22
|
class ANTLR4CPP_PUBLIC IllegalStateException : public RuntimeException {
|
@@ -77,7 +77,7 @@ namespace antlr4 {
|
|
77
77
|
public:
|
78
78
|
IOException(const std::string &msg = "");
|
79
79
|
|
80
|
-
virtual const char* what() const
|
80
|
+
virtual const char* what() const noexcept override;
|
81
81
|
};
|
82
82
|
|
83
83
|
class ANTLR4CPP_PUBLIC CancellationException : public IllegalStateException {
|
data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.cpp
CHANGED
@@ -8,6 +8,7 @@
|
|
8
8
|
#include "atn/PredicateTransition.h"
|
9
9
|
#include "atn/ATN.h"
|
10
10
|
#include "atn/ATNState.h"
|
11
|
+
#include "support/Casts.h"
|
11
12
|
#include "support/CPPUtils.h"
|
12
13
|
|
13
14
|
#include "FailedPredicateException.h"
|
@@ -26,10 +27,10 @@ FailedPredicateException::FailedPredicateException(Parser *recognizer, const std
|
|
26
27
|
recognizer->getInputStream(), recognizer->getContext(), recognizer->getCurrentToken()) {
|
27
28
|
|
28
29
|
atn::ATNState *s = recognizer->getInterpreter<atn::ATNSimulator>()->atn.states[recognizer->getState()];
|
29
|
-
atn::Transition *transition = s->transitions[0];
|
30
|
-
if (
|
31
|
-
_ruleIndex =
|
32
|
-
_predicateIndex =
|
30
|
+
const atn::Transition *transition = s->transitions[0].get();
|
31
|
+
if (transition->getTransitionType() == atn::TransitionType::PREDICATE) {
|
32
|
+
_ruleIndex = downCast<const atn::PredicateTransition&>(*transition).getRuleIndex();
|
33
|
+
_predicateIndex = downCast<const atn::PredicateTransition&>(*transition).getPredIndex();
|
33
34
|
} else {
|
34
35
|
_ruleIndex = 0;
|
35
36
|
_predicateIndex = 0;
|
@@ -15,7 +15,7 @@ namespace antlr4 {
|
|
15
15
|
/// prediction.
|
16
16
|
class ANTLR4CPP_PUBLIC FailedPredicateException : public RecognitionException {
|
17
17
|
public:
|
18
|
-
FailedPredicateException(Parser *recognizer);
|
18
|
+
explicit FailedPredicateException(Parser *recognizer);
|
19
19
|
FailedPredicateException(Parser *recognizer, const std::string &predicate);
|
20
20
|
FailedPredicateException(Parser *recognizer, const std::string &predicate, const std::string &message);
|
21
21
|
|
@@ -27,7 +27,7 @@ namespace antlr4 {
|
|
27
27
|
/// </summary>
|
28
28
|
class ANTLR4CPP_PUBLIC IntStream {
|
29
29
|
public:
|
30
|
-
static
|
30
|
+
static constexpr size_t EOF = std::numeric_limits<size_t>::max();
|
31
31
|
|
32
32
|
/// The value returned by <seealso cref="#LA LA()"/> when the end of the stream is
|
33
33
|
/// reached.
|
@@ -11,7 +11,6 @@
|
|
11
11
|
#include "ANTLRErrorListener.h"
|
12
12
|
#include "support/CPPUtils.h"
|
13
13
|
#include "CommonToken.h"
|
14
|
-
#include "support/StringUtils.h"
|
15
14
|
|
16
15
|
#include "Lexer.h"
|
17
16
|
|
@@ -136,7 +135,7 @@ size_t Lexer::popMode() {
|
|
136
135
|
}
|
137
136
|
|
138
137
|
|
139
|
-
|
138
|
+
TokenFactory<CommonToken>* Lexer::getTokenFactory() {
|
140
139
|
return _factory;
|
141
140
|
}
|
142
141
|
|
@@ -284,7 +283,7 @@ size_t Lexer::getNumberOfSyntaxErrors() {
|
|
284
283
|
void Lexer::InitializeInstanceFields() {
|
285
284
|
_syntaxErrors = 0;
|
286
285
|
token = nullptr;
|
287
|
-
_factory = CommonTokenFactory::DEFAULT;
|
286
|
+
_factory = CommonTokenFactory::DEFAULT.get();
|
288
287
|
tokenStartCharIndex = INVALID_INDEX;
|
289
288
|
tokenStartLine = 0;
|
290
289
|
tokenStartCharPositionInLine = 0;
|
@@ -18,20 +18,20 @@ namespace antlr4 {
|
|
18
18
|
/// of speed.
|
19
19
|
class ANTLR4CPP_PUBLIC Lexer : public Recognizer, public TokenSource {
|
20
20
|
public:
|
21
|
-
static
|
22
|
-
static
|
23
|
-
static
|
21
|
+
static constexpr size_t DEFAULT_MODE = 0;
|
22
|
+
static constexpr size_t MORE = std::numeric_limits<size_t>::max() - 1;
|
23
|
+
static constexpr size_t SKIP = std::numeric_limits<size_t>::max() - 2;
|
24
24
|
|
25
|
-
static
|
26
|
-
static
|
27
|
-
static
|
28
|
-
static
|
25
|
+
static constexpr size_t DEFAULT_TOKEN_CHANNEL = Token::DEFAULT_CHANNEL;
|
26
|
+
static constexpr size_t HIDDEN = Token::HIDDEN_CHANNEL;
|
27
|
+
static constexpr size_t MIN_CHAR_VALUE = 0;
|
28
|
+
static constexpr size_t MAX_CHAR_VALUE = 0x10FFFF;
|
29
29
|
|
30
30
|
CharStream *_input; // Pure reference, usually from statically allocated instance.
|
31
31
|
|
32
32
|
protected:
|
33
33
|
/// How to create token objects.
|
34
|
-
|
34
|
+
TokenFactory<CommonToken> *_factory;
|
35
35
|
|
36
36
|
public:
|
37
37
|
/// The goal of all lexer rules/methods is to create a token object.
|
@@ -100,7 +100,7 @@ namespace antlr4 {
|
|
100
100
|
this->_factory = factory;
|
101
101
|
}
|
102
102
|
|
103
|
-
virtual
|
103
|
+
virtual TokenFactory<CommonToken>* getTokenFactory() override;
|
104
104
|
|
105
105
|
/// Set the char stream and reset the lexer
|
106
106
|
virtual void setInputStream(IntStream *input) override;
|
@@ -6,7 +6,6 @@
|
|
6
6
|
#include "atn/ATNType.h"
|
7
7
|
#include "atn/LexerATNSimulator.h"
|
8
8
|
#include "dfa/DFA.h"
|
9
|
-
#include "atn/EmptyPredictionContext.h"
|
10
9
|
#include "Exceptions.h"
|
11
10
|
#include "Vocabulary.h"
|
12
11
|
|
@@ -14,12 +13,6 @@
|
|
14
13
|
|
15
14
|
using namespace antlr4;
|
16
15
|
|
17
|
-
LexerInterpreter::LexerInterpreter(const std::string &grammarFileName, const std::vector<std::string> &tokenNames,
|
18
|
-
const std::vector<std::string> &ruleNames, const std::vector<std::string> &channelNames, const std::vector<std::string> &modeNames,
|
19
|
-
const atn::ATN &atn, CharStream *input)
|
20
|
-
: LexerInterpreter(grammarFileName, dfa::Vocabulary::fromTokenNames(tokenNames), ruleNames, channelNames, modeNames, atn, input) {
|
21
|
-
}
|
22
|
-
|
23
16
|
LexerInterpreter::LexerInterpreter(const std::string &grammarFileName, const dfa::Vocabulary &vocabulary,
|
24
17
|
const std::vector<std::string> &ruleNames, const std::vector<std::string> &channelNames, const std::vector<std::string> &modeNames,
|
25
18
|
const atn::ATN &atn, CharStream *input)
|
@@ -31,10 +24,6 @@ LexerInterpreter::LexerInterpreter(const std::string &grammarFileName, const dfa
|
|
31
24
|
throw IllegalArgumentException("The ATN must be a lexer ATN.");
|
32
25
|
}
|
33
26
|
|
34
|
-
for (size_t i = 0; i < atn.maxTokenType; i++) {
|
35
|
-
_tokenNames.push_back(vocabulary.getDisplayName(i));
|
36
|
-
}
|
37
|
-
|
38
27
|
for (size_t i = 0; i < atn.getNumberOfDecisions(); ++i) {
|
39
28
|
_decisionToDFA.push_back(dfa::DFA(_atn.getDecisionState(i), i));
|
40
29
|
}
|
@@ -54,10 +43,6 @@ std::string LexerInterpreter::getGrammarFileName() const {
|
|
54
43
|
return _grammarFileName;
|
55
44
|
}
|
56
45
|
|
57
|
-
const std::vector<std::string>& LexerInterpreter::getTokenNames() const {
|
58
|
-
return _tokenNames;
|
59
|
-
}
|
60
|
-
|
61
46
|
const std::vector<std::string>& LexerInterpreter::getRuleNames() const {
|
62
47
|
return _ruleNames;
|
63
48
|
}
|
@@ -7,16 +7,13 @@
|
|
7
7
|
|
8
8
|
#include "Lexer.h"
|
9
9
|
#include "atn/PredictionContext.h"
|
10
|
+
#include "atn/PredictionContextCache.h"
|
10
11
|
#include "Vocabulary.h"
|
11
12
|
|
12
13
|
namespace antlr4 {
|
13
14
|
|
14
15
|
class ANTLR4CPP_PUBLIC LexerInterpreter : public Lexer {
|
15
16
|
public:
|
16
|
-
// @deprecated
|
17
|
-
LexerInterpreter(const std::string &grammarFileName, const std::vector<std::string> &tokenNames,
|
18
|
-
const std::vector<std::string> &ruleNames, const std::vector<std::string> &channelNames,
|
19
|
-
const std::vector<std::string> &modeNames, const atn::ATN &atn, CharStream *input);
|
20
17
|
LexerInterpreter(const std::string &grammarFileName, const dfa::Vocabulary &vocabulary,
|
21
18
|
const std::vector<std::string> &ruleNames, const std::vector<std::string> &channelNames,
|
22
19
|
const std::vector<std::string> &modeNames, const atn::ATN &atn, CharStream *input);
|
@@ -25,7 +22,6 @@ namespace antlr4 {
|
|
25
22
|
|
26
23
|
virtual const atn::ATN& getATN() const override;
|
27
24
|
virtual std::string getGrammarFileName() const override;
|
28
|
-
virtual const std::vector<std::string>& getTokenNames() const override;
|
29
25
|
virtual const std::vector<std::string>& getRuleNames() const override;
|
30
26
|
virtual const std::vector<std::string>& getChannelNames() const override;
|
31
27
|
virtual const std::vector<std::string>& getModeNames() const override;
|
@@ -36,8 +32,6 @@ namespace antlr4 {
|
|
36
32
|
const std::string _grammarFileName;
|
37
33
|
const atn::ATN &_atn;
|
38
34
|
|
39
|
-
// @deprecated
|
40
|
-
std::vector<std::string> _tokenNames;
|
41
35
|
const std::vector<std::string> &_ruleNames;
|
42
36
|
const std::vector<std::string> &_channelNames;
|
43
37
|
const std::vector<std::string> &_modeNames;
|
@@ -82,11 +82,11 @@ std::string ListTokenSource::getSourceName() {
|
|
82
82
|
return "List";
|
83
83
|
}
|
84
84
|
|
85
|
-
|
85
|
+
TokenFactory<CommonToken>* ListTokenSource::getTokenFactory() {
|
86
86
|
return _factory;
|
87
87
|
}
|
88
88
|
|
89
89
|
void ListTokenSource::InitializeInstanceFields() {
|
90
90
|
i = 0;
|
91
|
-
_factory = CommonTokenFactory::DEFAULT;
|
91
|
+
_factory = CommonTokenFactory::DEFAULT.get();
|
92
92
|
}
|
@@ -40,7 +40,7 @@ namespace antlr4 {
|
|
40
40
|
private:
|
41
41
|
/// This is the backing field for <seealso cref="#getTokenFactory"/> and
|
42
42
|
/// <seealso cref="setTokenFactory"/>.
|
43
|
-
|
43
|
+
TokenFactory<CommonToken> *_factory = CommonTokenFactory::DEFAULT.get();
|
44
44
|
|
45
45
|
public:
|
46
46
|
/// Constructs a new <seealso cref="ListTokenSource"/> instance from the specified
|
@@ -79,7 +79,7 @@ namespace antlr4 {
|
|
79
79
|
this->_factory = factory;
|
80
80
|
}
|
81
81
|
|
82
|
-
virtual
|
82
|
+
virtual TokenFactory<CommonToken>* getTokenFactory() override;
|
83
83
|
|
84
84
|
private:
|
85
85
|
void InitializeInstanceFields();
|
@@ -28,10 +28,25 @@
|
|
28
28
|
|
29
29
|
using namespace antlr4;
|
30
30
|
using namespace antlr4::atn;
|
31
|
-
|
32
31
|
using namespace antlrcpp;
|
33
32
|
|
34
|
-
|
33
|
+
namespace {
|
34
|
+
|
35
|
+
struct BypassAltsAtnCache final {
|
36
|
+
std::shared_mutex mutex;
|
37
|
+
/// This field maps from the serialized ATN string to the deserialized <seealso cref="ATN"/> with
|
38
|
+
/// bypass alternatives.
|
39
|
+
///
|
40
|
+
/// <seealso cref= ATNDeserializationOptions#isGenerateRuleBypassTransitions() </seealso>
|
41
|
+
std::map<std::vector<int32_t>, std::unique_ptr<const atn::ATN>, std::less<>> map;
|
42
|
+
};
|
43
|
+
|
44
|
+
BypassAltsAtnCache* getBypassAltsAtnCache() {
|
45
|
+
static BypassAltsAtnCache* const instance = new BypassAltsAtnCache();
|
46
|
+
return instance;
|
47
|
+
}
|
48
|
+
|
49
|
+
}
|
35
50
|
|
36
51
|
Parser::TraceListener::TraceListener(Parser *outerInstance_) : outerInstance(outerInstance_) {
|
37
52
|
}
|
@@ -190,7 +205,7 @@ void Parser::removeParseListeners() {
|
|
190
205
|
}
|
191
206
|
|
192
207
|
void Parser::triggerEnterRuleEvent() {
|
193
|
-
for (auto listener : _parseListeners) {
|
208
|
+
for (auto *listener : _parseListeners) {
|
194
209
|
listener->enterEveryRule(_ctx);
|
195
210
|
_ctx->enterRule(listener);
|
196
211
|
}
|
@@ -208,31 +223,36 @@ size_t Parser::getNumberOfSyntaxErrors() {
|
|
208
223
|
return _syntaxErrors;
|
209
224
|
}
|
210
225
|
|
211
|
-
|
226
|
+
TokenFactory<CommonToken>* Parser::getTokenFactory() {
|
212
227
|
return _input->getTokenSource()->getTokenFactory();
|
213
228
|
}
|
214
229
|
|
215
|
-
|
216
230
|
const atn::ATN& Parser::getATNWithBypassAlts() {
|
217
|
-
|
231
|
+
auto serializedAtn = getSerializedATN();
|
218
232
|
if (serializedAtn.empty()) {
|
219
233
|
throw UnsupportedOperationException("The current parser does not support an ATN with bypass alternatives.");
|
220
234
|
}
|
221
|
-
|
222
|
-
std::lock_guard<std::mutex> lck(_mutex);
|
223
|
-
|
224
235
|
// XXX: using the entire serialized ATN as key into the map is a big resource waste.
|
225
236
|
// How large can that thing become?
|
226
|
-
|
237
|
+
auto *cache = getBypassAltsAtnCache();
|
227
238
|
{
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
239
|
+
std::shared_lock<std::shared_mutex> lock(cache->mutex);
|
240
|
+
auto existing = cache->map.find(serializedAtn);
|
241
|
+
if (existing != cache->map.end()) {
|
242
|
+
return *existing->second;
|
243
|
+
}
|
233
244
|
}
|
234
245
|
|
235
|
-
|
246
|
+
std::unique_lock<std::shared_mutex> lock(cache->mutex);
|
247
|
+
auto existing = cache->map.find(serializedAtn);
|
248
|
+
if (existing != cache->map.end()) {
|
249
|
+
return *existing->second;
|
250
|
+
}
|
251
|
+
atn::ATNDeserializationOptions deserializationOptions;
|
252
|
+
deserializationOptions.setGenerateRuleBypassTransitions(true);
|
253
|
+
atn::ATNDeserializer deserializer(deserializationOptions);
|
254
|
+
auto atn = deserializer.deserialize(serializedAtn);
|
255
|
+
return *cache->map.insert(std::make_pair(std::vector<int32_t>(serializedAtn.begin(), serializedAtn.end()), std::move(atn))).first->second;
|
236
256
|
}
|
237
257
|
|
238
258
|
tree::pattern::ParseTreePattern Parser::compileParseTreePattern(const std::string &pattern, int patternRuleIndex) {
|
@@ -307,14 +327,14 @@ Token* Parser::consume() {
|
|
307
327
|
tree::ErrorNode *node = createErrorNode(o);
|
308
328
|
_ctx->addChild(node);
|
309
329
|
if (_parseListeners.size() > 0) {
|
310
|
-
for (auto listener : _parseListeners) {
|
330
|
+
for (auto *listener : _parseListeners) {
|
311
331
|
listener->visitErrorNode(node);
|
312
332
|
}
|
313
333
|
}
|
314
334
|
} else {
|
315
335
|
tree::TerminalNode *node = _ctx->addChild(createTerminalNode(o));
|
316
336
|
if (_parseListeners.size() > 0) {
|
317
|
-
for (auto listener : _parseListeners) {
|
337
|
+
for (auto *listener : _parseListeners) {
|
318
338
|
listener->visitTerminal(node);
|
319
339
|
}
|
320
340
|
}
|
@@ -328,8 +348,7 @@ void Parser::addContextToParseTree() {
|
|
328
348
|
if (_ctx->parent == nullptr)
|
329
349
|
return;
|
330
350
|
|
331
|
-
|
332
|
-
parent->addChild(_ctx);
|
351
|
+
downCast<ParserRuleContext*>(_ctx->parent)->addChild(_ctx);
|
333
352
|
}
|
334
353
|
|
335
354
|
void Parser::enterRule(ParserRuleContext *localctx, size_t state, size_t /*ruleIndex*/) {
|
@@ -357,7 +376,7 @@ void Parser::exitRule() {
|
|
357
376
|
triggerExitRuleEvent();
|
358
377
|
}
|
359
378
|
setState(_ctx->invokingState);
|
360
|
-
_ctx =
|
379
|
+
_ctx = downCast<ParserRuleContext*>(_ctx->parent);
|
361
380
|
}
|
362
381
|
|
363
382
|
void Parser::enterOuterAlt(ParserRuleContext *localctx, size_t altNum) {
|
@@ -367,7 +386,7 @@ void Parser::enterOuterAlt(ParserRuleContext *localctx, size_t altNum) {
|
|
367
386
|
// that is previous child of parse tree
|
368
387
|
if (_buildParseTrees && _ctx != localctx) {
|
369
388
|
if (_ctx->parent != nullptr) {
|
370
|
-
ParserRuleContext *parent =
|
389
|
+
ParserRuleContext *parent = downCast<ParserRuleContext*>(_ctx->parent);
|
371
390
|
parent->removeLastChild();
|
372
391
|
parent->addChild(localctx);
|
373
392
|
}
|
@@ -423,7 +442,7 @@ void Parser::unrollRecursionContexts(ParserRuleContext *parentctx) {
|
|
423
442
|
if (_parseListeners.size() > 0) {
|
424
443
|
while (_ctx != parentctx) {
|
425
444
|
triggerExitRuleEvent();
|
426
|
-
_ctx =
|
445
|
+
_ctx = downCast<ParserRuleContext*>(_ctx->parent);
|
427
446
|
}
|
428
447
|
} else {
|
429
448
|
_ctx = parentctx;
|
@@ -446,7 +465,7 @@ ParserRuleContext* Parser::getInvokingContext(size_t ruleIndex) {
|
|
446
465
|
}
|
447
466
|
if (p->parent == nullptr)
|
448
467
|
break;
|
449
|
-
p =
|
468
|
+
p = downCast<ParserRuleContext*>(p->parent);
|
450
469
|
}
|
451
470
|
return nullptr;
|
452
471
|
}
|
@@ -484,13 +503,13 @@ bool Parser::isExpectedToken(size_t symbol) {
|
|
484
503
|
|
485
504
|
while (ctx && ctx->invokingState != ATNState::INVALID_STATE_NUMBER && following.contains(Token::EPSILON)) {
|
486
505
|
atn::ATNState *invokingState = atn.states[ctx->invokingState];
|
487
|
-
atn::RuleTransition *rt = static_cast<atn::RuleTransition*>(invokingState->transitions[0]);
|
506
|
+
const atn::RuleTransition *rt = static_cast<const atn::RuleTransition*>(invokingState->transitions[0].get());
|
488
507
|
following = atn.nextTokens(rt->followState);
|
489
508
|
if (following.contains(symbol)) {
|
490
509
|
return true;
|
491
510
|
}
|
492
511
|
|
493
|
-
ctx =
|
512
|
+
ctx = downCast<ParserRuleContext*>(ctx->parent);
|
494
513
|
}
|
495
514
|
|
496
515
|
if (following.contains(Token::EPSILON) && symbol == EOF) {
|
@@ -543,9 +562,10 @@ std::vector<std::string> Parser::getRuleInvocationStack(RuleContext *p) {
|
|
543
562
|
} else {
|
544
563
|
stack.push_back(ruleNames[ruleIndex]);
|
545
564
|
}
|
546
|
-
if (
|
565
|
+
if (!RuleContext::is(run->parent)) {
|
547
566
|
break;
|
548
|
-
|
567
|
+
}
|
568
|
+
run = downCast<RuleContext*>(run->parent);
|
549
569
|
}
|
550
570
|
return stack;
|
551
571
|
}
|
@@ -589,12 +609,12 @@ std::string Parser::getSourceName() {
|
|
589
609
|
}
|
590
610
|
|
591
611
|
atn::ParseInfo Parser::getParseInfo() const {
|
592
|
-
atn::
|
593
|
-
return atn::ParseInfo(
|
612
|
+
atn::ParserATNSimulator *simulator = getInterpreter<atn::ParserATNSimulator>();
|
613
|
+
return atn::ParseInfo(dynamic_cast<atn::ProfilingATNSimulator*>(simulator));
|
594
614
|
}
|
595
615
|
|
596
616
|
void Parser::setProfile(bool profile) {
|
597
|
-
atn::ParserATNSimulator *interp = getInterpreter<atn::
|
617
|
+
atn::ParserATNSimulator *interp = getInterpreter<atn::ParserATNSimulator>();
|
598
618
|
atn::PredictionMode saveMode = interp != nullptr ? interp->getPredictionMode() : atn::PredictionMode::LL;
|
599
619
|
if (profile) {
|
600
620
|
if (!is<atn::ProfilingATNSimulator *>(interp)) {
|
@@ -193,7 +193,7 @@ namespace antlr4 {
|
|
193
193
|
/// <seealso cref= #notifyErrorListeners </seealso>
|
194
194
|
virtual size_t getNumberOfSyntaxErrors();
|
195
195
|
|
196
|
-
virtual
|
196
|
+
virtual TokenFactory<CommonToken>* getTokenFactory() override;
|
197
197
|
|
198
198
|
/// <summary>
|
199
199
|
/// Tell our token source and error strategy about a new way to create tokens. </summary>
|
@@ -448,12 +448,6 @@ namespace antlr4 {
|
|
448
448
|
tree::ParseTreeTracker _tracker;
|
449
449
|
|
450
450
|
private:
|
451
|
-
/// This field maps from the serialized ATN string to the deserialized <seealso cref="ATN"/> with
|
452
|
-
/// bypass alternatives.
|
453
|
-
///
|
454
|
-
/// <seealso cref= ATNDeserializationOptions#isGenerateRuleBypassTransitions() </seealso>
|
455
|
-
static std::map<std::vector<uint16_t>, atn::ATN> bypassAltsAtnCache;
|
456
|
-
|
457
451
|
/// When setTrace(true) is called, a reference to the
|
458
452
|
/// TraceListener is stored here so it can be easily removed in a
|
459
453
|
/// later call to setTrace(false). The listener itself is
|