expressir 0.2.2 → 0.2.7
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 +30 -0
- data/.github/workflows/rake.yml +45 -0
- data/.github/workflows/release.yml +84 -0
- data/.gitignore +4 -2
- data/.gitmodules +3 -0
- data/Rakefile +5 -0
- data/exe/generate-parser +48 -0
- data/expressir.gemspec +12 -4
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/CMakeLists.txt +118 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2013.vcxproj +637 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2013.vcxproj.filters +984 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2015.vcxproj +652 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2015.vcxproj.filters +990 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2017.vcxproj +652 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2017.vcxproj.filters +990 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj +652 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj.filters +990 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp-ios/Info.plist +26 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp-ios/antlrcpp_ios.h +17 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.pbxproj +3024 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4.xcscheme +76 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_ios.xcscheme +80 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_static.xcscheme +80 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.cpp +10 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.h +167 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.cpp +10 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.h +121 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.cpp +34 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.h +27 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.cpp +155 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.h +69 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.cpp +61 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.h +59 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.cpp +25 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.h +36 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.cpp +414 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.h +200 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.cpp +11 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.h +37 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.cpp +195 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.h +158 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.cpp +39 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.h +74 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.cpp +78 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.h +79 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.cpp +15 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.h +35 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.cpp +333 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.h +466 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.cpp +84 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.h +80 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.cpp +64 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.h +99 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.cpp +51 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.h +32 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.cpp +18 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.h +24 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.cpp +12 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.h +218 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.cpp +19 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.h +45 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.cpp +295 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.h +196 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.cpp +75 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.h +52 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.cpp +36 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.h +31 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.cpp +92 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.h +88 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.cpp +46 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.h +42 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.cpp +648 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.h +467 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.cpp +306 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.h +179 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.cpp +141 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.h +147 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.cpp +53 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.h +38 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.cpp +66 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.h +98 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.cpp +167 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.h +164 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.cpp +143 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.h +137 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.cpp +27 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.h +32 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.cpp +53 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.h +155 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.cpp +9 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.h +92 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenFactory.h +30 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.cpp +9 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.h +85 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.cpp +11 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.h +137 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +425 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.h +293 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp +211 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.h +123 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.cpp +270 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.h +115 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.cpp +104 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.h +193 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.cpp +9 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.h +23 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-common.h +137 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-runtime.h +167 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.cpp +209 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.h +112 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +113 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.h +148 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp +228 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.h +110 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.cpp +64 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.h +50 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp +758 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.h +85 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.cpp +621 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.h +61 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.cpp +63 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.h +87 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.cpp +72 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.h +133 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNType.h +20 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.cpp +14 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.h +24 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.cpp +33 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.h +33 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.cpp +16 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.h +68 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.cpp +82 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.h +43 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.cpp +31 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.h +30 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.cpp +12 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.h +22 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.cpp +12 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.h +21 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.cpp +15 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.h +24 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.cpp +9 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.h +21 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.cpp +14 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.h +47 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.cpp +14 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.h +70 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.cpp +25 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.h +227 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.cpp +17 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.h +30 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.cpp +35 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.h +27 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.cpp +35 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.h +39 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.cpp +15 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.h +43 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.cpp +158 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.h +109 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp +84 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.h +44 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp +628 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.h +210 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.cpp +9 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.h +66 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.cpp +107 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.h +115 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionType.h +55 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.cpp +55 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.h +63 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.cpp +62 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.h +87 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.cpp +63 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.h +82 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.cpp +56 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.h +61 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.cpp +47 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.h +57 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.cpp +47 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.h +57 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.cpp +56 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.h +61 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.cpp +47 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.h +55 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.cpp +56 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.h +55 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.cpp +16 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.h +42 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.cpp +12 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.h +22 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Makefile +67 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.cpp +27 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.h +25 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.cpp +12 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.h +20 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.cpp +102 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.h +102 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp +1366 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h +904 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.cpp +12 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.h +25 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.cpp +12 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.h +22 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.cpp +32 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.h +29 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp +17 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h +62 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.cpp +34 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.h +39 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.cpp +662 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.h +254 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.cpp +201 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.h +436 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp +179 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h +60 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.cpp +30 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.h +29 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.cpp +16 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.h +25 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.cpp +12 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.h +25 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.cpp +37 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.h +40 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.cpp +377 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.h +222 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.cpp +32 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.h +30 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp +81 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.h +36 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.cpp +12 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.h +21 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.cpp +15 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.h +35 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.cpp +19 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.h +21 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.cpp +12 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.h +21 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.cpp +44 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.h +76 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.cpp +25 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.h +25 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.cpp +127 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.h +91 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.cpp +67 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.h +32 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.cpp +100 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.h +144 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.cpp +20 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.h +23 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.cpp +124 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.h +31 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.cpp +89 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.h +84 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.cpp +521 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.h +198 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.cpp +134 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.h +76 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.cpp +4 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.h +21 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.cpp +13 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.h +170 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.cpp +43 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.h +110 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/BitSet.h +76 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.cpp +248 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.h +78 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Declarations.h +163 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.cpp +36 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.h +54 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.cpp +303 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.h +112 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/AbstractParseTreeVisitor.h +128 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.cpp +9 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.h +19 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.cpp +23 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.h +33 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.cpp +71 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.h +53 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.cpp +15 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.h +102 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.cpp +9 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.h +39 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeProperty.h +50 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.cpp +9 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.h +57 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.cpp +49 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.h +31 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.cpp +9 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.h +32 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.cpp +57 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.h +33 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.cpp +241 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.h +78 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.cpp +9 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.h +44 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.cpp +69 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.h +132 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.cpp +64 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.h +105 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp +371 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.h +185 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.cpp +77 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.h +117 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.cpp +39 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.h +86 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.cpp +28 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.h +51 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.cpp +36 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.h +80 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.cpp +154 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.h +86 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.cpp +31 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.h +40 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.cpp +173 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.g4 +64 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.h +56 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.tokens +12 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.cpp +13 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.h +22 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.cpp +20 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.h +27 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.cpp +30 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.h +26 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.cpp +20 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.h +25 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.cpp +33 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.h +26 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.cpp +23 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.h +23 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.cpp +24 -0
- data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.h +23 -0
- data/ext/express-parser/antlrgen/Express.interp +532 -0
- data/ext/express-parser/antlrgen/Express.tokens +190 -0
- data/ext/express-parser/antlrgen/ExpressBaseListener.cpp +7 -0
- data/ext/express-parser/antlrgen/ExpressBaseListener.h +623 -0
- data/ext/express-parser/antlrgen/ExpressBaseVisitor.cpp +7 -0
- data/ext/express-parser/antlrgen/ExpressBaseVisitor.h +816 -0
- data/ext/express-parser/antlrgen/ExpressLexer.cpp +1169 -0
- data/ext/express-parser/antlrgen/ExpressLexer.h +85 -0
- data/ext/express-parser/antlrgen/ExpressLexer.interp +534 -0
- data/ext/express-parser/antlrgen/ExpressLexer.tokens +190 -0
- data/ext/express-parser/antlrgen/ExpressListener.cpp +7 -0
- data/ext/express-parser/antlrgen/ExpressListener.h +616 -0
- data/ext/express-parser/antlrgen/ExpressParser.cpp +17284 -0
- data/ext/express-parser/antlrgen/ExpressParser.h +3696 -0
- data/ext/express-parser/antlrgen/ExpressVisitor.cpp +7 -0
- data/ext/express-parser/antlrgen/ExpressVisitor.h +422 -0
- data/ext/express-parser/express_parser.cpp +17933 -0
- data/ext/express-parser/extconf.rb +57 -0
- data/lib/expressir/express_exp/formatter.rb +1450 -0
- data/lib/expressir/express_exp/parser.rb +17 -6
- data/lib/expressir/express_exp/visitor.rb +1527 -1197
- data/lib/expressir/model.rb +16 -42
- data/lib/expressir/model/{derived.rb → attribute.rb} +12 -4
- data/lib/expressir/model/constant.rb +3 -3
- data/lib/expressir/model/entity.rb +24 -19
- data/lib/expressir/model/enumeration_item.rb +1 -3
- data/lib/expressir/model/expressions/aggregate_initializer.rb +9 -9
- data/lib/expressir/model/expressions/aggregate_item.rb +15 -0
- data/lib/expressir/model/expressions/{attribute_qualifier.rb → attribute_reference.rb} +3 -1
- data/lib/expressir/model/expressions/binary_expression.rb +40 -0
- data/lib/expressir/model/expressions/{function_call.rb → call.rb} +3 -3
- data/lib/expressir/model/expressions/entity_constructor.rb +11 -11
- data/lib/expressir/model/expressions/{group_qualifier.rb → group_reference.rb} +3 -1
- data/lib/expressir/model/expressions/{index_qualifier.rb → index_reference.rb} +3 -1
- data/lib/expressir/model/expressions/interval.rb +17 -17
- data/lib/expressir/model/expressions/query_expression.rb +26 -0
- data/lib/expressir/model/expressions/simple_reference.rb +13 -0
- data/lib/expressir/model/expressions/{expression.rb → unary_expression.rb} +7 -3
- data/lib/expressir/model/function.rb +16 -8
- data/lib/expressir/model/identifier.rb +10 -0
- data/lib/expressir/model/{reference.rb → interface.rb} +6 -1
- data/lib/expressir/model/literals/logical.rb +4 -0
- data/lib/expressir/model/parameter.rb +5 -5
- data/lib/expressir/model/procedure.rb +16 -8
- data/lib/expressir/model/repository.rb +3 -1
- data/lib/expressir/model/rule.rb +18 -10
- data/lib/expressir/model/schema.rb +24 -8
- data/lib/expressir/model/scope.rb +17 -0
- data/lib/expressir/model/statements/alias.rb +5 -4
- data/lib/expressir/model/statements/{procedure_call.rb → call.rb} +3 -3
- data/lib/expressir/model/statements/case.rb +2 -2
- data/lib/expressir/model/statements/case_action.rb +2 -2
- data/lib/expressir/model/statements/repeat.rb +5 -4
- data/lib/expressir/model/subtype_constraint.rb +13 -7
- data/lib/expressir/model/type.rb +5 -4
- data/lib/expressir/model/types/aggregate.rb +4 -4
- data/lib/expressir/model/types/generic.rb +2 -4
- data/lib/expressir/model/types/generic_entity.rb +2 -4
- data/lib/expressir/model/unique.rb +3 -3
- data/lib/expressir/model/{local.rb → variable.rb} +4 -4
- data/lib/expressir/model/where.rb +3 -3
- data/lib/expressir/version.rb +1 -1
- data/original/examples/syntax/remark.exp +127 -108
- data/original/examples/syntax/remark_formatted.exp +175 -0
- data/original/examples/syntax/syntax.exp +288 -277
- data/original/examples/syntax/syntax_formatted.exp +1191 -0
- data/rakelib/cross-ruby.rake +308 -0
- data/spec/expressir/express_exp/ap233_spec.rb +1 -1
- data/spec/expressir/express_exp/format_remark_spec.rb +28 -0
- data/spec/expressir/express_exp/format_syntax_spec.rb +28 -0
- data/spec/expressir/express_exp/{remark_spec.rb → parse_remark_spec.rb} +81 -36
- data/spec/expressir/express_exp/parse_syntax_spec.rb +3003 -0
- data/spec/expressir/model/find_spec.rb +110 -0
- metadata +429 -66
- data/.github/workflows/macos.yml +0 -38
- data/.github/workflows/ubuntu.yml +0 -56
- data/.github/workflows/windows.yml +0 -40
- data/generate-parser.sh +0 -29
- data/lib/expressir/express_exp/generated/ExpressBaseVisitor.rb +0 -779
- data/lib/expressir/express_exp/generated/ExpressLexer.rb +0 -844
- data/lib/expressir/express_exp/generated/ExpressParser.rb +0 -12162
- data/lib/expressir/express_exp/generated/ExpressVisitor.rb +0 -394
- data/lib/expressir/model/explicit.rb +0 -19
- data/lib/expressir/model/expressions/aggregate_element.rb +0 -15
- data/lib/expressir/model/expressions/qualified_ref.rb +0 -15
- data/lib/expressir/model/expressions/query.rb +0 -25
- data/lib/expressir/model/inverse.rb +0 -19
- data/lib/expressir/model/operators/addition.rb +0 -8
- data/lib/expressir/model/operators/and.rb +0 -8
- data/lib/expressir/model/operators/andor.rb +0 -8
- data/lib/expressir/model/operators/combine.rb +0 -8
- data/lib/expressir/model/operators/equal.rb +0 -8
- data/lib/expressir/model/operators/exponentiation.rb +0 -8
- data/lib/expressir/model/operators/greater_than.rb +0 -8
- data/lib/expressir/model/operators/greater_than_or_equal.rb +0 -8
- data/lib/expressir/model/operators/in.rb +0 -8
- data/lib/expressir/model/operators/instance_equal.rb +0 -8
- data/lib/expressir/model/operators/instance_not_equal.rb +0 -8
- data/lib/expressir/model/operators/integer_division.rb +0 -8
- data/lib/expressir/model/operators/less_than.rb +0 -8
- data/lib/expressir/model/operators/less_than_or_equal.rb +0 -8
- data/lib/expressir/model/operators/like.rb +0 -8
- data/lib/expressir/model/operators/modulo.rb +0 -8
- data/lib/expressir/model/operators/multiplication.rb +0 -8
- data/lib/expressir/model/operators/not.rb +0 -8
- data/lib/expressir/model/operators/not_equal.rb +0 -8
- data/lib/expressir/model/operators/oneof.rb +0 -8
- data/lib/expressir/model/operators/or.rb +0 -8
- data/lib/expressir/model/operators/real_division.rb +0 -8
- data/lib/expressir/model/operators/subtraction.rb +0 -8
- data/lib/expressir/model/operators/unary_minus.rb +0 -8
- data/lib/expressir/model/operators/unary_plus.rb +0 -8
- data/lib/expressir/model/operators/xor.rb +0 -8
- data/lib/expressir/model/ref.rb +0 -11
- data/lib/expressir/model/use.rb +0 -13
- data/spec/expressir/express_exp/syntax_spec.rb +0 -2992
@@ -0,0 +1,210 @@
|
|
1
|
+
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
2
|
+
* Use of this file is governed by the BSD 3-clause license that
|
3
|
+
* can be found in the LICENSE.txt file in the project root.
|
4
|
+
*/
|
5
|
+
|
6
|
+
#pragma once
|
7
|
+
|
8
|
+
#include "atn/ATNSimulator.h"
|
9
|
+
#include "atn/LexerATNConfig.h"
|
10
|
+
#include "atn/ATNConfigSet.h"
|
11
|
+
|
12
|
+
namespace antlr4 {
|
13
|
+
namespace atn {
|
14
|
+
|
15
|
+
/// "dup" of ParserInterpreter
|
16
|
+
class ANTLR4CPP_PUBLIC LexerATNSimulator : public ATNSimulator {
|
17
|
+
protected:
|
18
|
+
class SimState {
|
19
|
+
public:
|
20
|
+
virtual ~SimState();
|
21
|
+
|
22
|
+
protected:
|
23
|
+
size_t index;
|
24
|
+
size_t line;
|
25
|
+
size_t charPos;
|
26
|
+
dfa::DFAState *dfaState;
|
27
|
+
virtual void reset();
|
28
|
+
friend class LexerATNSimulator;
|
29
|
+
|
30
|
+
private:
|
31
|
+
void InitializeInstanceFields();
|
32
|
+
|
33
|
+
public:
|
34
|
+
SimState() {
|
35
|
+
InitializeInstanceFields();
|
36
|
+
}
|
37
|
+
};
|
38
|
+
|
39
|
+
|
40
|
+
public:
|
41
|
+
static const size_t MIN_DFA_EDGE = 0;
|
42
|
+
static const size_t MAX_DFA_EDGE = 127; // forces unicode to stay in ATN
|
43
|
+
|
44
|
+
protected:
|
45
|
+
/// <summary>
|
46
|
+
/// When we hit an accept state in either the DFA or the ATN, we
|
47
|
+
/// have to notify the character stream to start buffering characters
|
48
|
+
/// via <seealso cref="IntStream#mark"/> and record the current state. The current sim state
|
49
|
+
/// includes the current index into the input, the current line,
|
50
|
+
/// and current character position in that line. Note that the Lexer is
|
51
|
+
/// tracking the starting line and characterization of the token. These
|
52
|
+
/// variables track the "state" of the simulator when it hits an accept state.
|
53
|
+
/// <p/>
|
54
|
+
/// We track these variables separately for the DFA and ATN simulation
|
55
|
+
/// because the DFA simulation often has to fail over to the ATN
|
56
|
+
/// simulation. If the ATN simulation fails, we need the DFA to fall
|
57
|
+
/// back to its previously accepted state, if any. If the ATN succeeds,
|
58
|
+
/// then the ATN does the accept and the DFA simulator that invoked it
|
59
|
+
/// can simply return the predicted token type.
|
60
|
+
/// </summary>
|
61
|
+
Lexer *const _recog;
|
62
|
+
|
63
|
+
/// The current token's starting index into the character stream.
|
64
|
+
/// Shared across DFA to ATN simulation in case the ATN fails and the
|
65
|
+
/// DFA did not have a previous accept state. In this case, we use the
|
66
|
+
/// ATN-generated exception object.
|
67
|
+
size_t _startIndex;
|
68
|
+
|
69
|
+
/// line number 1..n within the input.
|
70
|
+
size_t _line;
|
71
|
+
|
72
|
+
/// The index of the character relative to the beginning of the line 0..n-1.
|
73
|
+
size_t _charPositionInLine;
|
74
|
+
|
75
|
+
public:
|
76
|
+
std::vector<dfa::DFA> &_decisionToDFA;
|
77
|
+
|
78
|
+
protected:
|
79
|
+
size_t _mode;
|
80
|
+
|
81
|
+
/// Used during DFA/ATN exec to record the most recent accept configuration info.
|
82
|
+
SimState _prevAccept;
|
83
|
+
|
84
|
+
public:
|
85
|
+
static int match_calls;
|
86
|
+
|
87
|
+
LexerATNSimulator(const ATN &atn, std::vector<dfa::DFA> &decisionToDFA, PredictionContextCache &sharedContextCache);
|
88
|
+
LexerATNSimulator(Lexer *recog, const ATN &atn, std::vector<dfa::DFA> &decisionToDFA, PredictionContextCache &sharedContextCache);
|
89
|
+
virtual ~LexerATNSimulator () {}
|
90
|
+
|
91
|
+
virtual void copyState(LexerATNSimulator *simulator);
|
92
|
+
virtual size_t match(CharStream *input, size_t mode);
|
93
|
+
virtual void reset() override;
|
94
|
+
|
95
|
+
virtual void clearDFA() override;
|
96
|
+
|
97
|
+
protected:
|
98
|
+
virtual size_t matchATN(CharStream *input);
|
99
|
+
virtual size_t execATN(CharStream *input, dfa::DFAState *ds0);
|
100
|
+
|
101
|
+
/// <summary>
|
102
|
+
/// Get an existing target state for an edge in the DFA. If the target state
|
103
|
+
/// for the edge has not yet been computed or is otherwise not available,
|
104
|
+
/// this method returns {@code null}.
|
105
|
+
/// </summary>
|
106
|
+
/// <param name="s"> The current DFA state </param>
|
107
|
+
/// <param name="t"> The next input symbol </param>
|
108
|
+
/// <returns> The existing target DFA state for the given input symbol
|
109
|
+
/// {@code t}, or {@code null} if the target state for this edge is not
|
110
|
+
/// already cached </returns>
|
111
|
+
virtual dfa::DFAState *getExistingTargetState(dfa::DFAState *s, size_t t);
|
112
|
+
|
113
|
+
/// <summary>
|
114
|
+
/// Compute a target state for an edge in the DFA, and attempt to add the
|
115
|
+
/// computed state and corresponding edge to the DFA.
|
116
|
+
/// </summary>
|
117
|
+
/// <param name="input"> The input stream </param>
|
118
|
+
/// <param name="s"> The current DFA state </param>
|
119
|
+
/// <param name="t"> The next input symbol
|
120
|
+
/// </param>
|
121
|
+
/// <returns> The computed target DFA state for the given input symbol
|
122
|
+
/// {@code t}. If {@code t} does not lead to a valid DFA state, this method
|
123
|
+
/// returns <seealso cref="#ERROR"/>. </returns>
|
124
|
+
virtual dfa::DFAState *computeTargetState(CharStream *input, dfa::DFAState *s, size_t t);
|
125
|
+
|
126
|
+
virtual size_t failOrAccept(CharStream *input, ATNConfigSet *reach, size_t t);
|
127
|
+
|
128
|
+
/// <summary>
|
129
|
+
/// Given a starting configuration set, figure out all ATN configurations
|
130
|
+
/// we can reach upon input {@code t}. Parameter {@code reach} is a return
|
131
|
+
/// parameter.
|
132
|
+
/// </summary>
|
133
|
+
void getReachableConfigSet(CharStream *input, ATNConfigSet *closure_, // closure_ as we have a closure() already
|
134
|
+
ATNConfigSet *reach, size_t t);
|
135
|
+
|
136
|
+
virtual void accept(CharStream *input, const Ref<LexerActionExecutor> &lexerActionExecutor, size_t startIndex, size_t index,
|
137
|
+
size_t line, size_t charPos);
|
138
|
+
|
139
|
+
virtual ATNState *getReachableTarget(Transition *trans, size_t t);
|
140
|
+
|
141
|
+
virtual std::unique_ptr<ATNConfigSet> computeStartState(CharStream *input, ATNState *p);
|
142
|
+
|
143
|
+
/// <summary>
|
144
|
+
/// Since the alternatives within any lexer decision are ordered by
|
145
|
+
/// preference, this method stops pursuing the closure as soon as an accept
|
146
|
+
/// state is reached. After the first accept state is reached by depth-first
|
147
|
+
/// search from {@code config}, all other (potentially reachable) states for
|
148
|
+
/// this rule would have a lower priority.
|
149
|
+
/// </summary>
|
150
|
+
/// <returns> {@code true} if an accept state is reached, otherwise
|
151
|
+
/// {@code false}. </returns>
|
152
|
+
virtual bool closure(CharStream *input, const Ref<LexerATNConfig> &config, ATNConfigSet *configs,
|
153
|
+
bool currentAltReachedAcceptState, bool speculative, bool treatEofAsEpsilon);
|
154
|
+
|
155
|
+
// side-effect: can alter configs.hasSemanticContext
|
156
|
+
virtual Ref<LexerATNConfig> getEpsilonTarget(CharStream *input, const Ref<LexerATNConfig> &config, Transition *t,
|
157
|
+
ATNConfigSet *configs, bool speculative, bool treatEofAsEpsilon);
|
158
|
+
|
159
|
+
/// <summary>
|
160
|
+
/// Evaluate a predicate specified in the lexer.
|
161
|
+
/// <p/>
|
162
|
+
/// If {@code speculative} is {@code true}, this method was called before
|
163
|
+
/// <seealso cref="#consume"/> for the matched character. This method should call
|
164
|
+
/// <seealso cref="#consume"/> before evaluating the predicate to ensure position
|
165
|
+
/// sensitive values, including <seealso cref="Lexer#getText"/>, <seealso cref="Lexer#getLine"/>,
|
166
|
+
/// and <seealso cref="Lexer#getCharPositionInLine"/>, properly reflect the current
|
167
|
+
/// lexer state. This method should restore {@code input} and the simulator
|
168
|
+
/// to the original state before returning (i.e. undo the actions made by the
|
169
|
+
/// call to <seealso cref="#consume"/>.
|
170
|
+
/// </summary>
|
171
|
+
/// <param name="input"> The input stream. </param>
|
172
|
+
/// <param name="ruleIndex"> The rule containing the predicate. </param>
|
173
|
+
/// <param name="predIndex"> The index of the predicate within the rule. </param>
|
174
|
+
/// <param name="speculative"> {@code true} if the current index in {@code input} is
|
175
|
+
/// one character before the predicate's location.
|
176
|
+
/// </param>
|
177
|
+
/// <returns> {@code true} if the specified predicate evaluates to
|
178
|
+
/// {@code true}. </returns>
|
179
|
+
virtual bool evaluatePredicate(CharStream *input, size_t ruleIndex, size_t predIndex, bool speculative);
|
180
|
+
|
181
|
+
virtual void captureSimState(CharStream *input, dfa::DFAState *dfaState);
|
182
|
+
virtual dfa::DFAState* addDFAEdge(dfa::DFAState *from, size_t t, ATNConfigSet *q);
|
183
|
+
virtual void addDFAEdge(dfa::DFAState *p, size_t t, dfa::DFAState *q);
|
184
|
+
|
185
|
+
/// <summary>
|
186
|
+
/// Add a new DFA state if there isn't one with this set of
|
187
|
+
/// configurations already. This method also detects the first
|
188
|
+
/// configuration containing an ATN rule stop state. Later, when
|
189
|
+
/// traversing the DFA, we will know which rule to accept.
|
190
|
+
/// </summary>
|
191
|
+
virtual dfa::DFAState *addDFAState(ATNConfigSet *configs);
|
192
|
+
|
193
|
+
public:
|
194
|
+
dfa::DFA& getDFA(size_t mode);
|
195
|
+
|
196
|
+
/// Get the text matched so far for the current token.
|
197
|
+
virtual std::string getText(CharStream *input);
|
198
|
+
virtual size_t getLine() const;
|
199
|
+
virtual void setLine(size_t line);
|
200
|
+
virtual size_t getCharPositionInLine();
|
201
|
+
virtual void setCharPositionInLine(size_t charPositionInLine);
|
202
|
+
virtual void consume(CharStream *input);
|
203
|
+
virtual std::string getTokenName(size_t t);
|
204
|
+
|
205
|
+
private:
|
206
|
+
void InitializeInstanceFields();
|
207
|
+
};
|
208
|
+
|
209
|
+
} // namespace atn
|
210
|
+
} // namespace antlr4
|
@@ -0,0 +1,9 @@
|
|
1
|
+
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
2
|
+
* Use of this file is governed by the BSD 3-clause license that
|
3
|
+
* can be found in the LICENSE.txt file in the project root.
|
4
|
+
*/
|
5
|
+
|
6
|
+
#include "LexerAction.h"
|
7
|
+
|
8
|
+
antlr4::atn::LexerAction::~LexerAction() {
|
9
|
+
}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
2
|
+
* Use of this file is governed by the BSD 3-clause license that
|
3
|
+
* can be found in the LICENSE.txt file in the project root.
|
4
|
+
*/
|
5
|
+
|
6
|
+
#pragma once
|
7
|
+
|
8
|
+
#include "atn/LexerActionType.h"
|
9
|
+
#include "antlr4-common.h"
|
10
|
+
|
11
|
+
namespace antlr4 {
|
12
|
+
namespace atn {
|
13
|
+
|
14
|
+
/// <summary>
|
15
|
+
/// Represents a single action which can be executed following the successful
|
16
|
+
/// match of a lexer rule. Lexer actions are used for both embedded action syntax
|
17
|
+
/// and ANTLR 4's new lexer command syntax.
|
18
|
+
///
|
19
|
+
/// @author Sam Harwell
|
20
|
+
/// @since 4.2
|
21
|
+
/// </summary>
|
22
|
+
class ANTLR4CPP_PUBLIC LexerAction {
|
23
|
+
public:
|
24
|
+
virtual ~LexerAction();
|
25
|
+
|
26
|
+
/// <summary>
|
27
|
+
/// Gets the serialization type of the lexer action.
|
28
|
+
/// </summary>
|
29
|
+
/// <returns> The serialization type of the lexer action. </returns>
|
30
|
+
virtual LexerActionType getActionType() const = 0;
|
31
|
+
|
32
|
+
/// <summary>
|
33
|
+
/// Gets whether the lexer action is position-dependent. Position-dependent
|
34
|
+
/// actions may have different semantics depending on the <seealso cref="CharStream"/>
|
35
|
+
/// index at the time the action is executed.
|
36
|
+
///
|
37
|
+
/// <para>Many lexer commands, including {@code type}, {@code skip}, and
|
38
|
+
/// {@code more}, do not check the input index during their execution.
|
39
|
+
/// Actions like this are position-independent, and may be stored more
|
40
|
+
/// efficiently as part of the <seealso cref="LexerATNConfig#lexerActionExecutor"/>.</para>
|
41
|
+
/// </summary>
|
42
|
+
/// <returns> {@code true} if the lexer action semantics can be affected by the
|
43
|
+
/// position of the input <seealso cref="CharStream"/> at the time it is executed;
|
44
|
+
/// otherwise, {@code false}. </returns>
|
45
|
+
virtual bool isPositionDependent() const = 0;
|
46
|
+
|
47
|
+
/// <summary>
|
48
|
+
/// Execute the lexer action in the context of the specified <seealso cref="Lexer"/>.
|
49
|
+
///
|
50
|
+
/// <para>For position-dependent actions, the input stream must already be
|
51
|
+
/// positioned correctly prior to calling this method.</para>
|
52
|
+
/// </summary>
|
53
|
+
/// <param name="lexer"> The lexer instance. </param>
|
54
|
+
virtual void execute(Lexer *lexer) = 0;
|
55
|
+
|
56
|
+
virtual size_t hashCode() const = 0;
|
57
|
+
virtual bool operator == (const LexerAction &obj) const = 0;
|
58
|
+
virtual bool operator != (const LexerAction &obj) const {
|
59
|
+
return !(*this == obj);
|
60
|
+
}
|
61
|
+
|
62
|
+
virtual std::string toString() const = 0;
|
63
|
+
};
|
64
|
+
|
65
|
+
} // namespace atn
|
66
|
+
} // namespace antlr4
|
@@ -0,0 +1,107 @@
|
|
1
|
+
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
2
|
+
* Use of this file is governed by the BSD 3-clause license that
|
3
|
+
* can be found in the LICENSE.txt file in the project root.
|
4
|
+
*/
|
5
|
+
|
6
|
+
#include "misc/MurmurHash.h"
|
7
|
+
#include "atn/LexerIndexedCustomAction.h"
|
8
|
+
#include "support/CPPUtils.h"
|
9
|
+
#include "support/Arrays.h"
|
10
|
+
|
11
|
+
#include "atn/LexerActionExecutor.h"
|
12
|
+
|
13
|
+
using namespace antlr4;
|
14
|
+
using namespace antlr4::atn;
|
15
|
+
using namespace antlr4::misc;
|
16
|
+
using namespace antlrcpp;
|
17
|
+
|
18
|
+
LexerActionExecutor::LexerActionExecutor(const std::vector<Ref<LexerAction>> &lexerActions)
|
19
|
+
: _lexerActions(lexerActions), _hashCode(generateHashCode()) {
|
20
|
+
}
|
21
|
+
|
22
|
+
LexerActionExecutor::~LexerActionExecutor() {
|
23
|
+
}
|
24
|
+
|
25
|
+
Ref<LexerActionExecutor> LexerActionExecutor::append(Ref<LexerActionExecutor> const& lexerActionExecutor,
|
26
|
+
Ref<LexerAction> const& lexerAction) {
|
27
|
+
if (lexerActionExecutor == nullptr) {
|
28
|
+
return std::make_shared<LexerActionExecutor>(std::vector<Ref<LexerAction>> { lexerAction });
|
29
|
+
}
|
30
|
+
|
31
|
+
std::vector<Ref<LexerAction>> lexerActions = lexerActionExecutor->_lexerActions; // Make a copy.
|
32
|
+
lexerActions.push_back(lexerAction);
|
33
|
+
return std::make_shared<LexerActionExecutor>(lexerActions);
|
34
|
+
}
|
35
|
+
|
36
|
+
Ref<LexerActionExecutor> LexerActionExecutor::fixOffsetBeforeMatch(int offset) {
|
37
|
+
std::vector<Ref<LexerAction>> updatedLexerActions;
|
38
|
+
for (size_t i = 0; i < _lexerActions.size(); i++) {
|
39
|
+
if (_lexerActions[i]->isPositionDependent() && !is<LexerIndexedCustomAction>(_lexerActions[i])) {
|
40
|
+
if (updatedLexerActions.empty()) {
|
41
|
+
updatedLexerActions = _lexerActions; // Make a copy.
|
42
|
+
}
|
43
|
+
|
44
|
+
updatedLexerActions[i] = std::make_shared<LexerIndexedCustomAction>(offset, _lexerActions[i]);
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
if (updatedLexerActions.empty()) {
|
49
|
+
return shared_from_this();
|
50
|
+
}
|
51
|
+
|
52
|
+
return std::make_shared<LexerActionExecutor>(updatedLexerActions);
|
53
|
+
}
|
54
|
+
|
55
|
+
std::vector<Ref<LexerAction>> LexerActionExecutor::getLexerActions() const {
|
56
|
+
return _lexerActions;
|
57
|
+
}
|
58
|
+
|
59
|
+
void LexerActionExecutor::execute(Lexer *lexer, CharStream *input, size_t startIndex) {
|
60
|
+
bool requiresSeek = false;
|
61
|
+
size_t stopIndex = input->index();
|
62
|
+
|
63
|
+
auto onExit = finally([requiresSeek, input, stopIndex]() {
|
64
|
+
if (requiresSeek) {
|
65
|
+
input->seek(stopIndex);
|
66
|
+
}
|
67
|
+
});
|
68
|
+
for (auto lexerAction : _lexerActions) {
|
69
|
+
if (is<LexerIndexedCustomAction>(lexerAction)) {
|
70
|
+
int offset = (std::static_pointer_cast<LexerIndexedCustomAction>(lexerAction))->getOffset();
|
71
|
+
input->seek(startIndex + offset);
|
72
|
+
lexerAction = std::static_pointer_cast<LexerIndexedCustomAction>(lexerAction)->getAction();
|
73
|
+
requiresSeek = (startIndex + offset) != stopIndex;
|
74
|
+
} else if (lexerAction->isPositionDependent()) {
|
75
|
+
input->seek(stopIndex);
|
76
|
+
requiresSeek = false;
|
77
|
+
}
|
78
|
+
|
79
|
+
lexerAction->execute(lexer);
|
80
|
+
}
|
81
|
+
}
|
82
|
+
|
83
|
+
size_t LexerActionExecutor::hashCode() const {
|
84
|
+
return _hashCode;
|
85
|
+
}
|
86
|
+
|
87
|
+
bool LexerActionExecutor::operator == (const LexerActionExecutor &obj) const {
|
88
|
+
if (&obj == this) {
|
89
|
+
return true;
|
90
|
+
}
|
91
|
+
|
92
|
+
return _hashCode == obj._hashCode && Arrays::equals(_lexerActions, obj._lexerActions);
|
93
|
+
}
|
94
|
+
|
95
|
+
bool LexerActionExecutor::operator != (const LexerActionExecutor &obj) const {
|
96
|
+
return !operator==(obj);
|
97
|
+
}
|
98
|
+
|
99
|
+
size_t LexerActionExecutor::generateHashCode() const {
|
100
|
+
size_t hash = MurmurHash::initialize();
|
101
|
+
for (auto lexerAction : _lexerActions) {
|
102
|
+
hash = MurmurHash::update(hash, lexerAction);
|
103
|
+
}
|
104
|
+
hash = MurmurHash::finish(hash, _lexerActions.size());
|
105
|
+
|
106
|
+
return hash;
|
107
|
+
}
|
@@ -0,0 +1,115 @@
|
|
1
|
+
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
2
|
+
* Use of this file is governed by the BSD 3-clause license that
|
3
|
+
* can be found in the LICENSE.txt file in the project root.
|
4
|
+
*/
|
5
|
+
|
6
|
+
#pragma once
|
7
|
+
|
8
|
+
#include "CharStream.h"
|
9
|
+
#include "atn/LexerAction.h"
|
10
|
+
|
11
|
+
namespace antlr4 {
|
12
|
+
namespace atn {
|
13
|
+
|
14
|
+
/// Represents an executor for a sequence of lexer actions which traversed during
|
15
|
+
/// the matching operation of a lexer rule (token).
|
16
|
+
///
|
17
|
+
/// <para>The executor tracks position information for position-dependent lexer actions
|
18
|
+
/// efficiently, ensuring that actions appearing only at the end of the rule do
|
19
|
+
/// not cause bloating of the <seealso cref="DFA"/> created for the lexer.</para>
|
20
|
+
class ANTLR4CPP_PUBLIC LexerActionExecutor : public std::enable_shared_from_this<LexerActionExecutor> {
|
21
|
+
public:
|
22
|
+
/// <summary>
|
23
|
+
/// Constructs an executor for a sequence of <seealso cref="LexerAction"/> actions. </summary>
|
24
|
+
/// <param name="lexerActions"> The lexer actions to execute. </param>
|
25
|
+
LexerActionExecutor(const std::vector<Ref<LexerAction>> &lexerActions);
|
26
|
+
virtual ~LexerActionExecutor();
|
27
|
+
|
28
|
+
/// <summary>
|
29
|
+
/// Creates a <seealso cref="LexerActionExecutor"/> which executes the actions for
|
30
|
+
/// the input {@code lexerActionExecutor} followed by a specified
|
31
|
+
/// {@code lexerAction}.
|
32
|
+
/// </summary>
|
33
|
+
/// <param name="lexerActionExecutor"> The executor for actions already traversed by
|
34
|
+
/// the lexer while matching a token within a particular
|
35
|
+
/// <seealso cref="LexerATNConfig"/>. If this is {@code null}, the method behaves as
|
36
|
+
/// though it were an empty executor. </param>
|
37
|
+
/// <param name="lexerAction"> The lexer action to execute after the actions
|
38
|
+
/// specified in {@code lexerActionExecutor}.
|
39
|
+
/// </param>
|
40
|
+
/// <returns> A <seealso cref="LexerActionExecutor"/> for executing the combine actions
|
41
|
+
/// of {@code lexerActionExecutor} and {@code lexerAction}. </returns>
|
42
|
+
static Ref<LexerActionExecutor> append(Ref<LexerActionExecutor> const& lexerActionExecutor,
|
43
|
+
Ref<LexerAction> const& lexerAction);
|
44
|
+
|
45
|
+
/// <summary>
|
46
|
+
/// Creates a <seealso cref="LexerActionExecutor"/> which encodes the current offset
|
47
|
+
/// for position-dependent lexer actions.
|
48
|
+
///
|
49
|
+
/// <para>Normally, when the executor encounters lexer actions where
|
50
|
+
/// <seealso cref="LexerAction#isPositionDependent"/> returns {@code true}, it calls
|
51
|
+
/// <seealso cref="IntStream#seek"/> on the input <seealso cref="CharStream"/> to set the input
|
52
|
+
/// position to the <em>end</em> of the current token. This behavior provides
|
53
|
+
/// for efficient DFA representation of lexer actions which appear at the end
|
54
|
+
/// of a lexer rule, even when the lexer rule matches a variable number of
|
55
|
+
/// characters.</para>
|
56
|
+
///
|
57
|
+
/// <para>Prior to traversing a match transition in the ATN, the current offset
|
58
|
+
/// from the token start index is assigned to all position-dependent lexer
|
59
|
+
/// actions which have not already been assigned a fixed offset. By storing
|
60
|
+
/// the offsets relative to the token start index, the DFA representation of
|
61
|
+
/// lexer actions which appear in the middle of tokens remains efficient due
|
62
|
+
/// to sharing among tokens of the same length, regardless of their absolute
|
63
|
+
/// position in the input stream.</para>
|
64
|
+
///
|
65
|
+
/// <para>If the current executor already has offsets assigned to all
|
66
|
+
/// position-dependent lexer actions, the method returns {@code this}.</para>
|
67
|
+
/// </summary>
|
68
|
+
/// <param name="offset"> The current offset to assign to all position-dependent
|
69
|
+
/// lexer actions which do not already have offsets assigned.
|
70
|
+
/// </param>
|
71
|
+
/// <returns> A <seealso cref="LexerActionExecutor"/> which stores input stream offsets
|
72
|
+
/// for all position-dependent lexer actions. </returns>
|
73
|
+
virtual Ref<LexerActionExecutor> fixOffsetBeforeMatch(int offset);
|
74
|
+
|
75
|
+
/// <summary>
|
76
|
+
/// Gets the lexer actions to be executed by this executor. </summary>
|
77
|
+
/// <returns> The lexer actions to be executed by this executor. </returns>
|
78
|
+
virtual std::vector<Ref<LexerAction>> getLexerActions() const;
|
79
|
+
|
80
|
+
/// <summary>
|
81
|
+
/// Execute the actions encapsulated by this executor within the context of a
|
82
|
+
/// particular <seealso cref="Lexer"/>.
|
83
|
+
///
|
84
|
+
/// <para>This method calls <seealso cref="IntStream#seek"/> to set the position of the
|
85
|
+
/// {@code input} <seealso cref="CharStream"/> prior to calling
|
86
|
+
/// <seealso cref="LexerAction#execute"/> on a position-dependent action. Before the
|
87
|
+
/// method returns, the input position will be restored to the same position
|
88
|
+
/// it was in when the method was invoked.</para>
|
89
|
+
/// </summary>
|
90
|
+
/// <param name="lexer"> The lexer instance. </param>
|
91
|
+
/// <param name="input"> The input stream which is the source for the current token.
|
92
|
+
/// When this method is called, the current <seealso cref="IntStream#index"/> for
|
93
|
+
/// {@code input} should be the start of the following token, i.e. 1
|
94
|
+
/// character past the end of the current token. </param>
|
95
|
+
/// <param name="startIndex"> The token start index. This value may be passed to
|
96
|
+
/// <seealso cref="IntStream#seek"/> to set the {@code input} position to the beginning
|
97
|
+
/// of the token. </param>
|
98
|
+
virtual void execute(Lexer *lexer, CharStream *input, size_t startIndex);
|
99
|
+
|
100
|
+
virtual size_t hashCode() const;
|
101
|
+
virtual bool operator == (const LexerActionExecutor &obj) const;
|
102
|
+
virtual bool operator != (const LexerActionExecutor &obj) const;
|
103
|
+
|
104
|
+
private:
|
105
|
+
const std::vector<Ref<LexerAction>> _lexerActions;
|
106
|
+
|
107
|
+
/// Caches the result of <seealso cref="#hashCode"/> since the hash code is an element
|
108
|
+
/// of the performance-critical <seealso cref="LexerATNConfig#hashCode"/> operation.
|
109
|
+
const size_t _hashCode;
|
110
|
+
|
111
|
+
size_t generateHashCode() const;
|
112
|
+
};
|
113
|
+
|
114
|
+
} // namespace atn
|
115
|
+
} // namespace antlr4
|