did_parser 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +12 -0
  3. data/Rakefile +28 -0
  4. data/did_parser.gemspec +31 -0
  5. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.cpp +10 -0
  6. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.h +167 -0
  7. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.cpp +10 -0
  8. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.h +121 -0
  9. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.cpp +23 -0
  10. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.h +30 -0
  11. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.cpp +180 -0
  12. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.h +79 -0
  13. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.cpp +61 -0
  14. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.h +59 -0
  15. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.cpp +25 -0
  16. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.h +36 -0
  17. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.cpp +414 -0
  18. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.h +200 -0
  19. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.cpp +11 -0
  20. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.h +37 -0
  21. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.cpp +193 -0
  22. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.h +158 -0
  23. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.cpp +39 -0
  24. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.h +74 -0
  25. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.cpp +78 -0
  26. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.h +79 -0
  27. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.cpp +15 -0
  28. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.h +35 -0
  29. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.cpp +336 -0
  30. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.h +466 -0
  31. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.cpp +84 -0
  32. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.h +80 -0
  33. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.cpp +64 -0
  34. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.h +99 -0
  35. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.cpp +52 -0
  36. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.h +32 -0
  37. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.cpp +18 -0
  38. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.h +24 -0
  39. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.cpp +12 -0
  40. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.h +218 -0
  41. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.cpp +19 -0
  42. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.h +45 -0
  43. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.cpp +294 -0
  44. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.h +196 -0
  45. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.cpp +60 -0
  46. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.h +46 -0
  47. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.cpp +36 -0
  48. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.h +31 -0
  49. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.cpp +92 -0
  50. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.h +88 -0
  51. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.cpp +46 -0
  52. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.h +42 -0
  53. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.cpp +668 -0
  54. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.h +461 -0
  55. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.cpp +294 -0
  56. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.h +173 -0
  57. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.cpp +138 -0
  58. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.h +147 -0
  59. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.cpp +53 -0
  60. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.h +38 -0
  61. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.cpp +65 -0
  62. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.h +98 -0
  63. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.cpp +156 -0
  64. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.h +159 -0
  65. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.cpp +144 -0
  66. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.h +141 -0
  67. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.cpp +27 -0
  68. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.h +32 -0
  69. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.cpp +54 -0
  70. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.h +155 -0
  71. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.cpp +9 -0
  72. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.h +92 -0
  73. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenFactory.h +30 -0
  74. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.cpp +9 -0
  75. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.h +85 -0
  76. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.cpp +11 -0
  77. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.h +137 -0
  78. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +425 -0
  79. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.h +295 -0
  80. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp +208 -0
  81. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.h +117 -0
  82. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.cpp +270 -0
  83. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.h +115 -0
  84. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/Version.h +42 -0
  85. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.cpp +64 -0
  86. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.h +177 -0
  87. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.cpp +9 -0
  88. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.h +23 -0
  89. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-common.h +98 -0
  90. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-runtime.h +169 -0
  91. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.cpp +158 -0
  92. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.h +132 -0
  93. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +106 -0
  94. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.h +157 -0
  95. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp +232 -0
  96. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.h +156 -0
  97. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.cpp +54 -0
  98. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.h +48 -0
  99. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp +629 -0
  100. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.h +32 -0
  101. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.cpp +33 -0
  102. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.h +71 -0
  103. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.cpp +56 -0
  104. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.h +139 -0
  105. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNStateType.cpp +33 -0
  106. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNStateType.h +36 -0
  107. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNType.h +20 -0
  108. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.cpp +29 -0
  109. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.h +35 -0
  110. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.cpp +16 -0
  111. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.h +68 -0
  112. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.cpp +109 -0
  113. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.h +51 -0
  114. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.cpp +27 -0
  115. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.h +33 -0
  116. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.h +24 -0
  117. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.h +23 -0
  118. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.h +26 -0
  119. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.h +30 -0
  120. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.cpp +14 -0
  121. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.h +47 -0
  122. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.cpp +14 -0
  123. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.h +70 -0
  124. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.cpp +25 -0
  125. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.h +227 -0
  126. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.cpp +12 -0
  127. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.h +34 -0
  128. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.cpp +31 -0
  129. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.h +42 -0
  130. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.cpp +15 -0
  131. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.h +43 -0
  132. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.cpp +189 -0
  133. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.h +76 -0
  134. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp +67 -0
  135. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.h +44 -0
  136. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp +615 -0
  137. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.h +199 -0
  138. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.cpp +15 -0
  139. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.h +100 -0
  140. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.cpp +111 -0
  141. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.h +128 -0
  142. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionType.h +57 -0
  143. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.cpp +43 -0
  144. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.h +59 -0
  145. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.cpp +45 -0
  146. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.h +75 -0
  147. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.cpp +57 -0
  148. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.h +76 -0
  149. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.cpp +43 -0
  150. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.h +57 -0
  151. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.cpp +36 -0
  152. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.h +53 -0
  153. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.cpp +36 -0
  154. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.h +53 -0
  155. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.cpp +43 -0
  156. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.h +57 -0
  157. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.cpp +36 -0
  158. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.h +51 -0
  159. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.cpp +43 -0
  160. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.h +51 -0
  161. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.cpp +16 -0
  162. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.h +42 -0
  163. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.h +26 -0
  164. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.cpp +22 -0
  165. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.h +27 -0
  166. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.cpp +16 -0
  167. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.h +25 -0
  168. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.cpp +102 -0
  169. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.h +102 -0
  170. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp +1383 -0
  171. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h +911 -0
  172. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulatorOptions.h +50 -0
  173. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.h +29 -0
  174. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.h +25 -0
  175. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.cpp +23 -0
  176. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.h +35 -0
  177. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp +17 -0
  178. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h +62 -0
  179. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.cpp +24 -0
  180. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.h +50 -0
  181. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.cpp +579 -0
  182. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.h +225 -0
  183. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextCache.cpp +56 -0
  184. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextCache.h +64 -0
  185. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.cpp +167 -0
  186. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.h +101 -0
  187. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCacheOptions.h +71 -0
  188. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextType.h +21 -0
  189. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.cpp +202 -0
  190. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.h +436 -0
  191. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp +179 -0
  192. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h +60 -0
  193. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.cpp +26 -0
  194. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.h +31 -0
  195. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.h +26 -0
  196. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.h +27 -0
  197. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.cpp +33 -0
  198. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.h +42 -0
  199. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.cpp +418 -0
  200. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.h +233 -0
  201. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContextType.h +23 -0
  202. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SerializedATNView.h +101 -0
  203. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.cpp +28 -0
  204. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.h +38 -0
  205. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp +86 -0
  206. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.h +43 -0
  207. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.h +24 -0
  208. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.h +37 -0
  209. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.cpp +19 -0
  210. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.h +25 -0
  211. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.h +24 -0
  212. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.cpp +36 -0
  213. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.h +65 -0
  214. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TransitionType.cpp +27 -0
  215. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TransitionType.h +33 -0
  216. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.cpp +21 -0
  217. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.h +27 -0
  218. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.cpp +115 -0
  219. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.h +96 -0
  220. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.cpp +60 -0
  221. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.h +32 -0
  222. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.cpp +59 -0
  223. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.h +153 -0
  224. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.cpp +17 -0
  225. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.h +22 -0
  226. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.cpp +124 -0
  227. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.h +33 -0
  228. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.cpp +61 -0
  229. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.h +84 -0
  230. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.cpp +508 -0
  231. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.h +190 -0
  232. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.cpp +120 -0
  233. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.h +102 -0
  234. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.cpp +4 -0
  235. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.h +21 -0
  236. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.cpp +8 -0
  237. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.h +16 -0
  238. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.cpp +43 -0
  239. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.h +149 -0
  240. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/BitSet.h +76 -0
  241. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.cpp +207 -0
  242. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.h +65 -0
  243. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Casts.h +34 -0
  244. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Declarations.h +161 -0
  245. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.cpp +38 -0
  246. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.h +16 -0
  247. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Unicode.h +28 -0
  248. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Utf8.cpp +242 -0
  249. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Utf8.h +54 -0
  250. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/AbstractParseTreeVisitor.h +129 -0
  251. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.h +24 -0
  252. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.cpp +54 -0
  253. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.h +43 -0
  254. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.cpp +66 -0
  255. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.h +53 -0
  256. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.cpp +12 -0
  257. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.h +111 -0
  258. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.cpp +9 -0
  259. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.h +39 -0
  260. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeProperty.h +50 -0
  261. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeType.h +22 -0
  262. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.cpp +9 -0
  263. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.h +57 -0
  264. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.cpp +48 -0
  265. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.h +55 -0
  266. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.h +40 -0
  267. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.cpp +54 -0
  268. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.h +32 -0
  269. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.cpp +241 -0
  270. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.h +78 -0
  271. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.cpp +9 -0
  272. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.h +44 -0
  273. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.cpp +69 -0
  274. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.h +132 -0
  275. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.cpp +64 -0
  276. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.h +105 -0
  277. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp +370 -0
  278. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.h +185 -0
  279. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.cpp +77 -0
  280. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.h +117 -0
  281. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.cpp +39 -0
  282. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.h +86 -0
  283. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.cpp +28 -0
  284. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.h +51 -0
  285. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.cpp +36 -0
  286. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.h +80 -0
  287. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.cpp +154 -0
  288. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.h +86 -0
  289. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.cpp +31 -0
  290. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.h +40 -0
  291. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.cpp +182 -0
  292. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.h +47 -0
  293. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.cpp +13 -0
  294. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.h +22 -0
  295. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.cpp +20 -0
  296. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.h +27 -0
  297. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.cpp +30 -0
  298. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.h +26 -0
  299. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.cpp +20 -0
  300. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.h +25 -0
  301. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.cpp +33 -0
  302. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.h +26 -0
  303. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.cpp +23 -0
  304. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.h +23 -0
  305. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.cpp +24 -0
  306. data/ext/did_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.h +23 -0
  307. data/ext/did_parser/antlrgen/DIDLexer.cpp +225 -0
  308. data/ext/did_parser/antlrgen/DIDLexer.h +52 -0
  309. data/ext/did_parser/antlrgen/DIDLexer.interp +93 -0
  310. data/ext/did_parser/antlrgen/DIDLexer.tokens +42 -0
  311. data/ext/did_parser/antlrgen/DIDParser.cpp +2042 -0
  312. data/ext/did_parser/antlrgen/DIDParser.h +537 -0
  313. data/ext/did_parser/antlrgen/DIDParser.interp +74 -0
  314. data/ext/did_parser/antlrgen/DIDParser.tokens +42 -0
  315. data/ext/did_parser/antlrgen/DIDParserBaseListener.cpp +7 -0
  316. data/ext/did_parser/antlrgen/DIDParserBaseListener.h +104 -0
  317. data/ext/did_parser/antlrgen/DIDParserBaseVisitor.cpp +7 -0
  318. data/ext/did_parser/antlrgen/DIDParserBaseVisitor.h +124 -0
  319. data/ext/did_parser/antlrgen/DIDParserListener.cpp +7 -0
  320. data/ext/did_parser/antlrgen/DIDParserListener.h +97 -0
  321. data/ext/did_parser/antlrgen/DIDParserVisitor.cpp +7 -0
  322. data/ext/did_parser/antlrgen/DIDParserVisitor.h +76 -0
  323. data/ext/did_parser/did_parser.cpp +2996 -0
  324. data/ext/did_parser/extconf.rb +38 -0
  325. data/lib/did_parser/version.rb +3 -0
  326. data/lib/did_parser.rb +2 -0
  327. metadata +382 -0
