personify 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. data/.gitignore +1 -0
  2. data/LICENSE +20 -0
  3. data/README.md +172 -0
  4. data/Rakefile +53 -0
  5. data/VERSION +1 -0
  6. data/doc/syntax_ideas.md +141 -0
  7. data/lib/personify/context.rb +55 -0
  8. data/lib/personify/parser/personify.rb +1071 -0
  9. data/lib/personify/parser/personify.treetop +107 -0
  10. data/lib/personify/parser/personify_node_classes.rb +121 -0
  11. data/lib/personify/template.rb +17 -0
  12. data/lib/personify.rb +8 -0
  13. data/script/generate_parser.rb +6 -0
  14. data/test/context_test.rb +122 -0
  15. data/test/fixtures/multiple_tags.txt +8 -0
  16. data/test/parse_runner.rb +60 -0
  17. data/test/parser_test.rb +291 -0
  18. data/test/test_helper.rb +16 -0
  19. data/vendor/treetop/.gitignore +5 -0
  20. data/vendor/treetop/History.txt +9 -0
  21. data/vendor/treetop/README +164 -0
  22. data/vendor/treetop/Rakefile +20 -0
  23. data/vendor/treetop/Treetop.tmbundle/Snippets/grammar ___ end.tmSnippet +20 -0
  24. data/vendor/treetop/Treetop.tmbundle/Snippets/rule ___ end.tmSnippet +18 -0
  25. data/vendor/treetop/Treetop.tmbundle/Syntaxes/Treetop Grammar.tmLanguage +251 -0
  26. data/vendor/treetop/Treetop.tmbundle/info.plist +10 -0
  27. data/vendor/treetop/bin/tt +28 -0
  28. data/vendor/treetop/doc/contributing_and_planned_features.markdown +103 -0
  29. data/vendor/treetop/doc/grammar_composition.markdown +65 -0
  30. data/vendor/treetop/doc/index.markdown +90 -0
  31. data/vendor/treetop/doc/pitfalls_and_advanced_techniques.markdown +51 -0
  32. data/vendor/treetop/doc/semantic_interpretation.markdown +189 -0
  33. data/vendor/treetop/doc/site.rb +110 -0
  34. data/vendor/treetop/doc/sitegen.rb +60 -0
  35. data/vendor/treetop/doc/syntactic_recognition.markdown +100 -0
  36. data/vendor/treetop/doc/using_in_ruby.markdown +21 -0
  37. data/vendor/treetop/examples/lambda_calculus/arithmetic.rb +551 -0
  38. data/vendor/treetop/examples/lambda_calculus/arithmetic.treetop +97 -0
  39. data/vendor/treetop/examples/lambda_calculus/arithmetic_node_classes.rb +7 -0
  40. data/vendor/treetop/examples/lambda_calculus/arithmetic_test.rb +54 -0
  41. data/vendor/treetop/examples/lambda_calculus/lambda_calculus +0 -0
  42. data/vendor/treetop/examples/lambda_calculus/lambda_calculus.rb +718 -0
  43. data/vendor/treetop/examples/lambda_calculus/lambda_calculus.treetop +132 -0
  44. data/vendor/treetop/examples/lambda_calculus/lambda_calculus_node_classes.rb +5 -0
  45. data/vendor/treetop/examples/lambda_calculus/lambda_calculus_test.rb +89 -0
  46. data/vendor/treetop/examples/lambda_calculus/test_helper.rb +18 -0
  47. data/vendor/treetop/lib/treetop/bootstrap_gen_1_metagrammar.rb +45 -0
  48. data/vendor/treetop/lib/treetop/compiler/grammar_compiler.rb +40 -0
  49. data/vendor/treetop/lib/treetop/compiler/lexical_address_space.rb +17 -0
  50. data/vendor/treetop/lib/treetop/compiler/metagrammar.rb +2955 -0
  51. data/vendor/treetop/lib/treetop/compiler/metagrammar.treetop +404 -0
  52. data/vendor/treetop/lib/treetop/compiler/node_classes/anything_symbol.rb +20 -0
  53. data/vendor/treetop/lib/treetop/compiler/node_classes/atomic_expression.rb +14 -0
  54. data/vendor/treetop/lib/treetop/compiler/node_classes/character_class.rb +22 -0
  55. data/vendor/treetop/lib/treetop/compiler/node_classes/choice.rb +31 -0
  56. data/vendor/treetop/lib/treetop/compiler/node_classes/declaration_sequence.rb +24 -0
  57. data/vendor/treetop/lib/treetop/compiler/node_classes/grammar.rb +28 -0
  58. data/vendor/treetop/lib/treetop/compiler/node_classes/inline_module.rb +27 -0
  59. data/vendor/treetop/lib/treetop/compiler/node_classes/nonterminal.rb +13 -0
  60. data/vendor/treetop/lib/treetop/compiler/node_classes/optional.rb +19 -0
  61. data/vendor/treetop/lib/treetop/compiler/node_classes/parenthesized_expression.rb +9 -0
  62. data/vendor/treetop/lib/treetop/compiler/node_classes/parsing_expression.rb +138 -0
  63. data/vendor/treetop/lib/treetop/compiler/node_classes/parsing_rule.rb +55 -0
  64. data/vendor/treetop/lib/treetop/compiler/node_classes/predicate.rb +45 -0
  65. data/vendor/treetop/lib/treetop/compiler/node_classes/repetition.rb +55 -0
  66. data/vendor/treetop/lib/treetop/compiler/node_classes/sequence.rb +68 -0
  67. data/vendor/treetop/lib/treetop/compiler/node_classes/terminal.rb +20 -0
  68. data/vendor/treetop/lib/treetop/compiler/node_classes/transient_prefix.rb +9 -0
  69. data/vendor/treetop/lib/treetop/compiler/node_classes/treetop_file.rb +9 -0
  70. data/vendor/treetop/lib/treetop/compiler/node_classes.rb +19 -0
  71. data/vendor/treetop/lib/treetop/compiler/ruby_builder.rb +113 -0
  72. data/vendor/treetop/lib/treetop/compiler.rb +6 -0
  73. data/vendor/treetop/lib/treetop/ruby_extensions/string.rb +42 -0
  74. data/vendor/treetop/lib/treetop/ruby_extensions.rb +2 -0
  75. data/vendor/treetop/lib/treetop/runtime/compiled_parser.rb +95 -0
  76. data/vendor/treetop/lib/treetop/runtime/interval_skip_list/head_node.rb +15 -0
  77. data/vendor/treetop/lib/treetop/runtime/interval_skip_list/interval_skip_list.rb +200 -0
  78. data/vendor/treetop/lib/treetop/runtime/interval_skip_list/node.rb +164 -0
  79. data/vendor/treetop/lib/treetop/runtime/interval_skip_list.rb +4 -0
  80. data/vendor/treetop/lib/treetop/runtime/syntax_node.rb +72 -0
  81. data/vendor/treetop/lib/treetop/runtime/terminal_parse_failure.rb +16 -0
  82. data/vendor/treetop/lib/treetop/runtime/terminal_syntax_node.rb +17 -0
  83. data/vendor/treetop/lib/treetop/runtime.rb +5 -0
  84. data/vendor/treetop/lib/treetop/version.rb +9 -0
  85. data/vendor/treetop/lib/treetop.rb +11 -0
  86. data/vendor/treetop/script/generate_metagrammar.rb +14 -0
  87. data/vendor/treetop/script/svnadd +11 -0
  88. data/vendor/treetop/script/svnrm +11 -0
  89. data/vendor/treetop/spec/compiler/and_predicate_spec.rb +36 -0
  90. data/vendor/treetop/spec/compiler/anything_symbol_spec.rb +52 -0
  91. data/vendor/treetop/spec/compiler/character_class_spec.rb +188 -0
  92. data/vendor/treetop/spec/compiler/choice_spec.rb +80 -0
  93. data/vendor/treetop/spec/compiler/circular_compilation_spec.rb +28 -0
  94. data/vendor/treetop/spec/compiler/failure_propagation_functional_spec.rb +21 -0
  95. data/vendor/treetop/spec/compiler/grammar_compiler_spec.rb +84 -0
  96. data/vendor/treetop/spec/compiler/grammar_spec.rb +41 -0
  97. data/vendor/treetop/spec/compiler/nonterminal_symbol_spec.rb +40 -0
  98. data/vendor/treetop/spec/compiler/not_predicate_spec.rb +38 -0
  99. data/vendor/treetop/spec/compiler/one_or_more_spec.rb +35 -0
  100. data/vendor/treetop/spec/compiler/optional_spec.rb +37 -0
  101. data/vendor/treetop/spec/compiler/parenthesized_expression_spec.rb +19 -0
  102. data/vendor/treetop/spec/compiler/parsing_rule_spec.rb +32 -0
  103. data/vendor/treetop/spec/compiler/sequence_spec.rb +115 -0
  104. data/vendor/treetop/spec/compiler/terminal_spec.rb +81 -0
  105. data/vendor/treetop/spec/compiler/terminal_symbol_spec.rb +37 -0
  106. data/vendor/treetop/spec/compiler/test_grammar.treetop +7 -0
  107. data/vendor/treetop/spec/compiler/test_grammar.tt +7 -0
  108. data/vendor/treetop/spec/compiler/test_grammar_do.treetop +7 -0
  109. data/vendor/treetop/spec/compiler/zero_or_more_spec.rb +56 -0
  110. data/vendor/treetop/spec/composition/a.treetop +11 -0
  111. data/vendor/treetop/spec/composition/b.treetop +11 -0
  112. data/vendor/treetop/spec/composition/c.treetop +10 -0
  113. data/vendor/treetop/spec/composition/d.treetop +10 -0
  114. data/vendor/treetop/spec/composition/grammar_composition_spec.rb +26 -0
  115. data/vendor/treetop/spec/ruby_extensions/string_spec.rb +32 -0
  116. data/vendor/treetop/spec/runtime/compiled_parser_spec.rb +101 -0
  117. data/vendor/treetop/spec/runtime/interval_skip_list/delete_spec.rb +147 -0
  118. data/vendor/treetop/spec/runtime/interval_skip_list/expire_range_spec.rb +349 -0
  119. data/vendor/treetop/spec/runtime/interval_skip_list/insert_and_delete_node.rb +385 -0
  120. data/vendor/treetop/spec/runtime/interval_skip_list/insert_spec.rb +660 -0
  121. data/vendor/treetop/spec/runtime/interval_skip_list/interval_skip_list_spec.graffle +6175 -0
  122. data/vendor/treetop/spec/runtime/interval_skip_list/interval_skip_list_spec.rb +58 -0
  123. data/vendor/treetop/spec/runtime/interval_skip_list/palindromic_fixture.rb +23 -0
  124. data/vendor/treetop/spec/runtime/interval_skip_list/palindromic_fixture_spec.rb +164 -0
  125. data/vendor/treetop/spec/runtime/interval_skip_list/spec_helper.rb +84 -0
  126. data/vendor/treetop/spec/runtime/syntax_node_spec.rb +53 -0
  127. data/vendor/treetop/spec/spec_helper.rb +106 -0
  128. data/vendor/treetop/spec/spec_suite.rb +4 -0
  129. data/vendor/treetop/treetop.gemspec +18 -0
  130. metadata +196 -0
