logstash-lib 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
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
+