raf 0.1.1 → 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.
@@ -1,715 +0,0 @@
1
- #
2
- # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.4.10
4
- # from Racc grammer file "".
5
- #
6
-
7
- require 'racc/parser.rb'
8
-
9
- require "parserutility"
10
- require "rafinlineparser.tab"
11
- require "rafelement"
12
-
13
- module Raf
14
-
15
- class BlockParser < Racc::Parser
16
-
17
- module_eval(<<'...end rafblockparser.ry/module_eval...', 'rafblockparser.ry', 120)
18
- include ParserUtility
19
-
20
- class Line
21
- def initialize(line)
22
- @content = line
23
- # @indent = get_line_indent(line)
24
- # @type = nil
25
- end
26
- attr_reader :indent, :no
27
- attr_accessor :type, :content
28
- alias indent_size indent
29
-
30
- def get_line_indent
31
- return 0 if @content.nil?
32
- @content =~ /(\s*)/
33
- $1.size
34
- end
35
- alias indent get_line_indent
36
- end
37
-
38
-
39
- def initialize
40
- @inline_parser = InlineParser.new
41
- @metadata = {}
42
- @inline_index = @inline_parser.index
43
- @index = {}
44
- @head_index = HeadIndex.new
45
- end
46
- attr_reader :metadata, :inline_index, :index
47
-
48
- def parse(src)
49
- @no = 0
50
- @src = Array(src)
51
- @line = Line.new("")
52
- @line_pre = @line.dup
53
- @indent_stack = []
54
- @current_indent = 0
55
- @current_type = :header
56
- @yydebug = true
57
- @view_token_type = false
58
- do_parse
59
- end
60
-
61
- def on_error(token_id, value, stack)
62
- lineno = @src[0..@no].to_s.split("\n").size
63
- raise Racc::ParseError,
64
- "rafblockpaser: line #{lineno}: syntax error on #{value.inspect}"
65
- end
66
-
67
- def next_token
68
- @line_pre = @line.dup
69
- @line = Line.new(@src[@no])
70
- # puts "line: #{@line.content}" if @view_token_type
71
- case @line.content
72
- when nil
73
- @line.content = ""
74
- if_current_indent_equal("") do
75
- puts "b: false: #{@line.content}" if @view_token_type
76
- [false, false]
77
- end
78
- when /^$/
79
- @line.content = ""
80
- if_current_indent_equal("") do
81
- if @current_type == :quote
82
- puts "b: QUOTE: #{@line.content}" if @view_token_type
83
- [:QUOTE, "\n"]
84
- elsif @current_type == :descline
85
- puts "b: DESCLINE: #{@line.content}" if @view_token_type
86
- [:DESCLINE, " "]
87
- else
88
- puts "b: WHITELINE: #{@line.content}" if @view_token_type
89
- @current_type = :whiteline
90
- [:WHITELINE, :WHITELINE]
91
- end
92
- end
93
- when /^\#(.*)/ # comment line
94
- @no += 1
95
- if @current_type == :header
96
- puts "b: HEADER: #{@line.content}" if @view_token_type
97
- [:HEADER, $1.strip]
98
- else
99
- puts "b: COMMENT(noop): #{@line.content}" if @view_token_type
100
- next_token
101
- end
102
- when /^(={1,4})(?!=)\s*(?=\S)/, /^(\+{1,2})(?!\+)\s*(?=\S)/
103
- rest = $' # '
104
- rest.strip!
105
- mark = $1
106
- # if_current_indent_equal("") do
107
- if_current_indent_equal(@line.indent) do
108
- @current_type = :headline
109
- puts "b: HEADLINE: #{@line.content}" if @view_token_type
110
- [:HEADLINE, [mark_to_level(mark), rest]]
111
- end
112
- when /^\s\s+(.*)/ # type == quote
113
- puts "b: 2 WHITE SPACE(#{@current_type}) : #{@line.content}" if @view_token_type
114
- case @current_type
115
- when :itemlist
116
- if @line.content =~ /^(\s*)(\*)(\s+)(.*)/
117
- line = $4.strip
118
- if line.empty?
119
- @no += 1
120
- next_token
121
- else
122
- if_current_indent_equal(@line.indent) do
123
- puts "b: ITEMLIST: [#{line}]" if @view_token_type
124
- @current_type = :itemlist
125
- [:ITEMLIST, line]
126
- end
127
- end
128
- else
129
- line = @line.content.strip
130
- if line.empty?
131
- @no += 1
132
- next_token
133
- else
134
- puts "b: ITEMLISTCONTINUE: [#{line.empty?}] --" if @view_token_type
135
- @no += 1
136
- @current_type = :itemlist
137
- [:ITEMLISTCONTINUE, line]
138
- end
139
- end
140
- when :numlist
141
- @line.content =~ /^(\s*)(\(\d+\))(\s+)(.*)/
142
- if $4.nil?
143
- @line.content =~ /^(\s*)(\d\.)(\s+)(.*)/
144
- end
145
- line = $4
146
- line ||= @line.content.strip
147
- if line.empty?
148
- @no += 1
149
- next_token
150
- else
151
- if_current_indent_equal(@line.indent) do
152
- puts "b: NUMLIST: [#{line}]" if @view_token_type
153
- @current_type = :numlist
154
- [:NUMLIST, line]
155
- end
156
- end
157
- else
158
- @no += 1
159
- if @current_type == :descline
160
- @current_type = :descline
161
- puts "b: DESCLINE: #{@line.content}" if @view_token_type
162
- [:DESCLINE, $1 + "\n"]
163
- else
164
- @current_type = :quote
165
- puts "b: QUOTE: #{$1}" if @view_token_type
166
- [:QUOTE, @line.content.sub(" ","")]
167
- end
168
- end
169
- when /^(\:)(.*)/ # type = desclist
170
- if_current_indent_equal(@line.indent) do
171
- @current_type = :descline
172
- puts "b: DESCLINE_TILTE: #{$2.strip}" if @view_token_type
173
- [:DESCLINE_TITLE, $2.strip]
174
- end
175
- when /^(\s*)(\*)(\s+)(.*)/ # type = itemlist
176
- if_current_indent_equal(@line.indent) do
177
- puts "b: ITEMLIST: #{@line.content}" if @view_token_type
178
- @current_type = :itemlist
179
- [:ITEMLIST, $4]
180
- end
181
- when /^(\s*)(\(\d+\))(\s+)(.*)/
182
- if_current_indent_equal(@line.indent) do
183
- puts "b: NUMLIST: #{@line.content}" if @view_token_type
184
- @current_type = :numlist
185
- [:NUMLIST, $4]
186
- end
187
- when /^(\s*)(\d+\.)(\s+)(.*)/ # type = numlist
188
- if_current_indent_equal(@line.indent) do
189
- puts "b: NUMLIST: #{@line.content}" if @view_token_type
190
- @current_type = :numlist
191
- [:NUMLIST, $4]
192
- end
193
- when /^\|.*/ # type = table
194
- @no += 1
195
- @current_type = :table
196
- lines = @line.content.chomp.split("|")
197
- lines.shift
198
- [:TABLELINE, lines]
199
- when /(.*)/ # type == plain
200
- @current_type = :plain
201
- if_current_indent_equal(@line.indent) do
202
- puts "b: PLAIN: #{@line.content}" if @view_token_type
203
- [:PLAIN, @line.content]
204
- end
205
- else
206
- puts "raise : #{@line}"
207
- end
208
- end
209
-
210
- def if_current_indent_equal(ident)
211
- indent_space = 2
212
- puts "current: #{@current_indent}, line: #{@line.indent}, stack #{@indent_stack.size}:" if @view_token_type
213
- indent_sabun = @current_indent - @line.indent
214
- if indent_sabun >= -1 and indent_sabun <= 1
215
- @no += 1
216
- yield
217
- elsif @current_indent < @line.indent
218
- ((@line.indent - @current_indent) / indent_space).times do
219
- @indent_stack.push("")
220
- end
221
- @current_indent = @line.indent
222
- puts "b: INDENT" if @view_token_type
223
- [:INDENT, :INDENT]
224
- else
225
- @indent_stack.pop
226
- @current_indent = @line.indent if @line.indent == @indent_stack.size * indent_space
227
- puts "b: DEDENT" if @view_token_type
228
- [:DEDENT, :DEDENT]
229
- end
230
- end
231
-
232
- ...end rafblockparser.ry/module_eval...
233
- ##### State transition tables begin ###
234
-
235
- racc_action_table = [
236
- 13, 12, 14, 16, 17, 46, 19, 23, 35, 25,
237
- 25, 29, 31, 13, 12, 14, 16, 17, 25, 19,
238
- 23, 47, 25, 37, 29, 31, 23, 29, 25, 37,
239
- 29, 37, 52, 29, 48, 29, 35, 51, 25, 35,
240
- 49, 25, 41, 40, 50, 38, 32, 53 ]
241
-
242
- racc_action_check = [
243
- 0, 0, 0, 0, 0, 25, 0, 0, 35, 0,
244
- 35, 0, 0, 2, 2, 2, 2, 2, 21, 2,
245
- 2, 27, 2, 8, 2, 2, 23, 8, 23, 37,
246
- 23, 44, 44, 37, 30, 44, 43, 43, 43, 7,
247
- 32, 7, 18, 17, 39, 15, 1, 45 ]
248
-
249
- racc_action_pointer = [
250
- -2, 46, 11, nil, nil, nil, nil, 30, 14, nil,
251
- nil, nil, nil, nil, nil, 40, nil, 36, 34, nil,
252
- nil, 7, nil, 17, nil, -7, nil, 8, nil, nil,
253
- 20, nil, 40, nil, nil, -1, nil, 20, nil, 37,
254
- nil, nil, nil, 27, 22, 35, nil, nil, nil, nil,
255
- nil, nil, nil, nil ]
256
-
257
- racc_action_default = [
258
- -46, -46, -1, -2, -4, -5, -6, -7, -8, -9,
259
- -10, -11, -12, -13, -14, -15, -16, -21, -22, -23,
260
- -25, -27, -28, -46, -30, -32, -36, -38, -39, -41,
261
- -43, -44, -46, -3, -26, -46, -37, -46, -17, -18,
262
- -19, -24, -31, -46, -46, -33, -34, -42, -45, 54,
263
- -20, -29, -40, -35 ]
264
-
265
- racc_goto_table = [
266
- 36, 34, 44, 43, 3, 39, 33, 2, 42, 45,
267
- 1, nil, nil, nil, nil, 43, 44, nil, nil, nil,
268
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
269
- nil, nil, nil, nil, nil, nil, 36, 34 ]
270
-
271
- racc_goto_check = [
272
- 20, 15, 8, 7, 3, 13, 3, 2, 18, 19,
273
- 1, nil, nil, nil, nil, 7, 8, nil, nil, nil,
274
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
275
- nil, nil, nil, nil, nil, nil, 20, 15 ]
276
-
277
- racc_goto_pointer = [
278
- nil, 10, 7, 4, nil, nil, nil, -20, -21, nil,
279
- nil, nil, nil, -12, nil, -6, nil, nil, -13, -16,
280
- -8, nil, nil, nil ]
281
-
282
- racc_goto_default = [
283
- nil, nil, nil, nil, 4, 5, 6, 7, 8, 9,
284
- 10, 11, 15, nil, 18, 20, 21, 22, 24, nil,
285
- 26, 27, 28, 30 ]
286
-
287
- racc_reduce_table = [
288
- 0, 0, :racc_error,
289
- 1, 17, :_reduce_1,
290
- 1, 18, :_reduce_2,
291
- 2, 18, :_reduce_3,
292
- 1, 19, :_reduce_none,
293
- 1, 19, :_reduce_5,
294
- 1, 19, :_reduce_none,
295
- 1, 19, :_reduce_7,
296
- 1, 19, :_reduce_8,
297
- 1, 19, :_reduce_none,
298
- 1, 19, :_reduce_none,
299
- 1, 19, :_reduce_none,
300
- 1, 19, :_reduce_12,
301
- 1, 20, :_reduce_13,
302
- 1, 27, :_reduce_14,
303
- 1, 21, :_reduce_15,
304
- 1, 28, :_reduce_16,
305
- 2, 28, :_reduce_17,
306
- 2, 25, :_reduce_18,
307
- 1, 29, :_reduce_19,
308
- 2, 29, :_reduce_20,
309
- 0, 29, :_reduce_none,
310
- 1, 22, :_reduce_22,
311
- 1, 30, :_reduce_23,
312
- 2, 30, :_reduce_24,
313
- 1, 23, :_reduce_25,
314
- 2, 23, :_reduce_26,
315
- 1, 31, :_reduce_27,
316
- 1, 31, :_reduce_28,
317
- 3, 33, :_reduce_29,
318
- 1, 32, :_reduce_30,
319
- 2, 32, :_reduce_31,
320
- 1, 34, :_reduce_32,
321
- 2, 34, :_reduce_33,
322
- 1, 35, :_reduce_34,
323
- 2, 35, :_reduce_35,
324
- 1, 24, :_reduce_36,
325
- 2, 24, :_reduce_37,
326
- 1, 36, :_reduce_38,
327
- 1, 36, :_reduce_39,
328
- 3, 38, :_reduce_40,
329
- 1, 37, :_reduce_41,
330
- 2, 37, :_reduce_42,
331
- 1, 26, :_reduce_43,
332
- 1, 39, :_reduce_44,
333
- 2, 39, :_reduce_45 ]
334
-
335
- racc_reduce_n = 46
336
-
337
- racc_shift_n = 54
338
-
339
- racc_token_table = {
340
- false => 0,
341
- :error => 1,
342
- :HEADER => 2,
343
- :WHITELINE => 3,
344
- :HEADLINE => 4,
345
- :PLAIN => 5,
346
- :DESCLINE_TITLE => 6,
347
- :DESCLINE => 7,
348
- :QUOTE => 8,
349
- :INDENT => 9,
350
- :DEDENT => 10,
351
- :ITEMLIST => 11,
352
- :ITEMLISTCONTINUE => 12,
353
- :NUMLIST => 13,
354
- :TABLELINE => 14,
355
- :DUMMY => 15 }
356
-
357
- racc_nt_base = 16
358
-
359
- racc_use_result_var = false
360
-
361
- Racc_arg = [
362
- racc_action_table,
363
- racc_action_check,
364
- racc_action_default,
365
- racc_action_pointer,
366
- racc_goto_table,
367
- racc_goto_check,
368
- racc_goto_default,
369
- racc_goto_pointer,
370
- racc_nt_base,
371
- racc_reduce_table,
372
- racc_token_table,
373
- racc_shift_n,
374
- racc_reduce_n,
375
- racc_use_result_var ]
376
-
377
- Racc_token_to_s_table = [
378
- "$end",
379
- "error",
380
- "HEADER",
381
- "WHITELINE",
382
- "HEADLINE",
383
- "PLAIN",
384
- "DESCLINE_TITLE",
385
- "DESCLINE",
386
- "QUOTE",
387
- "INDENT",
388
- "DEDENT",
389
- "ITEMLIST",
390
- "ITEMLISTCONTINUE",
391
- "NUMLIST",
392
- "TABLELINE",
393
- "DUMMY",
394
- "$start",
395
- "document",
396
- "blocks",
397
- "block",
398
- "header",
399
- "paragraph",
400
- "quote_block",
401
- "itemlist_blocks",
402
- "numlist_blocks",
403
- "desc_block",
404
- "table_block",
405
- "headline",
406
- "plain_texts",
407
- "desclines",
408
- "quotes",
409
- "itemlist_block",
410
- "itemlists",
411
- "itemlist_indent_blocks",
412
- "itemlistitems",
413
- "itemlist_continues",
414
- "numlist_block",
415
- "numlists",
416
- "numlist_indent_blocks",
417
- "tablelines" ]
418
-
419
- Racc_debug_parser = false
420
-
421
- ##### State transition tables end #####
422
-
423
- # reduce 0 omitted
424
-
425
- module_eval(<<'.,.,', 'rafblockparser.ry', 10)
426
- def _reduce_1(val, _values)
427
- val[0].compact
428
- end
429
- .,.,
430
-
431
- module_eval(<<'.,.,', 'rafblockparser.ry', 12)
432
- def _reduce_2(val, _values)
433
- val
434
- end
435
- .,.,
436
-
437
- module_eval(<<'.,.,', 'rafblockparser.ry', 13)
438
- def _reduce_3(val, _values)
439
- [val[0], val[1]].flatten
440
- end
441
- .,.,
442
-
443
- # reduce 4 omitted
444
-
445
- module_eval(<<'.,.,', 'rafblockparser.ry', 16)
446
- def _reduce_5(val, _values)
447
- val[0]
448
- end
449
- .,.,
450
-
451
- # reduce 6 omitted
452
-
453
- module_eval(<<'.,.,', 'rafblockparser.ry', 18)
454
- def _reduce_7(val, _values)
455
- ItemList.new(val[0].flatten)
456
- end
457
- .,.,
458
-
459
- module_eval(<<'.,.,', 'rafblockparser.ry', 19)
460
- def _reduce_8(val, _values)
461
- NumList.new(val[0].flatten)
462
- end
463
- .,.,
464
-
465
- # reduce 9 omitted
466
-
467
- # reduce 10 omitted
468
-
469
- # reduce 11 omitted
470
-
471
- module_eval(<<'.,.,', 'rafblockparser.ry', 23)
472
- def _reduce_12(val, _values)
473
- WhiteLine.new
474
- end
475
- .,.,
476
-
477
- module_eval(<<'.,.,', 'rafblockparser.ry', 27)
478
- def _reduce_13(val, _values)
479
- name, val = val[0].split(":",2)
480
- if name.nil? or val.nil?
481
- else
482
- @metadata.update({name.strip.to_sym => val.strip })
483
- end
484
- nil
485
- end
486
- .,.,
487
-
488
- module_eval(<<'.,.,', 'rafblockparser.ry', 35)
489
- def _reduce_14(val, _values)
490
- # val[0] is like [level, title, index]
491
- title = val[0][1]
492
- level = val[0][0]
493
- if level == 1
494
- @metadata[:subject] ||= title
495
- else
496
- @head_index.update(level)
497
- end
498
-
499
- @index[:head] ||= []
500
- @index[:head] << {:title => title, :level => level, :index => @head_index.to_s}
501
- HeadLine.new([level, title, @index[:head].size, @head_index.to_s])
502
- end
503
- .,.,
504
-
505
- module_eval(<<'.,.,', 'rafblockparser.ry', 48)
506
- def _reduce_15(val, _values)
507
- Paragraph.new @inline_parser.parse(val)
508
- end
509
- .,.,
510
-
511
- module_eval(<<'.,.,', 'rafblockparser.ry', 50)
512
- def _reduce_16(val, _values)
513
- val[0]
514
- end
515
- .,.,
516
-
517
- module_eval(<<'.,.,', 'rafblockparser.ry', 51)
518
- def _reduce_17(val, _values)
519
- val[0] + val[1]
520
- end
521
- .,.,
522
-
523
- module_eval(<<'.,.,', 'rafblockparser.ry', 55)
524
- def _reduce_18(val, _values)
525
- if val[1].nil?
526
- lines = [Plain.new("")]
527
- else
528
- lines = @inline_parser.parse(val[1])
529
- end
530
- Desc.new([val[0], lines])
531
-
532
- end
533
- .,.,
534
-
535
- module_eval(<<'.,.,', 'rafblockparser.ry', 64)
536
- def _reduce_19(val, _values)
537
- val[0]
538
- end
539
- .,.,
540
-
541
- module_eval(<<'.,.,', 'rafblockparser.ry', 65)
542
- def _reduce_20(val, _values)
543
- val[0] + val[1]
544
- end
545
- .,.,
546
-
547
- # reduce 21 omitted
548
-
549
- module_eval(<<'.,.,', 'rafblockparser.ry', 70)
550
- def _reduce_22(val, _values)
551
- qu = val[0].strip ; Quote.new([qu]) unless qu.empty?
552
- end
553
- .,.,
554
-
555
- module_eval(<<'.,.,', 'rafblockparser.ry', 72)
556
- def _reduce_23(val, _values)
557
- val[0]
558
- end
559
- .,.,
560
-
561
- module_eval(<<'.,.,', 'rafblockparser.ry', 73)
562
- def _reduce_24(val, _values)
563
- val[0] + val[1]
564
- end
565
- .,.,
566
-
567
- module_eval(<<'.,.,', 'rafblockparser.ry', 77)
568
- def _reduce_25(val, _values)
569
- val[0]
570
- end
571
- .,.,
572
-
573
- module_eval(<<'.,.,', 'rafblockparser.ry', 78)
574
- def _reduce_26(val, _values)
575
- val[0] << val[1]
576
- end
577
- .,.,
578
-
579
- module_eval(<<'.,.,', 'rafblockparser.ry', 80)
580
- def _reduce_27(val, _values)
581
- val[0]
582
- end
583
- .,.,
584
-
585
- module_eval(<<'.,.,', 'rafblockparser.ry', 81)
586
- def _reduce_28(val, _values)
587
- val[0]
588
- end
589
- .,.,
590
-
591
- module_eval(<<'.,.,', 'rafblockparser.ry', 83)
592
- def _reduce_29(val, _values)
593
- val
594
- end
595
- .,.,
596
-
597
- module_eval(<<'.,.,', 'rafblockparser.ry', 85)
598
- def _reduce_30(val, _values)
599
- [PlainTextBlock.new(@inline_parser.parse(val[0]))]
600
- end
601
- .,.,
602
-
603
- module_eval(<<'.,.,', 'rafblockparser.ry', 86)
604
- def _reduce_31(val, _values)
605
- val[0] << PlainTextBlock.new(@inline_parser.parse(val[1]))
606
- end
607
- .,.,
608
-
609
- module_eval(<<'.,.,', 'rafblockparser.ry', 88)
610
- def _reduce_32(val, _values)
611
- val[0]
612
- end
613
- .,.,
614
-
615
- module_eval(<<'.,.,', 'rafblockparser.ry', 89)
616
- def _reduce_33(val, _values)
617
- val[0] + val[1]
618
- end
619
- .,.,
620
-
621
- module_eval(<<'.,.,', 'rafblockparser.ry', 91)
622
- def _reduce_34(val, _values)
623
- "\n" + val[0]
624
- end
625
- .,.,
626
-
627
- module_eval(<<'.,.,', 'rafblockparser.ry', 92)
628
- def _reduce_35(val, _values)
629
- val[0] + "\n" + val[1]
630
- end
631
- .,.,
632
-
633
- module_eval(<<'.,.,', 'rafblockparser.ry', 96)
634
- def _reduce_36(val, _values)
635
- val[0]
636
- end
637
- .,.,
638
-
639
- module_eval(<<'.,.,', 'rafblockparser.ry', 97)
640
- def _reduce_37(val, _values)
641
- val[0] << val[1]
642
- end
643
- .,.,
644
-
645
- module_eval(<<'.,.,', 'rafblockparser.ry', 99)
646
- def _reduce_38(val, _values)
647
- val[0]
648
- end
649
- .,.,
650
-
651
- module_eval(<<'.,.,', 'rafblockparser.ry', 100)
652
- def _reduce_39(val, _values)
653
- val[0]
654
- end
655
- .,.,
656
-
657
- module_eval(<<'.,.,', 'rafblockparser.ry', 102)
658
- def _reduce_40(val, _values)
659
- val
660
- end
661
- .,.,
662
-
663
- module_eval(<<'.,.,', 'rafblockparser.ry', 104)
664
- def _reduce_41(val, _values)
665
- [PlainTextBlock.new(@inline_parser.parse(val[0]))]
666
- end
667
- .,.,
668
-
669
- module_eval(<<'.,.,', 'rafblockparser.ry', 105)
670
- def _reduce_42(val, _values)
671
- val[0] << PlainTextBlock.new(@inline_parser.parse(val[1]))
672
- end
673
- .,.,
674
-
675
- module_eval(<<'.,.,', 'rafblockparser.ry', 110)
676
- def _reduce_43(val, _values)
677
- Table.new(val[0])
678
- end
679
- .,.,
680
-
681
- module_eval(<<'.,.,', 'rafblockparser.ry', 112)
682
- def _reduce_44(val, _values)
683
- val
684
- end
685
- .,.,
686
-
687
- module_eval(<<'.,.,', 'rafblockparser.ry', 113)
688
- def _reduce_45(val, _values)
689
- val[0] << val[1]
690
- end
691
- .,.,
692
-
693
- def _reduce_none(val, _values)
694
- val[0]
695
- end
696
-
697
- end # class BlockParser
698
-
699
- if __FILE__ == $0
700
- raf = BlockParser.new
701
- src = $stdin.readlines
702
- nodes = raf.parse(src)
703
- puts "----- index -----"
704
- raf.index.each do |key,val|
705
- puts key
706
- val.each do |v| p v end
707
- end
708
- puts "----- info -----"
709
- p raf.info
710
- puts "----- output -----"
711
- nodes.each do |n|
712
- puts n.apply
713
- end
714
- end
715
- end # end of module Raf