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,668 @@
1
+ /* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
2
+ * Use of this file is governed by the BSD 3-clause license that
3
+ * can be found in the LICENSE.txt file in the project root.
4
+ */
5
+
6
+ #include "atn/ATNDeserializationOptions.h"
7
+ #include "tree/pattern/ParseTreePatternMatcher.h"
8
+ #include "dfa/DFA.h"
9
+ #include "ParserRuleContext.h"
10
+ #include "tree/TerminalNode.h"
11
+ #include "tree/ErrorNodeImpl.h"
12
+ #include "Lexer.h"
13
+ #include "atn/ParserATNSimulator.h"
14
+ #include "misc/IntervalSet.h"
15
+ #include "atn/RuleStartState.h"
16
+ #include "DefaultErrorStrategy.h"
17
+ #include "atn/ATNDeserializer.h"
18
+ #include "atn/RuleTransition.h"
19
+ #include "atn/ATN.h"
20
+ #include "Exceptions.h"
21
+ #include "ANTLRErrorListener.h"
22
+ #include "tree/pattern/ParseTreePattern.h"
23
+
24
+ #include "atn/ProfilingATNSimulator.h"
25
+ #include "atn/ParseInfo.h"
26
+
27
+ #include "Parser.h"
28
+
29
+ using namespace antlr4;
30
+ using namespace antlr4::atn;
31
+ using namespace antlrcpp;
32
+
33
+ namespace {
34
+
35
+ struct BypassAltsAtnCache final {
36
+ std::shared_mutex mutex;
37
+ /// This field maps from the serialized ATN string to the deserialized <seealso cref="ATN"/> with
38
+ /// bypass alternatives.
39
+ ///
40
+ /// <seealso cref= ATNDeserializationOptions#isGenerateRuleBypassTransitions() </seealso>
41
+ std::map<std::vector<int32_t>, std::unique_ptr<const atn::ATN>, std::less<>> map;
42
+ };
43
+
44
+ BypassAltsAtnCache* getBypassAltsAtnCache() {
45
+ static BypassAltsAtnCache* const instance = new BypassAltsAtnCache();
46
+ return instance;
47
+ }
48
+
49
+ }
50
+
51
+ Parser::TraceListener::TraceListener(Parser *outerInstance_) : outerInstance(outerInstance_) {
52
+ }
53
+
54
+ Parser::TraceListener::~TraceListener() {
55
+ }
56
+
57
+ void Parser::TraceListener::enterEveryRule(ParserRuleContext *ctx) {
58
+ std::cout << "enter " << outerInstance->getRuleNames()[ctx->getRuleIndex()]
59
+ << ", LT(1)=" << outerInstance->_input->LT(1)->getText() << std::endl;
60
+ }
61
+
62
+ void Parser::TraceListener::visitTerminal(tree::TerminalNode *node) {
63
+ std::cout << "consume " << node->getSymbol() << " rule "
64
+ << outerInstance->getRuleNames()[outerInstance->getContext()->getRuleIndex()] << std::endl;
65
+ }
66
+
67
+ void Parser::TraceListener::visitErrorNode(tree::ErrorNode * /*node*/) {
68
+ }
69
+
70
+ void Parser::TraceListener::exitEveryRule(ParserRuleContext *ctx) {
71
+ std::cout << "exit " << outerInstance->getRuleNames()[ctx->getRuleIndex()]
72
+ << ", LT(1)=" << outerInstance->_input->LT(1)->getText() << std::endl;
73
+ }
74
+
75
+ Parser::TrimToSizeListener Parser::TrimToSizeListener::INSTANCE;
76
+
77
+ Parser::TrimToSizeListener::~TrimToSizeListener() {
78
+ }
79
+
80
+ void Parser::TrimToSizeListener::enterEveryRule(ParserRuleContext * /*ctx*/) {
81
+ }
82
+
83
+ void Parser::TrimToSizeListener::visitTerminal(tree::TerminalNode * /*node*/) {
84
+ }
85
+
86
+ void Parser::TrimToSizeListener::visitErrorNode(tree::ErrorNode * /*node*/) {
87
+ }
88
+
89
+ void Parser::TrimToSizeListener::exitEveryRule(ParserRuleContext * ctx) {
90
+ ctx->children.shrink_to_fit();
91
+ }
92
+
93
+ Parser::Parser(TokenStream *input) {
94
+ InitializeInstanceFields();
95
+ setInputStream(input);
96
+ }
97
+
98
+ Parser::~Parser() {
99
+ _tracker.reset();
100
+ delete _tracer;
101
+ }
102
+
103
+ void Parser::reset() {
104
+ if (getInputStream() != nullptr) {
105
+ getInputStream()->seek(0);
106
+ }
107
+ _errHandler->reset(this); // Watch out, this is not shared_ptr.reset().
108
+
109
+ _matchedEOF = false;
110
+ _syntaxErrors = 0;
111
+ setTrace(false);
112
+ _precedenceStack.clear();
113
+ _precedenceStack.push_back(0);
114
+ _ctx = nullptr;
115
+ _tracker.reset();
116
+
117
+ atn::ATNSimulator *interpreter = getInterpreter<atn::ParserATNSimulator>();
118
+ if (interpreter != nullptr) {
119
+ interpreter->reset();
120
+ }
121
+ }
122
+
123
+ Token* Parser::match(size_t ttype) {
124
+ Token *t = getCurrentToken();
125
+ if (t->getType() == ttype) {
126
+ if (ttype == EOF) {
127
+ _matchedEOF = true;
128
+ }
129
+ _errHandler->reportMatch(this);
130
+ consume();
131
+ } else {
132
+ t = _errHandler->recoverInline(this);
133
+ if (_buildParseTrees && t->getTokenIndex() == INVALID_INDEX) {
134
+ // we must have conjured up a new token during single token insertion
135
+ // if it's not the current symbol
136
+ _ctx->addChild(createErrorNode(t));
137
+ }
138
+ }
139
+ return t;
140
+ }
141
+
142
+ Token* Parser::matchWildcard() {
143
+ Token *t = getCurrentToken();
144
+ if (t->getType() > 0) {
145
+ _errHandler->reportMatch(this);
146
+ consume();
147
+ } else {
148
+ t = _errHandler->recoverInline(this);
149
+ if (_buildParseTrees && t->getTokenIndex() == INVALID_INDEX) {
150
+ // we must have conjured up a new token during single token insertion
151
+ // if it's not the current symbol
152
+ _ctx->addChild(createErrorNode(t));
153
+ }
154
+ }
155
+
156
+ return t;
157
+ }
158
+
159
+ void Parser::setBuildParseTree(bool buildParseTrees) {
160
+ this->_buildParseTrees = buildParseTrees;
161
+ }
162
+
163
+ bool Parser::getBuildParseTree() {
164
+ return _buildParseTrees;
165
+ }
166
+
167
+ void Parser::setTrimParseTree(bool trimParseTrees) {
168
+ if (trimParseTrees) {
169
+ if (getTrimParseTree()) {
170
+ return;
171
+ }
172
+ addParseListener(&TrimToSizeListener::INSTANCE);
173
+ } else {
174
+ removeParseListener(&TrimToSizeListener::INSTANCE);
175
+ }
176
+ }
177
+
178
+ bool Parser::getTrimParseTree() {
179
+ return std::find(getParseListeners().begin(), getParseListeners().end(), &TrimToSizeListener::INSTANCE) != getParseListeners().end();
180
+ }
181
+
182
+ std::vector<tree::ParseTreeListener *> Parser::getParseListeners() {
183
+ return _parseListeners;
184
+ }
185
+
186
+ void Parser::addParseListener(tree::ParseTreeListener *listener) {
187
+ if (!listener) {
188
+ throw NullPointerException("listener");
189
+ }
190
+
191
+ this->_parseListeners.push_back(listener);
192
+ }
193
+
194
+ void Parser::removeParseListener(tree::ParseTreeListener *listener) {
195
+ if (!_parseListeners.empty()) {
196
+ auto it = std::find(_parseListeners.begin(), _parseListeners.end(), listener);
197
+ if (it != _parseListeners.end()) {
198
+ _parseListeners.erase(it);
199
+ }
200
+ }
201
+ }
202
+
203
+ void Parser::removeParseListeners() {
204
+ _parseListeners.clear();
205
+ }
206
+
207
+ void Parser::triggerEnterRuleEvent() {
208
+ for (auto *listener : _parseListeners) {
209
+ listener->enterEveryRule(_ctx);
210
+ _ctx->enterRule(listener);
211
+ }
212
+ }
213
+
214
+ void Parser::triggerExitRuleEvent() {
215
+ // reverse order walk of listeners
216
+ for (auto it = _parseListeners.rbegin(); it != _parseListeners.rend(); ++it) {
217
+ _ctx->exitRule(*it);
218
+ (*it)->exitEveryRule(_ctx);
219
+ }
220
+ }
221
+
222
+ size_t Parser::getNumberOfSyntaxErrors() {
223
+ return _syntaxErrors;
224
+ }
225
+
226
+ TokenFactory<CommonToken>* Parser::getTokenFactory() {
227
+ return _input->getTokenSource()->getTokenFactory();
228
+ }
229
+
230
+ const atn::ATN& Parser::getATNWithBypassAlts() {
231
+ auto serializedAtn = getSerializedATN();
232
+ if (serializedAtn.empty()) {
233
+ throw UnsupportedOperationException("The current parser does not support an ATN with bypass alternatives.");
234
+ }
235
+ // XXX: using the entire serialized ATN as key into the map is a big resource waste.
236
+ // How large can that thing become?
237
+ auto *cache = getBypassAltsAtnCache();
238
+ {
239
+ std::shared_lock<std::shared_mutex> lock(cache->mutex);
240
+ auto existing = cache->map.find(serializedAtn);
241
+ if (existing != cache->map.end()) {
242
+ return *existing->second;
243
+ }
244
+ }
245
+
246
+ std::unique_lock<std::shared_mutex> lock(cache->mutex);
247
+ auto existing = cache->map.find(serializedAtn);
248
+ if (existing != cache->map.end()) {
249
+ return *existing->second;
250
+ }
251
+ atn::ATNDeserializationOptions deserializationOptions;
252
+ deserializationOptions.setGenerateRuleBypassTransitions(true);
253
+ atn::ATNDeserializer deserializer(deserializationOptions);
254
+ auto atn = deserializer.deserialize(serializedAtn);
255
+ return *cache->map.insert(std::make_pair(std::vector<int32_t>(serializedAtn.begin(), serializedAtn.end()), std::move(atn))).first->second;
256
+ }
257
+
258
+ tree::pattern::ParseTreePattern Parser::compileParseTreePattern(const std::string &pattern, int patternRuleIndex) {
259
+ if (getTokenStream() != nullptr) {
260
+ TokenSource *tokenSource = getTokenStream()->getTokenSource();
261
+ if (is<Lexer*>(tokenSource)) {
262
+ Lexer *lexer = dynamic_cast<Lexer *>(tokenSource);
263
+ return compileParseTreePattern(pattern, patternRuleIndex, lexer);
264
+ }
265
+ }
266
+ throw UnsupportedOperationException("Parser can't discover a lexer to use");
267
+ }
268
+
269
+ tree::pattern::ParseTreePattern Parser::compileParseTreePattern(const std::string &pattern, int patternRuleIndex,
270
+ Lexer *lexer) {
271
+ tree::pattern::ParseTreePatternMatcher m(lexer, this);
272
+ return m.compile(pattern, patternRuleIndex);
273
+ }
274
+
275
+ Ref<ANTLRErrorStrategy> Parser::getErrorHandler() {
276
+ return _errHandler;
277
+ }
278
+
279
+ void Parser::setErrorHandler(Ref<ANTLRErrorStrategy> const& handler) {
280
+ _errHandler = handler;
281
+ }
282
+
283
+ IntStream* Parser::getInputStream() {
284
+ return getTokenStream();
285
+ }
286
+
287
+ void Parser::setInputStream(IntStream *input) {
288
+ setTokenStream(static_cast<TokenStream*>(input));
289
+ }
290
+
291
+ TokenStream* Parser::getTokenStream() {
292
+ return _input;
293
+ }
294
+
295
+ void Parser::setTokenStream(TokenStream *input) {
296
+ _input = nullptr; // Just a reference we don't own.
297
+ reset();
298
+ _input = input;
299
+ }
300
+
301
+ Token* Parser::getCurrentToken() {
302
+ return _input->LT(1);
303
+ }
304
+
305
+ void Parser::notifyErrorListeners(const std::string &msg) {
306
+ notifyErrorListeners(getCurrentToken(), msg, nullptr);
307
+ }
308
+
309
+ void Parser::notifyErrorListeners(Token *offendingToken, const std::string &msg, std::exception_ptr e) {
310
+ _syntaxErrors++;
311
+ size_t line = offendingToken->getLine();
312
+ size_t charPositionInLine = offendingToken->getCharPositionInLine();
313
+
314
+ ProxyErrorListener &listener = getErrorListenerDispatch();
315
+ listener.syntaxError(this, offendingToken, line, charPositionInLine, msg, e);
316
+ }
317
+
318
+ Token* Parser::consume() {
319
+ Token *o = getCurrentToken();
320
+ if (o->getType() != EOF) {
321
+ getInputStream()->consume();
322
+ }
323
+
324
+ bool hasListener = _parseListeners.size() > 0 && !_parseListeners.empty();
325
+ if (_buildParseTrees || hasListener) {
326
+ if (_errHandler->inErrorRecoveryMode(this)) {
327
+ tree::ErrorNode *node = createErrorNode(o);
328
+ _ctx->addChild(node);
329
+ if (_parseListeners.size() > 0) {
330
+ for (auto *listener : _parseListeners) {
331
+ listener->visitErrorNode(node);
332
+ }
333
+ }
334
+ } else {
335
+ tree::TerminalNode *node = _ctx->addChild(createTerminalNode(o));
336
+ if (_parseListeners.size() > 0) {
337
+ for (auto *listener : _parseListeners) {
338
+ listener->visitTerminal(node);
339
+ }
340
+ }
341
+ }
342
+ }
343
+ return o;
344
+ }
345
+
346
+ void Parser::addContextToParseTree() {
347
+ // Add current context to parent if we have a parent.
348
+ if (_ctx->parent == nullptr)
349
+ return;
350
+
351
+ downCast<ParserRuleContext*>(_ctx->parent)->addChild(_ctx);
352
+ }
353
+
354
+ void Parser::enterRule(ParserRuleContext *localctx, size_t state, size_t /*ruleIndex*/) {
355
+ setState(state);
356
+ _ctx = localctx;
357
+ _ctx->start = _input->LT(1);
358
+ if (_buildParseTrees) {
359
+ addContextToParseTree();
360
+ }
361
+ if (_parseListeners.size() > 0) {
362
+ triggerEnterRuleEvent();
363
+ }
364
+ }
365
+
366
+ void Parser::exitRule() {
367
+ if (_matchedEOF) {
368
+ // if we have matched EOF, it cannot consume past EOF so we use LT(1) here
369
+ _ctx->stop = _input->LT(1); // LT(1) will be end of file
370
+ } else {
371
+ _ctx->stop = _input->LT(-1); // stop node is what we just matched
372
+ }
373
+
374
+ // trigger event on ctx, before it reverts to parent
375
+ if (_parseListeners.size() > 0) {
376
+ triggerExitRuleEvent();
377
+ }
378
+ setState(_ctx->invokingState);
379
+ _ctx = downCast<ParserRuleContext*>(_ctx->parent);
380
+ }
381
+
382
+ void Parser::enterOuterAlt(ParserRuleContext *localctx, size_t altNum) {
383
+ localctx->setAltNumber(altNum);
384
+
385
+ // if we have new localctx, make sure we replace existing ctx
386
+ // that is previous child of parse tree
387
+ if (_buildParseTrees && _ctx != localctx) {
388
+ if (_ctx->parent != nullptr) {
389
+ ParserRuleContext *parent = downCast<ParserRuleContext*>(_ctx->parent);
390
+ parent->removeLastChild();
391
+ parent->addChild(localctx);
392
+ }
393
+ }
394
+ _ctx = localctx;
395
+ }
396
+
397
+ int Parser::getPrecedence() const {
398
+ if (_precedenceStack.empty()) {
399
+ return -1;
400
+ }
401
+
402
+ return _precedenceStack.back();
403
+ }
404
+
405
+ void Parser::enterRecursionRule(ParserRuleContext *localctx, size_t ruleIndex) {
406
+ enterRecursionRule(localctx, getATN().ruleToStartState[ruleIndex]->stateNumber, ruleIndex, 0);
407
+ }
408
+
409
+ void Parser::enterRecursionRule(ParserRuleContext *localctx, size_t state, size_t /*ruleIndex*/, int precedence) {
410
+ setState(state);
411
+ _precedenceStack.push_back(precedence);
412
+ _ctx = localctx;
413
+ _ctx->start = _input->LT(1);
414
+ if (!_parseListeners.empty()) {
415
+ triggerEnterRuleEvent(); // simulates rule entry for left-recursive rules
416
+ }
417
+ }
418
+
419
+ void Parser::pushNewRecursionContext(ParserRuleContext *localctx, size_t state, size_t /*ruleIndex*/) {
420
+ ParserRuleContext *previous = _ctx;
421
+ previous->parent = localctx;
422
+ previous->invokingState = state;
423
+ previous->stop = _input->LT(-1);
424
+
425
+ _ctx = localctx;
426
+ _ctx->start = previous->start;
427
+ if (_buildParseTrees) {
428
+ _ctx->addChild(previous);
429
+ }
430
+
431
+ if (_parseListeners.size() > 0) {
432
+ triggerEnterRuleEvent(); // simulates rule entry for left-recursive rules
433
+ }
434
+ }
435
+
436
+ void Parser::unrollRecursionContexts(ParserRuleContext *parentctx) {
437
+ _precedenceStack.pop_back();
438
+ _ctx->stop = _input->LT(-1);
439
+ ParserRuleContext *retctx = _ctx; // save current ctx (return value)
440
+
441
+ // unroll so ctx is as it was before call to recursive method
442
+ if (_parseListeners.size() > 0) {
443
+ while (_ctx != parentctx) {
444
+ triggerExitRuleEvent();
445
+ _ctx = downCast<ParserRuleContext*>(_ctx->parent);
446
+ }
447
+ } else {
448
+ _ctx = parentctx;
449
+ }
450
+
451
+ // hook into tree
452
+ retctx->parent = parentctx;
453
+
454
+ if (_buildParseTrees && parentctx != nullptr) {
455
+ // add return ctx into invoking rule's tree
456
+ parentctx->addChild(retctx);
457
+ }
458
+ }
459
+
460
+ ParserRuleContext* Parser::getInvokingContext(size_t ruleIndex) {
461
+ ParserRuleContext *p = _ctx;
462
+ while (p) {
463
+ if (p->getRuleIndex() == ruleIndex) {
464
+ return p;
465
+ }
466
+ if (p->parent == nullptr)
467
+ break;
468
+ p = downCast<ParserRuleContext*>(p->parent);
469
+ }
470
+ return nullptr;
471
+ }
472
+
473
+ ParserRuleContext* Parser::getContext() {
474
+ return _ctx;
475
+ }
476
+
477
+ void Parser::setContext(ParserRuleContext *ctx) {
478
+ _ctx = ctx;
479
+ }
480
+
481
+ bool Parser::precpred(RuleContext * /*localctx*/, int precedence) {
482
+ return precedence >= _precedenceStack.back();
483
+ }
484
+
485
+ bool Parser::inContext(const std::string &/*context*/) {
486
+ // TODO: useful in parser?
487
+ return false;
488
+ }
489
+
490
+ bool Parser::isExpectedToken(size_t symbol) {
491
+ const atn::ATN &atn = getInterpreter<atn::ParserATNSimulator>()->atn;
492
+ ParserRuleContext *ctx = _ctx;
493
+ atn::ATNState *s = atn.states[getState()];
494
+ misc::IntervalSet following = atn.nextTokens(s);
495
+
496
+ if (following.contains(symbol)) {
497
+ return true;
498
+ }
499
+
500
+ if (!following.contains(Token::EPSILON)) {
501
+ return false;
502
+ }
503
+
504
+ while (ctx && ctx->invokingState != ATNState::INVALID_STATE_NUMBER && following.contains(Token::EPSILON)) {
505
+ atn::ATNState *invokingState = atn.states[ctx->invokingState];
506
+ const atn::RuleTransition *rt = static_cast<const atn::RuleTransition*>(invokingState->transitions[0].get());
507
+ following = atn.nextTokens(rt->followState);
508
+ if (following.contains(symbol)) {
509
+ return true;
510
+ }
511
+
512
+ ctx = downCast<ParserRuleContext*>(ctx->parent);
513
+ }
514
+
515
+ if (following.contains(Token::EPSILON) && symbol == EOF) {
516
+ return true;
517
+ }
518
+
519
+ return false;
520
+ }
521
+
522
+ bool Parser::isMatchedEOF() const {
523
+ return _matchedEOF;
524
+ }
525
+
526
+ misc::IntervalSet Parser::getExpectedTokens() {
527
+ return getATN().getExpectedTokens(getState(), getContext());
528
+ }
529
+
530
+ misc::IntervalSet Parser::getExpectedTokensWithinCurrentRule() {
531
+ const atn::ATN &atn = getInterpreter<atn::ParserATNSimulator>()->atn;
532
+ atn::ATNState *s = atn.states[getState()];
533
+ return atn.nextTokens(s);
534
+ }
535
+
536
+ size_t Parser::getRuleIndex(const std::string &ruleName) {
537
+ const std::map<std::string, size_t> &m = getRuleIndexMap();
538
+ auto iterator = m.find(ruleName);
539
+ if (iterator == m.end()) {
540
+ return INVALID_INDEX;
541
+ }
542
+ return iterator->second;
543
+ }
544
+
545
+ ParserRuleContext* Parser::getRuleContext() {
546
+ return _ctx;
547
+ }
548
+
549
+ std::vector<std::string> Parser::getRuleInvocationStack() {
550
+ return getRuleInvocationStack(_ctx);
551
+ }
552
+
553
+ std::vector<std::string> Parser::getRuleInvocationStack(RuleContext *p) {
554
+ std::vector<std::string> const& ruleNames = getRuleNames();
555
+ std::vector<std::string> stack;
556
+ RuleContext *run = p;
557
+ while (run != nullptr) {
558
+ // compute what follows who invoked us
559
+ size_t ruleIndex = run->getRuleIndex();
560
+ if (ruleIndex == INVALID_INDEX ) {
561
+ stack.push_back("n/a");
562
+ } else {
563
+ stack.push_back(ruleNames[ruleIndex]);
564
+ }
565
+ if (!RuleContext::is(run->parent)) {
566
+ break;
567
+ }
568
+ run = downCast<RuleContext*>(run->parent);
569
+ }
570
+ return stack;
571
+ }
572
+
573
+ std::vector<std::string> Parser::getDFAStrings() {
574
+ atn::ParserATNSimulator *simulator = getInterpreter<atn::ParserATNSimulator>();
575
+ if (!simulator->decisionToDFA.empty()) {
576
+ std::lock_guard<std::mutex> lck(_mutex);
577
+
578
+ std::vector<std::string> s;
579
+ for (size_t d = 0; d < simulator->decisionToDFA.size(); d++) {
580
+ dfa::DFA &dfa = simulator->decisionToDFA[d];
581
+ s.push_back(dfa.toString(getVocabulary()));
582
+ }
583
+ return s;
584
+ }
585
+ return std::vector<std::string>();
586
+ }
587
+
588
+ void Parser::dumpDFA() {
589
+ atn::ParserATNSimulator *simulator = getInterpreter<atn::ParserATNSimulator>();
590
+ if (!simulator->decisionToDFA.empty()) {
591
+ std::lock_guard<std::mutex> lck(_mutex);
592
+ bool seenOne = false;
593
+ for (size_t d = 0; d < simulator->decisionToDFA.size(); d++) {
594
+ dfa::DFA &dfa = simulator->decisionToDFA[d];
595
+ if (!dfa.states.empty()) {
596
+ if (seenOne) {
597
+ std::cout << std::endl;
598
+ }
599
+ std::cout << "Decision " << dfa.decision << ":" << std::endl;
600
+ std::cout << dfa.toString(getVocabulary());
601
+ seenOne = true;
602
+ }
603
+ }
604
+ }
605
+ }
606
+
607
+ std::string Parser::getSourceName() {
608
+ return _input->getSourceName();
609
+ }
610
+
611
+ atn::ParseInfo Parser::getParseInfo() const {
612
+ atn::ParserATNSimulator *simulator = getInterpreter<atn::ParserATNSimulator>();
613
+ return atn::ParseInfo(dynamic_cast<atn::ProfilingATNSimulator*>(simulator));
614
+ }
615
+
616
+ void Parser::setProfile(bool profile) {
617
+ atn::ParserATNSimulator *interp = getInterpreter<atn::ParserATNSimulator>();
618
+ atn::PredictionMode saveMode = interp != nullptr ? interp->getPredictionMode() : atn::PredictionMode::LL;
619
+ if (profile) {
620
+ if (!is<atn::ProfilingATNSimulator *>(interp)) {
621
+ setInterpreter(new atn::ProfilingATNSimulator(this)); /* mem-check: replacing existing interpreter which gets deleted. */
622
+ }
623
+ } else if (is<atn::ProfilingATNSimulator *>(interp)) {
624
+ /* mem-check: replacing existing interpreter which gets deleted. */
625
+ atn::ParserATNSimulator *sim = new atn::ParserATNSimulator(this, getATN(), interp->decisionToDFA, interp->getSharedContextCache());
626
+ setInterpreter(sim);
627
+ }
628
+ getInterpreter<atn::ParserATNSimulator>()->setPredictionMode(saveMode);
629
+ }
630
+
631
+ void Parser::setTrace(bool trace) {
632
+ if (!trace) {
633
+ if (_tracer)
634
+ removeParseListener(_tracer);
635
+ delete _tracer;
636
+ _tracer = nullptr;
637
+ } else {
638
+ if (_tracer)
639
+ removeParseListener(_tracer); // Just in case this is triggered multiple times.
640
+ _tracer = new TraceListener(this);
641
+ addParseListener(_tracer);
642
+ }
643
+ }
644
+
645
+ bool Parser::isTrace() const {
646
+ return _tracer != nullptr;
647
+ }
648
+
649
+ tree::TerminalNode *Parser::createTerminalNode(Token *t) {
650
+ return _tracker.createInstance<tree::TerminalNodeImpl>(t);
651
+ }
652
+
653
+ tree::ErrorNode *Parser::createErrorNode(Token *t) {
654
+ return _tracker.createInstance<tree::ErrorNodeImpl>(t);
655
+ }
656
+
657
+ void Parser::InitializeInstanceFields() {
658
+ _errHandler = std::make_shared<DefaultErrorStrategy>();
659
+ _precedenceStack.clear();
660
+ _precedenceStack.push_back(0);
661
+ _buildParseTrees = true;
662
+ _syntaxErrors = 0;
663
+ _matchedEOF = false;
664
+ _input = nullptr;
665
+ _tracer = nullptr;
666
+ _ctx = nullptr;
667
+ }
668
+