@@ -0,0 +1,199 @@
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 <atomic>
9
+
10
+ #include "atn/ATNSimulator.h"
11
+ #include "atn/LexerATNConfig.h"
12
+ #include "atn/ATNConfigSet.h"
13
+
14
+ namespace antlr4 {
15
+ namespace atn {
16
+
17
+ /// "dup" of ParserInterpreter
18
+ class ANTLR4CPP_PUBLIC LexerATNSimulator : public ATNSimulator {
19
+ protected:
20
+ struct ANTLR4CPP_PUBLIC SimState final {
21
+ size_t index = INVALID_INDEX;
22
+ size_t line = 0;
23
+ size_t charPos = INVALID_INDEX;
24
+ dfa::DFAState *dfaState = nullptr;
25
+
26
+ void reset();
27
+ };
28
+
29
+ public:
30
+ static constexpr size_t MIN_DFA_EDGE = 0;
31
+ static constexpr size_t MAX_DFA_EDGE = 127; // forces unicode to stay in ATN
32
+
33
+ protected:
34
+ /// <summary>
35
+ /// When we hit an accept state in either the DFA or the ATN, we
36
+ /// have to notify the character stream to start buffering characters
37
+ /// via <seealso cref="IntStream#mark"/> and record the current state. The current sim state
38
+ /// includes the current index into the input, the current line,
39
+ /// and current character position in that line. Note that the Lexer is
40
+ /// tracking the starting line and characterization of the token. These
41
+ /// variables track the "state" of the simulator when it hits an accept state.
42
+ /// <p/>
43
+ /// We track these variables separately for the DFA and ATN simulation
44
+ /// because the DFA simulation often has to fail over to the ATN
45
+ /// simulation. If the ATN simulation fails, we need the DFA to fall
46
+ /// back to its previously accepted state, if any. If the ATN succeeds,
47
+ /// then the ATN does the accept and the DFA simulator that invoked it
48
+ /// can simply return the predicted token type.
49
+ /// </summary>
50
+ Lexer *const _recog;
51
+
52
+ /// The current token's starting index into the character stream.
53
+ /// Shared across DFA to ATN simulation in case the ATN fails and the
54
+ /// DFA did not have a previous accept state. In this case, we use the
55
+ /// ATN-generated exception object.
56
+ size_t _startIndex;
57
+
58
+ /// line number 1..n within the input.
59
+ size_t _line;
60
+
61
+ /// The index of the character relative to the beginning of the line 0..n-1.
62
+ size_t _charPositionInLine;
63
+
64
+ public:
65
+ std::vector<dfa::DFA> &_decisionToDFA;
66
+
67
+ protected:
68
+ size_t _mode;
69
+
70
+ /// Used during DFA/ATN exec to record the most recent accept configuration info.
71
+ SimState _prevAccept;
72
+
73
+ public:
74
+ LexerATNSimulator(const ATN &atn, std::vector<dfa::DFA> &decisionToDFA, PredictionContextCache &sharedContextCache);
75
+ LexerATNSimulator(Lexer *recog, const ATN &atn, std::vector<dfa::DFA> &decisionToDFA, PredictionContextCache &sharedContextCache);
76
+ virtual ~LexerATNSimulator() = default;
77
+
78
+ virtual void copyState(LexerATNSimulator *simulator);
79
+ virtual size_t match(CharStream *input, size_t mode);
80
+ virtual void reset() override;
81
+
82
+ virtual void clearDFA() override;
83
+
84
+ protected:
85
+ virtual size_t matchATN(CharStream *input);
86
+ virtual size_t execATN(CharStream *input, dfa::DFAState *ds0);
87
+
88
+ /// <summary>
89
+ /// Get an existing target state for an edge in the DFA. If the target state
90
+ /// for the edge has not yet been computed or is otherwise not available,
91
+ /// this method returns {@code null}.
92
+ /// </summary>
93
+ /// <param name="s"> The current DFA state </param>
94
+ /// <param name="t"> The next input symbol </param>
95
+ /// <returns> The existing target DFA state for the given input symbol
96
+ /// {@code t}, or {@code null} if the target state for this edge is not
97
+ /// already cached </returns>
98
+ virtual dfa::DFAState *getExistingTargetState(dfa::DFAState *s, size_t t);
99
+
100
+ /// <summary>
101
+ /// Compute a target state for an edge in the DFA, and attempt to add the
102
+ /// computed state and corresponding edge to the DFA.
103
+ /// </summary>
104
+ /// <param name="input"> The input stream </param>
105
+ /// <param name="s"> The current DFA state </param>
106
+ /// <param name="t"> The next input symbol
107
+ /// </param>
108
+ /// <returns> The computed target DFA state for the given input symbol
109
+ /// {@code t}. If {@code t} does not lead to a valid DFA state, this method
110
+ /// returns <seealso cref="#ERROR"/>. </returns>
111
+ virtual dfa::DFAState *computeTargetState(CharStream *input, dfa::DFAState *s, size_t t);
112
+
113
+ virtual size_t failOrAccept(CharStream *input, ATNConfigSet *reach, size_t t);
114
+
115
+ /// <summary>
116
+ /// Given a starting configuration set, figure out all ATN configurations
117
+ /// we can reach upon input {@code t}. Parameter {@code reach} is a return
118
+ /// parameter.
119
+ /// </summary>
120
+ void getReachableConfigSet(CharStream *input, ATNConfigSet *closure_, // closure_ as we have a closure() already
121
+ ATNConfigSet *reach, size_t t);
122
+
123
+ virtual void accept(CharStream *input, const Ref<const LexerActionExecutor> &lexerActionExecutor, size_t startIndex, size_t index,
124
+ size_t line, size_t charPos);
125
+
126
+ virtual ATNState *getReachableTarget(const Transition *trans, size_t t);
127
+
128
+ virtual std::unique_ptr<ATNConfigSet> computeStartState(CharStream *input, ATNState *p);
129
+
130
+ /// <summary>
131
+ /// Since the alternatives within any lexer decision are ordered by
132
+ /// preference, this method stops pursuing the closure as soon as an accept
133
+ /// state is reached. After the first accept state is reached by depth-first
134
+ /// search from {@code config}, all other (potentially reachable) states for
135
+ /// this rule would have a lower priority.
136
+ /// </summary>
137
+ /// <returns> {@code true} if an accept state is reached, otherwise
138
+ /// {@code false}. </returns>
139
+ virtual bool closure(CharStream *input, const Ref<LexerATNConfig> &config, ATNConfigSet *configs,
140
+ bool currentAltReachedAcceptState, bool speculative, bool treatEofAsEpsilon);
141
+
142
+ // side-effect: can alter configs.hasSemanticContext
143
+ virtual Ref<LexerATNConfig> getEpsilonTarget(CharStream *input, const Ref<LexerATNConfig> &config, const Transition *t,
144
+ ATNConfigSet *configs, bool speculative, bool treatEofAsEpsilon);
145
+
146
+ /// <summary>
147
+ /// Evaluate a predicate specified in the lexer.
148
+ /// <p/>
149
+ /// If {@code speculative} is {@code true}, this method was called before
150
+ /// <seealso cref="#consume"/> for the matched character. This method should call
151
+ /// <seealso cref="#consume"/> before evaluating the predicate to ensure position
152
+ /// sensitive values, including <seealso cref="Lexer#getText"/>, <seealso cref="Lexer#getLine"/>,
153
+ /// and <seealso cref="Lexer#getCharPositionInLine"/>, properly reflect the current
154
+ /// lexer state. This method should restore {@code input} and the simulator
155
+ /// to the original state before returning (i.e. undo the actions made by the
156
+ /// call to <seealso cref="#consume"/>.
157
+ /// </summary>
158
+ /// <param name="input"> The input stream. </param>
159
+ /// <param name="ruleIndex"> The rule containing the predicate. </param>
160
+ /// <param name="predIndex"> The index of the predicate within the rule. </param>
161
+ /// <param name="speculative"> {@code true} if the current index in {@code input} is
162
+ /// one character before the predicate's location.
163
+ /// </param>
164
+ /// <returns> {@code true} if the specified predicate evaluates to
165
+ /// {@code true}. </returns>
166
+ virtual bool evaluatePredicate(CharStream *input, size_t ruleIndex, size_t predIndex, bool speculative);
167
+
168
+ virtual void captureSimState(CharStream *input, dfa::DFAState *dfaState);
169
+ virtual dfa::DFAState* addDFAEdge(dfa::DFAState *from, size_t t, ATNConfigSet *q);
170
+ virtual void addDFAEdge(dfa::DFAState *p, size_t t, dfa::DFAState *q);
171
+
172
+ /// <summary>
173
+ /// Add a new DFA state if there isn't one with this set of
174
+ /// configurations already. This method also detects the first
175
+ /// configuration containing an ATN rule stop state. Later, when
176
+ /// traversing the DFA, we will know which rule to accept.
177
+ /// </summary>
178
+ virtual dfa::DFAState *addDFAState(ATNConfigSet *configs);
179
+
180
+ virtual dfa::DFAState *addDFAState(ATNConfigSet *configs, bool suppressEdge);
181
+
182
+ public:
183
+ dfa::DFA& getDFA(size_t mode);
184
+
185
+ /// Get the text matched so far for the current token.
186
+ virtual std::string getText(CharStream *input);
187
+ virtual size_t getLine() const;
188
+ virtual void setLine(size_t line);
189
+ virtual size_t getCharPositionInLine();
190
+ virtual void setCharPositionInLine(size_t charPositionInLine);
191
+ virtual void consume(CharStream *input);
192
+ virtual std::string getTokenName(size_t t);
193
+
194
+ private:
195
+ void InitializeInstanceFields();
196
+ };
197
+
198
+ } // namespace atn
199
+ } // namespace antlr4
@@ -0,0 +1,15 @@
1
+ #include "LexerAction.h"
2
+
3
+ using namespace antlr4::atn;
4
+
5
+ size_t LexerAction::hashCode() const {
6
+ auto hash = cachedHashCode();
7
+ if (hash == 0) {
8
+ hash = hashCodeImpl();
9
+ if (hash == 0) {
10
+ hash = std::numeric_limits<size_t>::max();
11
+ }
12
+ _hashCode.store(hash, std::memory_order_relaxed);
13
+ }
14
+ return hash;
15
+ }
@@ -0,0 +1,100 @@
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() = default;
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
+ ///
31
+ /// IMPORTANT: Unlike Java, this returns LexerActionType::INDEXED_CUSTOM for instances of
32
+ /// LexerIndexedCustomAction. If you need the wrapped action type, use
33
+ /// LexerIndexedCustomAction::getAction()->getActionType().
34
+ LexerActionType getActionType() const { return _actionType; }
35
+
36
+ /// <summary>
37
+ /// Gets whether the lexer action is position-dependent. Position-dependent
38
+ /// actions may have different semantics depending on the <seealso cref="CharStream"/>
39
+ /// index at the time the action is executed.
40
+ ///
41
+ /// <para>Many lexer commands, including {@code type}, {@code skip}, and
42
+ /// {@code more}, do not check the input index during their execution.
43
+ /// Actions like this are position-independent, and may be stored more
44
+ /// efficiently as part of the <seealso cref="LexerATNConfig#lexerActionExecutor"/>.</para>
45
+ /// </summary>
46
+ /// <returns> {@code true} if the lexer action semantics can be affected by the
47
+ /// position of the input <seealso cref="CharStream"/> at the time it is executed;
48
+ /// otherwise, {@code false}. </returns>
49
+ bool isPositionDependent() const { return _positionDependent; }
50
+
51
+ /// <summary>
52
+ /// Execute the lexer action in the context of the specified <seealso cref="Lexer"/>.
53
+ ///
54
+ /// <para>For position-dependent actions, the input stream must already be
55
+ /// positioned correctly prior to calling this method.</para>
56
+ /// </summary>
57
+ /// <param name="lexer"> The lexer instance. </param>
58
+ virtual void execute(Lexer *lexer) const = 0;
59
+
60
+ size_t hashCode() const;
61
+
62
+ virtual bool equals(const LexerAction &other) const = 0;
63
+
64
+ virtual std::string toString() const = 0;
65
+
66
+ protected:
67
+ LexerAction(LexerActionType actionType, bool positionDependent)
68
+ : _actionType(actionType), _hashCode(0), _positionDependent(positionDependent) {}
69
+
70
+ virtual size_t hashCodeImpl() const = 0;
71
+
72
+ size_t cachedHashCode() const { return _hashCode.load(std::memory_order_relaxed); }
73
+
74
+ private:
75
+ const LexerActionType _actionType;
76
+ mutable std::atomic<size_t> _hashCode;
77
+ const bool _positionDependent;
78
+ };
79
+
80
+ inline bool operator==(const LexerAction &lhs, const LexerAction &rhs) {
81
+ return lhs.equals(rhs);
82
+ }
83
+
84
+ inline bool operator!=(const LexerAction &lhs, const LexerAction &rhs) {
85
+ return !operator==(lhs, rhs);
86
+ }
87
+
88
+ } // namespace atn
89
+ } // namespace antlr4
90
+
91
+ namespace std {
92
+
93
+ template <>
94
+ struct hash<::antlr4::atn::LexerAction> {
95
+ size_t operator()(const ::antlr4::atn::LexerAction &lexerAction) const {
96
+ return lexerAction.hashCode();
97
+ }
98
+ };
99
+
100
+ } // namespace std
@@ -0,0 +1,111 @@
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
+ #include "support/Casts.h"
11
+
12
+ #include "atn/LexerActionExecutor.h"
13
+
14
+ using namespace antlr4;
15
+ using namespace antlr4::atn;
16
+ using namespace antlr4::misc;
17
+ using namespace antlrcpp;
18
+
19
+ namespace {
20
+
21
+ bool cachedHashCodeEqual(size_t lhs, size_t rhs) {
22
+ return lhs == rhs || lhs == 0 || rhs == 0;
23
+ }
24
+
25
+ bool lexerActionEqual(const Ref<const LexerAction> &lhs, const Ref<const LexerAction> &rhs) {
26
+ return *lhs == *rhs;
27
+ }
28
+
29
+ }
30
+
31
+ LexerActionExecutor::LexerActionExecutor(std::vector<Ref<const LexerAction>> lexerActions)
32
+ : _lexerActions(std::move(lexerActions)), _hashCode(0) {}
33
+
34
+ Ref<const LexerActionExecutor> LexerActionExecutor::append(const Ref<const LexerActionExecutor> &lexerActionExecutor,
35
+ Ref<const LexerAction> lexerAction) {
36
+ if (lexerActionExecutor == nullptr) {
37
+ return std::make_shared<LexerActionExecutor>(std::vector<Ref<const LexerAction>>{ std::move(lexerAction) });
38
+ }
39
+ std::vector<Ref<const LexerAction>> lexerActions;
40
+ lexerActions.reserve(lexerActionExecutor->_lexerActions.size() + 1);
41
+ lexerActions.insert(lexerActions.begin(), lexerActionExecutor->_lexerActions.begin(), lexerActionExecutor->_lexerActions.end());
42
+ lexerActions.push_back(std::move(lexerAction));
43
+ return std::make_shared<LexerActionExecutor>(std::move(lexerActions));
44
+ }
45
+
46
+ Ref<const LexerActionExecutor> LexerActionExecutor::fixOffsetBeforeMatch(int offset) const {
47
+ std::vector<Ref<const LexerAction>> updatedLexerActions;
48
+ for (size_t i = 0; i < _lexerActions.size(); i++) {
49
+ if (_lexerActions[i]->isPositionDependent() && !LexerIndexedCustomAction::is(*_lexerActions[i])) {
50
+ if (updatedLexerActions.empty()) {
51
+ updatedLexerActions = _lexerActions; // Make a copy.
52
+ }
53
+ updatedLexerActions[i] = std::make_shared<LexerIndexedCustomAction>(offset, _lexerActions[i]);
54
+ }
55
+ }
56
+ if (updatedLexerActions.empty()) {
57
+ return shared_from_this();
58
+ }
59
+ return std::make_shared<LexerActionExecutor>(std::move(updatedLexerActions));
60
+ }
61
+
62
+ const std::vector<Ref<const LexerAction>>& LexerActionExecutor::getLexerActions() const {
63
+ return _lexerActions;
64
+ }
65
+
66
+ void LexerActionExecutor::execute(Lexer *lexer, CharStream *input, size_t startIndex) const {
67
+ bool requiresSeek = false;
68
+ size_t stopIndex = input->index();
69
+
70
+ auto onExit = finally([requiresSeek, input, stopIndex]() {
71
+ if (requiresSeek) {
72
+ input->seek(stopIndex);
73
+ }
74
+ });
75
+ for (const auto &lexerAction : _lexerActions) {
76
+ if (LexerIndexedCustomAction::is(*lexerAction)) {
77
+ int offset = downCast<const LexerIndexedCustomAction&>(*lexerAction).getOffset();
78
+ input->seek(startIndex + offset);
79
+ requiresSeek = (startIndex + offset) != stopIndex;
80
+ } else if (lexerAction->isPositionDependent()) {
81
+ input->seek(stopIndex);
82
+ requiresSeek = false;
83
+ }
84
+ lexerAction->execute(lexer);
85
+ }
86
+ }
87
+
88
+ size_t LexerActionExecutor::hashCode() const {
89
+ auto hash = _hashCode.load(std::memory_order_relaxed);
90
+ if (hash == 0) {
91
+ hash = MurmurHash::initialize();
92
+ for (const auto &lexerAction : _lexerActions) {
93
+ hash = MurmurHash::update(hash, lexerAction);
94
+ }
95
+ hash = MurmurHash::finish(hash, _lexerActions.size());
96
+ if (hash == 0) {
97
+ hash = std::numeric_limits<size_t>::max();
98
+ }
99
+ _hashCode.store(hash, std::memory_order_relaxed);
100
+ }
101
+ return hash;
102
+ }
103
+
104
+ bool LexerActionExecutor::equals(const LexerActionExecutor &other) const {
105
+ if (this == std::addressof(other)) {
106
+ return true;
107
+ }
108
+ return cachedHashCodeEqual(_hashCode.load(std::memory_order_relaxed), other._hashCode.load(std::memory_order_relaxed)) &&
109
+ _lexerActions.size() == other._lexerActions.size() &&
110
+ std::equal(_lexerActions.begin(), _lexerActions.end(), other._lexerActions.begin(), lexerActionEqual);
111
+ }
@@ -0,0 +1,128 @@
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 final : 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
+ explicit LexerActionExecutor(std::vector<Ref<const LexerAction>> lexerActions);
26
+
27
+ /// <summary>
28
+ /// Creates a <seealso cref="LexerActionExecutor"/> which executes the actions for
29
+ /// the input {@code lexerActionExecutor} followed by a specified
30
+ /// {@code lexerAction}.
31
+ /// </summary>
32
+ /// <param name="lexerActionExecutor"> The executor for actions already traversed by
33
+ /// the lexer while matching a token within a particular
34
+ /// <seealso cref="LexerATNConfig"/>. If this is {@code null}, the method behaves as
35
+ /// though it were an empty executor. </param>
36
+ /// <param name="lexerAction"> The lexer action to execute after the actions
37
+ /// specified in {@code lexerActionExecutor}.
38
+ /// </param>
39
+ /// <returns> A <seealso cref="LexerActionExecutor"/> for executing the combine actions
40
+ /// of {@code lexerActionExecutor} and {@code lexerAction}. </returns>
41
+ static Ref<const LexerActionExecutor> append(const Ref<const LexerActionExecutor> &lexerActionExecutor,
42
+ Ref<const LexerAction> lexerAction);
43
+
44
+ /// <summary>
45
+ /// Creates a <seealso cref="LexerActionExecutor"/> which encodes the current offset
46
+ /// for position-dependent lexer actions.
47
+ ///
48
+ /// <para>Normally, when the executor encounters lexer actions where
49
+ /// <seealso cref="LexerAction#isPositionDependent"/> returns {@code true}, it calls
50
+ /// <seealso cref="IntStream#seek"/> on the input <seealso cref="CharStream"/> to set the input
51
+ /// position to the <em>end</em> of the current token. This behavior provides
52
+ /// for efficient DFA representation of lexer actions which appear at the end
53
+ /// of a lexer rule, even when the lexer rule matches a variable number of
54
+ /// characters.</para>
55
+ ///
56
+ /// <para>Prior to traversing a match transition in the ATN, the current offset
57
+ /// from the token start index is assigned to all position-dependent lexer
58
+ /// actions which have not already been assigned a fixed offset. By storing
59
+ /// the offsets relative to the token start index, the DFA representation of
60
+ /// lexer actions which appear in the middle of tokens remains efficient due
61
+ /// to sharing among tokens of the same length, regardless of their absolute
62
+ /// position in the input stream.</para>
63
+ ///
64
+ /// <para>If the current executor already has offsets assigned to all
65
+ /// position-dependent lexer actions, the method returns {@code this}.</para>
66
+ /// </summary>
67
+ /// <param name="offset"> The current offset to assign to all position-dependent
68
+ /// lexer actions which do not already have offsets assigned.
69
+ /// </param>
70
+ /// <returns> A <seealso cref="LexerActionExecutor"/> which stores input stream offsets
71
+ /// for all position-dependent lexer actions. </returns>
72
+ Ref<const LexerActionExecutor> fixOffsetBeforeMatch(int offset) const;
73
+
74
+ /// <summary>
75
+ /// Gets the lexer actions to be executed by this executor. </summary>
76
+ /// <returns> The lexer actions to be executed by this executor. </returns>
77
+ const std::vector<Ref<const LexerAction>>& getLexerActions() const;
78
+
79
+ /// <summary>
80
+ /// Execute the actions encapsulated by this executor within the context of a
81
+ /// particular <seealso cref="Lexer"/>.
82
+ ///
83
+ /// <para>This method calls <seealso cref="IntStream#seek"/> to set the position of the
84
+ /// {@code input} <seealso cref="CharStream"/> prior to calling
85
+ /// <seealso cref="LexerAction#execute"/> on a position-dependent action. Before the
86
+ /// method returns, the input position will be restored to the same position
87
+ /// it was in when the method was invoked.</para>
88
+ /// </summary>
89
+ /// <param name="lexer"> The lexer instance. </param>
90
+ /// <param name="input"> The input stream which is the source for the current token.
91
+ /// When this method is called, the current <seealso cref="IntStream#index"/> for
92
+ /// {@code input} should be the start of the following token, i.e. 1
93
+ /// character past the end of the current token. </param>
94
+ /// <param name="startIndex"> The token start index. This value may be passed to
95
+ /// <seealso cref="IntStream#seek"/> to set the {@code input} position to the beginning
96
+ /// of the token. </param>
97
+ void execute(Lexer *lexer, CharStream *input, size_t startIndex) const;
98
+
99
+ size_t hashCode() const;
100
+
101
+ bool equals(const LexerActionExecutor &other) const;
102
+
103
+ private:
104
+ const std::vector<Ref<const LexerAction>> _lexerActions;
105
+ mutable std::atomic<size_t> _hashCode;
106
+ };
107
+
108
+ inline bool operator==(const LexerActionExecutor &lhs, const LexerActionExecutor &rhs) {
109
+ return lhs.equals(rhs);
110
+ }
111
+
112
+ inline bool operator!=(const LexerActionExecutor &lhs, const LexerActionExecutor &rhs) {
113
+ return !operator==(lhs, rhs);
114
+ }
115
+
116
+ } // namespace atn
117
+ } // namespace antlr4
118
+
119
+ namespace std {
120
+
121
+ template <>
122
+ struct hash<::antlr4::atn::LexerActionExecutor> {
123
+ size_t operator()(const ::antlr4::atn::LexerActionExecutor &lexerActionExecutor) const {
124
+ return lexerActionExecutor.hashCode();
125
+ }
126
+ };
127
+
128
+ } // namespace std
@@ -0,0 +1,57 @@
1
+ /* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
2
+ * Use of this file is governed by the BSD 3-clause license that
3
+ * can be found in the LICENSE.txt file in the project root.
4
+ */
5
+
6
+ #pragma once
7
+
8
+ #include "antlr4-common.h"
9
+
10
+ namespace antlr4 {
11
+ namespace atn {
12
+
13
+ /// <summary>
14
+ /// Represents the serialization type of a <seealso cref="LexerAction"/>.
15
+ ///
16
+ /// @author Sam Harwell
17
+ /// @since 4.2
18
+ /// </summary>
19
+ enum class LexerActionType : size_t {
20
+ /// <summary>
21
+ /// The type of a <seealso cref="LexerChannelAction"/> action.
22
+ /// </summary>
23
+ CHANNEL = 0,
24
+ /// <summary>
25
+ /// The type of a <seealso cref="LexerCustomAction"/> action.
26
+ /// </summary>
27
+ CUSTOM,
28
+ /// <summary>
29
+ /// The type of a <seealso cref="LexerModeAction"/> action.
30
+ /// </summary>
31
+ MODE,
32
+ /// <summary>
33
+ /// The type of a <seealso cref="LexerMoreAction"/> action.
34
+ /// </summary>
35
+ MORE,
36
+ /// <summary>
37
+ /// The type of a <seealso cref="LexerPopModeAction"/> action.
38
+ /// </summary>
39
+ POP_MODE,
40
+ /// <summary>
41
+ /// The type of a <seealso cref="LexerPushModeAction"/> action.
42
+ /// </summary>
43
+ PUSH_MODE,
44
+ /// <summary>
45
+ /// The type of a <seealso cref="LexerSkipAction"/> action.
46
+ /// </summary>
47
+ SKIP,
48
+ /// <summary>
49
+ /// The type of a <seealso cref="LexerTypeAction"/> action.
50
+ /// </summary>
51
+ TYPE,
52
+
53
+ INDEXED_CUSTOM,
54
+ };
55
+
56
+ } // namespace atn
57
+ } // namespace antlr4
@@ -0,0 +1,43 @@
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 "Lexer.h"
8
+ #include "support/Casts.h"
9
+
10
+ #include "atn/LexerChannelAction.h"
11
+
12
+ using namespace antlr4::atn;
13
+ using namespace antlr4::misc;
14
+ using namespace antlrcpp;
15
+
16
+ LexerChannelAction::LexerChannelAction(int channel)
17
+ : LexerAction(LexerActionType::CHANNEL, false), _channel(channel) {}
18
+
19
+ void LexerChannelAction::execute(Lexer *lexer) const {
20
+ lexer->setChannel(getChannel());
21
+ }
22
+
23
+ size_t LexerChannelAction::hashCodeImpl() const {
24
+ size_t hash = MurmurHash::initialize();
25
+ hash = MurmurHash::update(hash, static_cast<size_t>(getActionType()));
26
+ hash = MurmurHash::update(hash, getChannel());
27
+ return MurmurHash::finish(hash, 2);
28
+ }
29
+
30
+ bool LexerChannelAction::equals(const LexerAction &other) const {
31
+ if (this == std::addressof(other)) {
32
+ return true;
33
+ }
34
+ if (getActionType() != other.getActionType()) {
35
+ return false;
36
+ }
37
+ const auto &lexerAction = downCast<const LexerChannelAction&>(other);
38
+ return getChannel() == lexerAction.getChannel();
39
+ }
40
+
41
+ std::string LexerChannelAction::toString() const {
42
+ return "channel(" + std::to_string(getChannel()) + ")";
43
+ }