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
@@ -49,6 +49,7 @@
|
|
49
49
|
#include "TokenStreamRewriter.h"
|
50
50
|
#include "UnbufferedCharStream.h"
|
51
51
|
#include "UnbufferedTokenStream.h"
|
52
|
+
#include "Version.h"
|
52
53
|
#include "Vocabulary.h"
|
53
54
|
#include "Vocabulary.h"
|
54
55
|
#include "WritableToken.h"
|
@@ -57,11 +58,9 @@
|
|
57
58
|
#include "atn/ATNConfigSet.h"
|
58
59
|
#include "atn/ATNDeserializationOptions.h"
|
59
60
|
#include "atn/ATNDeserializer.h"
|
60
|
-
#include "atn/ATNSerializer.h"
|
61
61
|
#include "atn/ATNSimulator.h"
|
62
62
|
#include "atn/ATNState.h"
|
63
63
|
#include "atn/ATNType.h"
|
64
|
-
#include "atn/AbstractPredicateTransition.h"
|
65
64
|
#include "atn/ActionTransition.h"
|
66
65
|
#include "atn/AmbiguityInfo.h"
|
67
66
|
#include "atn/ArrayPredictionContext.h"
|
@@ -74,7 +73,6 @@
|
|
74
73
|
#include "atn/DecisionEventInfo.h"
|
75
74
|
#include "atn/DecisionInfo.h"
|
76
75
|
#include "atn/DecisionState.h"
|
77
|
-
#include "atn/EmptyPredictionContext.h"
|
78
76
|
#include "atn/EpsilonTransition.h"
|
79
77
|
#include "atn/ErrorInfo.h"
|
80
78
|
#include "atn/LL1Analyzer.h"
|
@@ -98,12 +96,16 @@
|
|
98
96
|
#include "atn/OrderedATNConfigSet.h"
|
99
97
|
#include "atn/ParseInfo.h"
|
100
98
|
#include "atn/ParserATNSimulator.h"
|
99
|
+
#include "atn/ParserATNSimulatorOptions.h"
|
101
100
|
#include "atn/PlusBlockStartState.h"
|
102
101
|
#include "atn/PlusLoopbackState.h"
|
103
102
|
#include "atn/PrecedencePredicateTransition.h"
|
104
103
|
#include "atn/PredicateEvalInfo.h"
|
105
104
|
#include "atn/PredicateTransition.h"
|
106
105
|
#include "atn/PredictionContext.h"
|
106
|
+
#include "atn/PredictionContextCache.h"
|
107
|
+
#include "atn/PredictionContextMergeCache.h"
|
108
|
+
#include "atn/PredictionContextMergeCacheOptions.h"
|
107
109
|
#include "atn/PredictionMode.h"
|
108
110
|
#include "atn/ProfilingATNSimulator.h"
|
109
111
|
#include "atn/RangeTransition.h"
|
@@ -111,6 +113,7 @@
|
|
111
113
|
#include "atn/RuleStopState.h"
|
112
114
|
#include "atn/RuleTransition.h"
|
113
115
|
#include "atn/SemanticContext.h"
|
116
|
+
#include "atn/SerializedATNView.h"
|
114
117
|
#include "atn/SetTransition.h"
|
115
118
|
#include "atn/SingletonPredictionContext.h"
|
116
119
|
#include "atn/StarBlockStartState.h"
|
@@ -131,9 +134,8 @@
|
|
131
134
|
#include "support/Any.h"
|
132
135
|
#include "support/Arrays.h"
|
133
136
|
#include "support/BitSet.h"
|
137
|
+
#include "support/Casts.h"
|
134
138
|
#include "support/CPPUtils.h"
|
135
|
-
#include "support/StringUtils.h"
|
136
|
-
#include "support/guid.h"
|
137
139
|
#include "tree/AbstractParseTreeVisitor.h"
|
138
140
|
#include "tree/ErrorNode.h"
|
139
141
|
#include "tree/ErrorNodeImpl.h"
|
@@ -20,24 +20,9 @@ using namespace antlr4;
|
|
20
20
|
using namespace antlr4::atn;
|
21
21
|
using namespace antlrcpp;
|
22
22
|
|
23
|
-
ATN::ATN() : ATN(ATNType::LEXER, 0) {
|
24
|
-
}
|
23
|
+
ATN::ATN() : ATN(ATNType::LEXER, 0) {}
|
25
24
|
|
26
|
-
ATN::ATN(
|
27
|
-
// All source vectors are implicitly cleared by the moves.
|
28
|
-
states = std::move(other.states);
|
29
|
-
decisionToState = std::move(other.decisionToState);
|
30
|
-
ruleToStartState = std::move(other.ruleToStartState);
|
31
|
-
ruleToStopState = std::move(other.ruleToStopState);
|
32
|
-
grammarType = std::move(other.grammarType);
|
33
|
-
maxTokenType = std::move(other.maxTokenType);
|
34
|
-
ruleToTokenType = std::move(other.ruleToTokenType);
|
35
|
-
lexerActions = std::move(other.lexerActions);
|
36
|
-
modeToStartState = std::move(other.modeToStartState);
|
37
|
-
}
|
38
|
-
|
39
|
-
ATN::ATN(ATNType grammarType_, size_t maxTokenType_) : grammarType(grammarType_), maxTokenType(maxTokenType_) {
|
40
|
-
}
|
25
|
+
ATN::ATN(ATNType grammarType_, size_t maxTokenType_) : grammarType(grammarType_), maxTokenType(maxTokenType_) {}
|
41
26
|
|
42
27
|
ATN::~ATN() {
|
43
28
|
for (ATNState *state : states) {
|
@@ -45,42 +30,6 @@ ATN::~ATN() {
|
|
45
30
|
}
|
46
31
|
}
|
47
32
|
|
48
|
-
/**
|
49
|
-
* Required to be defined (even though not used) as we have an explicit move assignment operator.
|
50
|
-
*/
|
51
|
-
ATN& ATN::operator = (ATN &other) NOEXCEPT {
|
52
|
-
states = other.states;
|
53
|
-
decisionToState = other.decisionToState;
|
54
|
-
ruleToStartState = other.ruleToStartState;
|
55
|
-
ruleToStopState = other.ruleToStopState;
|
56
|
-
grammarType = other.grammarType;
|
57
|
-
maxTokenType = other.maxTokenType;
|
58
|
-
ruleToTokenType = other.ruleToTokenType;
|
59
|
-
lexerActions = other.lexerActions;
|
60
|
-
modeToStartState = other.modeToStartState;
|
61
|
-
|
62
|
-
return *this;
|
63
|
-
}
|
64
|
-
|
65
|
-
/**
|
66
|
-
* Explicit move assignment operator to make this the preferred assignment. With implicit copy/move assignment
|
67
|
-
* operators it seems the copy operator is preferred causing trouble when releasing the allocated ATNState instances.
|
68
|
-
*/
|
69
|
-
ATN& ATN::operator = (ATN &&other) NOEXCEPT {
|
70
|
-
// All source vectors are implicitly cleared by the moves.
|
71
|
-
states = std::move(other.states);
|
72
|
-
decisionToState = std::move(other.decisionToState);
|
73
|
-
ruleToStartState = std::move(other.ruleToStartState);
|
74
|
-
ruleToStopState = std::move(other.ruleToStopState);
|
75
|
-
grammarType = std::move(other.grammarType);
|
76
|
-
maxTokenType = std::move(other.maxTokenType);
|
77
|
-
ruleToTokenType = std::move(other.ruleToTokenType);
|
78
|
-
lexerActions = std::move(other.lexerActions);
|
79
|
-
modeToStartState = std::move(other.modeToStartState);
|
80
|
-
|
81
|
-
return *this;
|
82
|
-
}
|
83
|
-
|
84
33
|
misc::IntervalSet ATN::nextTokens(ATNState *s, RuleContext *ctx) const {
|
85
34
|
LL1Analyzer analyzer(*this);
|
86
35
|
return analyzer.LOOK(s, ctx);
|
@@ -89,7 +38,7 @@ misc::IntervalSet ATN::nextTokens(ATNState *s, RuleContext *ctx) const {
|
|
89
38
|
|
90
39
|
misc::IntervalSet const& ATN::nextTokens(ATNState *s) const {
|
91
40
|
if (!s->_nextTokenUpdated) {
|
92
|
-
std::unique_lock<std::mutex> lock
|
41
|
+
std::unique_lock<std::mutex> lock(_mutex);
|
93
42
|
if (!s->_nextTokenUpdated) {
|
94
43
|
s->_nextTokenWithinRule = nextTokens(s, nullptr);
|
95
44
|
s->_nextTokenUpdated = true;
|
@@ -146,7 +95,7 @@ misc::IntervalSet ATN::getExpectedTokens(size_t stateNumber, RuleContext *contex
|
|
146
95
|
expected.remove(Token::EPSILON);
|
147
96
|
while (ctx && ctx->invokingState != ATNState::INVALID_STATE_NUMBER && following.contains(Token::EPSILON)) {
|
148
97
|
ATNState *invokingState = states.at(ctx->invokingState);
|
149
|
-
RuleTransition *rt = static_cast<RuleTransition*>(invokingState->transitions[0]);
|
98
|
+
const RuleTransition *rt = static_cast<const RuleTransition*>(invokingState->transitions[0].get());
|
150
99
|
following = nextTokens(rt->followState);
|
151
100
|
expected.addAll(following);
|
152
101
|
expected.remove(Token::EPSILON);
|
@@ -183,7 +132,7 @@ std::string ATN::toString() const {
|
|
183
132
|
ss << "states (" << states.size() << ") {" << std::endl;
|
184
133
|
|
185
134
|
size_t index = 0;
|
186
|
-
for (auto state : states) {
|
135
|
+
for (auto *state : states) {
|
187
136
|
if (state == nullptr) {
|
188
137
|
ss << " " << index++ << ": nul" << std::endl;
|
189
138
|
} else {
|
@@ -193,7 +142,7 @@ std::string ATN::toString() const {
|
|
193
142
|
}
|
194
143
|
|
195
144
|
index = 0;
|
196
|
-
for (auto state : decisionToState) {
|
145
|
+
for (auto *state : decisionToState) {
|
197
146
|
if (state == nullptr) {
|
198
147
|
ss << " " << index++ << ": nul" << std::endl;
|
199
148
|
} else {
|
@@ -7,18 +7,36 @@
|
|
7
7
|
|
8
8
|
#include "RuleContext.h"
|
9
9
|
|
10
|
+
// GCC generates a warning when forward-declaring ATN if ATN has already been
|
11
|
+
// declared due to the attributes added by ANTLR4CPP_PUBLIC.
|
12
|
+
// See: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39159
|
13
|
+
// Add constant that can be checked so forward-declarations can be omitted.
|
14
|
+
#define ANTLR4CPP_ATN_DECLARED
|
15
|
+
|
10
16
|
namespace antlr4 {
|
11
17
|
namespace atn {
|
12
18
|
|
19
|
+
class LexerATNSimulator;
|
20
|
+
class ParserATNSimulator;
|
21
|
+
|
13
22
|
class ANTLR4CPP_PUBLIC ATN {
|
14
23
|
public:
|
15
|
-
static
|
24
|
+
static constexpr size_t INVALID_ALT_NUMBER = 0;
|
16
25
|
|
17
26
|
/// Used for runtime deserialization of ATNs from strings.
|
18
27
|
ATN();
|
19
|
-
|
28
|
+
|
20
29
|
ATN(ATNType grammarType, size_t maxTokenType);
|
21
|
-
|
30
|
+
|
31
|
+
ATN(const ATN&) = delete;
|
32
|
+
|
33
|
+
ATN(ATN&&) = delete;
|
34
|
+
|
35
|
+
~ATN();
|
36
|
+
|
37
|
+
ATN& operator=(const ATN&) = delete;
|
38
|
+
|
39
|
+
ATN& operator=(ATN&&) = delete;
|
22
40
|
|
23
41
|
std::vector<ATNState *> states;
|
24
42
|
|
@@ -50,37 +68,34 @@ namespace atn {
|
|
50
68
|
|
51
69
|
/// For lexer ATNs, this is an array of {@link LexerAction} objects which may
|
52
70
|
/// be referenced by action transitions in the ATN.
|
53
|
-
std::vector<Ref<LexerAction>> lexerActions;
|
71
|
+
std::vector<Ref<const LexerAction>> lexerActions;
|
54
72
|
|
55
73
|
std::vector<TokensStartState *> modeToStartState;
|
56
74
|
|
57
|
-
ATN& operator = (ATN &other) NOEXCEPT;
|
58
|
-
ATN& operator = (ATN &&other) NOEXCEPT;
|
59
|
-
|
60
75
|
/// <summary>
|
61
76
|
/// Compute the set of valid tokens that can occur starting in state {@code s}.
|
62
77
|
/// If {@code ctx} is null, the set of tokens will not include what can follow
|
63
78
|
/// the rule surrounding {@code s}. In other words, the set will be
|
64
79
|
/// restricted to tokens reachable staying within {@code s}'s rule.
|
65
80
|
/// </summary>
|
66
|
-
|
81
|
+
misc::IntervalSet nextTokens(ATNState *s, RuleContext *ctx) const;
|
67
82
|
|
68
83
|
/// <summary>
|
69
84
|
/// Compute the set of valid tokens that can occur starting in {@code s} and
|
70
85
|
/// staying in same rule. <seealso cref="Token#EPSILON"/> is in set if we reach end of
|
71
86
|
/// rule.
|
72
87
|
/// </summary>
|
73
|
-
|
88
|
+
misc::IntervalSet const& nextTokens(ATNState *s) const;
|
74
89
|
|
75
|
-
|
90
|
+
void addState(ATNState *state);
|
76
91
|
|
77
|
-
|
92
|
+
void removeState(ATNState *state);
|
78
93
|
|
79
|
-
|
94
|
+
int defineDecisionState(DecisionState *s);
|
80
95
|
|
81
|
-
|
96
|
+
DecisionState *getDecisionState(size_t decision) const;
|
82
97
|
|
83
|
-
|
98
|
+
size_t getNumberOfDecisions() const;
|
84
99
|
|
85
100
|
/// <summary>
|
86
101
|
/// Computes the set of input symbols which could follow ATN state number
|
@@ -100,12 +115,17 @@ namespace atn {
|
|
100
115
|
/// specified state in the specified context. </returns>
|
101
116
|
/// <exception cref="IllegalArgumentException"> if the ATN does not contain a state with
|
102
117
|
/// number {@code stateNumber} </exception>
|
103
|
-
|
118
|
+
misc::IntervalSet getExpectedTokens(size_t stateNumber, RuleContext *context) const;
|
104
119
|
|
105
120
|
std::string toString() const;
|
106
121
|
|
107
122
|
private:
|
123
|
+
friend class LexerATNSimulator;
|
124
|
+
friend class ParserATNSimulator;
|
125
|
+
|
108
126
|
mutable std::mutex _mutex;
|
127
|
+
mutable std::shared_mutex _stateMutex;
|
128
|
+
mutable std::shared_mutex _edgeMutex;
|
109
129
|
};
|
110
130
|
|
111
131
|
} // namespace atn
|
@@ -11,43 +11,40 @@
|
|
11
11
|
|
12
12
|
using namespace antlr4::atn;
|
13
13
|
|
14
|
-
|
14
|
+
namespace {
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
}
|
16
|
+
/**
|
17
|
+
* This field stores the bit mask for implementing the
|
18
|
+
* {@link #isPrecedenceFilterSuppressed} property as a bit within the
|
19
|
+
* existing {@link #reachesIntoOuterContext} field.
|
20
|
+
*/
|
21
|
+
inline constexpr size_t SUPPRESS_PRECEDENCE_FILTER = 0x40000000;
|
19
22
|
|
20
|
-
ATNConfig::ATNConfig(ATNState *state_, size_t alt_, Ref<PredictionContext> const& context_, Ref<SemanticContext> const& semanticContext_)
|
21
|
-
: state(state_), alt(alt_), context(context_), semanticContext(semanticContext_) {
|
22
|
-
reachesIntoOuterContext = 0;
|
23
23
|
}
|
24
24
|
|
25
|
-
ATNConfig::ATNConfig(
|
26
|
-
}
|
25
|
+
ATNConfig::ATNConfig(ATNState *state, size_t alt, Ref<const PredictionContext> context)
|
26
|
+
: ATNConfig(state, alt, std::move(context), 0, SemanticContext::NONE) {}
|
27
27
|
|
28
|
-
ATNConfig::ATNConfig(
|
29
|
-
}
|
28
|
+
ATNConfig::ATNConfig(ATNState *state, size_t alt, Ref<const PredictionContext> context, Ref<const SemanticContext> semanticContext)
|
29
|
+
: ATNConfig(state, alt, std::move(context), 0, std::move(semanticContext)) {}
|
30
30
|
|
31
|
-
ATNConfig::ATNConfig(
|
32
|
-
|
33
|
-
}
|
31
|
+
ATNConfig::ATNConfig(ATNConfig const& other, Ref<const SemanticContext> semanticContext)
|
32
|
+
: ATNConfig(other.state, other.alt, other.context, other.reachesIntoOuterContext, std::move(semanticContext)) {}
|
34
33
|
|
35
|
-
ATNConfig::ATNConfig(
|
36
|
-
|
37
|
-
}
|
34
|
+
ATNConfig::ATNConfig(ATNConfig const& other, ATNState *state)
|
35
|
+
: ATNConfig(state, other.alt, other.context, other.reachesIntoOuterContext, other.semanticContext) {}
|
38
36
|
|
39
|
-
ATNConfig::ATNConfig(
|
40
|
-
|
41
|
-
}
|
37
|
+
ATNConfig::ATNConfig(ATNConfig const& other, ATNState *state, Ref<const SemanticContext> semanticContext)
|
38
|
+
: ATNConfig(state, other.alt, other.context, other.reachesIntoOuterContext, std::move(semanticContext)) {}
|
42
39
|
|
43
|
-
ATNConfig::ATNConfig(
|
44
|
-
|
45
|
-
: state(state), alt(c->alt), context(context), reachesIntoOuterContext(c->reachesIntoOuterContext),
|
46
|
-
semanticContext(semanticContext) {
|
47
|
-
}
|
40
|
+
ATNConfig::ATNConfig(ATNConfig const& other, ATNState *state, Ref<const PredictionContext> context)
|
41
|
+
: ATNConfig(state, other.alt, std::move(context), other.reachesIntoOuterContext, other.semanticContext) {}
|
48
42
|
|
49
|
-
ATNConfig
|
50
|
-
}
|
43
|
+
ATNConfig::ATNConfig(ATNConfig const& other, ATNState *state, Ref<const PredictionContext> context, Ref<const SemanticContext> semanticContext)
|
44
|
+
: ATNConfig(state, other.alt, std::move(context), other.reachesIntoOuterContext, std::move(semanticContext)) {}
|
45
|
+
|
46
|
+
ATNConfig::ATNConfig(ATNState *state, size_t alt, Ref<const PredictionContext> context, size_t reachesIntoOuterContext, Ref<const SemanticContext> semanticContext)
|
47
|
+
: state(state), alt(alt), context(std::move(context)), reachesIntoOuterContext(reachesIntoOuterContext), semanticContext(std::move(semanticContext)) {}
|
51
48
|
|
52
49
|
size_t ATNConfig::hashCode() const {
|
53
50
|
size_t hashCode = misc::MurmurHash::initialize(7);
|
@@ -75,22 +72,18 @@ void ATNConfig::setPrecedenceFilterSuppressed(bool value) {
|
|
75
72
|
}
|
76
73
|
}
|
77
74
|
|
78
|
-
bool ATNConfig::operator
|
75
|
+
bool ATNConfig::operator==(const ATNConfig &other) const {
|
79
76
|
return state->stateNumber == other.state->stateNumber && alt == other.alt &&
|
80
77
|
((context == other.context) || (*context == *other.context)) &&
|
81
78
|
*semanticContext == *other.semanticContext &&
|
82
79
|
isPrecedenceFilterSuppressed() == other.isPrecedenceFilterSuppressed();
|
83
80
|
}
|
84
81
|
|
85
|
-
|
86
|
-
return !operator==(other);
|
87
|
-
}
|
88
|
-
|
89
|
-
std::string ATNConfig::toString() {
|
82
|
+
std::string ATNConfig::toString() const {
|
90
83
|
return toString(true);
|
91
84
|
}
|
92
85
|
|
93
|
-
std::string ATNConfig::toString(bool showAlt) {
|
86
|
+
std::string ATNConfig::toString(bool showAlt) const {
|
94
87
|
std::stringstream ss;
|
95
88
|
ss << "(";
|
96
89
|
|
@@ -102,12 +95,12 @@ std::string ATNConfig::toString(bool showAlt) {
|
|
102
95
|
ss << ",[" << context->toString() << "]";
|
103
96
|
}
|
104
97
|
if (semanticContext != nullptr && semanticContext != SemanticContext::NONE) {
|
105
|
-
ss << "," << semanticContext
|
98
|
+
ss << ",[" << semanticContext->toString() << "]";
|
106
99
|
}
|
107
100
|
if (getOuterContextDepth() > 0) {
|
108
101
|
ss << ",up=" << getOuterContextDepth();
|
109
102
|
}
|
110
|
-
ss <<
|
103
|
+
ss << ")";
|
111
104
|
|
112
105
|
return ss.str();
|
113
106
|
}
|
@@ -5,6 +5,11 @@
|
|
5
5
|
|
6
6
|
#pragma once
|
7
7
|
|
8
|
+
#include <cassert>
|
9
|
+
|
10
|
+
#include "antlr4-common.h"
|
11
|
+
#include "atn/SemanticContext.h"
|
12
|
+
|
8
13
|
namespace antlr4 {
|
9
14
|
namespace atn {
|
10
15
|
|
@@ -20,32 +25,39 @@ namespace atn {
|
|
20
25
|
public:
|
21
26
|
struct Hasher
|
22
27
|
{
|
28
|
+
size_t operator()(Ref<ATNConfig> const& k) const {
|
29
|
+
return k->hashCode();
|
30
|
+
}
|
31
|
+
|
23
32
|
size_t operator()(ATNConfig const& k) const {
|
24
33
|
return k.hashCode();
|
25
34
|
}
|
26
35
|
};
|
27
36
|
|
28
37
|
struct Comparer {
|
38
|
+
bool operator()(Ref<ATNConfig> const& lhs, Ref<ATNConfig> const& rhs) const {
|
39
|
+
return (lhs == rhs) || (*lhs == *rhs);
|
40
|
+
}
|
41
|
+
|
29
42
|
bool operator()(ATNConfig const& lhs, ATNConfig const& rhs) const {
|
30
43
|
return (&lhs == &rhs) || (lhs == rhs);
|
31
44
|
}
|
32
45
|
};
|
33
46
|
|
34
|
-
|
35
47
|
using Set = std::unordered_set<Ref<ATNConfig>, Hasher, Comparer>;
|
36
48
|
|
37
49
|
/// The ATN state associated with this configuration.
|
38
|
-
ATNState *
|
50
|
+
ATNState *state = nullptr;
|
39
51
|
|
40
52
|
/// What alt (or lexer rule) is predicted by this configuration.
|
41
|
-
const size_t alt;
|
53
|
+
const size_t alt = 0;
|
42
54
|
|
43
55
|
/// The stack of invoking states leading to the rule/states associated
|
44
56
|
/// with this config. We track only those contexts pushed during
|
45
57
|
/// execution of the ATN simulator.
|
46
58
|
///
|
47
59
|
/// Can be shared between multiple ANTConfig instances.
|
48
|
-
Ref<PredictionContext> context;
|
60
|
+
Ref<const PredictionContext> context;
|
49
61
|
|
50
62
|
/**
|
51
63
|
* We cannot execute predicates dependent upon local context unless
|
@@ -70,23 +82,25 @@ namespace atn {
|
|
70
82
|
* {@link ATNConfigSet#add(ATNConfig, DoubleKeyMap)} method are
|
71
83
|
* <em>completely</em> unaffected by the change.</p>
|
72
84
|
*/
|
73
|
-
size_t reachesIntoOuterContext;
|
85
|
+
size_t reachesIntoOuterContext = 0;
|
74
86
|
|
75
87
|
/// Can be shared between multiple ATNConfig instances.
|
76
|
-
Ref<SemanticContext> semanticContext;
|
88
|
+
Ref<const SemanticContext> semanticContext;
|
77
89
|
|
78
|
-
ATNConfig(ATNState *state, size_t alt, Ref<PredictionContext>
|
79
|
-
ATNConfig(ATNState *state, size_t alt, Ref<PredictionContext>
|
90
|
+
ATNConfig(ATNState *state, size_t alt, Ref<const PredictionContext> context);
|
91
|
+
ATNConfig(ATNState *state, size_t alt, Ref<const PredictionContext> context, Ref<const SemanticContext> semanticContext);
|
80
92
|
|
81
|
-
ATNConfig(
|
82
|
-
ATNConfig(
|
83
|
-
ATNConfig(
|
84
|
-
ATNConfig(
|
85
|
-
ATNConfig(
|
86
|
-
ATNConfig(Ref<ATNConfig> const& c, ATNState *state, Ref<PredictionContext> const& context, Ref<SemanticContext> const& semanticContext);
|
93
|
+
ATNConfig(ATNConfig const& other, Ref<const SemanticContext> semanticContext);
|
94
|
+
ATNConfig(ATNConfig const& other, ATNState *state);
|
95
|
+
ATNConfig(ATNConfig const& other, ATNState *state, Ref<const SemanticContext> semanticContext);
|
96
|
+
ATNConfig(ATNConfig const& other, ATNState *state, Ref<const PredictionContext> context);
|
97
|
+
ATNConfig(ATNConfig const& other, ATNState *state, Ref<const PredictionContext> context, Ref<const SemanticContext> semanticContext);
|
87
98
|
|
88
99
|
ATNConfig(ATNConfig const&) = default;
|
89
|
-
|
100
|
+
|
101
|
+
ATNConfig(ATNConfig&&) = default;
|
102
|
+
|
103
|
+
virtual ~ATNConfig() = default;
|
90
104
|
|
91
105
|
virtual size_t hashCode() const;
|
92
106
|
|
@@ -95,26 +109,21 @@ namespace atn {
|
|
95
109
|
* as it existed prior to the introduction of the
|
96
110
|
* {@link #isPrecedenceFilterSuppressed} method.
|
97
111
|
*/
|
98
|
-
size_t getOuterContextDepth() const
|
112
|
+
size_t getOuterContextDepth() const;
|
99
113
|
bool isPrecedenceFilterSuppressed() const;
|
100
114
|
void setPrecedenceFilterSuppressed(bool value);
|
101
115
|
|
102
116
|
/// An ATN configuration is equal to another if both have
|
103
117
|
/// the same state, they predict the same alternative, and
|
104
118
|
/// syntactic/semantic contexts are the same.
|
105
|
-
bool operator
|
106
|
-
bool operator
|
119
|
+
bool operator==(const ATNConfig &other) const;
|
120
|
+
bool operator!=(const ATNConfig &other) const;
|
107
121
|
|
108
|
-
virtual std::string toString();
|
109
|
-
std::string toString(bool showAlt);
|
122
|
+
virtual std::string toString() const;
|
123
|
+
std::string toString(bool showAlt) const;
|
110
124
|
|
111
125
|
private:
|
112
|
-
|
113
|
-
* This field stores the bit mask for implementing the
|
114
|
-
* {@link #isPrecedenceFilterSuppressed} property as a bit within the
|
115
|
-
* existing {@link #reachesIntoOuterContext} field.
|
116
|
-
*/
|
117
|
-
static const size_t SUPPRESS_PRECEDENCE_FILTER;
|
126
|
+
ATNConfig(ATNState *state, size_t alt, Ref<const PredictionContext> context, size_t reachesIntoOuterContext, Ref<const SemanticContext> semanticContext);
|
118
127
|
};
|
119
128
|
|
120
129
|
} // namespace atn
|
@@ -139,7 +148,7 @@ namespace std {
|
|
139
148
|
size_t operator() (const std::vector<Ref<ATNConfig>> &vector) const
|
140
149
|
{
|
141
150
|
std::size_t seed = 0;
|
142
|
-
for (auto &config : vector) {
|
151
|
+
for (const auto &config : vector) {
|
143
152
|
seed ^= config->hashCode() + 0x9e3779b9 + (seed << 6) + (seed >> 2);
|
144
153
|
}
|
145
154
|
return seed;
|