@@ -0,0 +1,1071 @@
1
+ module PersonifyLanguage
2
+ include Treetop::Runtime
3
+
4
+ def root
5
+ @root || :template
6
+ end
7
+
8
+ def _nt_template
9
+ start_index = index
10
+ if node_cache[:template].has_key?(index)
11
+ cached = node_cache[:template][index]
12
+ @index = cached.interval.end if cached
13
+ return cached
14
+ end
15
+
16
+ s0, i0 = [], index
17
+ loop do
18
+ r1 = _nt_parts_including_tail
19
+ if r1
20
+ s0 << r1
21
+ else
22
+ break
23
+ end
24
+ end
25
+ r0 = instantiate_node(Template,input, i0...index, s0)
26
+
27
+ node_cache[:template][start_index] = r0
28
+
29
+ return r0
30
+ end
31
+
32
+ def _nt_parts_including_tail
33
+ start_index = index
34
+ if node_cache[:parts_including_tail].has_key?(index)
35
+ cached = node_cache[:parts_including_tail][index]
36
+ @index = cached.interval.end if cached
37
+ return cached
38
+ end
39
+
40
+ i0 = index
41
+ r1 = _nt_part
42
+ if r1
43
+ r0 = r1
44
+ else
45
+ r2 = _nt_tail_part
46
+ if r2
47
+ r0 = r2
48
+ else
49
+ self.index = i0
50
+ r0 = nil
51
+ end
52
+ end
53
+
54
+ node_cache[:parts_including_tail][start_index] = r0
55
+
56
+ return r0
57
+ end
58
+
59
+ def _nt_part
60
+ start_index = index
61
+ if node_cache[:part].has_key?(index)
62
+ cached = node_cache[:part][index]
63
+ @index = cached.interval.end if cached
64
+ return cached
65
+ end
66
+
67
+ i0 = index
68
+ r1 = _nt_text
69
+ if r1
70
+ r0 = r1
71
+ else
72
+ r2 = _nt_substitutable
73
+ if r2
74
+ r0 = r2
75
+ else
76
+ self.index = i0
77
+ r0 = nil
78
+ end
79
+ end
80
+
81
+ node_cache[:part][start_index] = r0
82
+
83
+ return r0
84
+ end
85
+
86
+ module TailPart0
87
+ def part
88
+ elements[1]
89
+ end
90
+ end
91
+
92
+ def _nt_tail_part
93
+ start_index = index
94
+ if node_cache[:tail_part].has_key?(index)
95
+ cached = node_cache[:tail_part][index]
96
+ @index = cached.interval.end if cached
97
+ return cached
98
+ end
99
+
100
+ i0, s0 = index, []
101
+ if input.index('[', index) == index
102
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
103
+ @index += 1
104
+ else
105
+ terminal_parse_failure('[')
106
+ r1 = nil
107
+ end
108
+ s0 << r1
109
+ if r1
110
+ r2 = _nt_part
111
+ s0 << r2
112
+ end
113
+ if s0.last
114
+ r0 = instantiate_node(TailPart,input, i0...index, s0)
115
+ r0.extend(TailPart0)
116
+ else
117
+ self.index = i0
118
+ r0 = nil
119
+ end
120
+
121
+ node_cache[:tail_part][start_index] = r0
122
+
123
+ return r0
124
+ end
125
+
126
+ module Substitutable0
127
+ def space
128
+ elements[1]
129
+ end
130
+
131
+ def expressions
132
+ elements[2]
133
+ end
134
+
135
+ def space
136
+ elements[3]
137
+ end
138
+
139
+ end
140
+
141
+ def _nt_substitutable
142
+ start_index = index
143
+ if node_cache[:substitutable].has_key?(index)
144
+ cached = node_cache[:substitutable][index]
145
+ @index = cached.interval.end if cached
146
+ return cached
147
+ end
148
+
149
+ i0, s0 = index, []
150
+ if input.index('[', index) == index
151
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
152
+ @index += 1
153
+ else
154
+ terminal_parse_failure('[')
155
+ r1 = nil
156
+ end
157
+ s0 << r1
158
+ if r1
159
+ r2 = _nt_space
160
+ s0 << r2
161
+ if r2
162
+ r3 = _nt_expressions
163
+ s0 << r3
164
+ if r3
165
+ r4 = _nt_space
166
+ s0 << r4
167
+ if r4
168
+ if input.index(']', index) == index
169
+ r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
170
+ @index += 1
171
+ else
172
+ terminal_parse_failure(']')
173
+ r5 = nil
174
+ end
175
+ s0 << r5
176
+ end
177
+ end
178
+ end
179
+ end
180
+ if s0.last
181
+ r0 = instantiate_node(Substitutable,input, i0...index, s0)
182
+ r0.extend(Substitutable0)
183
+ else
184
+ self.index = i0
185
+ r0 = nil
186
+ end
187
+
188
+ node_cache[:substitutable][start_index] = r0
189
+
190
+ return r0
191
+ end
192
+
193
+ module Block0
194
+ def space
195
+ elements[1]
196
+ end
197
+
198
+ def block_content
199
+ elements[3]
200
+ end
201
+
202
+ def space
203
+ elements[5]
204
+ end
205
+
206
+ end
207
+
208
+ def _nt_block
209
+ start_index = index
210
+ if node_cache[:block].has_key?(index)
211
+ cached = node_cache[:block][index]
212
+ @index = cached.interval.end if cached
213
+ return cached
214
+ end
215
+
216
+ i0, s0 = index, []
217
+ if input.index('DO', index) == index
218
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 2))
219
+ @index += 2
220
+ else
221
+ terminal_parse_failure('DO')
222
+ r1 = nil
223
+ end
224
+ s0 << r1
225
+ if r1
226
+ r2 = _nt_space
227
+ s0 << r2
228
+ if r2
229
+ if input.index(']', index) == index
230
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
231
+ @index += 1
232
+ else
233
+ terminal_parse_failure(']')
234
+ r3 = nil
235
+ end
236
+ s0 << r3
237
+ if r3
238
+ r4 = _nt_block_content
239
+ s0 << r4
240
+ if r4
241
+ if input.index('[', index) == index
242
+ r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
243
+ @index += 1
244
+ else
245
+ terminal_parse_failure('[')
246
+ r5 = nil
247
+ end
248
+ s0 << r5
249
+ if r5
250
+ r6 = _nt_space
251
+ s0 << r6
252
+ if r6
253
+ if input.index('END', index) == index
254
+ r7 = instantiate_node(SyntaxNode,input, index...(index + 3))
255
+ @index += 3
256
+ else
257
+ terminal_parse_failure('END')
258
+ r7 = nil
259
+ end
260
+ s0 << r7
261
+ end
262
+ end
263
+ end
264
+ end
265
+ end
266
+ end
267
+ if s0.last
268
+ r0 = instantiate_node(Block,input, i0...index, s0)
269
+ r0.extend(Block0)
270
+ else
271
+ self.index = i0
272
+ r0 = nil
273
+ end
274
+
275
+ node_cache[:block][start_index] = r0
276
+
277
+ return r0
278
+ end
279
+
280
+ def _nt_block_content
281
+ start_index = index
282
+ if node_cache[:block_content].has_key?(index)
283
+ cached = node_cache[:block_content][index]
284
+ @index = cached.interval.end if cached
285
+ return cached
286
+ end
287
+
288
+ s0, i0 = [], index
289
+ loop do
290
+ r1 = _nt_part
291
+ if r1
292
+ s0 << r1
293
+ else
294
+ break
295
+ end
296
+ end
297
+ r0 = instantiate_node(Literal,input, i0...index, s0)
298
+
299
+ node_cache[:block_content][start_index] = r0
300
+
301
+ return r0
302
+ end
303
+
304
+ module Expressions0
305
+ def space
306
+ elements[0]
307
+ end
308
+
309
+ def space
310
+ elements[2]
311
+ end
312
+
313
+ def expression_or_string
314
+ elements[3]
315
+ end
316
+ end
317
+
318
+ module Expressions1
319
+ def expression
320
+ elements[0]
321
+ end
322
+
323
+ def alternatives
324
+ elements[1]
325
+ end
326
+ end
327
+
328
+ def _nt_expressions
329
+ start_index = index
330
+ if node_cache[:expressions].has_key?(index)
331
+ cached = node_cache[:expressions][index]
332
+ @index = cached.interval.end if cached
333
+ return cached
334
+ end
335
+
336
+ i0, s0 = index, []
337
+ r1 = _nt_expression
338
+ s0 << r1
339
+ if r1
340
+ s2, i2 = [], index
341
+ loop do
342
+ i3, s3 = index, []
343
+ r4 = _nt_space
344
+ s3 << r4
345
+ if r4
346
+ if input.index("|", index) == index
347
+ r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
348
+ @index += 1
349
+ else
350
+ terminal_parse_failure("|")
351
+ r5 = nil
352
+ end
353
+ s3 << r5
354
+ if r5
355
+ r6 = _nt_space
356
+ s3 << r6
357
+ if r6
358
+ r7 = _nt_expression_or_string
359
+ s3 << r7
360
+ end
361
+ end
362
+ end
363
+ if s3.last
364
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
365
+ r3.extend(Expressions0)
366
+ else
367
+ self.index = i3
368
+ r3 = nil
369
+ end
370
+ if r3
371
+ s2 << r3
372
+ else
373
+ break
374
+ end
375
+ end
376
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
377
+ s0 << r2
378
+ end
379
+ if s0.last
380
+ r0 = instantiate_node(Expressions,input, i0...index, s0)
381
+ r0.extend(Expressions1)
382
+ else
383
+ self.index = i0
384
+ r0 = nil
385
+ end
386
+
387
+ node_cache[:expressions][start_index] = r0
388
+
389
+ return r0
390
+ end
391
+
392
+ def _nt_expression
393
+ start_index = index
394
+ if node_cache[:expression].has_key?(index)
395
+ cached = node_cache[:expression][index]
396
+ @index = cached.interval.end if cached
397
+ return cached
398
+ end
399
+
400
+ i0 = index
401
+ r1 = _nt_function
402
+ if r1
403
+ r0 = r1
404
+ else
405
+ r2 = _nt_logical
406
+ if r2
407
+ r0 = r2
408
+ else
409
+ r3 = _nt_key
410
+ if r3
411
+ r0 = r3
412
+ else
413
+ r4 = _nt_string
414
+ if r4
415
+ r0 = r4
416
+ else
417
+ self.index = i0
418
+ r0 = nil
419
+ end
420
+ end
421
+ end
422
+ end
423
+
424
+ node_cache[:expression][start_index] = r0
425
+
426
+ return r0
427
+ end
428
+
429
+ def _nt_expression_or_string
430
+ start_index = index
431
+ if node_cache[:expression_or_string].has_key?(index)
432
+ cached = node_cache[:expression_or_string][index]
433
+ @index = cached.interval.end if cached
434
+ return cached
435
+ end
436
+
437
+ i0 = index
438
+ r1 = _nt_expression
439
+ if r1
440
+ r0 = r1
441
+ else
442
+ r2 = _nt_implicit_string
443
+ if r2
444
+ r0 = r2
445
+ else
446
+ self.index = i0
447
+ r0 = nil
448
+ end
449
+ end
450
+
451
+ node_cache[:expression_or_string][start_index] = r0
452
+
453
+ return r0
454
+ end
455
+
456
+ module Function0
457
+ def key
458
+ elements[0]
459
+ end
460
+
461
+ def space
462
+ elements[1]
463
+ end
464
+
465
+ def space
466
+ elements[3]
467
+ end
468
+
469
+ def parameters
470
+ elements[4]
471
+ end
472
+
473
+ def space
474
+ elements[5]
475
+ end
476
+
477
+ def space
478
+ elements[7]
479
+ end
480
+
481
+ def block
482
+ elements[8]
483
+ end
484
+ end
485
+
486
+ def _nt_function
487
+ start_index = index
488
+ if node_cache[:function].has_key?(index)
489
+ cached = node_cache[:function][index]
490
+ @index = cached.interval.end if cached
491
+ return cached
492
+ end
493
+
494
+ i0, s0 = index, []
495
+ r1 = _nt_key
496
+ s0 << r1
497
+ if r1
498
+ r2 = _nt_space
499
+ s0 << r2
500
+ if r2
501
+ if input.index("(", index) == index
502
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
503
+ @index += 1
504
+ else
505
+ terminal_parse_failure("(")
506
+ r3 = nil
507
+ end
508
+ s0 << r3
509
+ if r3
510
+ r4 = _nt_space
511
+ s0 << r4
512
+ if r4
513
+ r5 = _nt_parameters
514
+ s0 << r5
515
+ if r5
516
+ r6 = _nt_space
517
+ s0 << r6
518
+ if r6
519
+ if input.index(")", index) == index
520
+ r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
521
+ @index += 1
522
+ else
523
+ terminal_parse_failure(")")
524
+ r7 = nil
525
+ end
526
+ s0 << r7
527
+ if r7
528
+ r8 = _nt_space
529
+ s0 << r8
530
+ if r8
531
+ r10 = _nt_block
532
+ if r10
533
+ r9 = r10
534
+ else
535
+ r9 = instantiate_node(SyntaxNode,input, index...index)
536
+ end
537
+ s0 << r9
538
+ end
539
+ end
540
+ end
541
+ end
542
+ end
543
+ end
544
+ end
545
+ end
546
+ if s0.last
547
+ r0 = instantiate_node(Function,input, i0...index, s0)
548
+ r0.extend(Function0)
549
+ else
550
+ self.index = i0
551
+ r0 = nil
552
+ end
553
+
554
+ node_cache[:function][start_index] = r0
555
+
556
+ return r0
557
+ end
558
+
559
+ module Parameters0
560
+ def space
561
+ elements[0]
562
+ end
563
+
564
+ def space
565
+ elements[2]
566
+ end
567
+
568
+ def expression_or_string
569
+ elements[3]
570
+ end
571
+ end
572
+
573
+ module Parameters1
574
+ def first_param
575
+ elements[0]
576
+ end
577
+
578
+ def more_expressions
579
+ elements[1]
580
+ end
581
+ end
582
+
583
+ def _nt_parameters
584
+ start_index = index
585
+ if node_cache[:parameters].has_key?(index)
586
+ cached = node_cache[:parameters][index]
587
+ @index = cached.interval.end if cached
588
+ return cached
589
+ end
590
+
591
+ i0, s0 = index, []
592
+ r2 = _nt_expression_or_string
593
+ if r2
594
+ r1 = r2
595
+ else
596
+ r1 = instantiate_node(SyntaxNode,input, index...index)
597
+ end
598
+ s0 << r1
599
+ if r1
600
+ s3, i3 = [], index
601
+ loop do
602
+ i4, s4 = index, []
603
+ r5 = _nt_space
604
+ s4 << r5
605
+ if r5
606
+ if input.index(",", index) == index
607
+ r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
608
+ @index += 1
609
+ else
610
+ terminal_parse_failure(",")
611
+ r6 = nil
612
+ end
613
+ s4 << r6
614
+ if r6
615
+ r7 = _nt_space
616
+ s4 << r7
617
+ if r7
618
+ r8 = _nt_expression_or_string
619
+ s4 << r8
620
+ end
621
+ end
622
+ end
623
+ if s4.last
624
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
625
+ r4.extend(Parameters0)
626
+ else
627
+ self.index = i4
628
+ r4 = nil
629
+ end
630
+ if r4
631
+ s3 << r4
632
+ else
633
+ break
634
+ end
635
+ end
636
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
637
+ s0 << r3
638
+ end
639
+ if s0.last
640
+ r0 = instantiate_node(Parameter,input, i0...index, s0)
641
+ r0.extend(Parameters1)
642
+ else
643
+ self.index = i0
644
+ r0 = nil
645
+ end
646
+
647
+ node_cache[:parameters][start_index] = r0
648
+
649
+ return r0
650
+ end
651
+
652
+ module Logical0
653
+ def first_expression
654
+ elements[0]
655
+ end
656
+
657
+ def space
658
+ elements[1]
659
+ end
660
+
661
+ def operator
662
+ elements[2]
663
+ end
664
+
665
+ def space
666
+ elements[3]
667
+ end
668
+
669
+ def next_expression
670
+ elements[4]
671
+ end
672
+ end
673
+
674
+ def _nt_logical
675
+ start_index = index
676
+ if node_cache[:logical].has_key?(index)
677
+ cached = node_cache[:logical][index]
678
+ @index = cached.interval.end if cached
679
+ return cached
680
+ end
681
+
682
+ i0, s0 = index, []
683
+ i1 = index
684
+ r2 = _nt_function
685
+ if r2
686
+ r1 = r2
687
+ else
688
+ r3 = _nt_key
689
+ if r3
690
+ r1 = r3
691
+ else
692
+ r4 = _nt_string
693
+ if r4
694
+ r1 = r4
695
+ else
696
+ self.index = i1
697
+ r1 = nil
698
+ end
699
+ end
700
+ end
701
+ s0 << r1
702
+ if r1
703
+ r5 = _nt_space
704
+ s0 << r5
705
+ if r5
706
+ i6 = index
707
+ if input.index("||", index) == index
708
+ r7 = instantiate_node(SyntaxNode,input, index...(index + 2))
709
+ @index += 2
710
+ else
711
+ terminal_parse_failure("||")
712
+ r7 = nil
713
+ end
714
+ if r7
715
+ r6 = r7
716
+ else
717
+ if input.index("&&", index) == index
718
+ r8 = instantiate_node(SyntaxNode,input, index...(index + 2))
719
+ @index += 2
720
+ else
721
+ terminal_parse_failure("&&")
722
+ r8 = nil
723
+ end
724
+ if r8
725
+ r6 = r8
726
+ else
727
+ self.index = i6
728
+ r6 = nil
729
+ end
730
+ end
731
+ s0 << r6
732
+ if r6
733
+ r9 = _nt_space
734
+ s0 << r9
735
+ if r9
736
+ r10 = _nt_expression
737
+ s0 << r10
738
+ end
739
+ end
740
+ end
741
+ end
742
+ if s0.last
743
+ r0 = instantiate_node(Logical,input, i0...index, s0)
744
+ r0.extend(Logical0)
745
+ else
746
+ self.index = i0
747
+ r0 = nil
748
+ end
749
+
750
+ node_cache[:logical][start_index] = r0
751
+
752
+ return r0
753
+ end
754
+
755
+ module Key0
756
+ end
757
+
758
+ module Key1
759
+ end
760
+
761
+ def _nt_key
762
+ start_index = index
763
+ if node_cache[:key].has_key?(index)
764
+ cached = node_cache[:key][index]
765
+ @index = cached.interval.end if cached
766
+ return cached
767
+ end
768
+
769
+ i0, s0 = index, []
770
+ i1 = index
771
+ r2 = _nt_reserved
772
+ if r2
773
+ r1 = nil
774
+ else
775
+ self.index = i1
776
+ r1 = instantiate_node(SyntaxNode,input, index...index)
777
+ end
778
+ s0 << r1
779
+ if r1
780
+ i3, s3 = index, []
781
+ if input.index(Regexp.new('[A-Z0-9]',nil,'u'), index) == index
782
+ next_character = index + input[index..-1].match(/\A(.)/um).end(1)
783
+ r4 = instantiate_node(SyntaxNode,input, index...next_character)
784
+ @index = next_character
785
+ else
786
+ r4 = nil
787
+ end
788
+ s3 << r4
789
+ if r4
790
+ s5, i5 = [], index
791
+ loop do
792
+ if input.index(Regexp.new('[A-Z0-9._]',nil,'u'), index) == index
793
+ next_character = index + input[index..-1].match(/\A(.)/um).end(1)
794
+ r6 = instantiate_node(SyntaxNode,input, index...next_character)
795
+ @index = next_character
796
+ else
797
+ r6 = nil
798
+ end
799
+ if r6
800
+ s5 << r6
801
+ else
802
+ break
803
+ end
804
+ end
805
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
806
+ s3 << r5
807
+ end
808
+ if s3.last
809
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
810
+ r3.extend(Key0)
811
+ else
812
+ self.index = i3
813
+ r3 = nil
814
+ end
815
+ s0 << r3
816
+ end
817
+ if s0.last
818
+ r0 = instantiate_node(Key,input, i0...index, s0)
819
+ r0.extend(Key1)
820
+ else
821
+ self.index = i0
822
+ r0 = nil
823
+ end
824
+
825
+ node_cache[:key][start_index] = r0
826
+
827
+ return r0
828
+ end
829
+
830
+ def _nt_reserved
831
+ start_index = index
832
+ if node_cache[:reserved].has_key?(index)
833
+ cached = node_cache[:reserved][index]
834
+ @index = cached.interval.end if cached
835
+ return cached
836
+ end
837
+
838
+ i0 = index
839
+ if input.index("END", index) == index
840
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 3))
841
+ @index += 3
842
+ else
843
+ terminal_parse_failure("END")
844
+ r1 = nil
845
+ end
846
+ if r1
847
+ r0 = r1
848
+ else
849
+ if input.index("DO", index) == index
850
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 2))
851
+ @index += 2
852
+ else
853
+ terminal_parse_failure("DO")
854
+ r2 = nil
855
+ end
856
+ if r2
857
+ r0 = r2
858
+ else
859
+ self.index = i0
860
+ r0 = nil
861
+ end
862
+ end
863
+
864
+ node_cache[:reserved][start_index] = r0
865
+
866
+ return r0
867
+ end
868
+
869
+ module String0
870
+ def string_value
871
+ elements[1]
872
+ end
873
+
874
+ end
875
+
876
+ def _nt_string
877
+ start_index = index
878
+ if node_cache[:string].has_key?(index)
879
+ cached = node_cache[:string][index]
880
+ @index = cached.interval.end if cached
881
+ return cached
882
+ end
883
+
884
+ i0, s0 = index, []
885
+ if input.index('"', index) == index
886
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
887
+ @index += 1
888
+ else
889
+ terminal_parse_failure('"')
890
+ r1 = nil
891
+ end
892
+ s0 << r1
893
+ if r1
894
+ r2 = _nt_string_value
895
+ s0 << r2
896
+ if r2
897
+ if input.index('"', index) == index
898
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
899
+ @index += 1
900
+ else
901
+ terminal_parse_failure('"')
902
+ r3 = nil
903
+ end
904
+ s0 << r3
905
+ end
906
+ end
907
+ if s0.last
908
+ r0 = instantiate_node(PString,input, i0...index, s0)
909
+ r0.extend(String0)
910
+ else
911
+ self.index = i0
912
+ r0 = nil
913
+ end
914
+
915
+ node_cache[:string][start_index] = r0
916
+
917
+ return r0
918
+ end
919
+
920
+ def _nt_implicit_string
921
+ start_index = index
922
+ if node_cache[:implicit_string].has_key?(index)
923
+ cached = node_cache[:implicit_string][index]
924
+ @index = cached.interval.end if cached
925
+ return cached
926
+ end
927
+
928
+ s0, i0 = [], index
929
+ loop do
930
+ if input.index(Regexp.new('[^|\\],)]',nil,'u'), index) == index
931
+ next_character = index + input[index..-1].match(/\A(.)/um).end(1)
932
+ r1 = instantiate_node(SyntaxNode,input, index...next_character)
933
+ @index = next_character
934
+ else
935
+ r1 = nil
936
+ end
937
+ if r1
938
+ s0 << r1
939
+ else
940
+ break
941
+ end
942
+ end
943
+ if s0.empty?
944
+ self.index = i0
945
+ r0 = nil
946
+ else
947
+ r0 = instantiate_node(Literal,input, i0...index, s0)
948
+ end
949
+
950
+ node_cache[:implicit_string][start_index] = r0
951
+
952
+ return r0
953
+ end
954
+
955
+ def _nt_string_value
956
+ start_index = index
957
+ if node_cache[:string_value].has_key?(index)
958
+ cached = node_cache[:string_value][index]
959
+ @index = cached.interval.end if cached
960
+ return cached
961
+ end
962
+
963
+ s0, i0 = [], index
964
+ loop do
965
+ if input.index(Regexp.new('[^"]',nil,'u'), index) == index
966
+ next_character = index + input[index..-1].match(/\A(.)/um).end(1)
967
+ r1 = instantiate_node(SyntaxNode,input, index...next_character)
968
+ @index = next_character
969
+ else
970
+ r1 = nil
971
+ end
972
+ if r1
973
+ s0 << r1
974
+ else
975
+ break
976
+ end
977
+ end
978
+ r0 = instantiate_node(Literal,input, i0...index, s0)
979
+
980
+ node_cache[:string_value][start_index] = r0
981
+
982
+ return r0
983
+ end
984
+
985
+ module Text0
986
+ end
987
+
988
+ def _nt_text
989
+ start_index = index
990
+ if node_cache[:text].has_key?(index)
991
+ cached = node_cache[:text][index]
992
+ @index = cached.interval.end if cached
993
+ return cached
994
+ end
995
+
996
+ i0, s0 = index, []
997
+ if input.index(Regexp.new('[^\\[]',nil,'u'), index) == index
998
+ next_character = index + input[index..-1].match(/\A(.)/um).end(1)
999
+ r1 = instantiate_node(SyntaxNode,input, index...next_character)
1000
+ @index = next_character
1001
+ else
1002
+ r1 = nil
1003
+ end
1004
+ s0 << r1
1005
+ if r1
1006
+ s2, i2 = [], index
1007
+ loop do
1008
+ if input.index(Regexp.new('[^\\[]',nil,'u'), index) == index
1009
+ next_character = index + input[index..-1].match(/\A(.)/um).end(1)
1010
+ r3 = instantiate_node(SyntaxNode,input, index...next_character)
1011
+ @index = next_character
1012
+ else
1013
+ r3 = nil
1014
+ end
1015
+ if r3
1016
+ s2 << r3
1017
+ else
1018
+ break
1019
+ end
1020
+ end
1021
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1022
+ s0 << r2
1023
+ end
1024
+ if s0.last
1025
+ r0 = instantiate_node(Literal,input, i0...index, s0)
1026
+ r0.extend(Text0)
1027
+ else
1028
+ self.index = i0
1029
+ r0 = nil
1030
+ end
1031
+
1032
+ node_cache[:text][start_index] = r0
1033
+
1034
+ return r0
1035
+ end
1036
+
1037
+ def _nt_space
1038
+ start_index = index
1039
+ if node_cache[:space].has_key?(index)
1040
+ cached = node_cache[:space][index]
1041
+ @index = cached.interval.end if cached
1042
+ return cached
1043
+ end
1044
+
1045
+ s0, i0 = [], index
1046
+ loop do
1047
+ if input.index(Regexp.new('[ \\n]',nil,'u'), index) == index
1048
+ next_character = index + input[index..-1].match(/\A(.)/um).end(1)
1049
+ r1 = instantiate_node(SyntaxNode,input, index...next_character)
1050
+ @index = next_character
1051
+ else
1052
+ r1 = nil
1053
+ end
1054
+ if r1
1055
+ s0 << r1
1056
+ else
1057
+ break
1058
+ end
1059
+ end
1060
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1061
+
1062
+ node_cache[:space][start_index] = r0
1063
+
1064
+ return r0
1065
+ end
1066
+
1067
+ end
1068
+
1069
+ class PersonifyLanguageParser < Treetop::Runtime::CompiledParser
1070
+ include PersonifyLanguage
1071
+ end