logstash-lib 1.3.2

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 (419) hide show
  1. data/.gitignore +24 -0
  2. data/.tailor +8 -0
  3. data/.travis.yml +12 -0
  4. data/CHANGELOG +1185 -0
  5. data/CONTRIBUTING.md +61 -0
  6. data/CONTRIBUTORS +79 -0
  7. data/LICENSE +14 -0
  8. data/Makefile +460 -0
  9. data/README.md +120 -0
  10. data/STYLE.md +96 -0
  11. data/bin/logstash +37 -0
  12. data/bin/logstash-test +4 -0
  13. data/bin/logstash-web +4 -0
  14. data/bin/logstash.lib.sh +78 -0
  15. data/bot/check_pull_changelog.rb +89 -0
  16. data/docs/configuration.md +260 -0
  17. data/docs/docgen.rb +242 -0
  18. data/docs/extending/example-add-a-new-filter.md +121 -0
  19. data/docs/extending/index.md +91 -0
  20. data/docs/flags.md +43 -0
  21. data/docs/generate_index.rb +28 -0
  22. data/docs/index.html.erb +56 -0
  23. data/docs/learn.md +46 -0
  24. data/docs/life-of-an-event.md +109 -0
  25. data/docs/logging-tool-comparisons.md +60 -0
  26. data/docs/plugin-doc.html.erb +91 -0
  27. data/docs/plugin-milestones.md +41 -0
  28. data/docs/plugin-synopsis.html.erb +24 -0
  29. data/docs/release-engineering.md +46 -0
  30. data/docs/release-test-results.md +14 -0
  31. data/docs/repositories.md +35 -0
  32. data/docs/tutorials/10-minute-walkthrough/apache-elasticsearch.conf +35 -0
  33. data/docs/tutorials/10-minute-walkthrough/apache-parse.conf +33 -0
  34. data/docs/tutorials/10-minute-walkthrough/apache_log.1 +1 -0
  35. data/docs/tutorials/10-minute-walkthrough/apache_log.2.bz2 +0 -0
  36. data/docs/tutorials/10-minute-walkthrough/hello-search.conf +25 -0
  37. data/docs/tutorials/10-minute-walkthrough/hello.conf +16 -0
  38. data/docs/tutorials/10-minute-walkthrough/index.md +124 -0
  39. data/docs/tutorials/10-minute-walkthrough/step-5-output.txt +17 -0
  40. data/docs/tutorials/getting-started-centralized-overview-diagram.png +0 -0
  41. data/docs/tutorials/getting-started-centralized-overview-diagram.xml +1 -0
  42. data/docs/tutorials/getting-started-centralized.md +217 -0
  43. data/docs/tutorials/getting-started-simple.md +200 -0
  44. data/docs/tutorials/just-enough-rabbitmq-for-logstash.md +201 -0
  45. data/docs/tutorials/media/frontend-response-codes.png +0 -0
  46. data/docs/tutorials/metrics-from-logs.md +84 -0
  47. data/docs/tutorials/zeromq.md +118 -0
  48. data/extract_services.rb +29 -0
  49. data/gembag.rb +64 -0
  50. data/lib/logstash-event.rb +2 -0
  51. data/lib/logstash.rb +4 -0
  52. data/lib/logstash/JRUBY-6970-openssl.rb +22 -0
  53. data/lib/logstash/JRUBY-6970.rb +102 -0
  54. data/lib/logstash/agent.rb +305 -0
  55. data/lib/logstash/certs/cacert.pem +3895 -0
  56. data/lib/logstash/codecs/base.rb +49 -0
  57. data/lib/logstash/codecs/compress_spooler.rb +50 -0
  58. data/lib/logstash/codecs/dots.rb +18 -0
  59. data/lib/logstash/codecs/edn.rb +28 -0
  60. data/lib/logstash/codecs/edn_lines.rb +36 -0
  61. data/lib/logstash/codecs/fluent.rb +55 -0
  62. data/lib/logstash/codecs/graphite.rb +114 -0
  63. data/lib/logstash/codecs/json.rb +41 -0
  64. data/lib/logstash/codecs/json_lines.rb +52 -0
  65. data/lib/logstash/codecs/json_spooler.rb +22 -0
  66. data/lib/logstash/codecs/line.rb +58 -0
  67. data/lib/logstash/codecs/msgpack.rb +43 -0
  68. data/lib/logstash/codecs/multiline.rb +189 -0
  69. data/lib/logstash/codecs/netflow.rb +342 -0
  70. data/lib/logstash/codecs/netflow/util.rb +212 -0
  71. data/lib/logstash/codecs/noop.rb +19 -0
  72. data/lib/logstash/codecs/oldlogstashjson.rb +56 -0
  73. data/lib/logstash/codecs/plain.rb +48 -0
  74. data/lib/logstash/codecs/rubydebug.rb +22 -0
  75. data/lib/logstash/codecs/spool.rb +38 -0
  76. data/lib/logstash/config/Makefile +4 -0
  77. data/lib/logstash/config/config_ast.rb +380 -0
  78. data/lib/logstash/config/file.rb +39 -0
  79. data/lib/logstash/config/grammar.rb +3504 -0
  80. data/lib/logstash/config/grammar.treetop +241 -0
  81. data/lib/logstash/config/mixin.rb +464 -0
  82. data/lib/logstash/config/registry.rb +13 -0
  83. data/lib/logstash/config/test.conf +18 -0
  84. data/lib/logstash/errors.rb +10 -0
  85. data/lib/logstash/event.rb +262 -0
  86. data/lib/logstash/filters/advisor.rb +178 -0
  87. data/lib/logstash/filters/alter.rb +173 -0
  88. data/lib/logstash/filters/anonymize.rb +93 -0
  89. data/lib/logstash/filters/base.rb +190 -0
  90. data/lib/logstash/filters/checksum.rb +50 -0
  91. data/lib/logstash/filters/cidr.rb +76 -0
  92. data/lib/logstash/filters/cipher.rb +145 -0
  93. data/lib/logstash/filters/clone.rb +35 -0
  94. data/lib/logstash/filters/collate.rb +114 -0
  95. data/lib/logstash/filters/csv.rb +94 -0
  96. data/lib/logstash/filters/date.rb +244 -0
  97. data/lib/logstash/filters/dns.rb +201 -0
  98. data/lib/logstash/filters/drop.rb +32 -0
  99. data/lib/logstash/filters/elapsed.rb +256 -0
  100. data/lib/logstash/filters/elasticsearch.rb +73 -0
  101. data/lib/logstash/filters/environment.rb +27 -0
  102. data/lib/logstash/filters/extractnumbers.rb +84 -0
  103. data/lib/logstash/filters/gelfify.rb +52 -0
  104. data/lib/logstash/filters/geoip.rb +145 -0
  105. data/lib/logstash/filters/grep.rb +153 -0
  106. data/lib/logstash/filters/grok.rb +425 -0
  107. data/lib/logstash/filters/grokdiscovery.rb +75 -0
  108. data/lib/logstash/filters/i18n.rb +51 -0
  109. data/lib/logstash/filters/json.rb +90 -0
  110. data/lib/logstash/filters/json_encode.rb +52 -0
  111. data/lib/logstash/filters/kv.rb +232 -0
  112. data/lib/logstash/filters/metaevent.rb +68 -0
  113. data/lib/logstash/filters/metrics.rb +237 -0
  114. data/lib/logstash/filters/multiline.rb +241 -0
  115. data/lib/logstash/filters/mutate.rb +399 -0
  116. data/lib/logstash/filters/noop.rb +21 -0
  117. data/lib/logstash/filters/prune.rb +149 -0
  118. data/lib/logstash/filters/punct.rb +32 -0
  119. data/lib/logstash/filters/railsparallelrequest.rb +86 -0
  120. data/lib/logstash/filters/range.rb +142 -0
  121. data/lib/logstash/filters/ruby.rb +42 -0
  122. data/lib/logstash/filters/sleep.rb +111 -0
  123. data/lib/logstash/filters/split.rb +64 -0
  124. data/lib/logstash/filters/sumnumbers.rb +73 -0
  125. data/lib/logstash/filters/syslog_pri.rb +107 -0
  126. data/lib/logstash/filters/translate.rb +121 -0
  127. data/lib/logstash/filters/unique.rb +29 -0
  128. data/lib/logstash/filters/urldecode.rb +57 -0
  129. data/lib/logstash/filters/useragent.rb +112 -0
  130. data/lib/logstash/filters/uuid.rb +58 -0
  131. data/lib/logstash/filters/xml.rb +139 -0
  132. data/lib/logstash/filters/zeromq.rb +123 -0
  133. data/lib/logstash/filterworker.rb +122 -0
  134. data/lib/logstash/inputs/base.rb +125 -0
  135. data/lib/logstash/inputs/collectd.rb +306 -0
  136. data/lib/logstash/inputs/drupal_dblog.rb +323 -0
  137. data/lib/logstash/inputs/drupal_dblog/jdbcconnection.rb +66 -0
  138. data/lib/logstash/inputs/elasticsearch.rb +140 -0
  139. data/lib/logstash/inputs/eventlog.rb +129 -0
  140. data/lib/logstash/inputs/eventlog/racob_fix.rb +44 -0
  141. data/lib/logstash/inputs/exec.rb +69 -0
  142. data/lib/logstash/inputs/file.rb +146 -0
  143. data/lib/logstash/inputs/ganglia.rb +127 -0
  144. data/lib/logstash/inputs/ganglia/gmondpacket.rb +146 -0
  145. data/lib/logstash/inputs/ganglia/xdr.rb +327 -0
  146. data/lib/logstash/inputs/gelf.rb +138 -0
  147. data/lib/logstash/inputs/gemfire.rb +222 -0
  148. data/lib/logstash/inputs/generator.rb +97 -0
  149. data/lib/logstash/inputs/graphite.rb +41 -0
  150. data/lib/logstash/inputs/heroku.rb +51 -0
  151. data/lib/logstash/inputs/imap.rb +136 -0
  152. data/lib/logstash/inputs/irc.rb +84 -0
  153. data/lib/logstash/inputs/log4j.rb +136 -0
  154. data/lib/logstash/inputs/lumberjack.rb +53 -0
  155. data/lib/logstash/inputs/pipe.rb +57 -0
  156. data/lib/logstash/inputs/rabbitmq.rb +126 -0
  157. data/lib/logstash/inputs/rabbitmq/bunny.rb +118 -0
  158. data/lib/logstash/inputs/rabbitmq/hot_bunnies.rb +1 -0
  159. data/lib/logstash/inputs/rabbitmq/march_hare.rb +129 -0
  160. data/lib/logstash/inputs/redis.rb +263 -0
  161. data/lib/logstash/inputs/relp.rb +106 -0
  162. data/lib/logstash/inputs/s3.rb +279 -0
  163. data/lib/logstash/inputs/snmptrap.rb +87 -0
  164. data/lib/logstash/inputs/sqlite.rb +185 -0
  165. data/lib/logstash/inputs/sqs.rb +172 -0
  166. data/lib/logstash/inputs/stdin.rb +46 -0
  167. data/lib/logstash/inputs/stomp.rb +84 -0
  168. data/lib/logstash/inputs/syslog.rb +237 -0
  169. data/lib/logstash/inputs/tcp.rb +231 -0
  170. data/lib/logstash/inputs/threadable.rb +18 -0
  171. data/lib/logstash/inputs/twitter.rb +82 -0
  172. data/lib/logstash/inputs/udp.rb +81 -0
  173. data/lib/logstash/inputs/unix.rb +163 -0
  174. data/lib/logstash/inputs/varnishlog.rb +48 -0
  175. data/lib/logstash/inputs/websocket.rb +50 -0
  176. data/lib/logstash/inputs/wmi.rb +72 -0
  177. data/lib/logstash/inputs/xmpp.rb +81 -0
  178. data/lib/logstash/inputs/zenoss.rb +143 -0
  179. data/lib/logstash/inputs/zeromq.rb +165 -0
  180. data/lib/logstash/kibana.rb +113 -0
  181. data/lib/logstash/loadlibs.rb +9 -0
  182. data/lib/logstash/logging.rb +89 -0
  183. data/lib/logstash/monkeypatches-for-bugs.rb +2 -0
  184. data/lib/logstash/monkeypatches-for-debugging.rb +47 -0
  185. data/lib/logstash/monkeypatches-for-performance.rb +66 -0
  186. data/lib/logstash/multiqueue.rb +53 -0
  187. data/lib/logstash/namespace.rb +16 -0
  188. data/lib/logstash/outputs/base.rb +120 -0
  189. data/lib/logstash/outputs/boundary.rb +116 -0
  190. data/lib/logstash/outputs/circonus.rb +78 -0
  191. data/lib/logstash/outputs/cloudwatch.rb +351 -0
  192. data/lib/logstash/outputs/csv.rb +55 -0
  193. data/lib/logstash/outputs/datadog.rb +93 -0
  194. data/lib/logstash/outputs/datadog_metrics.rb +123 -0
  195. data/lib/logstash/outputs/elasticsearch.rb +332 -0
  196. data/lib/logstash/outputs/elasticsearch/elasticsearch-template.json +44 -0
  197. data/lib/logstash/outputs/elasticsearch_http.rb +256 -0
  198. data/lib/logstash/outputs/elasticsearch_river.rb +214 -0
  199. data/lib/logstash/outputs/email.rb +299 -0
  200. data/lib/logstash/outputs/exec.rb +40 -0
  201. data/lib/logstash/outputs/file.rb +180 -0
  202. data/lib/logstash/outputs/ganglia.rb +75 -0
  203. data/lib/logstash/outputs/gelf.rb +208 -0
  204. data/lib/logstash/outputs/gemfire.rb +103 -0
  205. data/lib/logstash/outputs/google_bigquery.rb +570 -0
  206. data/lib/logstash/outputs/google_cloud_storage.rb +431 -0
  207. data/lib/logstash/outputs/graphite.rb +143 -0
  208. data/lib/logstash/outputs/graphtastic.rb +185 -0
  209. data/lib/logstash/outputs/hipchat.rb +80 -0
  210. data/lib/logstash/outputs/http.rb +142 -0
  211. data/lib/logstash/outputs/irc.rb +80 -0
  212. data/lib/logstash/outputs/jira.rb +109 -0
  213. data/lib/logstash/outputs/juggernaut.rb +105 -0
  214. data/lib/logstash/outputs/librato.rb +146 -0
  215. data/lib/logstash/outputs/loggly.rb +93 -0
  216. data/lib/logstash/outputs/lumberjack.rb +51 -0
  217. data/lib/logstash/outputs/metriccatcher.rb +103 -0
  218. data/lib/logstash/outputs/mongodb.rb +81 -0
  219. data/lib/logstash/outputs/nagios.rb +119 -0
  220. data/lib/logstash/outputs/nagios_nsca.rb +123 -0
  221. data/lib/logstash/outputs/null.rb +18 -0
  222. data/lib/logstash/outputs/opentsdb.rb +101 -0
  223. data/lib/logstash/outputs/pagerduty.rb +79 -0
  224. data/lib/logstash/outputs/pipe.rb +132 -0
  225. data/lib/logstash/outputs/rabbitmq.rb +96 -0
  226. data/lib/logstash/outputs/rabbitmq/bunny.rb +135 -0
  227. data/lib/logstash/outputs/rabbitmq/hot_bunnies.rb +1 -0
  228. data/lib/logstash/outputs/rabbitmq/march_hare.rb +143 -0
  229. data/lib/logstash/outputs/redis.rb +245 -0
  230. data/lib/logstash/outputs/riak.rb +152 -0
  231. data/lib/logstash/outputs/riemann.rb +109 -0
  232. data/lib/logstash/outputs/s3.rb +356 -0
  233. data/lib/logstash/outputs/sns.rb +124 -0
  234. data/lib/logstash/outputs/solr_http.rb +78 -0
  235. data/lib/logstash/outputs/sqs.rb +141 -0
  236. data/lib/logstash/outputs/statsd.rb +116 -0
  237. data/lib/logstash/outputs/stdout.rb +53 -0
  238. data/lib/logstash/outputs/stomp.rb +67 -0
  239. data/lib/logstash/outputs/syslog.rb +145 -0
  240. data/lib/logstash/outputs/tcp.rb +145 -0
  241. data/lib/logstash/outputs/udp.rb +38 -0
  242. data/lib/logstash/outputs/websocket.rb +46 -0
  243. data/lib/logstash/outputs/websocket/app.rb +29 -0
  244. data/lib/logstash/outputs/websocket/pubsub.rb +45 -0
  245. data/lib/logstash/outputs/xmpp.rb +78 -0
  246. data/lib/logstash/outputs/zabbix.rb +108 -0
  247. data/lib/logstash/outputs/zeromq.rb +125 -0
  248. data/lib/logstash/pipeline.rb +286 -0
  249. data/lib/logstash/plugin.rb +150 -0
  250. data/lib/logstash/plugin_mixins/aws_config.rb +93 -0
  251. data/lib/logstash/program.rb +15 -0
  252. data/lib/logstash/runner.rb +238 -0
  253. data/lib/logstash/sized_queue.rb +8 -0
  254. data/lib/logstash/test.rb +183 -0
  255. data/lib/logstash/threadwatchdog.rb +37 -0
  256. data/lib/logstash/time_addon.rb +33 -0
  257. data/lib/logstash/util.rb +106 -0
  258. data/lib/logstash/util/buftok.rb +139 -0
  259. data/lib/logstash/util/charset.rb +39 -0
  260. data/lib/logstash/util/fieldreference.rb +50 -0
  261. data/lib/logstash/util/password.rb +25 -0
  262. data/lib/logstash/util/prctl.rb +11 -0
  263. data/lib/logstash/util/relp.rb +326 -0
  264. data/lib/logstash/util/require-helper.rb +18 -0
  265. data/lib/logstash/util/socket_peer.rb +7 -0
  266. data/lib/logstash/util/zenoss.rb +566 -0
  267. data/lib/logstash/util/zeromq.rb +47 -0
  268. data/lib/logstash/version.rb +6 -0
  269. data/locales/en.yml +170 -0
  270. data/logstash-event.gemspec +29 -0
  271. data/logstash.gemspec +128 -0
  272. data/patterns/firewalls +60 -0
  273. data/patterns/grok-patterns +91 -0
  274. data/patterns/haproxy +37 -0
  275. data/patterns/java +3 -0
  276. data/patterns/linux-syslog +14 -0
  277. data/patterns/mcollective +1 -0
  278. data/patterns/mcollective-patterns +4 -0
  279. data/patterns/nagios +108 -0
  280. data/patterns/postgresql +3 -0
  281. data/patterns/redis +3 -0
  282. data/patterns/ruby +2 -0
  283. data/pkg/build.sh +135 -0
  284. data/pkg/centos/after-install.sh +1 -0
  285. data/pkg/centos/before-install.sh +10 -0
  286. data/pkg/centos/before-remove.sh +11 -0
  287. data/pkg/centos/sysconfig +15 -0
  288. data/pkg/debian/after-install.sh +5 -0
  289. data/pkg/debian/before-install.sh +13 -0
  290. data/pkg/debian/before-remove.sh +13 -0
  291. data/pkg/debian/build.sh +34 -0
  292. data/pkg/debian/debian/README +6 -0
  293. data/pkg/debian/debian/changelog +17 -0
  294. data/pkg/debian/debian/compat +1 -0
  295. data/pkg/debian/debian/control +16 -0
  296. data/pkg/debian/debian/copyright +27 -0
  297. data/pkg/debian/debian/dirs +19 -0
  298. data/pkg/debian/debian/docs +0 -0
  299. data/pkg/debian/debian/logstash.default +39 -0
  300. data/pkg/debian/debian/logstash.init +201 -0
  301. data/pkg/debian/debian/logstash.install +1 -0
  302. data/pkg/debian/debian/logstash.logrotate +9 -0
  303. data/pkg/debian/debian/logstash.postinst +68 -0
  304. data/pkg/debian/debian/logstash.postrm +23 -0
  305. data/pkg/debian/debian/manpage.1.ex +59 -0
  306. data/pkg/debian/debian/preinst.ex +37 -0
  307. data/pkg/debian/debian/prerm.ex +40 -0
  308. data/pkg/debian/debian/release.conf +5 -0
  309. data/pkg/debian/debian/rules +80 -0
  310. data/pkg/debian/debian/watch.ex +22 -0
  311. data/pkg/logrotate.conf +8 -0
  312. data/pkg/logstash-web.default +41 -0
  313. data/pkg/logstash-web.sysv.debian +201 -0
  314. data/pkg/logstash-web.upstart.ubuntu +18 -0
  315. data/pkg/logstash.default +45 -0
  316. data/pkg/logstash.sysv.debian +202 -0
  317. data/pkg/logstash.sysv.redhat +158 -0
  318. data/pkg/logstash.upstart.ubuntu +20 -0
  319. data/pkg/rpm/SOURCES/logstash.conf +26 -0
  320. data/pkg/rpm/SOURCES/logstash.init +80 -0
  321. data/pkg/rpm/SOURCES/logstash.logrotate +8 -0
  322. data/pkg/rpm/SOURCES/logstash.sysconfig +3 -0
  323. data/pkg/rpm/SOURCES/logstash.wrapper +105 -0
  324. data/pkg/rpm/SPECS/logstash.spec +180 -0
  325. data/pkg/rpm/readme.md +4 -0
  326. data/pkg/ubuntu/after-install.sh +7 -0
  327. data/pkg/ubuntu/before-install.sh +12 -0
  328. data/pkg/ubuntu/before-remove.sh +13 -0
  329. data/pull_release_note.rb +25 -0
  330. data/require-analyze.rb +22 -0
  331. data/spec/README.md +14 -0
  332. data/spec/codecs/edn.rb +40 -0
  333. data/spec/codecs/edn_lines.rb +53 -0
  334. data/spec/codecs/graphite.rb +96 -0
  335. data/spec/codecs/json.rb +57 -0
  336. data/spec/codecs/json_lines.rb +51 -0
  337. data/spec/codecs/json_spooler.rb +43 -0
  338. data/spec/codecs/msgpack.rb +39 -0
  339. data/spec/codecs/multiline.rb +60 -0
  340. data/spec/codecs/oldlogstashjson.rb +55 -0
  341. data/spec/codecs/plain.rb +35 -0
  342. data/spec/codecs/spool.rb +35 -0
  343. data/spec/conditionals/test.rb +323 -0
  344. data/spec/config.rb +31 -0
  345. data/spec/event.rb +165 -0
  346. data/spec/examples/fail2ban.rb +28 -0
  347. data/spec/examples/graphite-input.rb +41 -0
  348. data/spec/examples/mysql-slow-query.rb +70 -0
  349. data/spec/examples/parse-apache-logs.rb +66 -0
  350. data/spec/examples/parse-haproxy-logs.rb +115 -0
  351. data/spec/examples/syslog.rb +48 -0
  352. data/spec/filters/alter.rb +96 -0
  353. data/spec/filters/anonymize.rb +189 -0
  354. data/spec/filters/checksum.rb +41 -0
  355. data/spec/filters/clone.rb +67 -0
  356. data/spec/filters/collate.rb +122 -0
  357. data/spec/filters/csv.rb +174 -0
  358. data/spec/filters/date.rb +285 -0
  359. data/spec/filters/date_performance.rb +31 -0
  360. data/spec/filters/dns.rb +159 -0
  361. data/spec/filters/drop.rb +19 -0
  362. data/spec/filters/elapsed.rb +294 -0
  363. data/spec/filters/environment.rb +43 -0
  364. data/spec/filters/geoip.rb +62 -0
  365. data/spec/filters/grep.rb +342 -0
  366. data/spec/filters/grok.rb +473 -0
  367. data/spec/filters/grok/timeout2.rb +56 -0
  368. data/spec/filters/grok/timeouts.rb +39 -0
  369. data/spec/filters/i18n.rb +25 -0
  370. data/spec/filters/json.rb +72 -0
  371. data/spec/filters/json_encode.rb +37 -0
  372. data/spec/filters/kv.rb +403 -0
  373. data/spec/filters/metrics.rb +212 -0
  374. data/spec/filters/multiline.rb +119 -0
  375. data/spec/filters/mutate.rb +180 -0
  376. data/spec/filters/noop.rb +221 -0
  377. data/spec/filters/prune.rb +441 -0
  378. data/spec/filters/punct.rb +18 -0
  379. data/spec/filters/railsparallelrequest.rb +112 -0
  380. data/spec/filters/range.rb +169 -0
  381. data/spec/filters/split.rb +58 -0
  382. data/spec/filters/translate.rb +70 -0
  383. data/spec/filters/unique.rb +25 -0
  384. data/spec/filters/useragent.rb +42 -0
  385. data/spec/filters/xml.rb +157 -0
  386. data/spec/inputs/file.rb +107 -0
  387. data/spec/inputs/gelf.rb +52 -0
  388. data/spec/inputs/generator.rb +30 -0
  389. data/spec/inputs/imap.rb +60 -0
  390. data/spec/inputs/redis.rb +63 -0
  391. data/spec/inputs/relp.rb +70 -0
  392. data/spec/inputs/tcp.rb +101 -0
  393. data/spec/jar.rb +21 -0
  394. data/spec/outputs/csv.rb +266 -0
  395. data/spec/outputs/elasticsearch.rb +161 -0
  396. data/spec/outputs/elasticsearch_http.rb +240 -0
  397. data/spec/outputs/email.rb +173 -0
  398. data/spec/outputs/file.rb +82 -0
  399. data/spec/outputs/graphite.rb +236 -0
  400. data/spec/outputs/redis.rb +127 -0
  401. data/spec/speed.rb +20 -0
  402. data/spec/sqlite-test.rb +81 -0
  403. data/spec/support/LOGSTASH-733.rb +21 -0
  404. data/spec/support/LOGSTASH-820.rb +25 -0
  405. data/spec/support/akamai-grok.rb +26 -0
  406. data/spec/support/date-http.rb +17 -0
  407. data/spec/support/postwait1.rb +26 -0
  408. data/spec/support/pull375.rb +21 -0
  409. data/spec/test_utils.rb +125 -0
  410. data/spec/util/fieldeval_spec.rb +44 -0
  411. data/test/jenkins/config.xml.erb +74 -0
  412. data/test/jenkins/create-jobs.rb +23 -0
  413. data/test/jenkins/generatorjob.config.xml +66 -0
  414. data/tools/Gemfile +14 -0
  415. data/tools/Gemfile.jruby-1.9.lock +322 -0
  416. data/tools/Gemfile.rbx-2.1.lock +516 -0
  417. data/tools/Gemfile.ruby-1.9.1.lock +310 -0
  418. data/tools/Gemfile.ruby-2.0.0.lock +310 -0
  419. metadata +629 -0
