expressir 1.2.4 → 1.2.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.cross_rubies +0 -6
- data/.github/workflows/rake.yml +200 -21
- data/.gitignore +7 -2
- 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 +12 -10
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/CMakeLists.txt +44 -34
- 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 +11 -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 +20 -20
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.cpp +0 -6
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.cpp +30 -19
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.h +13 -10
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.cpp +2 -4
- 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 +0 -6
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.cpp +0 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.h +0 -13
- 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/Parser.cpp +47 -27
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.h +0 -6
- 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 +19 -22
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.h +20 -20
- 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 +10 -21
- 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 +0 -32
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +1 -1
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.h +2 -7
- 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 -45
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.h +11 -26
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-common.h +19 -61
- 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 +4 -55
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.h +34 -20
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +30 -35
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.h +35 -32
- 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 -462
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.h +9 -68
- 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 +41 -42
- 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 -106
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.h +9 -48
- 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 +15 -33
- 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 +164 -151
- 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 +86 -127
- 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 +9 -21
- 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 +1 -8
- 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 +7 -20
- 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 +34 -14
- 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.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 +12 -53
- 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 -33
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.h +2 -62
- 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 +13 -4
- 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 +4 -4
- 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/pattern/ParseTreePatternMatcher.cpp +1 -2
- 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/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 +294 -86
- data/ext/express-parser/extconf.rb +13 -12
- data/lib/expressir/config.rb +1 -1
- data/lib/expressir/express/parser.rb +3 -4
- data/lib/expressir/express/visitor.rb +7 -5
- 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 +81 -93
- 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
@@ -1,621 +0,0 @@
|
|
1
|
-
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
2
|
-
* Use of this file is governed by the BSD 3-clause license that
|
3
|
-
* can be found in the LICENSE.txt file in the project root.
|
4
|
-
*/
|
5
|
-
|
6
|
-
#include "misc/IntervalSet.h"
|
7
|
-
#include "atn/ATNType.h"
|
8
|
-
#include "atn/ATNState.h"
|
9
|
-
#include "atn/BlockEndState.h"
|
10
|
-
|
11
|
-
#include "atn/DecisionState.h"
|
12
|
-
#include "atn/RuleStartState.h"
|
13
|
-
#include "atn/LoopEndState.h"
|
14
|
-
#include "atn/BlockStartState.h"
|
15
|
-
#include "atn/Transition.h"
|
16
|
-
#include "atn/SetTransition.h"
|
17
|
-
#include "Token.h"
|
18
|
-
#include "misc/Interval.h"
|
19
|
-
#include "atn/ATN.h"
|
20
|
-
|
21
|
-
#include "atn/RuleTransition.h"
|
22
|
-
#include "atn/PrecedencePredicateTransition.h"
|
23
|
-
#include "atn/PredicateTransition.h"
|
24
|
-
#include "atn/RangeTransition.h"
|
25
|
-
#include "atn/AtomTransition.h"
|
26
|
-
#include "atn/ActionTransition.h"
|
27
|
-
#include "atn/ATNDeserializer.h"
|
28
|
-
|
29
|
-
#include "atn/TokensStartState.h"
|
30
|
-
#include "Exceptions.h"
|
31
|
-
#include "support/CPPUtils.h"
|
32
|
-
|
33
|
-
#include "atn/LexerChannelAction.h"
|
34
|
-
#include "atn/LexerCustomAction.h"
|
35
|
-
#include "atn/LexerModeAction.h"
|
36
|
-
#include "atn/LexerPushModeAction.h"
|
37
|
-
#include "atn/LexerTypeAction.h"
|
38
|
-
|
39
|
-
#include "Exceptions.h"
|
40
|
-
|
41
|
-
#include "atn/ATNSerializer.h"
|
42
|
-
|
43
|
-
using namespace antlrcpp;
|
44
|
-
using namespace antlr4::atn;
|
45
|
-
|
46
|
-
ATNSerializer::ATNSerializer(ATN *atn) { this->atn = atn; }
|
47
|
-
|
48
|
-
ATNSerializer::ATNSerializer(ATN *atn, const std::vector<std::string> &tokenNames) {
|
49
|
-
this->atn = atn;
|
50
|
-
_tokenNames = tokenNames;
|
51
|
-
}
|
52
|
-
|
53
|
-
ATNSerializer::~ATNSerializer() { }
|
54
|
-
|
55
|
-
std::vector<size_t> ATNSerializer::serialize() {
|
56
|
-
std::vector<size_t> data;
|
57
|
-
data.push_back(ATNDeserializer::SERIALIZED_VERSION);
|
58
|
-
serializeUUID(data, ATNDeserializer::SERIALIZED_UUID());
|
59
|
-
|
60
|
-
// convert grammar type to ATN const to avoid dependence on ANTLRParser
|
61
|
-
data.push_back(static_cast<size_t>(atn->grammarType));
|
62
|
-
data.push_back(atn->maxTokenType);
|
63
|
-
size_t nedges = 0;
|
64
|
-
|
65
|
-
std::unordered_map<misc::IntervalSet, int> setIndices;
|
66
|
-
std::vector<misc::IntervalSet> sets;
|
67
|
-
|
68
|
-
// dump states, count edges and collect sets while doing so
|
69
|
-
std::vector<size_t> nonGreedyStates;
|
70
|
-
std::vector<size_t> precedenceStates;
|
71
|
-
data.push_back(atn->states.size());
|
72
|
-
for (ATNState *s : atn->states) {
|
73
|
-
if (s == nullptr) { // might be optimized away
|
74
|
-
data.push_back(ATNState::ATN_INVALID_TYPE);
|
75
|
-
continue;
|
76
|
-
}
|
77
|
-
|
78
|
-
size_t stateType = s->getStateType();
|
79
|
-
if (is<DecisionState *>(s) && (static_cast<DecisionState *>(s))->nonGreedy) {
|
80
|
-
nonGreedyStates.push_back(s->stateNumber);
|
81
|
-
}
|
82
|
-
|
83
|
-
if (is<RuleStartState *>(s) && (static_cast<RuleStartState *>(s))->isLeftRecursiveRule) {
|
84
|
-
precedenceStates.push_back(s->stateNumber);
|
85
|
-
}
|
86
|
-
|
87
|
-
data.push_back(stateType);
|
88
|
-
|
89
|
-
if (s->ruleIndex == INVALID_INDEX) {
|
90
|
-
data.push_back(0xFFFF);
|
91
|
-
}
|
92
|
-
else {
|
93
|
-
data.push_back(s->ruleIndex);
|
94
|
-
}
|
95
|
-
|
96
|
-
if (s->getStateType() == ATNState::LOOP_END) {
|
97
|
-
data.push_back((static_cast<LoopEndState *>(s))->loopBackState->stateNumber);
|
98
|
-
}
|
99
|
-
else if (is<BlockStartState *>(s)) {
|
100
|
-
data.push_back((static_cast<BlockStartState *>(s))->endState->stateNumber);
|
101
|
-
}
|
102
|
-
|
103
|
-
if (s->getStateType() != ATNState::RULE_STOP) {
|
104
|
-
// the deserializer can trivially derive these edges, so there's no need
|
105
|
-
// to serialize them
|
106
|
-
nedges += s->transitions.size();
|
107
|
-
}
|
108
|
-
|
109
|
-
for (size_t i = 0; i < s->transitions.size(); i++) {
|
110
|
-
Transition *t = s->transitions[i];
|
111
|
-
Transition::SerializationType edgeType = t->getSerializationType();
|
112
|
-
if (edgeType == Transition::SET || edgeType == Transition::NOT_SET) {
|
113
|
-
SetTransition *st = static_cast<SetTransition *>(t);
|
114
|
-
if (setIndices.find(st->set) == setIndices.end()) {
|
115
|
-
sets.push_back(st->set);
|
116
|
-
setIndices.insert({ st->set, (int)sets.size() - 1 });
|
117
|
-
}
|
118
|
-
}
|
119
|
-
}
|
120
|
-
}
|
121
|
-
|
122
|
-
// non-greedy states
|
123
|
-
data.push_back(nonGreedyStates.size());
|
124
|
-
for (size_t i = 0; i < nonGreedyStates.size(); i++) {
|
125
|
-
data.push_back(nonGreedyStates.at(i));
|
126
|
-
}
|
127
|
-
|
128
|
-
// precedence states
|
129
|
-
data.push_back(precedenceStates.size());
|
130
|
-
for (size_t i = 0; i < precedenceStates.size(); i++) {
|
131
|
-
data.push_back(precedenceStates.at(i));
|
132
|
-
}
|
133
|
-
|
134
|
-
size_t nrules = atn->ruleToStartState.size();
|
135
|
-
data.push_back(nrules);
|
136
|
-
for (size_t r = 0; r < nrules; r++) {
|
137
|
-
ATNState *ruleStartState = atn->ruleToStartState[r];
|
138
|
-
data.push_back(ruleStartState->stateNumber);
|
139
|
-
if (atn->grammarType == ATNType::LEXER) {
|
140
|
-
if (atn->ruleToTokenType[r] == Token::EOF) {
|
141
|
-
data.push_back(0xFFFF);
|
142
|
-
}
|
143
|
-
else {
|
144
|
-
data.push_back(atn->ruleToTokenType[r]);
|
145
|
-
}
|
146
|
-
}
|
147
|
-
}
|
148
|
-
|
149
|
-
size_t nmodes = atn->modeToStartState.size();
|
150
|
-
data.push_back(nmodes);
|
151
|
-
if (nmodes > 0) {
|
152
|
-
for (const auto &modeStartState : atn->modeToStartState) {
|
153
|
-
data.push_back(modeStartState->stateNumber);
|
154
|
-
}
|
155
|
-
}
|
156
|
-
|
157
|
-
size_t nsets = sets.size();
|
158
|
-
data.push_back(nsets);
|
159
|
-
for (auto set : sets) {
|
160
|
-
bool containsEof = set.contains(Token::EOF);
|
161
|
-
if (containsEof && set.getIntervals().at(0).b == -1) {
|
162
|
-
data.push_back(set.getIntervals().size() - 1);
|
163
|
-
}
|
164
|
-
else {
|
165
|
-
data.push_back(set.getIntervals().size());
|
166
|
-
}
|
167
|
-
|
168
|
-
data.push_back(containsEof ? 1 : 0);
|
169
|
-
for (const auto &interval : set.getIntervals()) {
|
170
|
-
if (interval.a == -1) {
|
171
|
-
if (interval.b == -1) {
|
172
|
-
continue;
|
173
|
-
} else {
|
174
|
-
data.push_back(0);
|
175
|
-
}
|
176
|
-
}
|
177
|
-
else {
|
178
|
-
data.push_back(interval.a);
|
179
|
-
}
|
180
|
-
|
181
|
-
data.push_back(interval.b);
|
182
|
-
}
|
183
|
-
}
|
184
|
-
|
185
|
-
data.push_back(nedges);
|
186
|
-
for (ATNState *s : atn->states) {
|
187
|
-
if (s == nullptr) {
|
188
|
-
// might be optimized away
|
189
|
-
continue;
|
190
|
-
}
|
191
|
-
|
192
|
-
if (s->getStateType() == ATNState::RULE_STOP) {
|
193
|
-
continue;
|
194
|
-
}
|
195
|
-
|
196
|
-
for (size_t i = 0; i < s->transitions.size(); i++) {
|
197
|
-
Transition *t = s->transitions[i];
|
198
|
-
|
199
|
-
if (atn->states[t->target->stateNumber] == nullptr) {
|
200
|
-
throw IllegalStateException("Cannot serialize a transition to a removed state.");
|
201
|
-
}
|
202
|
-
|
203
|
-
size_t src = s->stateNumber;
|
204
|
-
size_t trg = t->target->stateNumber;
|
205
|
-
Transition::SerializationType edgeType = t->getSerializationType();
|
206
|
-
size_t arg1 = 0;
|
207
|
-
size_t arg2 = 0;
|
208
|
-
size_t arg3 = 0;
|
209
|
-
switch (edgeType) {
|
210
|
-
case Transition::RULE:
|
211
|
-
trg = (static_cast<RuleTransition *>(t))->followState->stateNumber;
|
212
|
-
arg1 = (static_cast<RuleTransition *>(t))->target->stateNumber;
|
213
|
-
arg2 = (static_cast<RuleTransition *>(t))->ruleIndex;
|
214
|
-
arg3 = (static_cast<RuleTransition *>(t))->precedence;
|
215
|
-
break;
|
216
|
-
case Transition::PRECEDENCE:
|
217
|
-
{
|
218
|
-
PrecedencePredicateTransition *ppt =
|
219
|
-
static_cast<PrecedencePredicateTransition *>(t);
|
220
|
-
arg1 = ppt->precedence;
|
221
|
-
}
|
222
|
-
break;
|
223
|
-
case Transition::PREDICATE:
|
224
|
-
{
|
225
|
-
PredicateTransition *pt = static_cast<PredicateTransition *>(t);
|
226
|
-
arg1 = pt->ruleIndex;
|
227
|
-
arg2 = pt->predIndex;
|
228
|
-
arg3 = pt->isCtxDependent ? 1 : 0;
|
229
|
-
}
|
230
|
-
break;
|
231
|
-
case Transition::RANGE:
|
232
|
-
arg1 = (static_cast<RangeTransition *>(t))->from;
|
233
|
-
arg2 = (static_cast<RangeTransition *>(t))->to;
|
234
|
-
if (arg1 == Token::EOF) {
|
235
|
-
arg1 = 0;
|
236
|
-
arg3 = 1;
|
237
|
-
}
|
238
|
-
|
239
|
-
break;
|
240
|
-
case Transition::ATOM:
|
241
|
-
arg1 = (static_cast<AtomTransition *>(t))->_label;
|
242
|
-
if (arg1 == Token::EOF) {
|
243
|
-
arg1 = 0;
|
244
|
-
arg3 = 1;
|
245
|
-
}
|
246
|
-
|
247
|
-
break;
|
248
|
-
case Transition::ACTION:
|
249
|
-
{
|
250
|
-
ActionTransition *at = static_cast<ActionTransition *>(t);
|
251
|
-
arg1 = at->ruleIndex;
|
252
|
-
arg2 = at->actionIndex;
|
253
|
-
if (arg2 == INVALID_INDEX) {
|
254
|
-
arg2 = 0xFFFF;
|
255
|
-
}
|
256
|
-
|
257
|
-
arg3 = at->isCtxDependent ? 1 : 0;
|
258
|
-
}
|
259
|
-
break;
|
260
|
-
case Transition::SET:
|
261
|
-
arg1 = setIndices[(static_cast<SetTransition *>(t))->set];
|
262
|
-
break;
|
263
|
-
|
264
|
-
case Transition::NOT_SET:
|
265
|
-
arg1 = setIndices[(static_cast<SetTransition *>(t))->set];
|
266
|
-
break;
|
267
|
-
|
268
|
-
default:
|
269
|
-
break;
|
270
|
-
}
|
271
|
-
|
272
|
-
data.push_back(src);
|
273
|
-
data.push_back(trg);
|
274
|
-
data.push_back(edgeType);
|
275
|
-
data.push_back(arg1);
|
276
|
-
data.push_back(arg2);
|
277
|
-
data.push_back(arg3);
|
278
|
-
}
|
279
|
-
}
|
280
|
-
|
281
|
-
size_t ndecisions = atn->decisionToState.size();
|
282
|
-
data.push_back(ndecisions);
|
283
|
-
for (DecisionState *decStartState : atn->decisionToState) {
|
284
|
-
data.push_back(decStartState->stateNumber);
|
285
|
-
}
|
286
|
-
|
287
|
-
// LEXER ACTIONS
|
288
|
-
if (atn->grammarType == ATNType::LEXER) {
|
289
|
-
data.push_back(atn->lexerActions.size());
|
290
|
-
for (Ref<LexerAction> &action : atn->lexerActions) {
|
291
|
-
data.push_back(static_cast<size_t>(action->getActionType()));
|
292
|
-
switch (action->getActionType()) {
|
293
|
-
case LexerActionType::CHANNEL:
|
294
|
-
{
|
295
|
-
int channel = std::dynamic_pointer_cast<LexerChannelAction>(action)->getChannel();
|
296
|
-
data.push_back(channel != -1 ? channel : 0xFFFF);
|
297
|
-
data.push_back(0);
|
298
|
-
break;
|
299
|
-
}
|
300
|
-
|
301
|
-
case LexerActionType::CUSTOM:
|
302
|
-
{
|
303
|
-
size_t ruleIndex = std::dynamic_pointer_cast<LexerCustomAction>(action)->getRuleIndex();
|
304
|
-
size_t actionIndex = std::dynamic_pointer_cast<LexerCustomAction>(action)->getActionIndex();
|
305
|
-
data.push_back(ruleIndex != INVALID_INDEX ? ruleIndex : 0xFFFF);
|
306
|
-
data.push_back(actionIndex != INVALID_INDEX ? actionIndex : 0xFFFF);
|
307
|
-
break;
|
308
|
-
}
|
309
|
-
|
310
|
-
case LexerActionType::MODE:
|
311
|
-
{
|
312
|
-
int mode = std::dynamic_pointer_cast<LexerModeAction>(action)->getMode();
|
313
|
-
data.push_back(mode != -1 ? mode : 0xFFFF);
|
314
|
-
data.push_back(0);
|
315
|
-
break;
|
316
|
-
}
|
317
|
-
|
318
|
-
case LexerActionType::MORE:
|
319
|
-
data.push_back(0);
|
320
|
-
data.push_back(0);
|
321
|
-
break;
|
322
|
-
|
323
|
-
case LexerActionType::POP_MODE:
|
324
|
-
data.push_back(0);
|
325
|
-
data.push_back(0);
|
326
|
-
break;
|
327
|
-
|
328
|
-
case LexerActionType::PUSH_MODE:
|
329
|
-
{
|
330
|
-
int mode = std::dynamic_pointer_cast<LexerPushModeAction>(action)->getMode();
|
331
|
-
data.push_back(mode != -1 ? mode : 0xFFFF);
|
332
|
-
data.push_back(0);
|
333
|
-
break;
|
334
|
-
}
|
335
|
-
|
336
|
-
case LexerActionType::SKIP:
|
337
|
-
data.push_back(0);
|
338
|
-
data.push_back(0);
|
339
|
-
break;
|
340
|
-
|
341
|
-
case LexerActionType::TYPE:
|
342
|
-
{
|
343
|
-
int type = std::dynamic_pointer_cast<LexerTypeAction>(action)->getType();
|
344
|
-
data.push_back(type != -1 ? type : 0xFFFF);
|
345
|
-
data.push_back(0);
|
346
|
-
break;
|
347
|
-
}
|
348
|
-
|
349
|
-
default:
|
350
|
-
throw IllegalArgumentException("The specified lexer action type " +
|
351
|
-
std::to_string(static_cast<size_t>(action->getActionType())) +
|
352
|
-
" is not valid.");
|
353
|
-
}
|
354
|
-
}
|
355
|
-
}
|
356
|
-
|
357
|
-
// don't adjust the first value since that's the version number
|
358
|
-
for (size_t i = 1; i < data.size(); i++) {
|
359
|
-
if (data.at(i) > 0xFFFF) {
|
360
|
-
throw UnsupportedOperationException("Serialized ATN data element out of range.");
|
361
|
-
}
|
362
|
-
|
363
|
-
size_t value = (data.at(i) + 2) & 0xFFFF;
|
364
|
-
data.at(i) = value;
|
365
|
-
}
|
366
|
-
|
367
|
-
return data;
|
368
|
-
}
|
369
|
-
|
370
|
-
//------------------------------------------------------------------------------------------------------------
|
371
|
-
|
372
|
-
std::string ATNSerializer::decode(const std::wstring &inpdata) {
|
373
|
-
if (inpdata.size() < 10)
|
374
|
-
throw IllegalArgumentException("Not enough data to decode");
|
375
|
-
|
376
|
-
std::vector<uint16_t> data(inpdata.size());
|
377
|
-
data[0] = (uint16_t)inpdata[0];
|
378
|
-
|
379
|
-
// Don't adjust the first value since that's the version number.
|
380
|
-
for (size_t i = 1; i < inpdata.size(); ++i) {
|
381
|
-
data[i] = (uint16_t)inpdata[i] - 2;
|
382
|
-
}
|
383
|
-
|
384
|
-
std::string buf;
|
385
|
-
size_t p = 0;
|
386
|
-
size_t version = data[p++];
|
387
|
-
if (version != ATNDeserializer::SERIALIZED_VERSION) {
|
388
|
-
std::string reason = "Could not deserialize ATN with version " + std::to_string(version) + "(expected " +
|
389
|
-
std::to_string(ATNDeserializer::SERIALIZED_VERSION) + ").";
|
390
|
-
throw UnsupportedOperationException("ATN Serializer" + reason);
|
391
|
-
}
|
392
|
-
|
393
|
-
Guid uuid = ATNDeserializer::toUUID(data.data(), p);
|
394
|
-
p += 8;
|
395
|
-
if (uuid != ATNDeserializer::SERIALIZED_UUID()) {
|
396
|
-
std::string reason = "Could not deserialize ATN with UUID " + uuid.toString() + " (expected " +
|
397
|
-
ATNDeserializer::SERIALIZED_UUID().toString() + ").";
|
398
|
-
throw UnsupportedOperationException("ATN Serializer" + reason);
|
399
|
-
}
|
400
|
-
|
401
|
-
p++; // skip grammarType
|
402
|
-
size_t maxType = data[p++];
|
403
|
-
buf.append("max type ").append(std::to_string(maxType)).append("\n");
|
404
|
-
size_t nstates = data[p++];
|
405
|
-
for (size_t i = 0; i < nstates; i++) {
|
406
|
-
size_t stype = data[p++];
|
407
|
-
if (stype == ATNState::ATN_INVALID_TYPE) { // ignore bad type of states
|
408
|
-
continue;
|
409
|
-
}
|
410
|
-
size_t ruleIndex = data[p++];
|
411
|
-
if (ruleIndex == 0xFFFF) {
|
412
|
-
ruleIndex = INVALID_INDEX;
|
413
|
-
}
|
414
|
-
|
415
|
-
std::string arg = "";
|
416
|
-
if (stype == ATNState::LOOP_END) {
|
417
|
-
int loopBackStateNumber = data[p++];
|
418
|
-
arg = std::string(" ") + std::to_string(loopBackStateNumber);
|
419
|
-
}
|
420
|
-
else if (stype == ATNState::PLUS_BLOCK_START ||
|
421
|
-
stype == ATNState::STAR_BLOCK_START ||
|
422
|
-
stype == ATNState::BLOCK_START) {
|
423
|
-
int endStateNumber = data[p++];
|
424
|
-
arg = std::string(" ") + std::to_string(endStateNumber);
|
425
|
-
}
|
426
|
-
buf.append(std::to_string(i))
|
427
|
-
.append(":")
|
428
|
-
.append(ATNState::serializationNames[stype])
|
429
|
-
.append(" ")
|
430
|
-
.append(std::to_string(ruleIndex))
|
431
|
-
.append(arg)
|
432
|
-
.append("\n");
|
433
|
-
}
|
434
|
-
size_t numNonGreedyStates = data[p++];
|
435
|
-
p += numNonGreedyStates; // Instead of that useless loop below.
|
436
|
-
/*
|
437
|
-
for (int i = 0; i < numNonGreedyStates; i++) {
|
438
|
-
int stateNumber = data[p++];
|
439
|
-
}
|
440
|
-
*/
|
441
|
-
|
442
|
-
size_t numPrecedenceStates = data[p++];
|
443
|
-
p += numPrecedenceStates;
|
444
|
-
/*
|
445
|
-
for (int i = 0; i < numPrecedenceStates; i++) {
|
446
|
-
int stateNumber = data[p++];
|
447
|
-
}
|
448
|
-
*/
|
449
|
-
|
450
|
-
size_t nrules = data[p++];
|
451
|
-
for (size_t i = 0; i < nrules; i++) {
|
452
|
-
size_t s = data[p++];
|
453
|
-
if (atn->grammarType == ATNType::LEXER) {
|
454
|
-
size_t arg1 = data[p++];
|
455
|
-
buf.append("rule ")
|
456
|
-
.append(std::to_string(i))
|
457
|
-
.append(":")
|
458
|
-
.append(std::to_string(s))
|
459
|
-
.append(" ")
|
460
|
-
.append(std::to_string(arg1))
|
461
|
-
.append("\n");
|
462
|
-
}
|
463
|
-
else {
|
464
|
-
buf.append("rule ")
|
465
|
-
.append(std::to_string(i))
|
466
|
-
.append(":")
|
467
|
-
.append(std::to_string(s))
|
468
|
-
.append("\n");
|
469
|
-
}
|
470
|
-
}
|
471
|
-
size_t nmodes = data[p++];
|
472
|
-
for (size_t i = 0; i < nmodes; i++) {
|
473
|
-
size_t s = data[p++];
|
474
|
-
buf.append("mode ")
|
475
|
-
.append(std::to_string(i))
|
476
|
-
.append(":")
|
477
|
-
.append(std::to_string(s))
|
478
|
-
.append("\n");
|
479
|
-
}
|
480
|
-
size_t nsets = data[p++];
|
481
|
-
for (size_t i = 0; i < nsets; i++) {
|
482
|
-
size_t nintervals = data[p++];
|
483
|
-
buf.append(std::to_string(i)).append(":");
|
484
|
-
bool containsEof = data[p++] != 0;
|
485
|
-
if (containsEof) {
|
486
|
-
buf.append(getTokenName(Token::EOF));
|
487
|
-
}
|
488
|
-
|
489
|
-
for (size_t j = 0; j < nintervals; j++) {
|
490
|
-
if (containsEof || j > 0) {
|
491
|
-
buf.append(", ");
|
492
|
-
}
|
493
|
-
|
494
|
-
buf.append(getTokenName(data[p]))
|
495
|
-
.append("..")
|
496
|
-
.append(getTokenName(data[p + 1]));
|
497
|
-
p += 2;
|
498
|
-
}
|
499
|
-
buf.append("\n");
|
500
|
-
}
|
501
|
-
size_t nedges = data[p++];
|
502
|
-
for (size_t i = 0; i < nedges; i++) {
|
503
|
-
size_t src = data[p];
|
504
|
-
size_t trg = data[p + 1];
|
505
|
-
size_t ttype = data[p + 2];
|
506
|
-
size_t arg1 = data[p + 3];
|
507
|
-
size_t arg2 = data[p + 4];
|
508
|
-
size_t arg3 = data[p + 5];
|
509
|
-
buf.append(std::to_string(src))
|
510
|
-
.append("->")
|
511
|
-
.append(std::to_string(trg))
|
512
|
-
.append(" ")
|
513
|
-
.append(Transition::serializationNames[ttype])
|
514
|
-
.append(" ")
|
515
|
-
.append(std::to_string(arg1))
|
516
|
-
.append(",")
|
517
|
-
.append(std::to_string(arg2))
|
518
|
-
.append(",")
|
519
|
-
.append(std::to_string(arg3))
|
520
|
-
.append("\n");
|
521
|
-
p += 6;
|
522
|
-
}
|
523
|
-
size_t ndecisions = data[p++];
|
524
|
-
for (size_t i = 0; i < ndecisions; i++) {
|
525
|
-
size_t s = data[p++];
|
526
|
-
buf += std::to_string(i) + ":" + std::to_string(s) + "\n";
|
527
|
-
}
|
528
|
-
|
529
|
-
if (atn->grammarType == ATNType::LEXER) {
|
530
|
-
//int lexerActionCount = data[p++];
|
531
|
-
|
532
|
-
//p += lexerActionCount * 3; // Instead of useless loop below.
|
533
|
-
/*
|
534
|
-
for (int i = 0; i < lexerActionCount; i++) {
|
535
|
-
LexerActionType actionType = (LexerActionType)data[p++];
|
536
|
-
int data1 = data[p++];
|
537
|
-
int data2 = data[p++];
|
538
|
-
}
|
539
|
-
*/
|
540
|
-
}
|
541
|
-
|
542
|
-
return buf;
|
543
|
-
}
|
544
|
-
|
545
|
-
std::string ATNSerializer::getTokenName(size_t t) {
|
546
|
-
if (t == Token::EOF) {
|
547
|
-
return "EOF";
|
548
|
-
}
|
549
|
-
|
550
|
-
if (atn->grammarType == ATNType::LEXER && t <= 0x10FFFF) {
|
551
|
-
switch (t) {
|
552
|
-
case '\n':
|
553
|
-
return "'\\n'";
|
554
|
-
case '\r':
|
555
|
-
return "'\\r'";
|
556
|
-
case '\t':
|
557
|
-
return "'\\t'";
|
558
|
-
case '\b':
|
559
|
-
return "'\\b'";
|
560
|
-
case '\f':
|
561
|
-
return "'\\f'";
|
562
|
-
case '\\':
|
563
|
-
return "'\\\\'";
|
564
|
-
case '\'':
|
565
|
-
return "'\\''";
|
566
|
-
default:
|
567
|
-
std::string s_hex = antlrcpp::toHexString((int)t);
|
568
|
-
if (s_hex >= "0" && s_hex <= "7F" && !iscntrl((int)t)) {
|
569
|
-
return "'" + std::to_string(t) + "'";
|
570
|
-
}
|
571
|
-
|
572
|
-
// turn on the bit above max "\u10FFFF" value so that we pad with zeros
|
573
|
-
// then only take last 6 digits
|
574
|
-
std::string hex = antlrcpp::toHexString((int)t | 0x1000000).substr(1, 6);
|
575
|
-
std::string unicodeStr = std::string("'\\u") + hex + std::string("'");
|
576
|
-
return unicodeStr;
|
577
|
-
}
|
578
|
-
}
|
579
|
-
|
580
|
-
if (_tokenNames.size() > 0 && t < _tokenNames.size()) {
|
581
|
-
return _tokenNames[t];
|
582
|
-
}
|
583
|
-
|
584
|
-
return std::to_string(t);
|
585
|
-
}
|
586
|
-
|
587
|
-
std::wstring ATNSerializer::getSerializedAsString(ATN *atn) {
|
588
|
-
std::vector<size_t> data = getSerialized(atn);
|
589
|
-
std::wstring result;
|
590
|
-
for (size_t entry : data)
|
591
|
-
result.push_back((wchar_t)entry);
|
592
|
-
|
593
|
-
return result;
|
594
|
-
}
|
595
|
-
|
596
|
-
std::vector<size_t> ATNSerializer::getSerialized(ATN *atn) {
|
597
|
-
return ATNSerializer(atn).serialize();
|
598
|
-
}
|
599
|
-
|
600
|
-
std::string ATNSerializer::getDecoded(ATN *atn, std::vector<std::string> &tokenNames) {
|
601
|
-
std::wstring serialized = getSerializedAsString(atn);
|
602
|
-
return ATNSerializer(atn, tokenNames).decode(serialized);
|
603
|
-
}
|
604
|
-
|
605
|
-
void ATNSerializer::serializeUUID(std::vector<size_t> &data, Guid uuid) {
|
606
|
-
unsigned int twoBytes = 0;
|
607
|
-
bool firstByte = true;
|
608
|
-
for( std::vector<unsigned char>::const_reverse_iterator rit = uuid.rbegin(); rit != uuid.rend(); ++rit )
|
609
|
-
{
|
610
|
-
if (firstByte) {
|
611
|
-
twoBytes = *rit;
|
612
|
-
firstByte = false;
|
613
|
-
} else {
|
614
|
-
twoBytes |= (*rit << 8);
|
615
|
-
data.push_back(twoBytes);
|
616
|
-
firstByte = true;
|
617
|
-
}
|
618
|
-
}
|
619
|
-
if (!firstByte)
|
620
|
-
throw IllegalArgumentException( "The UUID provided is not valid (odd number of bytes)." );
|
621
|
-
}
|
@@ -1,61 +0,0 @@
|
|
1
|
-
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
2
|
-
* Use of this file is governed by the BSD 3-clause license that
|
3
|
-
* can be found in the LICENSE.txt file in the project root.
|
4
|
-
*/
|
5
|
-
|
6
|
-
#pragma once
|
7
|
-
|
8
|
-
namespace antlr4 {
|
9
|
-
namespace atn {
|
10
|
-
|
11
|
-
class ANTLR4CPP_PUBLIC ATNSerializer {
|
12
|
-
public:
|
13
|
-
ATN *atn;
|
14
|
-
|
15
|
-
ATNSerializer(ATN *atn);
|
16
|
-
ATNSerializer(ATN *atn, const std::vector<std::string> &tokenNames);
|
17
|
-
virtual ~ATNSerializer();
|
18
|
-
|
19
|
-
/// <summary>
|
20
|
-
/// Serialize state descriptors, edge descriptors, and decision->state map
|
21
|
-
/// into list of ints:
|
22
|
-
///
|
23
|
-
/// grammar-type, (ANTLRParser.LEXER, ...)
|
24
|
-
/// max token type,
|
25
|
-
/// num states,
|
26
|
-
/// state-0-type ruleIndex, state-1-type ruleIndex, ... state-i-type
|
27
|
-
/// ruleIndex optional-arg ...
|
28
|
-
/// num rules,
|
29
|
-
/// rule-1-start-state rule-1-args, rule-2-start-state rule-2-args, ...
|
30
|
-
/// (args are token type,actionIndex in lexer else 0,0)
|
31
|
-
/// num modes,
|
32
|
-
/// mode-0-start-state, mode-1-start-state, ... (parser has 0 modes)
|
33
|
-
/// num sets
|
34
|
-
/// set-0-interval-count intervals, set-1-interval-count intervals, ...
|
35
|
-
/// num total edges,
|
36
|
-
/// src, trg, edge-type, edge arg1, optional edge arg2 (present always),
|
37
|
-
/// ...
|
38
|
-
/// num decisions,
|
39
|
-
/// decision-0-start-state, decision-1-start-state, ...
|
40
|
-
///
|
41
|
-
/// Convenient to pack into unsigned shorts to make as Java string.
|
42
|
-
/// </summary>
|
43
|
-
virtual std::vector<size_t> serialize();
|
44
|
-
|
45
|
-
virtual std::string decode(const std::wstring& data);
|
46
|
-
virtual std::string getTokenName(size_t t);
|
47
|
-
|
48
|
-
/// Used by Java target to encode short/int array as chars in string.
|
49
|
-
static std::wstring getSerializedAsString(ATN *atn);
|
50
|
-
static std::vector<size_t> getSerialized(ATN *atn);
|
51
|
-
|
52
|
-
static std::string getDecoded(ATN *atn, std::vector<std::string> &tokenNames);
|
53
|
-
|
54
|
-
private:
|
55
|
-
std::vector<std::string> _tokenNames;
|
56
|
-
|
57
|
-
void serializeUUID(std::vector<size_t> &data, Guid uuid);
|
58
|
-
};
|
59
|
-
|
60
|
-
} // namespace atn
|
61
|
-
} // namespace antlr4
|
data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.cpp
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
2
|
-
* Use of this file is governed by the BSD 3-clause license that
|
3
|
-
* can be found in the LICENSE.txt file in the project root.
|
4
|
-
*/
|
5
|
-
|
6
|
-
#include "atn/AbstractPredicateTransition.h"
|
7
|
-
|
8
|
-
using namespace antlr4::atn;
|
9
|
-
|
10
|
-
AbstractPredicateTransition::AbstractPredicateTransition(ATNState *target) : Transition(target) {
|
11
|
-
}
|
12
|
-
|
13
|
-
AbstractPredicateTransition::~AbstractPredicateTransition() {
|
14
|
-
}
|