personify 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. data/.gitignore +2 -1
  2. data/.rvmrc +1 -0
  3. data/Rakefile +1 -0
  4. data/VERSION +1 -1
  5. data/lib/personify/parser/personify.rb +178 -122
  6. data/lib/personify.rb +1 -1
  7. data/test/context_test.rb +3 -3
  8. data/test/parse_runner.rb +1 -2
  9. data/test/parser_test.rb +3 -3
  10. metadata +42 -120
  11. data/vendor/treetop/.gitignore +0 -5
  12. data/vendor/treetop/History.txt +0 -9
  13. data/vendor/treetop/README +0 -164
  14. data/vendor/treetop/Rakefile +0 -20
  15. data/vendor/treetop/Treetop.tmbundle/Snippets/grammar ___ end.tmSnippet +0 -20
  16. data/vendor/treetop/Treetop.tmbundle/Snippets/rule ___ end.tmSnippet +0 -18
  17. data/vendor/treetop/Treetop.tmbundle/Syntaxes/Treetop Grammar.tmLanguage +0 -251
  18. data/vendor/treetop/Treetop.tmbundle/info.plist +0 -10
  19. data/vendor/treetop/bin/tt +0 -28
  20. data/vendor/treetop/doc/contributing_and_planned_features.markdown +0 -103
  21. data/vendor/treetop/doc/grammar_composition.markdown +0 -65
  22. data/vendor/treetop/doc/index.markdown +0 -90
  23. data/vendor/treetop/doc/pitfalls_and_advanced_techniques.markdown +0 -51
  24. data/vendor/treetop/doc/semantic_interpretation.markdown +0 -189
  25. data/vendor/treetop/doc/site.rb +0 -110
  26. data/vendor/treetop/doc/sitegen.rb +0 -60
  27. data/vendor/treetop/doc/syntactic_recognition.markdown +0 -100
  28. data/vendor/treetop/doc/using_in_ruby.markdown +0 -21
  29. data/vendor/treetop/examples/lambda_calculus/arithmetic.rb +0 -551
  30. data/vendor/treetop/examples/lambda_calculus/arithmetic.treetop +0 -97
  31. data/vendor/treetop/examples/lambda_calculus/arithmetic_node_classes.rb +0 -7
  32. data/vendor/treetop/examples/lambda_calculus/arithmetic_test.rb +0 -54
  33. data/vendor/treetop/examples/lambda_calculus/lambda_calculus +0 -0
  34. data/vendor/treetop/examples/lambda_calculus/lambda_calculus.rb +0 -718
  35. data/vendor/treetop/examples/lambda_calculus/lambda_calculus.treetop +0 -132
  36. data/vendor/treetop/examples/lambda_calculus/lambda_calculus_node_classes.rb +0 -5
  37. data/vendor/treetop/examples/lambda_calculus/lambda_calculus_test.rb +0 -89
  38. data/vendor/treetop/examples/lambda_calculus/test_helper.rb +0 -18
  39. data/vendor/treetop/lib/treetop/bootstrap_gen_1_metagrammar.rb +0 -45
  40. data/vendor/treetop/lib/treetop/compiler/grammar_compiler.rb +0 -40
  41. data/vendor/treetop/lib/treetop/compiler/lexical_address_space.rb +0 -17
  42. data/vendor/treetop/lib/treetop/compiler/metagrammar.rb +0 -2955
  43. data/vendor/treetop/lib/treetop/compiler/metagrammar.treetop +0 -404
  44. data/vendor/treetop/lib/treetop/compiler/node_classes/anything_symbol.rb +0 -20
  45. data/vendor/treetop/lib/treetop/compiler/node_classes/atomic_expression.rb +0 -14
  46. data/vendor/treetop/lib/treetop/compiler/node_classes/character_class.rb +0 -22
  47. data/vendor/treetop/lib/treetop/compiler/node_classes/choice.rb +0 -31
  48. data/vendor/treetop/lib/treetop/compiler/node_classes/declaration_sequence.rb +0 -24
  49. data/vendor/treetop/lib/treetop/compiler/node_classes/grammar.rb +0 -28
  50. data/vendor/treetop/lib/treetop/compiler/node_classes/inline_module.rb +0 -27
  51. data/vendor/treetop/lib/treetop/compiler/node_classes/nonterminal.rb +0 -13
  52. data/vendor/treetop/lib/treetop/compiler/node_classes/optional.rb +0 -19
  53. data/vendor/treetop/lib/treetop/compiler/node_classes/parenthesized_expression.rb +0 -9
  54. data/vendor/treetop/lib/treetop/compiler/node_classes/parsing_expression.rb +0 -138
  55. data/vendor/treetop/lib/treetop/compiler/node_classes/parsing_rule.rb +0 -55
  56. data/vendor/treetop/lib/treetop/compiler/node_classes/predicate.rb +0 -45
  57. data/vendor/treetop/lib/treetop/compiler/node_classes/repetition.rb +0 -55
  58. data/vendor/treetop/lib/treetop/compiler/node_classes/sequence.rb +0 -68
  59. data/vendor/treetop/lib/treetop/compiler/node_classes/terminal.rb +0 -20
  60. data/vendor/treetop/lib/treetop/compiler/node_classes/transient_prefix.rb +0 -9
  61. data/vendor/treetop/lib/treetop/compiler/node_classes/treetop_file.rb +0 -9
  62. data/vendor/treetop/lib/treetop/compiler/node_classes.rb +0 -19
  63. data/vendor/treetop/lib/treetop/compiler/ruby_builder.rb +0 -113
  64. data/vendor/treetop/lib/treetop/compiler.rb +0 -6
  65. data/vendor/treetop/lib/treetop/ruby_extensions/string.rb +0 -42
  66. data/vendor/treetop/lib/treetop/ruby_extensions.rb +0 -2
  67. data/vendor/treetop/lib/treetop/runtime/compiled_parser.rb +0 -95
  68. data/vendor/treetop/lib/treetop/runtime/interval_skip_list/head_node.rb +0 -15
  69. data/vendor/treetop/lib/treetop/runtime/interval_skip_list/interval_skip_list.rb +0 -200
  70. data/vendor/treetop/lib/treetop/runtime/interval_skip_list/node.rb +0 -164
  71. data/vendor/treetop/lib/treetop/runtime/interval_skip_list.rb +0 -4
  72. data/vendor/treetop/lib/treetop/runtime/syntax_node.rb +0 -72
  73. data/vendor/treetop/lib/treetop/runtime/terminal_parse_failure.rb +0 -16
  74. data/vendor/treetop/lib/treetop/runtime/terminal_syntax_node.rb +0 -17
  75. data/vendor/treetop/lib/treetop/runtime.rb +0 -5
  76. data/vendor/treetop/lib/treetop/version.rb +0 -9
  77. data/vendor/treetop/lib/treetop.rb +0 -11
  78. data/vendor/treetop/script/generate_metagrammar.rb +0 -14
  79. data/vendor/treetop/script/svnadd +0 -11
  80. data/vendor/treetop/script/svnrm +0 -11
  81. data/vendor/treetop/spec/compiler/and_predicate_spec.rb +0 -36
  82. data/vendor/treetop/spec/compiler/anything_symbol_spec.rb +0 -52
  83. data/vendor/treetop/spec/compiler/character_class_spec.rb +0 -188
  84. data/vendor/treetop/spec/compiler/choice_spec.rb +0 -80
  85. data/vendor/treetop/spec/compiler/circular_compilation_spec.rb +0 -28
  86. data/vendor/treetop/spec/compiler/failure_propagation_functional_spec.rb +0 -21
  87. data/vendor/treetop/spec/compiler/grammar_compiler_spec.rb +0 -84
  88. data/vendor/treetop/spec/compiler/grammar_spec.rb +0 -41
  89. data/vendor/treetop/spec/compiler/nonterminal_symbol_spec.rb +0 -40
  90. data/vendor/treetop/spec/compiler/not_predicate_spec.rb +0 -38
  91. data/vendor/treetop/spec/compiler/one_or_more_spec.rb +0 -35
  92. data/vendor/treetop/spec/compiler/optional_spec.rb +0 -37
  93. data/vendor/treetop/spec/compiler/parenthesized_expression_spec.rb +0 -19
  94. data/vendor/treetop/spec/compiler/parsing_rule_spec.rb +0 -32
  95. data/vendor/treetop/spec/compiler/sequence_spec.rb +0 -115
  96. data/vendor/treetop/spec/compiler/terminal_spec.rb +0 -81
  97. data/vendor/treetop/spec/compiler/terminal_symbol_spec.rb +0 -37
  98. data/vendor/treetop/spec/compiler/test_grammar.treetop +0 -7
  99. data/vendor/treetop/spec/compiler/test_grammar.tt +0 -7
  100. data/vendor/treetop/spec/compiler/test_grammar_do.treetop +0 -7
  101. data/vendor/treetop/spec/compiler/zero_or_more_spec.rb +0 -56
  102. data/vendor/treetop/spec/composition/a.treetop +0 -11
  103. data/vendor/treetop/spec/composition/b.treetop +0 -11
  104. data/vendor/treetop/spec/composition/c.treetop +0 -10
  105. data/vendor/treetop/spec/composition/d.treetop +0 -10
  106. data/vendor/treetop/spec/composition/grammar_composition_spec.rb +0 -26
  107. data/vendor/treetop/spec/ruby_extensions/string_spec.rb +0 -32
  108. data/vendor/treetop/spec/runtime/compiled_parser_spec.rb +0 -101
  109. data/vendor/treetop/spec/runtime/interval_skip_list/delete_spec.rb +0 -147
  110. data/vendor/treetop/spec/runtime/interval_skip_list/expire_range_spec.rb +0 -349
  111. data/vendor/treetop/spec/runtime/interval_skip_list/insert_and_delete_node.rb +0 -385
  112. data/vendor/treetop/spec/runtime/interval_skip_list/insert_spec.rb +0 -660
  113. data/vendor/treetop/spec/runtime/interval_skip_list/interval_skip_list_spec.graffle +0 -6175
  114. data/vendor/treetop/spec/runtime/interval_skip_list/interval_skip_list_spec.rb +0 -58
  115. data/vendor/treetop/spec/runtime/interval_skip_list/palindromic_fixture.rb +0 -23
  116. data/vendor/treetop/spec/runtime/interval_skip_list/palindromic_fixture_spec.rb +0 -164
  117. data/vendor/treetop/spec/runtime/interval_skip_list/spec_helper.rb +0 -84
  118. data/vendor/treetop/spec/runtime/syntax_node_spec.rb +0 -53
  119. data/vendor/treetop/spec/spec_helper.rb +0 -106
  120. data/vendor/treetop/spec/spec_suite.rb +0 -4
  121. data/vendor/treetop/treetop.gemspec +0 -18