@@ -0,0 +1,39 @@
1
+ # encoding: utf-8
2
+ require "logstash/namespace"
3
+ require "logstash/config/grammar"
4
+ require "logstash/config/config_ast"
5
+ require "logstash/config/registry"
6
+ require "logstash/errors"
7
+ require "logger"
8
+
9
+ class LogStash::Config::File
10
+ include Enumerable
11
+ attr_accessor :logger
12
+
13
+ public
14
+ def initialize(text)
15
+ @logger = Cabin::Channel.get(LogStash)
16
+ @text = text
17
+ @config = parse(text)
18
+ end # def initialize
19
+
20
+ def parse(text)
21
+ grammar = LogStashConfigParser.new
22
+ result = grammar.parse(text)
23
+ if result.nil?
24
+ raise LogStash::ConfigurationError, grammar.failure_reason
25
+ end
26
+ return result
27
+ end # def parse
28
+
29
+ def plugin(plugin_type, name, *args)
30
+ klass = LogStash::Plugin.lookup(plugin_type, name)
31
+ return klass.new(*args)
32
+ end
33
+
34
+ def each
35
+ @config.recursive_select(LogStash::Config::AST::Plugin)
36
+ end
37
+ end # class LogStash::Config::Parser
38
+
39
+ #agent.config(cfg)
@@ -0,0 +1,3504 @@
1
+ # encoding: utf-8
2
+ # Autogenerated from a Treetop grammar. Edits may be lost.
3
+
4
+
5
+ require "treetop"
6
+ require "logstash/config/config_ast"
7
+
8
+ module LogStashConfig
9
+ include Treetop::Runtime
10
+
11
+ def root
12
+ @root ||= :config
13
+ end
14
+
15
+ module Config0
16
+ def _
17
+ elements[0]
18
+ end
19
+
20
+ def plugin_section
21
+ elements[1]
22
+ end
23
+ end
24
+
25
+ module Config1
26
+ def _1
27
+ elements[0]
28
+ end
29
+
30
+ def plugin_section
31
+ elements[1]
32
+ end
33
+
34
+ def _2
35
+ elements[2]
36
+ end
37
+
38
+ def _3
39
+ elements[4]
40
+ end
41
+ end
42
+
43
+ def _nt_config
44
+ start_index = index
45
+ if node_cache[:config].has_key?(index)
46
+ cached = node_cache[:config][index]
47
+ if cached
48
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
49
+ @index = cached.interval.end
50
+ end
51
+ return cached
52
+ end
53
+
54
+ i0, s0 = index, []
55
+ r1 = _nt__
56
+ s0 << r1
57
+ if r1
58
+ r2 = _nt_plugin_section
59
+ s0 << r2
60
+ if r2
61
+ r3 = _nt__
62
+ s0 << r3
63
+ if r3
64
+ s4, i4 = [], index
65
+ loop do
66
+ i5, s5 = index, []
67
+ r6 = _nt__
68
+ s5 << r6
69
+ if r6
70
+ r7 = _nt_plugin_section
71
+ s5 << r7
72
+ end
73
+ if s5.last
74
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
75
+ r5.extend(Config0)
76
+ else
77
+ @index = i5
78
+ r5 = nil
79
+ end
80
+ if r5
81
+ s4 << r5
82
+ else
83
+ break
84
+ end
85
+ end
86
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
87
+ s0 << r4
88
+ if r4
89
+ r8 = _nt__
90
+ s0 << r8
91
+ end
92
+ end
93
+ end
94
+ end
95
+ if s0.last
96
+ r0 = instantiate_node(LogStash::Config::AST::Config,input, i0...index, s0)
97
+ r0.extend(Config1)
98
+ else
99
+ @index = i0
100
+ r0 = nil
101
+ end
102
+
103
+ node_cache[:config][start_index] = r0
104
+
105
+ r0
106
+ end
107
+
108
+ module Comment0
109
+ end
110
+
111
+ def _nt_comment
112
+ start_index = index
113
+ if node_cache[:comment].has_key?(index)
114
+ cached = node_cache[:comment][index]
115
+ if cached
116
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
117
+ @index = cached.interval.end
118
+ end
119
+ return cached
120
+ end
121
+
122
+ s0, i0 = [], index
123
+ loop do
124
+ i1, s1 = index, []
125
+ r3 = _nt_whitespace
126
+ if r3
127
+ r2 = r3
128
+ else
129
+ r2 = instantiate_node(SyntaxNode,input, index...index)
130
+ end
131
+ s1 << r2
132
+ if r2
133
+ if has_terminal?("#", false, index)
134
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
135
+ @index += 1
136
+ else
137
+ terminal_parse_failure("#")
138
+ r4 = nil
139
+ end
140
+ s1 << r4
141
+ if r4
142
+ s5, i5 = [], index
143
+ loop do
144
+ if has_terminal?('\G[^\\r\\n]', true, index)
145
+ r6 = true
146
+ @index += 1
147
+ else
148
+ r6 = nil
149
+ end
150
+ if r6
151
+ s5 << r6
152
+ else
153
+ break
154
+ end
155
+ end
156
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
157
+ s1 << r5
158
+ if r5
159
+ if has_terminal?("\r", false, index)
160
+ r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
161
+ @index += 1
162
+ else
163
+ terminal_parse_failure("\r")
164
+ r8 = nil
165
+ end
166
+ if r8
167
+ r7 = r8
168
+ else
169
+ r7 = instantiate_node(SyntaxNode,input, index...index)
170
+ end
171
+ s1 << r7
172
+ if r7
173
+ if has_terminal?("\n", false, index)
174
+ r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
175
+ @index += 1
176
+ else
177
+ terminal_parse_failure("\n")
178
+ r9 = nil
179
+ end
180
+ s1 << r9
181
+ end
182
+ end
183
+ end
184
+ end
185
+ if s1.last
186
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
187
+ r1.extend(Comment0)
188
+ else
189
+ @index = i1
190
+ r1 = nil
191
+ end
192
+ if r1
193
+ s0 << r1
194
+ else
195
+ break
196
+ end
197
+ end
198
+ if s0.empty?
199
+ @index = i0
200
+ r0 = nil
201
+ else
202
+ r0 = instantiate_node(LogStash::Config::AST::Comment,input, i0...index, s0)
203
+ end
204
+
205
+ node_cache[:comment][start_index] = r0
206
+
207
+ r0
208
+ end
209
+
210
+ def _nt__
211
+ start_index = index
212
+ if node_cache[:_].has_key?(index)
213
+ cached = node_cache[:_][index]
214
+ if cached
215
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
216
+ @index = cached.interval.end
217
+ end
218
+ return cached
219
+ end
220
+
221
+ s0, i0 = [], index
222
+ loop do
223
+ i1 = index
224
+ r2 = _nt_comment
225
+ if r2
226
+ r1 = r2
227
+ else
228
+ r3 = _nt_whitespace
229
+ if r3
230
+ r1 = r3
231
+ else
232
+ @index = i1
233
+ r1 = nil
234
+ end
235
+ end
236
+ if r1
237
+ s0 << r1
238
+ else
239
+ break
240
+ end
241
+ end
242
+ r0 = instantiate_node(LogStash::Config::AST::Whitespace,input, i0...index, s0)
243
+
244
+ node_cache[:_][start_index] = r0
245
+
246
+ r0
247
+ end
248
+
249
+ def _nt_whitespace
250
+ start_index = index
251
+ if node_cache[:whitespace].has_key?(index)
252
+ cached = node_cache[:whitespace][index]
253
+ if cached
254
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
255
+ @index = cached.interval.end
256
+ end
257
+ return cached
258
+ end
259
+
260
+ s0, i0 = [], index
261
+ loop do
262
+ if has_terminal?('\G[ \\t\\r\\n]', true, index)
263
+ r1 = true
264
+ @index += 1
265
+ else
266
+ r1 = nil
267
+ end
268
+ if r1
269
+ s0 << r1
270
+ else
271
+ break
272
+ end
273
+ end
274
+ if s0.empty?
275
+ @index = i0
276
+ r0 = nil
277
+ else
278
+ r0 = instantiate_node(LogStash::Config::AST::Whitespace,input, i0...index, s0)
279
+ end
280
+
281
+ node_cache[:whitespace][start_index] = r0
282
+
283
+ r0
284
+ end
285
+
286
+ module PluginSection0
287
+ def branch_or_plugin
288
+ elements[0]
289
+ end
290
+
291
+ def _
292
+ elements[1]
293
+ end
294
+ end
295
+
296
+ module PluginSection1
297
+ def plugin_type
298
+ elements[0]
299
+ end
300
+
301
+ def _1
302
+ elements[1]
303
+ end
304
+
305
+ def _2
306
+ elements[3]
307
+ end
308
+
309
+ end
310
+
311
+ def _nt_plugin_section
312
+ start_index = index
313
+ if node_cache[:plugin_section].has_key?(index)
314
+ cached = node_cache[:plugin_section][index]
315
+ if cached
316
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
317
+ @index = cached.interval.end
318
+ end
319
+ return cached
320
+ end
321
+
322
+ i0, s0 = index, []
323
+ r1 = _nt_plugin_type
324
+ s0 << r1
325
+ if r1
326
+ r2 = _nt__
327
+ s0 << r2
328
+ if r2
329
+ if has_terminal?("{", false, index)
330
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
331
+ @index += 1
332
+ else
333
+ terminal_parse_failure("{")
334
+ r3 = nil
335
+ end
336
+ s0 << r3
337
+ if r3
338
+ r4 = _nt__
339
+ s0 << r4
340
+ if r4
341
+ s5, i5 = [], index
342
+ loop do
343
+ i6, s6 = index, []
344
+ r7 = _nt_branch_or_plugin
345
+ s6 << r7
346
+ if r7
347
+ r8 = _nt__
348
+ s6 << r8
349
+ end
350
+ if s6.last
351
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
352
+ r6.extend(PluginSection0)
353
+ else
354
+ @index = i6
355
+ r6 = nil
356
+ end
357
+ if r6
358
+ s5 << r6
359
+ else
360
+ break
361
+ end
362
+ end
363
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
364
+ s0 << r5
365
+ if r5
366
+ if has_terminal?("}", false, index)
367
+ r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
368
+ @index += 1
369
+ else
370
+ terminal_parse_failure("}")
371
+ r9 = nil
372
+ end
373
+ s0 << r9
374
+ end
375
+ end
376
+ end
377
+ end
378
+ end
379
+ if s0.last
380
+ r0 = instantiate_node(LogStash::Config::AST::PluginSection,input, i0...index, s0)
381
+ r0.extend(PluginSection1)
382
+ else
383
+ @index = i0
384
+ r0 = nil
385
+ end
386
+
387
+ node_cache[:plugin_section][start_index] = r0
388
+
389
+ r0
390
+ end
391
+
392
+ def _nt_branch_or_plugin
393
+ start_index = index
394
+ if node_cache[:branch_or_plugin].has_key?(index)
395
+ cached = node_cache[:branch_or_plugin][index]
396
+ if cached
397
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
398
+ @index = cached.interval.end
399
+ end
400
+ return cached
401
+ end
402
+
403
+ i0 = index
404
+ r1 = _nt_branch
405
+ if r1
406
+ r0 = r1
407
+ else
408
+ r2 = _nt_plugin
409
+ if r2
410
+ r0 = r2
411
+ else
412
+ @index = i0
413
+ r0 = nil
414
+ end
415
+ end
416
+
417
+ node_cache[:branch_or_plugin][start_index] = r0
418
+
419
+ r0
420
+ end
421
+
422
+ def _nt_plugin_type
423
+ start_index = index
424
+ if node_cache[:plugin_type].has_key?(index)
425
+ cached = node_cache[:plugin_type][index]
426
+ if cached
427
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
428
+ @index = cached.interval.end
429
+ end
430
+ return cached
431
+ end
432
+
433
+ i0 = index
434
+ if has_terminal?("input", false, index)
435
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 5))
436
+ @index += 5
437
+ else
438
+ terminal_parse_failure("input")
439
+ r1 = nil
440
+ end
441
+ if r1
442
+ r0 = r1
443
+ else
444
+ if has_terminal?("filter", false, index)
445
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 6))
446
+ @index += 6
447
+ else
448
+ terminal_parse_failure("filter")
449
+ r2 = nil
450
+ end
451
+ if r2
452
+ r0 = r2
453
+ else
454
+ if has_terminal?("output", false, index)
455
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 6))
456
+ @index += 6
457
+ else
458
+ terminal_parse_failure("output")
459
+ r3 = nil
460
+ end
461
+ if r3
462
+ r0 = r3
463
+ else
464
+ @index = i0
465
+ r0 = nil
466
+ end
467
+ end
468
+ end
469
+
470
+ node_cache[:plugin_type][start_index] = r0
471
+
472
+ r0
473
+ end
474
+
475
+ module Plugins0
476
+ def _
477
+ elements[0]
478
+ end
479
+
480
+ def plugin
481
+ elements[1]
482
+ end
483
+ end
484
+
485
+ module Plugins1
486
+ def plugin
487
+ elements[0]
488
+ end
489
+
490
+ end
491
+
492
+ def _nt_plugins
493
+ start_index = index
494
+ if node_cache[:plugins].has_key?(index)
495
+ cached = node_cache[:plugins][index]
496
+ if cached
497
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
498
+ @index = cached.interval.end
499
+ end
500
+ return cached
501
+ end
502
+
503
+ i1, s1 = index, []
504
+ r2 = _nt_plugin
505
+ s1 << r2
506
+ if r2
507
+ s3, i3 = [], index
508
+ loop do
509
+ i4, s4 = index, []
510
+ r5 = _nt__
511
+ s4 << r5
512
+ if r5
513
+ r6 = _nt_plugin
514
+ s4 << r6
515
+ end
516
+ if s4.last
517
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
518
+ r4.extend(Plugins0)
519
+ else
520
+ @index = i4
521
+ r4 = nil
522
+ end
523
+ if r4
524
+ s3 << r4
525
+ else
526
+ break
527
+ end
528
+ end
529
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
530
+ s1 << r3
531
+ end
532
+ if s1.last
533
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
534
+ r1.extend(Plugins1)
535
+ else
536
+ @index = i1
537
+ r1 = nil
538
+ end
539
+ if r1
540
+ r0 = r1
541
+ else
542
+ r0 = instantiate_node(SyntaxNode,input, index...index)
543
+ end
544
+
545
+ node_cache[:plugins][start_index] = r0
546
+
547
+ r0
548
+ end
549
+
550
+ module Plugin0
551
+ def whitespace
552
+ elements[0]
553
+ end
554
+
555
+ def _
556
+ elements[1]
557
+ end
558
+
559
+ def attribute
560
+ elements[2]
561
+ end
562
+ end
563
+
564
+ module Plugin1
565
+ def attribute
566
+ elements[0]
567
+ end
568
+
569
+ end
570
+
571
+ module Plugin2
572
+ def name
573
+ elements[0]
574
+ end
575
+
576
+ def _1
577
+ elements[1]
578
+ end
579
+
580
+ def _2
581
+ elements[3]
582
+ end
583
+
584
+ def attributes
585
+ elements[4]
586
+ end
587
+
588
+ def _3
589
+ elements[5]
590
+ end
591
+
592
+ end
593
+
594
+ def _nt_plugin
595
+ start_index = index
596
+ if node_cache[:plugin].has_key?(index)
597
+ cached = node_cache[:plugin][index]
598
+ if cached
599
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
600
+ @index = cached.interval.end
601
+ end
602
+ return cached
603
+ end
604
+
605
+ i0, s0 = index, []
606
+ r1 = _nt_name
607
+ s0 << r1
608
+ if r1
609
+ r2 = _nt__
610
+ s0 << r2
611
+ if r2
612
+ if has_terminal?("{", false, index)
613
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
614
+ @index += 1
615
+ else
616
+ terminal_parse_failure("{")
617
+ r3 = nil
618
+ end
619
+ s0 << r3
620
+ if r3
621
+ r4 = _nt__
622
+ s0 << r4
623
+ if r4
624
+ i6, s6 = index, []
625
+ r7 = _nt_attribute
626
+ s6 << r7
627
+ if r7
628
+ s8, i8 = [], index
629
+ loop do
630
+ i9, s9 = index, []
631
+ r10 = _nt_whitespace
632
+ s9 << r10
633
+ if r10
634
+ r11 = _nt__
635
+ s9 << r11
636
+ if r11
637
+ r12 = _nt_attribute
638
+ s9 << r12
639
+ end
640
+ end
641
+ if s9.last
642
+ r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
643
+ r9.extend(Plugin0)
644
+ else
645
+ @index = i9
646
+ r9 = nil
647
+ end
648
+ if r9
649
+ s8 << r9
650
+ else
651
+ break
652
+ end
653
+ end
654
+ r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
655
+ s6 << r8
656
+ end
657
+ if s6.last
658
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
659
+ r6.extend(Plugin1)
660
+ else
661
+ @index = i6
662
+ r6 = nil
663
+ end
664
+ if r6
665
+ r5 = r6
666
+ else
667
+ r5 = instantiate_node(SyntaxNode,input, index...index)
668
+ end
669
+ s0 << r5
670
+ if r5
671
+ r13 = _nt__
672
+ s0 << r13
673
+ if r13
674
+ if has_terminal?("}", false, index)
675
+ r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
676
+ @index += 1
677
+ else
678
+ terminal_parse_failure("}")
679
+ r14 = nil
680
+ end
681
+ s0 << r14
682
+ end
683
+ end
684
+ end
685
+ end
686
+ end
687
+ end
688
+ if s0.last
689
+ r0 = instantiate_node(LogStash::Config::AST::Plugin,input, i0...index, s0)
690
+ r0.extend(Plugin2)
691
+ else
692
+ @index = i0
693
+ r0 = nil
694
+ end
695
+
696
+ node_cache[:plugin][start_index] = r0
697
+
698
+ r0
699
+ end
700
+
701
+ def _nt_name
702
+ start_index = index
703
+ if node_cache[:name].has_key?(index)
704
+ cached = node_cache[:name][index]
705
+ if cached
706
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
707
+ @index = cached.interval.end
708
+ end
709
+ return cached
710
+ end
711
+
712
+ i0 = index
713
+ s1, i1 = [], index
714
+ loop do
715
+ if has_terminal?('\G[A-Za-z0-9_-]', true, index)
716
+ r2 = true
717
+ @index += 1
718
+ else
719
+ r2 = nil
720
+ end
721
+ if r2
722
+ s1 << r2
723
+ else
724
+ break
725
+ end
726
+ end
727
+ if s1.empty?
728
+ @index = i1
729
+ r1 = nil
730
+ else
731
+ r1 = instantiate_node(LogStash::Config::AST::Name,input, i1...index, s1)
732
+ end
733
+ if r1
734
+ r0 = r1
735
+ else
736
+ r3 = _nt_string
737
+ if r3
738
+ r0 = r3
739
+ else
740
+ @index = i0
741
+ r0 = nil
742
+ end
743
+ end
744
+
745
+ node_cache[:name][start_index] = r0
746
+
747
+ r0
748
+ end
749
+
750
+ module Attribute0
751
+ def name
752
+ elements[0]
753
+ end
754
+
755
+ def _1
756
+ elements[1]
757
+ end
758
+
759
+ def _2
760
+ elements[3]
761
+ end
762
+
763
+ def value
764
+ elements[4]
765
+ end
766
+ end
767
+
768
+ def _nt_attribute
769
+ start_index = index
770
+ if node_cache[:attribute].has_key?(index)
771
+ cached = node_cache[:attribute][index]
772
+ if cached
773
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
774
+ @index = cached.interval.end
775
+ end
776
+ return cached
777
+ end
778
+
779
+ i0, s0 = index, []
780
+ r1 = _nt_name
781
+ s0 << r1
782
+ if r1
783
+ r2 = _nt__
784
+ s0 << r2
785
+ if r2
786
+ if has_terminal?("=>", false, index)
787
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 2))
788
+ @index += 2
789
+ else
790
+ terminal_parse_failure("=>")
791
+ r3 = nil
792
+ end
793
+ s0 << r3
794
+ if r3
795
+ r4 = _nt__
796
+ s0 << r4
797
+ if r4
798
+ r5 = _nt_value
799
+ s0 << r5
800
+ end
801
+ end
802
+ end
803
+ end
804
+ if s0.last
805
+ r0 = instantiate_node(LogStash::Config::AST::Attribute,input, i0...index, s0)
806
+ r0.extend(Attribute0)
807
+ else
808
+ @index = i0
809
+ r0 = nil
810
+ end
811
+
812
+ node_cache[:attribute][start_index] = r0
813
+
814
+ r0
815
+ end
816
+
817
+ def _nt_value
818
+ start_index = index
819
+ if node_cache[:value].has_key?(index)
820
+ cached = node_cache[:value][index]
821
+ if cached
822
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
823
+ @index = cached.interval.end
824
+ end
825
+ return cached
826
+ end
827
+
828
+ i0 = index
829
+ r1 = _nt_plugin
830
+ if r1
831
+ r0 = r1
832
+ else
833
+ r2 = _nt_bareword
834
+ if r2
835
+ r0 = r2
836
+ else
837
+ r3 = _nt_string
838
+ if r3
839
+ r0 = r3
840
+ else
841
+ r4 = _nt_number
842
+ if r4
843
+ r0 = r4
844
+ else
845
+ r5 = _nt_array
846
+ if r5
847
+ r0 = r5
848
+ else
849
+ r6 = _nt_hash
850
+ if r6
851
+ r0 = r6
852
+ else
853
+ @index = i0
854
+ r0 = nil
855
+ end
856
+ end
857
+ end
858
+ end
859
+ end
860
+ end
861
+
862
+ node_cache[:value][start_index] = r0
863
+
864
+ r0
865
+ end
866
+
867
+ def _nt_array_value
868
+ start_index = index
869
+ if node_cache[:array_value].has_key?(index)
870
+ cached = node_cache[:array_value][index]
871
+ if cached
872
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
873
+ @index = cached.interval.end
874
+ end
875
+ return cached
876
+ end
877
+
878
+ i0 = index
879
+ r1 = _nt_bareword
880
+ if r1
881
+ r0 = r1
882
+ else
883
+ r2 = _nt_string
884
+ if r2
885
+ r0 = r2
886
+ else
887
+ r3 = _nt_number
888
+ if r3
889
+ r0 = r3
890
+ else
891
+ r4 = _nt_array
892
+ if r4
893
+ r0 = r4
894
+ else
895
+ r5 = _nt_hash
896
+ if r5
897
+ r0 = r5
898
+ else
899
+ @index = i0
900
+ r0 = nil
901
+ end
902
+ end
903
+ end
904
+ end
905
+ end
906
+
907
+ node_cache[:array_value][start_index] = r0
908
+
909
+ r0
910
+ end
911
+
912
+ module Bareword0
913
+ end
914
+
915
+ def _nt_bareword
916
+ start_index = index
917
+ if node_cache[:bareword].has_key?(index)
918
+ cached = node_cache[:bareword][index]
919
+ if cached
920
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
921
+ @index = cached.interval.end
922
+ end
923
+ return cached
924
+ end
925
+
926
+ i0, s0 = index, []
927
+ if has_terminal?('\G[A-Za-z_]', true, index)
928
+ r1 = true
929
+ @index += 1
930
+ else
931
+ r1 = nil
932
+ end
933
+ s0 << r1
934
+ if r1
935
+ s2, i2 = [], index
936
+ loop do
937
+ if has_terminal?('\G[A-Za-z0-9_]', true, index)
938
+ r3 = true
939
+ @index += 1
940
+ else
941
+ r3 = nil
942
+ end
943
+ if r3
944
+ s2 << r3
945
+ else
946
+ break
947
+ end
948
+ end
949
+ if s2.empty?
950
+ @index = i2
951
+ r2 = nil
952
+ else
953
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
954
+ end
955
+ s0 << r2
956
+ end
957
+ if s0.last
958
+ r0 = instantiate_node(LogStash::Config::AST::Bareword,input, i0...index, s0)
959
+ r0.extend(Bareword0)
960
+ else
961
+ @index = i0
962
+ r0 = nil
963
+ end
964
+
965
+ node_cache[:bareword][start_index] = r0
966
+
967
+ r0
968
+ end
969
+
970
+ module DoubleQuotedString0
971
+ end
972
+
973
+ module DoubleQuotedString1
974
+ end
975
+
976
+ def _nt_double_quoted_string
977
+ start_index = index
978
+ if node_cache[:double_quoted_string].has_key?(index)
979
+ cached = node_cache[:double_quoted_string][index]
980
+ if cached
981
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
982
+ @index = cached.interval.end
983
+ end
984
+ return cached
985
+ end
986
+
987
+ i0, s0 = index, []
988
+ if has_terminal?('"', false, index)
989
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
990
+ @index += 1
991
+ else
992
+ terminal_parse_failure('"')
993
+ r1 = nil
994
+ end
995
+ s0 << r1
996
+ if r1
997
+ s2, i2 = [], index
998
+ loop do
999
+ i3 = index
1000
+ if has_terminal?('\"', false, index)
1001
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 2))
1002
+ @index += 2
1003
+ else
1004
+ terminal_parse_failure('\"')
1005
+ r4 = nil
1006
+ end
1007
+ if r4
1008
+ r3 = r4
1009
+ else
1010
+ i5, s5 = index, []
1011
+ i6 = index
1012
+ if has_terminal?('"', false, index)
1013
+ r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
1014
+ @index += 1
1015
+ else
1016
+ terminal_parse_failure('"')
1017
+ r7 = nil
1018
+ end
1019
+ if r7
1020
+ r6 = nil
1021
+ else
1022
+ @index = i6
1023
+ r6 = instantiate_node(SyntaxNode,input, index...index)
1024
+ end
1025
+ s5 << r6
1026
+ if r6
1027
+ if index < input_length
1028
+ r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
1029
+ @index += 1
1030
+ else
1031
+ terminal_parse_failure("any character")
1032
+ r8 = nil
1033
+ end
1034
+ s5 << r8
1035
+ end
1036
+ if s5.last
1037
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
1038
+ r5.extend(DoubleQuotedString0)
1039
+ else
1040
+ @index = i5
1041
+ r5 = nil
1042
+ end
1043
+ if r5
1044
+ r3 = r5
1045
+ else
1046
+ @index = i3
1047
+ r3 = nil
1048
+ end
1049
+ end
1050
+ if r3
1051
+ s2 << r3
1052
+ else
1053
+ break
1054
+ end
1055
+ end
1056
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1057
+ s0 << r2
1058
+ if r2
1059
+ if has_terminal?('"', false, index)
1060
+ r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
1061
+ @index += 1
1062
+ else
1063
+ terminal_parse_failure('"')
1064
+ r9 = nil
1065
+ end
1066
+ s0 << r9
1067
+ end
1068
+ end
1069
+ if s0.last
1070
+ r0 = instantiate_node(LogStash::Config::AST::String,input, i0...index, s0)
1071
+ r0.extend(DoubleQuotedString1)
1072
+ else
1073
+ @index = i0
1074
+ r0 = nil
1075
+ end
1076
+
1077
+ node_cache[:double_quoted_string][start_index] = r0
1078
+
1079
+ r0
1080
+ end
1081
+
1082
+ module SingleQuotedString0
1083
+ end
1084
+
1085
+ module SingleQuotedString1
1086
+ end
1087
+
1088
+ def _nt_single_quoted_string
1089
+ start_index = index
1090
+ if node_cache[:single_quoted_string].has_key?(index)
1091
+ cached = node_cache[:single_quoted_string][index]
1092
+ if cached
1093
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1094
+ @index = cached.interval.end
1095
+ end
1096
+ return cached
1097
+ end
1098
+
1099
+ i0, s0 = index, []
1100
+ if has_terminal?("'", false, index)
1101
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
1102
+ @index += 1
1103
+ else
1104
+ terminal_parse_failure("'")
1105
+ r1 = nil
1106
+ end
1107
+ s0 << r1
1108
+ if r1
1109
+ s2, i2 = [], index
1110
+ loop do
1111
+ i3 = index
1112
+ if has_terminal?("\\'", false, index)
1113
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 2))
1114
+ @index += 2
1115
+ else
1116
+ terminal_parse_failure("\\'")
1117
+ r4 = nil
1118
+ end
1119
+ if r4
1120
+ r3 = r4
1121
+ else
1122
+ i5, s5 = index, []
1123
+ i6 = index
1124
+ if has_terminal?("'", false, index)
1125
+ r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
1126
+ @index += 1
1127
+ else
1128
+ terminal_parse_failure("'")
1129
+ r7 = nil
1130
+ end
1131
+ if r7
1132
+ r6 = nil
1133
+ else
1134
+ @index = i6
1135
+ r6 = instantiate_node(SyntaxNode,input, index...index)
1136
+ end
1137
+ s5 << r6
1138
+ if r6
1139
+ if index < input_length
1140
+ r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
1141
+ @index += 1
1142
+ else
1143
+ terminal_parse_failure("any character")
1144
+ r8 = nil
1145
+ end
1146
+ s5 << r8
1147
+ end
1148
+ if s5.last
1149
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
1150
+ r5.extend(SingleQuotedString0)
1151
+ else
1152
+ @index = i5
1153
+ r5 = nil
1154
+ end
1155
+ if r5
1156
+ r3 = r5
1157
+ else
1158
+ @index = i3
1159
+ r3 = nil
1160
+ end
1161
+ end
1162
+ if r3
1163
+ s2 << r3
1164
+ else
1165
+ break
1166
+ end
1167
+ end
1168
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1169
+ s0 << r2
1170
+ if r2
1171
+ if has_terminal?("'", false, index)
1172
+ r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
1173
+ @index += 1
1174
+ else
1175
+ terminal_parse_failure("'")
1176
+ r9 = nil
1177
+ end
1178
+ s0 << r9
1179
+ end
1180
+ end
1181
+ if s0.last
1182
+ r0 = instantiate_node(LogStash::Config::AST::String,input, i0...index, s0)
1183
+ r0.extend(SingleQuotedString1)
1184
+ else
1185
+ @index = i0
1186
+ r0 = nil
1187
+ end
1188
+
1189
+ node_cache[:single_quoted_string][start_index] = r0
1190
+
1191
+ r0
1192
+ end
1193
+
1194
+ def _nt_string
1195
+ start_index = index
1196
+ if node_cache[:string].has_key?(index)
1197
+ cached = node_cache[:string][index]
1198
+ if cached
1199
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1200
+ @index = cached.interval.end
1201
+ end
1202
+ return cached
1203
+ end
1204
+
1205
+ i0 = index
1206
+ r1 = _nt_double_quoted_string
1207
+ if r1
1208
+ r0 = r1
1209
+ else
1210
+ r2 = _nt_single_quoted_string
1211
+ if r2
1212
+ r0 = r2
1213
+ else
1214
+ @index = i0
1215
+ r0 = nil
1216
+ end
1217
+ end
1218
+
1219
+ node_cache[:string][start_index] = r0
1220
+
1221
+ r0
1222
+ end
1223
+
1224
+ module Regexp0
1225
+ end
1226
+
1227
+ module Regexp1
1228
+ end
1229
+
1230
+ def _nt_regexp
1231
+ start_index = index
1232
+ if node_cache[:regexp].has_key?(index)
1233
+ cached = node_cache[:regexp][index]
1234
+ if cached
1235
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1236
+ @index = cached.interval.end
1237
+ end
1238
+ return cached
1239
+ end
1240
+
1241
+ i0, s0 = index, []
1242
+ if has_terminal?('/', false, index)
1243
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
1244
+ @index += 1
1245
+ else
1246
+ terminal_parse_failure('/')
1247
+ r1 = nil
1248
+ end
1249
+ s0 << r1
1250
+ if r1
1251
+ s2, i2 = [], index
1252
+ loop do
1253
+ i3 = index
1254
+ if has_terminal?('\/', false, index)
1255
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 2))
1256
+ @index += 2
1257
+ else
1258
+ terminal_parse_failure('\/')
1259
+ r4 = nil
1260
+ end
1261
+ if r4
1262
+ r3 = r4
1263
+ else
1264
+ i5, s5 = index, []
1265
+ i6 = index
1266
+ if has_terminal?('/', false, index)
1267
+ r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
1268
+ @index += 1
1269
+ else
1270
+ terminal_parse_failure('/')
1271
+ r7 = nil
1272
+ end
1273
+ if r7
1274
+ r6 = nil
1275
+ else
1276
+ @index = i6
1277
+ r6 = instantiate_node(SyntaxNode,input, index...index)
1278
+ end
1279
+ s5 << r6
1280
+ if r6
1281
+ if index < input_length
1282
+ r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
1283
+ @index += 1
1284
+ else
1285
+ terminal_parse_failure("any character")
1286
+ r8 = nil
1287
+ end
1288
+ s5 << r8
1289
+ end
1290
+ if s5.last
1291
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
1292
+ r5.extend(Regexp0)
1293
+ else
1294
+ @index = i5
1295
+ r5 = nil
1296
+ end
1297
+ if r5
1298
+ r3 = r5
1299
+ else
1300
+ @index = i3
1301
+ r3 = nil
1302
+ end
1303
+ end
1304
+ if r3
1305
+ s2 << r3
1306
+ else
1307
+ break
1308
+ end
1309
+ end
1310
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1311
+ s0 << r2
1312
+ if r2
1313
+ if has_terminal?('/', false, index)
1314
+ r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
1315
+ @index += 1
1316
+ else
1317
+ terminal_parse_failure('/')
1318
+ r9 = nil
1319
+ end
1320
+ s0 << r9
1321
+ end
1322
+ end
1323
+ if s0.last
1324
+ r0 = instantiate_node(LogStash::Config::AST::RegExp,input, i0...index, s0)
1325
+ r0.extend(Regexp1)
1326
+ else
1327
+ @index = i0
1328
+ r0 = nil
1329
+ end
1330
+
1331
+ node_cache[:regexp][start_index] = r0
1332
+
1333
+ r0
1334
+ end
1335
+
1336
+ module Number0
1337
+ end
1338
+
1339
+ module Number1
1340
+ end
1341
+
1342
+ def _nt_number
1343
+ start_index = index
1344
+ if node_cache[:number].has_key?(index)
1345
+ cached = node_cache[:number][index]
1346
+ if cached
1347
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1348
+ @index = cached.interval.end
1349
+ end
1350
+ return cached
1351
+ end
1352
+
1353
+ i0, s0 = index, []
1354
+ if has_terminal?("-", false, index)
1355
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
1356
+ @index += 1
1357
+ else
1358
+ terminal_parse_failure("-")
1359
+ r2 = nil
1360
+ end
1361
+ if r2
1362
+ r1 = r2
1363
+ else
1364
+ r1 = instantiate_node(SyntaxNode,input, index...index)
1365
+ end
1366
+ s0 << r1
1367
+ if r1
1368
+ s3, i3 = [], index
1369
+ loop do
1370
+ if has_terminal?('\G[0-9]', true, index)
1371
+ r4 = true
1372
+ @index += 1
1373
+ else
1374
+ r4 = nil
1375
+ end
1376
+ if r4
1377
+ s3 << r4
1378
+ else
1379
+ break
1380
+ end
1381
+ end
1382
+ if s3.empty?
1383
+ @index = i3
1384
+ r3 = nil
1385
+ else
1386
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1387
+ end
1388
+ s0 << r3
1389
+ if r3
1390
+ i6, s6 = index, []
1391
+ if has_terminal?(".", false, index)
1392
+ r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
1393
+ @index += 1
1394
+ else
1395
+ terminal_parse_failure(".")
1396
+ r7 = nil
1397
+ end
1398
+ s6 << r7
1399
+ if r7
1400
+ s8, i8 = [], index
1401
+ loop do
1402
+ if has_terminal?('\G[0-9]', true, index)
1403
+ r9 = true
1404
+ @index += 1
1405
+ else
1406
+ r9 = nil
1407
+ end
1408
+ if r9
1409
+ s8 << r9
1410
+ else
1411
+ break
1412
+ end
1413
+ end
1414
+ r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
1415
+ s6 << r8
1416
+ end
1417
+ if s6.last
1418
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
1419
+ r6.extend(Number0)
1420
+ else
1421
+ @index = i6
1422
+ r6 = nil
1423
+ end
1424
+ if r6
1425
+ r5 = r6
1426
+ else
1427
+ r5 = instantiate_node(SyntaxNode,input, index...index)
1428
+ end
1429
+ s0 << r5
1430
+ end
1431
+ end
1432
+ if s0.last
1433
+ r0 = instantiate_node(LogStash::Config::AST::Number,input, i0...index, s0)
1434
+ r0.extend(Number1)
1435
+ else
1436
+ @index = i0
1437
+ r0 = nil
1438
+ end
1439
+
1440
+ node_cache[:number][start_index] = r0
1441
+
1442
+ r0
1443
+ end
1444
+
1445
+ module Array0
1446
+ def _1
1447
+ elements[0]
1448
+ end
1449
+
1450
+ def _2
1451
+ elements[2]
1452
+ end
1453
+
1454
+ def value
1455
+ elements[3]
1456
+ end
1457
+ end
1458
+
1459
+ module Array1
1460
+ def value
1461
+ elements[0]
1462
+ end
1463
+
1464
+ end
1465
+
1466
+ module Array2
1467
+ def _1
1468
+ elements[1]
1469
+ end
1470
+
1471
+ def _2
1472
+ elements[3]
1473
+ end
1474
+
1475
+ end
1476
+
1477
+ def _nt_array
1478
+ start_index = index
1479
+ if node_cache[:array].has_key?(index)
1480
+ cached = node_cache[:array][index]
1481
+ if cached
1482
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1483
+ @index = cached.interval.end
1484
+ end
1485
+ return cached
1486
+ end
1487
+
1488
+ i0, s0 = index, []
1489
+ if has_terminal?("[", false, index)
1490
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
1491
+ @index += 1
1492
+ else
1493
+ terminal_parse_failure("[")
1494
+ r1 = nil
1495
+ end
1496
+ s0 << r1
1497
+ if r1
1498
+ r2 = _nt__
1499
+ s0 << r2
1500
+ if r2
1501
+ i4, s4 = index, []
1502
+ r5 = _nt_value
1503
+ s4 << r5
1504
+ if r5
1505
+ s6, i6 = [], index
1506
+ loop do
1507
+ i7, s7 = index, []
1508
+ r8 = _nt__
1509
+ s7 << r8
1510
+ if r8
1511
+ if has_terminal?(",", false, index)
1512
+ r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
1513
+ @index += 1
1514
+ else
1515
+ terminal_parse_failure(",")
1516
+ r9 = nil
1517
+ end
1518
+ s7 << r9
1519
+ if r9
1520
+ r10 = _nt__
1521
+ s7 << r10
1522
+ if r10
1523
+ r11 = _nt_value
1524
+ s7 << r11
1525
+ end
1526
+ end
1527
+ end
1528
+ if s7.last
1529
+ r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
1530
+ r7.extend(Array0)
1531
+ else
1532
+ @index = i7
1533
+ r7 = nil
1534
+ end
1535
+ if r7
1536
+ s6 << r7
1537
+ else
1538
+ break
1539
+ end
1540
+ end
1541
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
1542
+ s4 << r6
1543
+ end
1544
+ if s4.last
1545
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
1546
+ r4.extend(Array1)
1547
+ else
1548
+ @index = i4
1549
+ r4 = nil
1550
+ end
1551
+ if r4
1552
+ r3 = r4
1553
+ else
1554
+ r3 = instantiate_node(SyntaxNode,input, index...index)
1555
+ end
1556
+ s0 << r3
1557
+ if r3
1558
+ r12 = _nt__
1559
+ s0 << r12
1560
+ if r12
1561
+ if has_terminal?("]", false, index)
1562
+ r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
1563
+ @index += 1
1564
+ else
1565
+ terminal_parse_failure("]")
1566
+ r13 = nil
1567
+ end
1568
+ s0 << r13
1569
+ end
1570
+ end
1571
+ end
1572
+ end
1573
+ if s0.last
1574
+ r0 = instantiate_node(LogStash::Config::AST::Array,input, i0...index, s0)
1575
+ r0.extend(Array2)
1576
+ else
1577
+ @index = i0
1578
+ r0 = nil
1579
+ end
1580
+
1581
+ node_cache[:array][start_index] = r0
1582
+
1583
+ r0
1584
+ end
1585
+
1586
+ module Hash0
1587
+ def _1
1588
+ elements[1]
1589
+ end
1590
+
1591
+ def _2
1592
+ elements[3]
1593
+ end
1594
+
1595
+ end
1596
+
1597
+ def _nt_hash
1598
+ start_index = index
1599
+ if node_cache[:hash].has_key?(index)
1600
+ cached = node_cache[:hash][index]
1601
+ if cached
1602
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1603
+ @index = cached.interval.end
1604
+ end
1605
+ return cached
1606
+ end
1607
+
1608
+ i0, s0 = index, []
1609
+ if has_terminal?("{", false, index)
1610
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
1611
+ @index += 1
1612
+ else
1613
+ terminal_parse_failure("{")
1614
+ r1 = nil
1615
+ end
1616
+ s0 << r1
1617
+ if r1
1618
+ r2 = _nt__
1619
+ s0 << r2
1620
+ if r2
1621
+ r4 = _nt_hashentries
1622
+ if r4
1623
+ r3 = r4
1624
+ else
1625
+ r3 = instantiate_node(SyntaxNode,input, index...index)
1626
+ end
1627
+ s0 << r3
1628
+ if r3
1629
+ r5 = _nt__
1630
+ s0 << r5
1631
+ if r5
1632
+ if has_terminal?("}", false, index)
1633
+ r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
1634
+ @index += 1
1635
+ else
1636
+ terminal_parse_failure("}")
1637
+ r6 = nil
1638
+ end
1639
+ s0 << r6
1640
+ end
1641
+ end
1642
+ end
1643
+ end
1644
+ if s0.last
1645
+ r0 = instantiate_node(LogStash::Config::AST::Hash,input, i0...index, s0)
1646
+ r0.extend(Hash0)
1647
+ else
1648
+ @index = i0
1649
+ r0 = nil
1650
+ end
1651
+
1652
+ node_cache[:hash][start_index] = r0
1653
+
1654
+ r0
1655
+ end
1656
+
1657
+ module Hashentries0
1658
+ def whitespace
1659
+ elements[0]
1660
+ end
1661
+
1662
+ def hashentry
1663
+ elements[1]
1664
+ end
1665
+ end
1666
+
1667
+ module Hashentries1
1668
+ def hashentry
1669
+ elements[0]
1670
+ end
1671
+
1672
+ end
1673
+
1674
+ def _nt_hashentries
1675
+ start_index = index
1676
+ if node_cache[:hashentries].has_key?(index)
1677
+ cached = node_cache[:hashentries][index]
1678
+ if cached
1679
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1680
+ @index = cached.interval.end
1681
+ end
1682
+ return cached
1683
+ end
1684
+
1685
+ i0, s0 = index, []
1686
+ r1 = _nt_hashentry
1687
+ s0 << r1
1688
+ if r1
1689
+ s2, i2 = [], index
1690
+ loop do
1691
+ i3, s3 = index, []
1692
+ r4 = _nt_whitespace
1693
+ s3 << r4
1694
+ if r4
1695
+ r5 = _nt_hashentry
1696
+ s3 << r5
1697
+ end
1698
+ if s3.last
1699
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1700
+ r3.extend(Hashentries0)
1701
+ else
1702
+ @index = i3
1703
+ r3 = nil
1704
+ end
1705
+ if r3
1706
+ s2 << r3
1707
+ else
1708
+ break
1709
+ end
1710
+ end
1711
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1712
+ s0 << r2
1713
+ end
1714
+ if s0.last
1715
+ r0 = instantiate_node(LogStash::Config::AST::HashEntries,input, i0...index, s0)
1716
+ r0.extend(Hashentries1)
1717
+ else
1718
+ @index = i0
1719
+ r0 = nil
1720
+ end
1721
+
1722
+ node_cache[:hashentries][start_index] = r0
1723
+
1724
+ r0
1725
+ end
1726
+
1727
+ module Hashentry0
1728
+ def name
1729
+ elements[0]
1730
+ end
1731
+
1732
+ def _1
1733
+ elements[1]
1734
+ end
1735
+
1736
+ def _2
1737
+ elements[3]
1738
+ end
1739
+
1740
+ def value
1741
+ elements[4]
1742
+ end
1743
+ end
1744
+
1745
+ def _nt_hashentry
1746
+ start_index = index
1747
+ if node_cache[:hashentry].has_key?(index)
1748
+ cached = node_cache[:hashentry][index]
1749
+ if cached
1750
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1751
+ @index = cached.interval.end
1752
+ end
1753
+ return cached
1754
+ end
1755
+
1756
+ i0, s0 = index, []
1757
+ i1 = index
1758
+ r2 = _nt_number
1759
+ if r2
1760
+ r1 = r2
1761
+ else
1762
+ r3 = _nt_bareword
1763
+ if r3
1764
+ r1 = r3
1765
+ else
1766
+ r4 = _nt_string
1767
+ if r4
1768
+ r1 = r4
1769
+ else
1770
+ @index = i1
1771
+ r1 = nil
1772
+ end
1773
+ end
1774
+ end
1775
+ s0 << r1
1776
+ if r1
1777
+ r5 = _nt__
1778
+ s0 << r5
1779
+ if r5
1780
+ if has_terminal?("=>", false, index)
1781
+ r6 = instantiate_node(SyntaxNode,input, index...(index + 2))
1782
+ @index += 2
1783
+ else
1784
+ terminal_parse_failure("=>")
1785
+ r6 = nil
1786
+ end
1787
+ s0 << r6
1788
+ if r6
1789
+ r7 = _nt__
1790
+ s0 << r7
1791
+ if r7
1792
+ r8 = _nt_value
1793
+ s0 << r8
1794
+ end
1795
+ end
1796
+ end
1797
+ end
1798
+ if s0.last
1799
+ r0 = instantiate_node(LogStash::Config::AST::HashEntry,input, i0...index, s0)
1800
+ r0.extend(Hashentry0)
1801
+ else
1802
+ @index = i0
1803
+ r0 = nil
1804
+ end
1805
+
1806
+ node_cache[:hashentry][start_index] = r0
1807
+
1808
+ r0
1809
+ end
1810
+
1811
+ module Branch0
1812
+ def _
1813
+ elements[0]
1814
+ end
1815
+
1816
+ def else_if
1817
+ elements[1]
1818
+ end
1819
+ end
1820
+
1821
+ module Branch1
1822
+ def _
1823
+ elements[0]
1824
+ end
1825
+
1826
+ def else
1827
+ elements[1]
1828
+ end
1829
+ end
1830
+
1831
+ module Branch2
1832
+ def if
1833
+ elements[0]
1834
+ end
1835
+
1836
+ end
1837
+
1838
+ def _nt_branch
1839
+ start_index = index
1840
+ if node_cache[:branch].has_key?(index)
1841
+ cached = node_cache[:branch][index]
1842
+ if cached
1843
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1844
+ @index = cached.interval.end
1845
+ end
1846
+ return cached
1847
+ end
1848
+
1849
+ i0, s0 = index, []
1850
+ r1 = _nt_if
1851
+ s0 << r1
1852
+ if r1
1853
+ s2, i2 = [], index
1854
+ loop do
1855
+ i3, s3 = index, []
1856
+ r4 = _nt__
1857
+ s3 << r4
1858
+ if r4
1859
+ r5 = _nt_else_if
1860
+ s3 << r5
1861
+ end
1862
+ if s3.last
1863
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1864
+ r3.extend(Branch0)
1865
+ else
1866
+ @index = i3
1867
+ r3 = nil
1868
+ end
1869
+ if r3
1870
+ s2 << r3
1871
+ else
1872
+ break
1873
+ end
1874
+ end
1875
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1876
+ s0 << r2
1877
+ if r2
1878
+ i7, s7 = index, []
1879
+ r8 = _nt__
1880
+ s7 << r8
1881
+ if r8
1882
+ r9 = _nt_else
1883
+ s7 << r9
1884
+ end
1885
+ if s7.last
1886
+ r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
1887
+ r7.extend(Branch1)
1888
+ else
1889
+ @index = i7
1890
+ r7 = nil
1891
+ end
1892
+ if r7
1893
+ r6 = r7
1894
+ else
1895
+ r6 = instantiate_node(SyntaxNode,input, index...index)
1896
+ end
1897
+ s0 << r6
1898
+ end
1899
+ end
1900
+ if s0.last
1901
+ r0 = instantiate_node(LogStash::Config::AST::Branch,input, i0...index, s0)
1902
+ r0.extend(Branch2)
1903
+ else
1904
+ @index = i0
1905
+ r0 = nil
1906
+ end
1907
+
1908
+ node_cache[:branch][start_index] = r0
1909
+
1910
+ r0
1911
+ end
1912
+
1913
+ module If0
1914
+ def branch_or_plugin
1915
+ elements[0]
1916
+ end
1917
+
1918
+ def _
1919
+ elements[1]
1920
+ end
1921
+ end
1922
+
1923
+ module If1
1924
+ def _1
1925
+ elements[1]
1926
+ end
1927
+
1928
+ def condition
1929
+ elements[2]
1930
+ end
1931
+
1932
+ def _2
1933
+ elements[3]
1934
+ end
1935
+
1936
+ def _3
1937
+ elements[5]
1938
+ end
1939
+
1940
+ end
1941
+
1942
+ def _nt_if
1943
+ start_index = index
1944
+ if node_cache[:if].has_key?(index)
1945
+ cached = node_cache[:if][index]
1946
+ if cached
1947
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1948
+ @index = cached.interval.end
1949
+ end
1950
+ return cached
1951
+ end
1952
+
1953
+ i0, s0 = index, []
1954
+ if has_terminal?("if", false, index)
1955
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 2))
1956
+ @index += 2
1957
+ else
1958
+ terminal_parse_failure("if")
1959
+ r1 = nil
1960
+ end
1961
+ s0 << r1
1962
+ if r1
1963
+ r2 = _nt__
1964
+ s0 << r2
1965
+ if r2
1966
+ r3 = _nt_condition
1967
+ s0 << r3
1968
+ if r3
1969
+ r4 = _nt__
1970
+ s0 << r4
1971
+ if r4
1972
+ if has_terminal?("{", false, index)
1973
+ r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
1974
+ @index += 1
1975
+ else
1976
+ terminal_parse_failure("{")
1977
+ r5 = nil
1978
+ end
1979
+ s0 << r5
1980
+ if r5
1981
+ r6 = _nt__
1982
+ s0 << r6
1983
+ if r6
1984
+ s7, i7 = [], index
1985
+ loop do
1986
+ i8, s8 = index, []
1987
+ r9 = _nt_branch_or_plugin
1988
+ s8 << r9
1989
+ if r9
1990
+ r10 = _nt__
1991
+ s8 << r10
1992
+ end
1993
+ if s8.last
1994
+ r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
1995
+ r8.extend(If0)
1996
+ else
1997
+ @index = i8
1998
+ r8 = nil
1999
+ end
2000
+ if r8
2001
+ s7 << r8
2002
+ else
2003
+ break
2004
+ end
2005
+ end
2006
+ r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
2007
+ s0 << r7
2008
+ if r7
2009
+ if has_terminal?("}", false, index)
2010
+ r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
2011
+ @index += 1
2012
+ else
2013
+ terminal_parse_failure("}")
2014
+ r11 = nil
2015
+ end
2016
+ s0 << r11
2017
+ end
2018
+ end
2019
+ end
2020
+ end
2021
+ end
2022
+ end
2023
+ end
2024
+ if s0.last
2025
+ r0 = instantiate_node(LogStash::Config::AST::If,input, i0...index, s0)
2026
+ r0.extend(If1)
2027
+ else
2028
+ @index = i0
2029
+ r0 = nil
2030
+ end
2031
+
2032
+ node_cache[:if][start_index] = r0
2033
+
2034
+ r0
2035
+ end
2036
+
2037
+ module ElseIf0
2038
+ def branch_or_plugin
2039
+ elements[0]
2040
+ end
2041
+
2042
+ def _
2043
+ elements[1]
2044
+ end
2045
+ end
2046
+
2047
+ module ElseIf1
2048
+ def _1
2049
+ elements[1]
2050
+ end
2051
+
2052
+ def _2
2053
+ elements[3]
2054
+ end
2055
+
2056
+ def condition
2057
+ elements[4]
2058
+ end
2059
+
2060
+ def _3
2061
+ elements[5]
2062
+ end
2063
+
2064
+ def _4
2065
+ elements[7]
2066
+ end
2067
+
2068
+ end
2069
+
2070
+ def _nt_else_if
2071
+ start_index = index
2072
+ if node_cache[:else_if].has_key?(index)
2073
+ cached = node_cache[:else_if][index]
2074
+ if cached
2075
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2076
+ @index = cached.interval.end
2077
+ end
2078
+ return cached
2079
+ end
2080
+
2081
+ i0, s0 = index, []
2082
+ if has_terminal?("else", false, index)
2083
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 4))
2084
+ @index += 4
2085
+ else
2086
+ terminal_parse_failure("else")
2087
+ r1 = nil
2088
+ end
2089
+ s0 << r1
2090
+ if r1
2091
+ r2 = _nt__
2092
+ s0 << r2
2093
+ if r2
2094
+ if has_terminal?("if", false, index)
2095
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 2))
2096
+ @index += 2
2097
+ else
2098
+ terminal_parse_failure("if")
2099
+ r3 = nil
2100
+ end
2101
+ s0 << r3
2102
+ if r3
2103
+ r4 = _nt__
2104
+ s0 << r4
2105
+ if r4
2106
+ r5 = _nt_condition
2107
+ s0 << r5
2108
+ if r5
2109
+ r6 = _nt__
2110
+ s0 << r6
2111
+ if r6
2112
+ if has_terminal?("{", false, index)
2113
+ r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
2114
+ @index += 1
2115
+ else
2116
+ terminal_parse_failure("{")
2117
+ r7 = nil
2118
+ end
2119
+ s0 << r7
2120
+ if r7
2121
+ r8 = _nt__
2122
+ s0 << r8
2123
+ if r8
2124
+ s9, i9 = [], index
2125
+ loop do
2126
+ i10, s10 = index, []
2127
+ r11 = _nt_branch_or_plugin
2128
+ s10 << r11
2129
+ if r11
2130
+ r12 = _nt__
2131
+ s10 << r12
2132
+ end
2133
+ if s10.last
2134
+ r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
2135
+ r10.extend(ElseIf0)
2136
+ else
2137
+ @index = i10
2138
+ r10 = nil
2139
+ end
2140
+ if r10
2141
+ s9 << r10
2142
+ else
2143
+ break
2144
+ end
2145
+ end
2146
+ r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
2147
+ s0 << r9
2148
+ if r9
2149
+ if has_terminal?("}", false, index)
2150
+ r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
2151
+ @index += 1
2152
+ else
2153
+ terminal_parse_failure("}")
2154
+ r13 = nil
2155
+ end
2156
+ s0 << r13
2157
+ end
2158
+ end
2159
+ end
2160
+ end
2161
+ end
2162
+ end
2163
+ end
2164
+ end
2165
+ end
2166
+ if s0.last
2167
+ r0 = instantiate_node(LogStash::Config::AST::Elsif,input, i0...index, s0)
2168
+ r0.extend(ElseIf1)
2169
+ else
2170
+ @index = i0
2171
+ r0 = nil
2172
+ end
2173
+
2174
+ node_cache[:else_if][start_index] = r0
2175
+
2176
+ r0
2177
+ end
2178
+
2179
+ module Else0
2180
+ def branch_or_plugin
2181
+ elements[0]
2182
+ end
2183
+
2184
+ def _
2185
+ elements[1]
2186
+ end
2187
+ end
2188
+
2189
+ module Else1
2190
+ def _1
2191
+ elements[1]
2192
+ end
2193
+
2194
+ def _2
2195
+ elements[3]
2196
+ end
2197
+
2198
+ end
2199
+
2200
+ def _nt_else
2201
+ start_index = index
2202
+ if node_cache[:else].has_key?(index)
2203
+ cached = node_cache[:else][index]
2204
+ if cached
2205
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2206
+ @index = cached.interval.end
2207
+ end
2208
+ return cached
2209
+ end
2210
+
2211
+ i0, s0 = index, []
2212
+ if has_terminal?("else", false, index)
2213
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 4))
2214
+ @index += 4
2215
+ else
2216
+ terminal_parse_failure("else")
2217
+ r1 = nil
2218
+ end
2219
+ s0 << r1
2220
+ if r1
2221
+ r2 = _nt__
2222
+ s0 << r2
2223
+ if r2
2224
+ if has_terminal?("{", false, index)
2225
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
2226
+ @index += 1
2227
+ else
2228
+ terminal_parse_failure("{")
2229
+ r3 = nil
2230
+ end
2231
+ s0 << r3
2232
+ if r3
2233
+ r4 = _nt__
2234
+ s0 << r4
2235
+ if r4
2236
+ s5, i5 = [], index
2237
+ loop do
2238
+ i6, s6 = index, []
2239
+ r7 = _nt_branch_or_plugin
2240
+ s6 << r7
2241
+ if r7
2242
+ r8 = _nt__
2243
+ s6 << r8
2244
+ end
2245
+ if s6.last
2246
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
2247
+ r6.extend(Else0)
2248
+ else
2249
+ @index = i6
2250
+ r6 = nil
2251
+ end
2252
+ if r6
2253
+ s5 << r6
2254
+ else
2255
+ break
2256
+ end
2257
+ end
2258
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
2259
+ s0 << r5
2260
+ if r5
2261
+ if has_terminal?("}", false, index)
2262
+ r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
2263
+ @index += 1
2264
+ else
2265
+ terminal_parse_failure("}")
2266
+ r9 = nil
2267
+ end
2268
+ s0 << r9
2269
+ end
2270
+ end
2271
+ end
2272
+ end
2273
+ end
2274
+ if s0.last
2275
+ r0 = instantiate_node(LogStash::Config::AST::Else,input, i0...index, s0)
2276
+ r0.extend(Else1)
2277
+ else
2278
+ @index = i0
2279
+ r0 = nil
2280
+ end
2281
+
2282
+ node_cache[:else][start_index] = r0
2283
+
2284
+ r0
2285
+ end
2286
+
2287
+ module Condition0
2288
+ def _1
2289
+ elements[0]
2290
+ end
2291
+
2292
+ def boolean_operator
2293
+ elements[1]
2294
+ end
2295
+
2296
+ def _2
2297
+ elements[2]
2298
+ end
2299
+
2300
+ def expression
2301
+ elements[3]
2302
+ end
2303
+ end
2304
+
2305
+ module Condition1
2306
+ def expression
2307
+ elements[0]
2308
+ end
2309
+
2310
+ end
2311
+
2312
+ def _nt_condition
2313
+ start_index = index
2314
+ if node_cache[:condition].has_key?(index)
2315
+ cached = node_cache[:condition][index]
2316
+ if cached
2317
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2318
+ @index = cached.interval.end
2319
+ end
2320
+ return cached
2321
+ end
2322
+
2323
+ i0, s0 = index, []
2324
+ r1 = _nt_expression
2325
+ s0 << r1
2326
+ if r1
2327
+ s2, i2 = [], index
2328
+ loop do
2329
+ i3, s3 = index, []
2330
+ r4 = _nt__
2331
+ s3 << r4
2332
+ if r4
2333
+ r5 = _nt_boolean_operator
2334
+ s3 << r5
2335
+ if r5
2336
+ r6 = _nt__
2337
+ s3 << r6
2338
+ if r6
2339
+ r7 = _nt_expression
2340
+ s3 << r7
2341
+ end
2342
+ end
2343
+ end
2344
+ if s3.last
2345
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2346
+ r3.extend(Condition0)
2347
+ else
2348
+ @index = i3
2349
+ r3 = nil
2350
+ end
2351
+ if r3
2352
+ s2 << r3
2353
+ else
2354
+ break
2355
+ end
2356
+ end
2357
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2358
+ s0 << r2
2359
+ end
2360
+ if s0.last
2361
+ r0 = instantiate_node(LogStash::Config::AST::Condition,input, i0...index, s0)
2362
+ r0.extend(Condition1)
2363
+ else
2364
+ @index = i0
2365
+ r0 = nil
2366
+ end
2367
+
2368
+ node_cache[:condition][start_index] = r0
2369
+
2370
+ r0
2371
+ end
2372
+
2373
+ module Expression0
2374
+ def _1
2375
+ elements[1]
2376
+ end
2377
+
2378
+ def condition
2379
+ elements[2]
2380
+ end
2381
+
2382
+ def _2
2383
+ elements[3]
2384
+ end
2385
+
2386
+ end
2387
+
2388
+ def _nt_expression
2389
+ start_index = index
2390
+ if node_cache[:expression].has_key?(index)
2391
+ cached = node_cache[:expression][index]
2392
+ if cached
2393
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2394
+ @index = cached.interval.end
2395
+ end
2396
+ return cached
2397
+ end
2398
+
2399
+ i0 = index
2400
+ i1, s1 = index, []
2401
+ if has_terminal?("(", false, index)
2402
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2403
+ @index += 1
2404
+ else
2405
+ terminal_parse_failure("(")
2406
+ r2 = nil
2407
+ end
2408
+ s1 << r2
2409
+ if r2
2410
+ r3 = _nt__
2411
+ s1 << r3
2412
+ if r3
2413
+ r4 = _nt_condition
2414
+ s1 << r4
2415
+ if r4
2416
+ r5 = _nt__
2417
+ s1 << r5
2418
+ if r5
2419
+ if has_terminal?(")", false, index)
2420
+ r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
2421
+ @index += 1
2422
+ else
2423
+ terminal_parse_failure(")")
2424
+ r6 = nil
2425
+ end
2426
+ s1 << r6
2427
+ end
2428
+ end
2429
+ end
2430
+ end
2431
+ if s1.last
2432
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2433
+ r1.extend(Expression0)
2434
+ else
2435
+ @index = i1
2436
+ r1 = nil
2437
+ end
2438
+ if r1
2439
+ r0 = r1
2440
+ r0.extend(LogStash::Config::AST::Expression)
2441
+ else
2442
+ r7 = _nt_negative_expression
2443
+ if r7
2444
+ r0 = r7
2445
+ r0.extend(LogStash::Config::AST::Expression)
2446
+ else
2447
+ r8 = _nt_in_expression
2448
+ if r8
2449
+ r0 = r8
2450
+ r0.extend(LogStash::Config::AST::Expression)
2451
+ else
2452
+ r9 = _nt_not_in_expression
2453
+ if r9
2454
+ r0 = r9
2455
+ r0.extend(LogStash::Config::AST::Expression)
2456
+ else
2457
+ r10 = _nt_compare_expression
2458
+ if r10
2459
+ r0 = r10
2460
+ r0.extend(LogStash::Config::AST::Expression)
2461
+ else
2462
+ r11 = _nt_regexp_expression
2463
+ if r11
2464
+ r0 = r11
2465
+ r0.extend(LogStash::Config::AST::Expression)
2466
+ else
2467
+ r12 = _nt_rvalue
2468
+ if r12
2469
+ r0 = r12
2470
+ r0.extend(LogStash::Config::AST::Expression)
2471
+ else
2472
+ @index = i0
2473
+ r0 = nil
2474
+ end
2475
+ end
2476
+ end
2477
+ end
2478
+ end
2479
+ end
2480
+ end
2481
+
2482
+ node_cache[:expression][start_index] = r0
2483
+
2484
+ r0
2485
+ end
2486
+
2487
+ module NegativeExpression0
2488
+ def _1
2489
+ elements[1]
2490
+ end
2491
+
2492
+ def _2
2493
+ elements[3]
2494
+ end
2495
+
2496
+ def condition
2497
+ elements[4]
2498
+ end
2499
+
2500
+ def _3
2501
+ elements[5]
2502
+ end
2503
+
2504
+ end
2505
+
2506
+ module NegativeExpression1
2507
+ def _
2508
+ elements[1]
2509
+ end
2510
+
2511
+ def selector
2512
+ elements[2]
2513
+ end
2514
+ end
2515
+
2516
+ def _nt_negative_expression
2517
+ start_index = index
2518
+ if node_cache[:negative_expression].has_key?(index)
2519
+ cached = node_cache[:negative_expression][index]
2520
+ if cached
2521
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2522
+ @index = cached.interval.end
2523
+ end
2524
+ return cached
2525
+ end
2526
+
2527
+ i0 = index
2528
+ i1, s1 = index, []
2529
+ if has_terminal?("!", false, index)
2530
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2531
+ @index += 1
2532
+ else
2533
+ terminal_parse_failure("!")
2534
+ r2 = nil
2535
+ end
2536
+ s1 << r2
2537
+ if r2
2538
+ r3 = _nt__
2539
+ s1 << r3
2540
+ if r3
2541
+ if has_terminal?("(", false, index)
2542
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2543
+ @index += 1
2544
+ else
2545
+ terminal_parse_failure("(")
2546
+ r4 = nil
2547
+ end
2548
+ s1 << r4
2549
+ if r4
2550
+ r5 = _nt__
2551
+ s1 << r5
2552
+ if r5
2553
+ r6 = _nt_condition
2554
+ s1 << r6
2555
+ if r6
2556
+ r7 = _nt__
2557
+ s1 << r7
2558
+ if r7
2559
+ if has_terminal?(")", false, index)
2560
+ r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
2561
+ @index += 1
2562
+ else
2563
+ terminal_parse_failure(")")
2564
+ r8 = nil
2565
+ end
2566
+ s1 << r8
2567
+ end
2568
+ end
2569
+ end
2570
+ end
2571
+ end
2572
+ end
2573
+ if s1.last
2574
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2575
+ r1.extend(NegativeExpression0)
2576
+ else
2577
+ @index = i1
2578
+ r1 = nil
2579
+ end
2580
+ if r1
2581
+ r0 = r1
2582
+ r0.extend(LogStash::Config::AST::NegativeExpression)
2583
+ else
2584
+ i9, s9 = index, []
2585
+ if has_terminal?("!", false, index)
2586
+ r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
2587
+ @index += 1
2588
+ else
2589
+ terminal_parse_failure("!")
2590
+ r10 = nil
2591
+ end
2592
+ s9 << r10
2593
+ if r10
2594
+ r11 = _nt__
2595
+ s9 << r11
2596
+ if r11
2597
+ r12 = _nt_selector
2598
+ s9 << r12
2599
+ end
2600
+ end
2601
+ if s9.last
2602
+ r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
2603
+ r9.extend(NegativeExpression1)
2604
+ else
2605
+ @index = i9
2606
+ r9 = nil
2607
+ end
2608
+ if r9
2609
+ r0 = r9
2610
+ r0.extend(LogStash::Config::AST::NegativeExpression)
2611
+ else
2612
+ @index = i0
2613
+ r0 = nil
2614
+ end
2615
+ end
2616
+
2617
+ node_cache[:negative_expression][start_index] = r0
2618
+
2619
+ r0
2620
+ end
2621
+
2622
+ module InExpression0
2623
+ def rvalue1
2624
+ elements[0]
2625
+ end
2626
+
2627
+ def _1
2628
+ elements[1]
2629
+ end
2630
+
2631
+ def in_operator
2632
+ elements[2]
2633
+ end
2634
+
2635
+ def _2
2636
+ elements[3]
2637
+ end
2638
+
2639
+ def rvalue2
2640
+ elements[4]
2641
+ end
2642
+ end
2643
+
2644
+ def _nt_in_expression
2645
+ start_index = index
2646
+ if node_cache[:in_expression].has_key?(index)
2647
+ cached = node_cache[:in_expression][index]
2648
+ if cached
2649
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2650
+ @index = cached.interval.end
2651
+ end
2652
+ return cached
2653
+ end
2654
+
2655
+ i0, s0 = index, []
2656
+ r1 = _nt_rvalue
2657
+ s0 << r1
2658
+ if r1
2659
+ r2 = _nt__
2660
+ s0 << r2
2661
+ if r2
2662
+ r3 = _nt_in_operator
2663
+ s0 << r3
2664
+ if r3
2665
+ r4 = _nt__
2666
+ s0 << r4
2667
+ if r4
2668
+ r5 = _nt_rvalue
2669
+ s0 << r5
2670
+ end
2671
+ end
2672
+ end
2673
+ end
2674
+ if s0.last
2675
+ r0 = instantiate_node(LogStash::Config::AST::InExpression,input, i0...index, s0)
2676
+ r0.extend(InExpression0)
2677
+ else
2678
+ @index = i0
2679
+ r0 = nil
2680
+ end
2681
+
2682
+ node_cache[:in_expression][start_index] = r0
2683
+
2684
+ r0
2685
+ end
2686
+
2687
+ module NotInExpression0
2688
+ def rvalue1
2689
+ elements[0]
2690
+ end
2691
+
2692
+ def _1
2693
+ elements[1]
2694
+ end
2695
+
2696
+ def not_in_operator
2697
+ elements[2]
2698
+ end
2699
+
2700
+ def _2
2701
+ elements[3]
2702
+ end
2703
+
2704
+ def rvalue2
2705
+ elements[4]
2706
+ end
2707
+ end
2708
+
2709
+ def _nt_not_in_expression
2710
+ start_index = index
2711
+ if node_cache[:not_in_expression].has_key?(index)
2712
+ cached = node_cache[:not_in_expression][index]
2713
+ if cached
2714
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2715
+ @index = cached.interval.end
2716
+ end
2717
+ return cached
2718
+ end
2719
+
2720
+ i0, s0 = index, []
2721
+ r1 = _nt_rvalue
2722
+ s0 << r1
2723
+ if r1
2724
+ r2 = _nt__
2725
+ s0 << r2
2726
+ if r2
2727
+ r3 = _nt_not_in_operator
2728
+ s0 << r3
2729
+ if r3
2730
+ r4 = _nt__
2731
+ s0 << r4
2732
+ if r4
2733
+ r5 = _nt_rvalue
2734
+ s0 << r5
2735
+ end
2736
+ end
2737
+ end
2738
+ end
2739
+ if s0.last
2740
+ r0 = instantiate_node(LogStash::Config::AST::NotInExpression,input, i0...index, s0)
2741
+ r0.extend(NotInExpression0)
2742
+ else
2743
+ @index = i0
2744
+ r0 = nil
2745
+ end
2746
+
2747
+ node_cache[:not_in_expression][start_index] = r0
2748
+
2749
+ r0
2750
+ end
2751
+
2752
+ def _nt_in_operator
2753
+ start_index = index
2754
+ if node_cache[:in_operator].has_key?(index)
2755
+ cached = node_cache[:in_operator][index]
2756
+ if cached
2757
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2758
+ @index = cached.interval.end
2759
+ end
2760
+ return cached
2761
+ end
2762
+
2763
+ if has_terminal?("in", false, index)
2764
+ r0 = instantiate_node(SyntaxNode,input, index...(index + 2))
2765
+ @index += 2
2766
+ else
2767
+ terminal_parse_failure("in")
2768
+ r0 = nil
2769
+ end
2770
+
2771
+ node_cache[:in_operator][start_index] = r0
2772
+
2773
+ r0
2774
+ end
2775
+
2776
+ module NotInOperator0
2777
+ def _
2778
+ elements[1]
2779
+ end
2780
+
2781
+ end
2782
+
2783
+ def _nt_not_in_operator
2784
+ start_index = index
2785
+ if node_cache[:not_in_operator].has_key?(index)
2786
+ cached = node_cache[:not_in_operator][index]
2787
+ if cached
2788
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2789
+ @index = cached.interval.end
2790
+ end
2791
+ return cached
2792
+ end
2793
+
2794
+ i0, s0 = index, []
2795
+ if has_terminal?("not ", false, index)
2796
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 4))
2797
+ @index += 4
2798
+ else
2799
+ terminal_parse_failure("not ")
2800
+ r1 = nil
2801
+ end
2802
+ s0 << r1
2803
+ if r1
2804
+ r2 = _nt__
2805
+ s0 << r2
2806
+ if r2
2807
+ if has_terminal?("in", false, index)
2808
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 2))
2809
+ @index += 2
2810
+ else
2811
+ terminal_parse_failure("in")
2812
+ r3 = nil
2813
+ end
2814
+ s0 << r3
2815
+ end
2816
+ end
2817
+ if s0.last
2818
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2819
+ r0.extend(NotInOperator0)
2820
+ else
2821
+ @index = i0
2822
+ r0 = nil
2823
+ end
2824
+
2825
+ node_cache[:not_in_operator][start_index] = r0
2826
+
2827
+ r0
2828
+ end
2829
+
2830
+ def _nt_rvalue
2831
+ start_index = index
2832
+ if node_cache[:rvalue].has_key?(index)
2833
+ cached = node_cache[:rvalue][index]
2834
+ if cached
2835
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2836
+ @index = cached.interval.end
2837
+ end
2838
+ return cached
2839
+ end
2840
+
2841
+ i0 = index
2842
+ r1 = _nt_string
2843
+ if r1
2844
+ r0 = r1
2845
+ else
2846
+ r2 = _nt_number
2847
+ if r2
2848
+ r0 = r2
2849
+ else
2850
+ r3 = _nt_selector
2851
+ if r3
2852
+ r0 = r3
2853
+ else
2854
+ r4 = _nt_array
2855
+ if r4
2856
+ r0 = r4
2857
+ else
2858
+ r5 = _nt_method_call
2859
+ if r5
2860
+ r0 = r5
2861
+ else
2862
+ r6 = _nt_regexp
2863
+ if r6
2864
+ r0 = r6
2865
+ else
2866
+ @index = i0
2867
+ r0 = nil
2868
+ end
2869
+ end
2870
+ end
2871
+ end
2872
+ end
2873
+ end
2874
+
2875
+ node_cache[:rvalue][start_index] = r0
2876
+
2877
+ r0
2878
+ end
2879
+
2880
+ module MethodCall0
2881
+ def _1
2882
+ elements[0]
2883
+ end
2884
+
2885
+ def _2
2886
+ elements[2]
2887
+ end
2888
+
2889
+ def rvalue
2890
+ elements[3]
2891
+ end
2892
+ end
2893
+
2894
+ module MethodCall1
2895
+ def rvalue
2896
+ elements[0]
2897
+ end
2898
+
2899
+ end
2900
+
2901
+ module MethodCall2
2902
+ def method
2903
+ elements[0]
2904
+ end
2905
+
2906
+ def _1
2907
+ elements[1]
2908
+ end
2909
+
2910
+ def _2
2911
+ elements[3]
2912
+ end
2913
+
2914
+ def _3
2915
+ elements[5]
2916
+ end
2917
+
2918
+ end
2919
+
2920
+ def _nt_method_call
2921
+ start_index = index
2922
+ if node_cache[:method_call].has_key?(index)
2923
+ cached = node_cache[:method_call][index]
2924
+ if cached
2925
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2926
+ @index = cached.interval.end
2927
+ end
2928
+ return cached
2929
+ end
2930
+
2931
+ i0, s0 = index, []
2932
+ r1 = _nt_method
2933
+ s0 << r1
2934
+ if r1
2935
+ r2 = _nt__
2936
+ s0 << r2
2937
+ if r2
2938
+ if has_terminal?("(", false, index)
2939
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
2940
+ @index += 1
2941
+ else
2942
+ terminal_parse_failure("(")
2943
+ r3 = nil
2944
+ end
2945
+ s0 << r3
2946
+ if r3
2947
+ r4 = _nt__
2948
+ s0 << r4
2949
+ if r4
2950
+ i6, s6 = index, []
2951
+ r7 = _nt_rvalue
2952
+ s6 << r7
2953
+ if r7
2954
+ s8, i8 = [], index
2955
+ loop do
2956
+ i9, s9 = index, []
2957
+ r10 = _nt__
2958
+ s9 << r10
2959
+ if r10
2960
+ if has_terminal?(",", false, index)
2961
+ r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
2962
+ @index += 1
2963
+ else
2964
+ terminal_parse_failure(",")
2965
+ r11 = nil
2966
+ end
2967
+ s9 << r11
2968
+ if r11
2969
+ r12 = _nt__
2970
+ s9 << r12
2971
+ if r12
2972
+ r13 = _nt_rvalue
2973
+ s9 << r13
2974
+ end
2975
+ end
2976
+ end
2977
+ if s9.last
2978
+ r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
2979
+ r9.extend(MethodCall0)
2980
+ else
2981
+ @index = i9
2982
+ r9 = nil
2983
+ end
2984
+ if r9
2985
+ s8 << r9
2986
+ else
2987
+ break
2988
+ end
2989
+ end
2990
+ r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
2991
+ s6 << r8
2992
+ end
2993
+ if s6.last
2994
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
2995
+ r6.extend(MethodCall1)
2996
+ else
2997
+ @index = i6
2998
+ r6 = nil
2999
+ end
3000
+ if r6
3001
+ r5 = r6
3002
+ else
3003
+ r5 = instantiate_node(SyntaxNode,input, index...index)
3004
+ end
3005
+ s0 << r5
3006
+ if r5
3007
+ r14 = _nt__
3008
+ s0 << r14
3009
+ if r14
3010
+ if has_terminal?(")", false, index)
3011
+ r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
3012
+ @index += 1
3013
+ else
3014
+ terminal_parse_failure(")")
3015
+ r15 = nil
3016
+ end
3017
+ s0 << r15
3018
+ end
3019
+ end
3020
+ end
3021
+ end
3022
+ end
3023
+ end
3024
+ if s0.last
3025
+ r0 = instantiate_node(LogStash::Config::AST::MethodCall,input, i0...index, s0)
3026
+ r0.extend(MethodCall2)
3027
+ else
3028
+ @index = i0
3029
+ r0 = nil
3030
+ end
3031
+
3032
+ node_cache[:method_call][start_index] = r0
3033
+
3034
+ r0
3035
+ end
3036
+
3037
+ def _nt_method
3038
+ start_index = index
3039
+ if node_cache[:method].has_key?(index)
3040
+ cached = node_cache[:method][index]
3041
+ if cached
3042
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3043
+ @index = cached.interval.end
3044
+ end
3045
+ return cached
3046
+ end
3047
+
3048
+ r0 = _nt_bareword
3049
+
3050
+ node_cache[:method][start_index] = r0
3051
+
3052
+ r0
3053
+ end
3054
+
3055
+ module CompareExpression0
3056
+ def rvalue1
3057
+ elements[0]
3058
+ end
3059
+
3060
+ def _1
3061
+ elements[1]
3062
+ end
3063
+
3064
+ def compare_operator
3065
+ elements[2]
3066
+ end
3067
+
3068
+ def _2
3069
+ elements[3]
3070
+ end
3071
+
3072
+ def rvalue2
3073
+ elements[4]
3074
+ end
3075
+ end
3076
+
3077
+ def _nt_compare_expression
3078
+ start_index = index
3079
+ if node_cache[:compare_expression].has_key?(index)
3080
+ cached = node_cache[:compare_expression][index]
3081
+ if cached
3082
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3083
+ @index = cached.interval.end
3084
+ end
3085
+ return cached
3086
+ end
3087
+
3088
+ i0, s0 = index, []
3089
+ r1 = _nt_rvalue
3090
+ s0 << r1
3091
+ if r1
3092
+ r2 = _nt__
3093
+ s0 << r2
3094
+ if r2
3095
+ r3 = _nt_compare_operator
3096
+ s0 << r3
3097
+ if r3
3098
+ r4 = _nt__
3099
+ s0 << r4
3100
+ if r4
3101
+ r5 = _nt_rvalue
3102
+ s0 << r5
3103
+ end
3104
+ end
3105
+ end
3106
+ end
3107
+ if s0.last
3108
+ r0 = instantiate_node(LogStash::Config::AST::ComparisonExpression,input, i0...index, s0)
3109
+ r0.extend(CompareExpression0)
3110
+ else
3111
+ @index = i0
3112
+ r0 = nil
3113
+ end
3114
+
3115
+ node_cache[:compare_expression][start_index] = r0
3116
+
3117
+ r0
3118
+ end
3119
+
3120
+ def _nt_compare_operator
3121
+ start_index = index
3122
+ if node_cache[:compare_operator].has_key?(index)
3123
+ cached = node_cache[:compare_operator][index]
3124
+ if cached
3125
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3126
+ @index = cached.interval.end
3127
+ end
3128
+ return cached
3129
+ end
3130
+
3131
+ i0 = index
3132
+ if has_terminal?("==", false, index)
3133
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 2))
3134
+ @index += 2
3135
+ else
3136
+ terminal_parse_failure("==")
3137
+ r1 = nil
3138
+ end
3139
+ if r1
3140
+ r0 = r1
3141
+ r0.extend(LogStash::Config::AST::ComparisonOperator)
3142
+ else
3143
+ if has_terminal?("!=", false, index)
3144
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 2))
3145
+ @index += 2
3146
+ else
3147
+ terminal_parse_failure("!=")
3148
+ r2 = nil
3149
+ end
3150
+ if r2
3151
+ r0 = r2
3152
+ r0.extend(LogStash::Config::AST::ComparisonOperator)
3153
+ else
3154
+ if has_terminal?("<=", false, index)
3155
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 2))
3156
+ @index += 2
3157
+ else
3158
+ terminal_parse_failure("<=")
3159
+ r3 = nil
3160
+ end
3161
+ if r3
3162
+ r0 = r3
3163
+ r0.extend(LogStash::Config::AST::ComparisonOperator)
3164
+ else
3165
+ if has_terminal?(">=", false, index)
3166
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 2))
3167
+ @index += 2
3168
+ else
3169
+ terminal_parse_failure(">=")
3170
+ r4 = nil
3171
+ end
3172
+ if r4
3173
+ r0 = r4
3174
+ r0.extend(LogStash::Config::AST::ComparisonOperator)
3175
+ else
3176
+ if has_terminal?("<", false, index)
3177
+ r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
3178
+ @index += 1
3179
+ else
3180
+ terminal_parse_failure("<")
3181
+ r5 = nil
3182
+ end
3183
+ if r5
3184
+ r0 = r5
3185
+ r0.extend(LogStash::Config::AST::ComparisonOperator)
3186
+ else
3187
+ if has_terminal?(">", false, index)
3188
+ r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
3189
+ @index += 1
3190
+ else
3191
+ terminal_parse_failure(">")
3192
+ r6 = nil
3193
+ end
3194
+ if r6
3195
+ r0 = r6
3196
+ r0.extend(LogStash::Config::AST::ComparisonOperator)
3197
+ else
3198
+ @index = i0
3199
+ r0 = nil
3200
+ end
3201
+ end
3202
+ end
3203
+ end
3204
+ end
3205
+ end
3206
+
3207
+ node_cache[:compare_operator][start_index] = r0
3208
+
3209
+ r0
3210
+ end
3211
+
3212
+ module RegexpExpression0
3213
+ def rvalue
3214
+ elements[0]
3215
+ end
3216
+
3217
+ def _1
3218
+ elements[1]
3219
+ end
3220
+
3221
+ def regexp_operator
3222
+ elements[2]
3223
+ end
3224
+
3225
+ def _2
3226
+ elements[3]
3227
+ end
3228
+
3229
+ end
3230
+
3231
+ def _nt_regexp_expression
3232
+ start_index = index
3233
+ if node_cache[:regexp_expression].has_key?(index)
3234
+ cached = node_cache[:regexp_expression][index]
3235
+ if cached
3236
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3237
+ @index = cached.interval.end
3238
+ end
3239
+ return cached
3240
+ end
3241
+
3242
+ i0, s0 = index, []
3243
+ r1 = _nt_rvalue
3244
+ s0 << r1
3245
+ if r1
3246
+ r2 = _nt__
3247
+ s0 << r2
3248
+ if r2
3249
+ r3 = _nt_regexp_operator
3250
+ s0 << r3
3251
+ if r3
3252
+ r4 = _nt__
3253
+ s0 << r4
3254
+ if r4
3255
+ i5 = index
3256
+ r6 = _nt_string
3257
+ if r6
3258
+ r5 = r6
3259
+ else
3260
+ r7 = _nt_regexp
3261
+ if r7
3262
+ r5 = r7
3263
+ else
3264
+ @index = i5
3265
+ r5 = nil
3266
+ end
3267
+ end
3268
+ s0 << r5
3269
+ end
3270
+ end
3271
+ end
3272
+ end
3273
+ if s0.last
3274
+ r0 = instantiate_node(LogStash::Config::AST::RegexpExpression,input, i0...index, s0)
3275
+ r0.extend(RegexpExpression0)
3276
+ else
3277
+ @index = i0
3278
+ r0 = nil
3279
+ end
3280
+
3281
+ node_cache[:regexp_expression][start_index] = r0
3282
+
3283
+ r0
3284
+ end
3285
+
3286
+ def _nt_regexp_operator
3287
+ start_index = index
3288
+ if node_cache[:regexp_operator].has_key?(index)
3289
+ cached = node_cache[:regexp_operator][index]
3290
+ if cached
3291
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3292
+ @index = cached.interval.end
3293
+ end
3294
+ return cached
3295
+ end
3296
+
3297
+ i0 = index
3298
+ if has_terminal?("=~", false, index)
3299
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 2))
3300
+ @index += 2
3301
+ else
3302
+ terminal_parse_failure("=~")
3303
+ r1 = nil
3304
+ end
3305
+ if r1
3306
+ r0 = r1
3307
+ r0.extend(LogStash::Config::AST::RegExpOperator)
3308
+ else
3309
+ if has_terminal?("!~", false, index)
3310
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 2))
3311
+ @index += 2
3312
+ else
3313
+ terminal_parse_failure("!~")
3314
+ r2 = nil
3315
+ end
3316
+ if r2
3317
+ r0 = r2
3318
+ r0.extend(LogStash::Config::AST::RegExpOperator)
3319
+ else
3320
+ @index = i0
3321
+ r0 = nil
3322
+ end
3323
+ end
3324
+
3325
+ node_cache[:regexp_operator][start_index] = r0
3326
+
3327
+ r0
3328
+ end
3329
+
3330
+ def _nt_boolean_operator
3331
+ start_index = index
3332
+ if node_cache[:boolean_operator].has_key?(index)
3333
+ cached = node_cache[:boolean_operator][index]
3334
+ if cached
3335
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3336
+ @index = cached.interval.end
3337
+ end
3338
+ return cached
3339
+ end
3340
+
3341
+ i0 = index
3342
+ if has_terminal?("and", false, index)
3343
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 3))
3344
+ @index += 3
3345
+ else
3346
+ terminal_parse_failure("and")
3347
+ r1 = nil
3348
+ end
3349
+ if r1
3350
+ r0 = r1
3351
+ r0.extend(LogStash::Config::AST::BooleanOperator)
3352
+ else
3353
+ if has_terminal?("or", false, index)
3354
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 2))
3355
+ @index += 2
3356
+ else
3357
+ terminal_parse_failure("or")
3358
+ r2 = nil
3359
+ end
3360
+ if r2
3361
+ r0 = r2
3362
+ r0.extend(LogStash::Config::AST::BooleanOperator)
3363
+ else
3364
+ if has_terminal?("xor", false, index)
3365
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 3))
3366
+ @index += 3
3367
+ else
3368
+ terminal_parse_failure("xor")
3369
+ r3 = nil
3370
+ end
3371
+ if r3
3372
+ r0 = r3
3373
+ r0.extend(LogStash::Config::AST::BooleanOperator)
3374
+ else
3375
+ if has_terminal?("nand", false, index)
3376
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 4))
3377
+ @index += 4
3378
+ else
3379
+ terminal_parse_failure("nand")
3380
+ r4 = nil
3381
+ end
3382
+ if r4
3383
+ r0 = r4
3384
+ r0.extend(LogStash::Config::AST::BooleanOperator)
3385
+ else
3386
+ @index = i0
3387
+ r0 = nil
3388
+ end
3389
+ end
3390
+ end
3391
+ end
3392
+
3393
+ node_cache[:boolean_operator][start_index] = r0
3394
+
3395
+ r0
3396
+ end
3397
+
3398
+ def _nt_selector
3399
+ start_index = index
3400
+ if node_cache[:selector].has_key?(index)
3401
+ cached = node_cache[:selector][index]
3402
+ if cached
3403
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3404
+ @index = cached.interval.end
3405
+ end
3406
+ return cached
3407
+ end
3408
+
3409
+ s0, i0 = [], index
3410
+ loop do
3411
+ r1 = _nt_selector_element
3412
+ if r1
3413
+ s0 << r1
3414
+ else
3415
+ break
3416
+ end
3417
+ end
3418
+ if s0.empty?
3419
+ @index = i0
3420
+ r0 = nil
3421
+ else
3422
+ r0 = instantiate_node(LogStash::Config::AST::Selector,input, i0...index, s0)
3423
+ end
3424
+
3425
+ node_cache[:selector][start_index] = r0
3426
+
3427
+ r0
3428
+ end
3429
+
3430
+ module SelectorElement0
3431
+ end
3432
+
3433
+ def _nt_selector_element
3434
+ start_index = index
3435
+ if node_cache[:selector_element].has_key?(index)
3436
+ cached = node_cache[:selector_element][index]
3437
+ if cached
3438
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3439
+ @index = cached.interval.end
3440
+ end
3441
+ return cached
3442
+ end
3443
+
3444
+ i0, s0 = index, []
3445
+ if has_terminal?("[", false, index)
3446
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
3447
+ @index += 1
3448
+ else
3449
+ terminal_parse_failure("[")
3450
+ r1 = nil
3451
+ end
3452
+ s0 << r1
3453
+ if r1
3454
+ s2, i2 = [], index
3455
+ loop do
3456
+ if has_terminal?('\G[^\\], ]', true, index)
3457
+ r3 = true
3458
+ @index += 1
3459
+ else
3460
+ r3 = nil
3461
+ end
3462
+ if r3
3463
+ s2 << r3
3464
+ else
3465
+ break
3466
+ end
3467
+ end
3468
+ if s2.empty?
3469
+ @index = i2
3470
+ r2 = nil
3471
+ else
3472
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3473
+ end
3474
+ s0 << r2
3475
+ if r2
3476
+ if has_terminal?("]", false, index)
3477
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
3478
+ @index += 1
3479
+ else
3480
+ terminal_parse_failure("]")
3481
+ r4 = nil
3482
+ end
3483
+ s0 << r4
3484
+ end
3485
+ end
3486
+ if s0.last
3487
+ r0 = instantiate_node(LogStash::Config::AST::SelectorElement,input, i0...index, s0)
3488
+ r0.extend(SelectorElement0)
3489
+ else
3490
+ @index = i0
3491
+ r0 = nil
3492
+ end
3493
+
3494
+ node_cache[:selector_element][start_index] = r0
3495
+
3496
+ r0
3497
+ end
3498
+
3499
+ end
3500
+
3501
+ class LogStashConfigParser < Treetop::Runtime::CompiledParser
3502
+ include LogStashConfig
3503
+ end
3504
+