@@ -1,718 +0,0 @@
1
- module LambdaCalculus
2
- include Treetop::Runtime
3
-
4
- def root
5
- @root || :program
6
- end
7
-
8
- include Arithmetic
9
-
10
- module Program0
11
- def space
12
- elements[1]
13
- end
14
-
15
- def expression
16
- elements[2]
17
- end
18
- end
19
-
20
- module Program1
21
- def expression
22
- elements[0]
23
- end
24
-
25
- def more_expressions
26
- elements[1]
27
- end
28
- end
29
-
30
- module Program2
31
- def eval(env={})
32
- env = env.clone
33
- last_eval = nil
34
- expressions.each do |exp|
35
- last_eval = exp.eval(env)
36
- end
37
- last_eval
38
- end
39
-
40
- def expressions
41
- [expression] + more_expressions.elements.map {|elt| elt.expression}
42
- end
43
- end
44
-
45
- def _nt_program
46
- start_index = index
47
- cached = node_cache[:program][index]
48
- if cached
49
- @index = cached.interval.end
50
- return cached
51
- end
52
-
53
- i0, s0 = index, []
54
- r1 = _nt_expression
55
- s0 << r1
56
- if r1.success?
57
- s2, i2 = [], index
58
- loop do
59
- i3, s3 = index, []
60
- r4 = parse_terminal(';', SyntaxNode)
61
- s3 << r4
62
- if r4.success?
63
- r5 = _nt_space
64
- s3 << r5
65
- if r5.success?
66
- r6 = _nt_expression
67
- s3 << r6
68
- end
69
- end
70
- if s3.last.success?
71
- r3 = (SyntaxNode).new(input, i3...index, s3)
72
- r3.extend(Program0)
73
- else
74
- self.index = i3
75
- r3 = ParseFailure.new(input, i3)
76
- end
77
- if r3.success?
78
- s2 << r3
79
- else
80
- break
81
- end
82
- end
83
- r2 = SyntaxNode.new(input, i2...index, s2)
84
- s0 << r2
85
- end
86
- if s0.last.success?
87
- r0 = (SyntaxNode).new(input, i0...index, s0)
88
- r0.extend(Program1)
89
- r0.extend(Program2)
90
- else
91
- self.index = i0
92
- r0 = ParseFailure.new(input, i0)
93
- end
94
-
95
- node_cache[:program][start_index] = r0
96
-
97
- return r0
98
- end
99
-
100
- def _nt_expression
101
- start_index = index
102
- cached = node_cache[:expression][index]
103
- if cached
104
- @index = cached.interval.end
105
- return cached
106
- end
107
-
108
- i0 = index
109
- r1 = _nt_definition
110
- if r1.success?
111
- r0 = r1
112
- else
113
- r2 = _nt_conditional
114
- if r2.success?
115
- r0 = r2
116
- else
117
- r3 = _nt_application
118
- if r3.success?
119
- r0 = r3
120
- else
121
- r4 = _nt_function
122
- if r4.success?
123
- r0 = r4
124
- else
125
- r5 = super
126
- if r5.success?
127
- r0 = r5
128
- else
129
- self.index = i0
130
- r0 = ParseFailure.new(input, i0)
131
- end
132
- end
133
- end
134
- end
135
- end
136
-
137
- node_cache[:expression][start_index] = r0
138
-
139
- return r0
140
- end
141
-
142
- module Definition0
143
- def space
144
- elements[1]
145
- end
146
-
147
- def variable
148
- elements[2]
149
- end
150
-
151
- def space
152
- elements[3]
153
- end
154
-
155
- def expression
156
- elements[4]
157
- end
158
- end
159
-
160
- module Definition1
161
- def eval(env)
162
- env[variable.name] = expression.eval(env)
163
- end
164
- end
165
-
166
- def _nt_definition
167
- start_index = index
168
- cached = node_cache[:definition][index]
169
- if cached
170
- @index = cached.interval.end
171
- return cached
172
- end
173
-
174
- i0, s0 = index, []
175
- r1 = parse_terminal('def', SyntaxNode)
176
- s0 << r1
177
- if r1.success?
178
- r2 = _nt_space
179
- s0 << r2
180
- if r2.success?
181
- r3 = _nt_variable
182
- s0 << r3
183
- if r3.success?
184
- r4 = _nt_space
185
- s0 << r4
186
- if r4.success?
187
- r5 = _nt_expression
188
- s0 << r5
189
- end
190
- end
191
- end
192
- end
193
- if s0.last.success?
194
- r0 = (SyntaxNode).new(input, i0...index, s0)
195
- r0.extend(Definition0)
196
- r0.extend(Definition1)
197
- else
198
- self.index = i0
199
- r0 = ParseFailure.new(input, i0)
200
- end
201
-
202
- node_cache[:definition][start_index] = r0
203
-
204
- return r0
205
- end
206
-
207
- module Conditional0
208
- def space
209
- elements[1]
210
- end
211
-
212
- def space
213
- elements[3]
214
- end
215
-
216
- def condition
217
- elements[4]
218
- end
219
-
220
- def space
221
- elements[5]
222
- end
223
-
224
- def space
225
- elements[7]
226
- end
227
-
228
- def true_case
229
- elements[8]
230
- end
231
-
232
- def space
233
- elements[9]
234
- end
235
-
236
- def space
237
- elements[11]
238
- end
239
-
240
- def false_case
241
- elements[12]
242
- end
243
- end
244
-
245
- module Conditional1
246
- def eval(env)
247
- if condition.eval(env)
248
- true_case.eval(env)
249
- else
250
- false_case.eval(env)
251
- end
252
- end
253
- end
254
-
255
- def _nt_conditional
256
- start_index = index
257
- cached = node_cache[:conditional][index]
258
- if cached
259
- @index = cached.interval.end
260
- return cached
261
- end
262
-
263
- i0, s0 = index, []
264
- r1 = parse_terminal('if', SyntaxNode)
265
- s0 << r1
266
- if r1.success?
267
- r2 = _nt_space
268
- s0 << r2
269
- if r2.success?
270
- r3 = parse_terminal('(', SyntaxNode)
271
- s0 << r3
272
- if r3.success?
273
- r4 = _nt_space
274
- s0 << r4
275
- if r4.success?
276
- r5 = _nt_expression
277
- s0 << r5
278
- if r5.success?
279
- r6 = _nt_space
280
- s0 << r6
281
- if r6.success?
282
- r7 = parse_terminal(')', SyntaxNode)
283
- s0 << r7
284
- if r7.success?
285
- r8 = _nt_space
286
- s0 << r8
287
- if r8.success?
288
- r9 = _nt_expression
289
- s0 << r9
290
- if r9.success?
291
- r10 = _nt_space
292
- s0 << r10
293
- if r10.success?
294
- r11 = parse_terminal('else', SyntaxNode)
295
- s0 << r11
296
- if r11.success?
297
- r12 = _nt_space
298
- s0 << r12
299
- if r12.success?
300
- r13 = _nt_expression
301
- s0 << r13
302
- end
303
- end
304
- end
305
- end
306
- end
307
- end
308
- end
309
- end
310
- end
311
- end
312
- end
313
- end
314
- if s0.last.success?
315
- r0 = (SyntaxNode).new(input, i0...index, s0)
316
- r0.extend(Conditional0)
317
- r0.extend(Conditional1)
318
- else
319
- self.index = i0
320
- r0 = ParseFailure.new(input, i0)
321
- end
322
-
323
- node_cache[:conditional][start_index] = r0
324
-
325
- return r0
326
- end
327
-
328
- def _nt_primary
329
- start_index = index
330
- cached = node_cache[:primary][index]
331
- if cached
332
- @index = cached.interval.end
333
- return cached
334
- end
335
-
336
- i0 = index
337
- r1 = _nt_application
338
- if r1.success?
339
- r0 = r1
340
- else
341
- r2 = super
342
- if r2.success?
343
- r0 = r2
344
- else
345
- self.index = i0
346
- r0 = ParseFailure.new(input, i0)
347
- end
348
- end
349
-
350
- node_cache[:primary][start_index] = r0
351
-
352
- return r0
353
- end
354
-
355
- module Application0
356
- def operator
357
- elements[0]
358
- end
359
-
360
- def space
361
- elements[1]
362
- end
363
-
364
- def expression
365
- elements[2]
366
- end
367
- end
368
-
369
- module Application1
370
- def eval(env={})
371
- left_associative_apply(operator.eval(env), env)
372
- end
373
-
374
- def left_associative_apply(operator, env)
375
- if expression.instance_of?(Application)
376
- expression.left_associative_apply(operator.apply(expression.operator.eval(env)), env)
377
- else
378
- operator.apply(expression.eval(env))
379
- end
380
- end
381
-
382
- def to_s(env={})
383
- operator.to_s(env) + ' ' + expression.to_s(env)
384
- end
385
- end
386
-
387
- def _nt_application
388
- start_index = index
389
- cached = node_cache[:application][index]
390
- if cached
391
- @index = cached.interval.end
392
- return cached
393
- end
394
-
395
- i0, s0 = index, []
396
- r1 = _nt_operator
397
- s0 << r1
398
- if r1.success?
399
- r2 = _nt_space
400
- s0 << r2
401
- if r2.success?
402
- r3 = _nt_expression
403
- s0 << r3
404
- end
405
- end
406
- if s0.last.success?
407
- r0 = (Application).new(input, i0...index, s0)
408
- r0.extend(Application0)
409
- r0.extend(Application1)
410
- else
411
- self.index = i0
412
- r0 = ParseFailure.new(input, i0)
413
- end
414
-
415
- node_cache[:application][start_index] = r0
416
-
417
- return r0
418
- end
419
-
420
- def _nt_operator
421
- start_index = index
422
- cached = node_cache[:operator][index]
423
- if cached
424
- @index = cached.interval.end
425
- return cached
426
- end
427
-
428
- i0 = index
429
- r1 = _nt_function
430
- if r1.success?
431
- r0 = r1
432
- else
433
- r2 = _nt_variable
434
- if r2.success?
435
- r0 = r2
436
- else
437
- self.index = i0
438
- r0 = ParseFailure.new(input, i0)
439
- end
440
- end
441
-
442
- node_cache[:operator][start_index] = r0
443
-
444
- return r0
445
- end
446
-
447
- def _nt_non_application
448
- start_index = index
449
- cached = node_cache[:non_application][index]
450
- if cached
451
- @index = cached.interval.end
452
- return cached
453
- end
454
-
455
- i0 = index
456
- r1 = _nt_function
457
- if r1.success?
458
- r0 = r1
459
- else
460
- r2 = _nt_variable
461
- if r2.success?
462
- r0 = r2
463
- else
464
- self.index = i0
465
- r0 = ParseFailure.new(input, i0)
466
- end
467
- end
468
-
469
- node_cache[:non_application][start_index] = r0
470
-
471
- return r0
472
- end
473
-
474
- module Function0
475
- def param
476
- elements[1]
477
- end
478
-
479
- def body
480
- elements[3]
481
- end
482
-
483
- end
484
-
485
- module Function1
486
- class Closure
487
- attr_reader :env, :function
488
-
489
- def initialize(function, env)
490
- @function = function
491
- @env = env
492
- end
493
-
494
- def apply(arg)
495
- function.body.eval(function.param.bind(arg, env))
496
- end
497
-
498
- def to_s(other_env={})
499
- "\\#{function.param.to_s}(#{function.body.to_s(other_env.merge(env))})"
500
- end
501
- end
502
-
503
- def eval(env={})
504
- Closure.new(self, env)
505
- end
506
-
507
- def to_s(env={})
508
- eval(env).to_s
509
- end
510
- end
511
-
512
- def _nt_function
513
- start_index = index
514
- cached = node_cache[:function][index]
515
- if cached
516
- @index = cached.interval.end
517
- return cached
518
- end
519
-
520
- i0, s0 = index, []
521
- r1 = parse_terminal('\\', SyntaxNode)
522
- s0 << r1
523
- if r1.success?
524
- r2 = _nt_variable
525
- s0 << r2
526
- if r2.success?
527
- r3 = parse_terminal('(', SyntaxNode)
528
- s0 << r3
529
- if r3.success?
530
- r4 = _nt_expression
531
- s0 << r4
532
- if r4.success?
533
- r5 = parse_terminal(')', SyntaxNode)
534
- s0 << r5
535
- end
536
- end
537
- end
538
- end
539
- if s0.last.success?
540
- r0 = (SyntaxNode).new(input, i0...index, s0)
541
- r0.extend(Function0)
542
- r0.extend(Function1)
543
- else
544
- self.index = i0
545
- r0 = ParseFailure.new(input, i0)
546
- end
547
-
548
- node_cache[:function][start_index] = r0
549
-
550
- return r0
551
- end
552
-
553
- module Variable0
554
- def bind(value, env)
555
- env.merge(name => value)
556
- end
557
-
558
- def to_s(env={})
559
- env.has_key?(name) ? env[name].to_s : name
560
- end
561
- end
562
-
563
- module Variable1
564
- end
565
-
566
- def _nt_variable
567
- start_index = index
568
- cached = node_cache[:variable][index]
569
- if cached
570
- @index = cached.interval.end
571
- return cached
572
- end
573
-
574
- i0, s0 = index, []
575
- i1 = index
576
- r2 = _nt_keyword
577
- if r2.success?
578
- r1 = ParseFailure.new(input, i1)
579
- else
580
- self.index = i1
581
- r1 = SyntaxNode.new(input, index...index)
582
- end
583
- s0 << r1
584
- if r1.success?
585
- r3 = super
586
- r3.extend(Variable0)
587
- s0 << r3
588
- end
589
- if s0.last.success?
590
- r0 = (SyntaxNode).new(input, i0...index, s0)
591
- r0.extend(Variable1)
592
- else
593
- self.index = i0
594
- r0 = ParseFailure.new(input, i0)
595
- end
596
-
597
- node_cache[:variable][start_index] = r0
598
-
599
- return r0
600
- end
601
-
602
- module Keyword0
603
- end
604
-
605
- def _nt_keyword
606
- start_index = index
607
- cached = node_cache[:keyword][index]
608
- if cached
609
- @index = cached.interval.end
610
- return cached
611
- end
612
-
613
- i0, s0 = index, []
614
- i1 = index
615
- r2 = parse_terminal('if', SyntaxNode)
616
- if r2.success?
617
- r1 = r2
618
- else
619
- r3 = parse_terminal('else', SyntaxNode)
620
- if r3.success?
621
- r1 = r3
622
- else
623
- self.index = i1
624
- r1 = ParseFailure.new(input, i1)
625
- end
626
- end
627
- s0 << r1
628
- if r1.success?
629
- i4 = index
630
- r5 = _nt_non_space_char
631
- if r5.success?
632
- r4 = ParseFailure.new(input, i4)
633
- else
634
- self.index = i4
635
- r4 = SyntaxNode.new(input, index...index)
636
- end
637
- s0 << r4
638
- end
639
- if s0.last.success?
640
- r0 = (SyntaxNode).new(input, i0...index, s0)
641
- r0.extend(Keyword0)
642
- else
643
- self.index = i0
644
- r0 = ParseFailure.new(input, i0)
645
- end
646
-
647
- node_cache[:keyword][start_index] = r0
648
-
649
- return r0
650
- end
651
-
652
- module NonSpaceChar0
653
- end
654
-
655
- def _nt_non_space_char
656
- start_index = index
657
- cached = node_cache[:non_space_char][index]
658
- if cached
659
- @index = cached.interval.end
660
- return cached
661
- end
662
-
663
- i0, s0 = index, []
664
- i1 = index
665
- r2 = parse_char_class(/[ \n]/, ' \n', SyntaxNode)
666
- if r2.success?
667
- r1 = ParseFailure.new(input, i1)
668
- else
669
- self.index = i1
670
- r1 = SyntaxNode.new(input, index...index)
671
- end
672
- s0 << r1
673
- if r1.success?
674
- r3 = parse_anything(SyntaxNode)
675
- s0 << r3
676
- end
677
- if s0.last.success?
678
- r0 = (SyntaxNode).new(input, i0...index, s0)
679
- r0.extend(NonSpaceChar0)
680
- else
681
- self.index = i0
682
- r0 = ParseFailure.new(input, i0)
683
- end
684
-
685
- node_cache[:non_space_char][start_index] = r0
686
-
687
- return r0
688
- end
689
-
690
- def _nt_space
691
- start_index = index
692
- cached = node_cache[:space][index]
693
- if cached
694
- @index = cached.interval.end
695
- return cached
696
- end
697
-
698
- s0, i0 = [], index
699
- loop do
700
- r1 = parse_char_class(/[ \n]/, ' \n', SyntaxNode)
701
- if r1.success?
702
- s0 << r1
703
- else
704
- break
705
- end
706
- end
707
- r0 = SyntaxNode.new(input, i0...index, s0)
708
-
709
- node_cache[:space][start_index] = r0
710
-
711
- return r0
712
- end
713
-
714
- end
715
-
716
- class LambdaCalculusParser < Treetop::Runtime::CompiledParser
717
- include LambdaCalculus
718
- end