1#
2# DO NOT MODIFY!!!!
3# This file is automatically generated by Racc 1.4.9
4# from Racc grammer file "".
5#
6
7require 'racc/parser.rb'
8
9class RDoc::RD
10
11##
12# RD format parser for headings, paragraphs, lists, verbatim sections that
13# exist as blocks.
14
15class BlockParser < Racc::Parser
16
17
18# :stopdoc:
19
20TMPFILE = ["rdtmp", $$, 0]
21
22MARK_TO_LEVEL = {
23  '='    => 1,
24  '=='   => 2,
25  '==='  => 3,
26  '====' => 4,
27  '+'    => 5,
28  '++'   => 6,
29}
30
31# :startdoc:
32
33##
34# Footnotes for this document
35
36attr_reader :footnotes
37
38##
39# Labels for items in this document
40
41attr_reader :labels
42
43##
44# Path to find included files in
45
46attr_accessor :include_path
47
48##
49# Creates a new RDoc::RD::BlockParser.  Use #parse to parse an rd-format
50# document.
51
52def initialize
53  @inline_parser = RDoc::RD::InlineParser.new self
54  @include_path = []
55
56  # for testing
57  @footnotes = []
58  @labels    = {}
59end
60
61##
62# Parses +src+ and returns an RDoc::Markup::Document.
63
64def parse src
65  @src = src
66  @src.push false
67
68  @footnotes = []
69  @labels    = {}
70
71  # @i: index(line no.) of src
72  @i = 0
73
74  # stack for current indentation
75  @indent_stack = []
76
77  # how indented.
78  @current_indent = @indent_stack.join("")
79
80  # RDoc::RD::BlockParser for tmp src
81  @subparser = nil
82
83  # which part is in now
84  @in_part = nil
85  @part_content = []
86
87  @in_verbatim = false
88
89  @yydebug = true
90
91  document = do_parse
92
93  unless @footnotes.empty? then
94    blankline = document.parts.pop
95
96    document.parts << RDoc::Markup::Rule.new(1)
97    document.parts.concat @footnotes
98
99    document.parts.push blankline
100  end
101
102  document
103end
104
105##
106# Returns the next token from the document
107
108def next_token # :nodoc:
109  # preprocessing
110  # if it is not in RD part
111  # => method
112  while @in_part != "rd"
113    line = @src[@i]
114    @i += 1 # next line
115
116    case line
117    # src end
118    when false
119      return [false, false]
120    # RD part begin
121    when /^=begin\s*(?:\bRD\b.*)?\s*$/
122      if @in_part # if in non-RD part
123        @part_content.push(line)
124      else
125        @in_part = "rd"
126        return [:WHITELINE, "=begin\n"] # <= for textblockand
127      end
128    # non-RD part begin
129    when /^=begin\s+(\w+)/
130      part = $1
131      if @in_part # if in non-RD part
132        @part_content.push(line)
133      else
134        @in_part = part if @tree.filter[part] # if filter exists
135#  p "BEGIN_PART: #{@in_part}" # DEBUG
136      end
137    # non-RD part end
138    when /^=end/
139      if @in_part # if in non-RD part
140#  p "END_PART: #{@in_part}" # DEBUG
141        # make Part-in object
142        part = RDoc::RD::Part.new(@part_content.join(""), @tree, "r")
143        @part_content.clear
144        # call filter, part_out is output(Part object)
145        part_out = @tree.filter[@in_part].call(part)
146
147        if @tree.filter[@in_part].mode == :rd # if output is RD formated
148          subtree = parse_subtree(part_out.to_a)
149        else # if output is target formated
150          basename = TMPFILE.join('.')
151          TMPFILE[-1] += 1
152          tmpfile = open(@tree.tmp_dir + "/" + basename + ".#{@in_part}", "w")
153          tmpfile.print(part_out)
154          tmpfile.close
155          subtree = parse_subtree(["=begin\n", "<<< #{basename}\n", "=end\n"])
156        end
157        @in_part = nil
158        return [:SUBTREE, subtree]
159      end
160    else
161      if @in_part # if in non-RD part
162        @part_content.push(line)
163      end
164    end
165  end
166
167  @current_indent = @indent_stack.join("")
168  line = @src[@i]
169  case line
170  when false
171    if_current_indent_equal("") do
172      [false, false]
173    end
174  when /^=end/
175    if_current_indent_equal("") do
176      @in_part = nil
177      [:WHITELINE, "=end"] # MUST CHANGE??
178    end
179  when /^\s*$/
180    @i += 1 # next line
181    return [:WHITELINE, ':WHITELINE']
182  when /^\#/  # comment line
183    @i += 1 # next line
184    self.next_token()
185  when /^(={1,4})(?!=)\s*(?=\S)/, /^(\+{1,2})(?!\+)\s*(?=\S)/
186    rest = $'                    # '
187    rest.strip!
188    mark = $1
189    if_current_indent_equal("") do
190      return [:HEADLINE, [MARK_TO_LEVEL[mark], rest]]
191    end
192  when /^<<<\s*(\S+)/
193    file = $1
194    if_current_indent_equal("") do
195      suffix = file[-3 .. -1]
196      if suffix == ".rd" or suffix == ".rb"
197        subtree = parse_subtree(get_included(file))
198        [:SUBTREE, subtree]
199      else
200        [:INCLUDE, file]
201      end
202    end
203  when /^(\s*)\*(\s*)/
204    rest = $'                   # '
205    newIndent = $2
206    if_current_indent_equal($1) do
207      if @in_verbatim
208        [:STRINGLINE, line]
209      else
210        @indent_stack.push("\s" << newIndent)
211        [:ITEMLISTLINE, rest]
212      end
213    end
214  when /^(\s*)(\(\d+\))(\s*)/
215    rest = $'                     # '
216    mark = $2
217    newIndent = $3
218    if_current_indent_equal($1) do
219      if @in_verbatim
220        [:STRINGLINE, line]
221      else
222        @indent_stack.push("\s" * mark.size << newIndent)
223        [:ENUMLISTLINE, rest]
224      end
225    end
226  when /^(\s*):(\s*)/
227    rest = $'                    # '
228    newIndent = $2
229    if_current_indent_equal($1) do
230      if @in_verbatim
231        [:STRINGLINE, line]
232      else
233        @indent_stack.push("\s#{$2}")
234        [:DESCLISTLINE, rest]
235      end
236    end
237  when /^(\s*)---(?!-|\s*$)/
238    indent = $1
239    rest = $'
240    /\s*/ === rest
241    term = $'
242    new_indent = $&
243    if_current_indent_equal(indent) do
244      if @in_verbatim
245        [:STRINGLINE, line]
246      else
247        @indent_stack.push("\s\s\s" + new_indent)
248        [:METHODLISTLINE, term]
249      end
250    end
251  when /^(\s*)/
252    if_current_indent_equal($1) do
253      [:STRINGLINE, line]
254    end
255  else
256    raise "[BUG] parsing error may occurred."
257  end
258end
259
260##
261# Yields to the given block if +indent+ matches the current indent, otherwise
262# an indentation token is processed.
263
264def if_current_indent_equal(indent)
265  indent = indent.sub(/\t/, "\s" * 8)
266  if @current_indent == indent
267    @i += 1 # next line
268    yield
269  elsif indent.index(@current_indent) == 0
270    @indent_stack.push(indent[@current_indent.size .. -1])
271    [:INDENT, ":INDENT"]
272  else
273    @indent_stack.pop
274    [:DEDENT, ":DEDENT"]
275  end
276end
277private :if_current_indent_equal
278
279##
280# Cuts off excess whitespace in +src+
281
282def cut_off(src)
283  ret = []
284  whiteline_buf = []
285
286  line = src.shift
287  /^\s*/ =~ line
288
289  indent = Regexp.quote($&)
290  ret.push($')
291
292  while line = src.shift
293    if /^(\s*)$/ =~ line
294      whiteline_buf.push(line)
295    elsif /^#{indent}/ =~ line
296      unless whiteline_buf.empty?
297        ret.concat(whiteline_buf)
298        whiteline_buf.clear
299      end
300      ret.push($')
301    else
302      raise "[BUG]: probably Parser Error while cutting off.\n"
303    end
304  end
305  ret
306end
307private :cut_off
308
309def set_term_to_element(parent, term)
310#  parent.set_term_under_document_struct(term, @tree.document_struct)
311  parent.set_term_without_document_struct(term)
312end
313private :set_term_to_element
314
315##
316# Raises a ParseError when invalid formatting is found
317
318def on_error(et, ev, _values)
319  prv, cur, nxt = format_line_num(@i, @i+1, @i+2)
320
321  raise ParseError, <<Msg
322
323RD syntax error: line #{@i+1}:
324  #{prv}  |#{@src[@i-1].chomp}
325  #{cur}=>|#{@src[@i].chomp}
326  #{nxt}  |#{@src[@i+1].chomp}
327
328Msg
329end
330
331##
332# Current line number
333
334def line_index
335  @i
336end
337
338##
339# Parses subtree +src+
340
341def parse_subtree src
342  @subparser ||= RDoc::RD::BlockParser.new
343
344  @subparser.parse src
345end
346private :parse_subtree
347
348##
349# Retrieves the content for +file+ from the include_path
350
351def get_included(file)
352  included = []
353
354  @include_path.each do |dir|
355    file_name = File.join dir, file
356
357    if File.exist? file_name then
358      included = IO.readlines file_name
359      break
360    end
361  end
362
363  included
364end
365private :get_included
366
367##
368# Formats line numbers +line_numbers+ prettily
369
370def format_line_num(*line_numbers)
371  width = line_numbers.collect{|i| i.to_s.length }.max
372  line_numbers.collect{|i| sprintf("%#{width}d", i) }
373end
374private :format_line_num
375
376##
377# Retrieves the content of +values+ as a single String
378
379def content values
380 values.map { |value| value.content }.join
381end
382
383##
384# Creates a paragraph for +value+
385
386def paragraph value
387  content = cut_off(value).join(' ').rstrip
388  contents = @inline_parser.parse content
389
390  RDoc::Markup::Paragraph.new(*contents)
391end
392
393##
394# Adds footnote +content+ to the document
395
396def add_footnote content
397  index = @footnotes.length / 2 + 1
398
399  footmark_link = "{^#{index}}[rdoc-label:footmark-#{index}:foottext-#{index}]"
400
401  @footnotes << RDoc::Markup::Paragraph.new(footmark_link, ' ', *content)
402  @footnotes << RDoc::Markup::BlankLine.new
403
404  index
405end
406
407##
408# Adds label +label+ to the document
409
410def add_label label
411  @labels[label] = true
412
413  label
414end
415
416# :stopdoc:
417
418##### State transition tables begin ###
419
420racc_action_table = [
421    34,    35,    30,    33,    14,    73,    38,    33,    76,    15,
422    88,    34,    35,    30,    33,    40,    34,    35,    30,    33,
423    40,    65,    34,    35,    30,    33,    14,    73,    77,    14,
424    54,    15,    34,    35,    30,    33,    14,     9,    10,    11,
425    12,    15,    34,    35,    30,    33,    14,    73,    81,    54,
426    38,    15,    34,    35,    30,    33,    14,    73,    40,    67,
427    83,    15,    34,    35,    30,    33,    14,    73,    54,    30,
428    35,    15,    34,    35,    30,    33,    34,    47,    36,    14,
429    59,    15,    34,    35,    30,    33,    14,    73,    38,   nil,
430   nil,    15,    34,    35,    30,    33,   nil,    47,   nil,   nil,
431   nil,    15,    34,    35,    30,    33,    14,    73,   nil,   nil,
432   nil,    15,    34,    35,    30,    33,    14,    73,   nil,   nil,
433   nil,    15,    34,    35,    30,    33,    14,     9,    10,    11,
434    12,    15,    34,    35,    30,    33,    14,    73,   nil,   nil,
435   nil,    15,    34,    35,    30,    33,    14,    73,    61,    63,
436   nil,    15,   nil,    62,    60,    61,    63,    61,    63,    14,
437    62,    87,    62,   nil,    79,    34,    35,    30,    33 ]
438
439racc_action_check = [
440    86,    86,    86,    86,    86,    86,    57,    31,    49,    86,
441    86,    41,    41,    41,    41,    41,    15,    15,    15,    15,
442    15,    41,    45,    45,    45,    45,    45,    45,    51,    34,
443    54,    45,     0,     0,     0,     0,     0,     0,     0,     0,
444     0,     0,    85,    85,    85,    85,    85,    85,    56,    33,
445    58,    85,    79,    79,    79,    79,    79,    79,    62,    44,
446    66,    79,    78,    78,    78,    78,    78,    78,    30,    28,
447    25,    78,    24,    24,    24,    24,    22,    24,     1,    35,
448    36,    24,    75,    75,    75,    75,    75,    75,    13,   nil,
449   nil,    75,    27,    27,    27,    27,   nil,    27,   nil,   nil,
450   nil,    27,    74,    74,    74,    74,    74,    74,   nil,   nil,
451   nil,    74,    68,    68,    68,    68,    68,    68,   nil,   nil,
452   nil,    68,     2,     2,     2,     2,     2,     2,     2,     2,
453     2,     2,    46,    46,    46,    46,    46,    46,   nil,   nil,
454   nil,    46,    47,    47,    47,    47,    47,    47,    39,    39,
455   nil,    47,   nil,    39,    39,    82,    82,    64,    64,    52,
456    82,    82,    64,   nil,    52,    20,    20,    20,    20 ]
457
458racc_action_pointer = [
459    29,    78,   119,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
460   nil,   nil,   nil,    81,   nil,    13,   nil,   nil,   nil,   nil,
461   162,   nil,    73,   nil,    69,    66,   nil,    89,    64,   nil,
462    60,     1,   nil,    41,    22,    72,    80,   nil,   nil,   141,
463   nil,     8,   nil,   nil,    46,    19,   129,   139,   nil,    -5,
464   nil,    15,   152,   nil,    22,   nil,    35,    -1,    43,   nil,
465   nil,   nil,    51,   nil,   150,   nil,    47,   nil,   109,   nil,
466   nil,   nil,   nil,   nil,    99,    79,   nil,   nil,    59,    49,
467   nil,   nil,   148,   nil,   nil,    39,    -3,   nil,   nil ]
468
469racc_action_default = [
470    -2,   -73,    -1,    -4,    -5,    -6,    -7,    -8,    -9,   -10,
471   -11,   -12,   -13,   -14,   -16,   -73,   -23,   -24,   -25,   -26,
472   -27,   -31,   -32,   -34,   -72,   -36,   -38,   -72,   -40,   -42,
473   -59,   -44,   -46,   -59,   -63,   -65,   -73,    -3,   -15,   -73,
474   -22,   -73,   -30,   -33,   -73,   -69,   -70,   -71,   -37,   -73,
475   -41,   -73,   -51,   -58,   -61,   -45,   -73,   -62,   -64,    89,
476   -17,   -19,   -73,   -21,   -18,   -28,   -73,   -35,   -66,   -53,
477   -54,   -55,   -56,   -57,   -67,   -68,   -39,   -43,   -49,   -73,
478   -60,   -47,   -73,   -29,   -52,   -48,   -73,   -20,   -50 ]
479
480racc_goto_table = [
481     4,    39,     4,    68,    74,    75,     5,     6,     5,     6,
482    51,    42,    44,    56,     3,    49,    37,    57,    58,    41,
483    43,    48,    84,    50,    66,    55,     1,    64,    84,    84,
484    45,    46,    42,    45,    46,     2,    85,    86,    80,    84,
485    84,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    82,   nil,
486   nil,   nil,    78 ]
487
488racc_goto_check = [
489     4,    10,     4,    31,    31,    31,     5,     6,     5,     6,
490    27,    12,    21,    27,     3,    21,     3,     9,     9,    17,
491    19,    23,    32,    26,    11,    29,     1,    10,    32,    32,
492     5,     6,    12,     5,     6,     2,    31,    31,    33,    32,
493    32,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    10,   nil,
494   nil,   nil,     4 ]
495
496racc_goto_pointer = [
497   nil,    26,    35,    14,     0,     6,     7,   nil,   nil,   -17,
498   -14,   -17,    -9,   nil,   nil,   nil,   nil,     4,   nil,    -2,
499   nil,   -12,   nil,    -4,   nil,   nil,    -5,   -20,   nil,    -6,
500   nil,   -42,   -46,   -16 ]
501
502racc_goto_default = [
503   nil,   nil,   nil,   nil,    70,    71,    72,     7,     8,    13,
504   nil,   nil,    21,    16,    17,    18,    19,    20,    22,    23,
505    24,   nil,    25,    26,    27,    28,    29,   nil,    31,    32,
506    52,   nil,    69,    53 ]
507
508racc_reduce_table = [
509  0, 0, :racc_error,
510  1, 15, :_reduce_1,
511  0, 15, :_reduce_2,
512  2, 16, :_reduce_3,
513  1, 16, :_reduce_4,
514  1, 17, :_reduce_5,
515  1, 17, :_reduce_6,
516  1, 17, :_reduce_none,
517  1, 17, :_reduce_8,
518  1, 17, :_reduce_9,
519  1, 17, :_reduce_10,
520  1, 17, :_reduce_11,
521  1, 21, :_reduce_12,
522  1, 22, :_reduce_13,
523  1, 18, :_reduce_14,
524  2, 23, :_reduce_15,
525  1, 23, :_reduce_16,
526  3, 19, :_reduce_17,
527  1, 25, :_reduce_18,
528  2, 24, :_reduce_19,
529  4, 24, :_reduce_20,
530  2, 24, :_reduce_21,
531  1, 24, :_reduce_22,
532  1, 26, :_reduce_none,
533  1, 26, :_reduce_none,
534  1, 26, :_reduce_none,
535  1, 26, :_reduce_none,
536  1, 20, :_reduce_27,
537  3, 20, :_reduce_28,
538  4, 20, :_reduce_29,
539  2, 31, :_reduce_30,
540  1, 31, :_reduce_31,
541  1, 27, :_reduce_32,
542  2, 32, :_reduce_33,
543  1, 32, :_reduce_34,
544  3, 33, :_reduce_35,
545  1, 28, :_reduce_36,
546  2, 36, :_reduce_37,
547  1, 36, :_reduce_38,
548  3, 37, :_reduce_39,
549  1, 29, :_reduce_40,
550  2, 39, :_reduce_41,
551  1, 39, :_reduce_42,
552  3, 40, :_reduce_43,
553  1, 30, :_reduce_44,
554  2, 42, :_reduce_45,
555  1, 42, :_reduce_46,
556  3, 43, :_reduce_47,
557  3, 41, :_reduce_48,
558  2, 41, :_reduce_49,
559  4, 41, :_reduce_50,
560  1, 41, :_reduce_51,
561  2, 45, :_reduce_52,
562  1, 45, :_reduce_none,
563  1, 46, :_reduce_54,
564  1, 46, :_reduce_55,
565  1, 46, :_reduce_none,
566  1, 46, :_reduce_57,
567  1, 44, :_reduce_none,
568  0, 44, :_reduce_none,
569  2, 47, :_reduce_none,
570  1, 47, :_reduce_none,
571  2, 34, :_reduce_62,
572  1, 34, :_reduce_63,
573  2, 38, :_reduce_64,
574  1, 38, :_reduce_65,
575  2, 35, :_reduce_66,
576  2, 35, :_reduce_67,
577  2, 35, :_reduce_68,
578  1, 35, :_reduce_69,
579  1, 35, :_reduce_none,
580  1, 35, :_reduce_71,
581  0, 35, :_reduce_72 ]
582
583racc_reduce_n = 73
584
585racc_shift_n = 89
586
587racc_token_table = {
588  false => 0,
589  :error => 1,
590  :DUMMY => 2,
591  :ITEMLISTLINE => 3,
592  :ENUMLISTLINE => 4,
593  :DESCLISTLINE => 5,
594  :METHODLISTLINE => 6,
595  :STRINGLINE => 7,
596  :WHITELINE => 8,
597  :SUBTREE => 9,
598  :HEADLINE => 10,
599  :INCLUDE => 11,
600  :INDENT => 12,
601  :DEDENT => 13 }
602
603racc_nt_base = 14
604
605racc_use_result_var = true
606
607Racc_arg = [
608  racc_action_table,
609  racc_action_check,
610  racc_action_default,
611  racc_action_pointer,
612  racc_goto_table,
613  racc_goto_check,
614  racc_goto_default,
615  racc_goto_pointer,
616  racc_nt_base,
617  racc_reduce_table,
618  racc_token_table,
619  racc_shift_n,
620  racc_reduce_n,
621  racc_use_result_var ]
622
623Racc_token_to_s_table = [
624  "$end",
625  "error",
626  "DUMMY",
627  "ITEMLISTLINE",
628  "ENUMLISTLINE",
629  "DESCLISTLINE",
630  "METHODLISTLINE",
631  "STRINGLINE",
632  "WHITELINE",
633  "SUBTREE",
634  "HEADLINE",
635  "INCLUDE",
636  "INDENT",
637  "DEDENT",
638  "$start",
639  "document",
640  "blocks",
641  "block",
642  "textblock",
643  "verbatim",
644  "lists",
645  "headline",
646  "include",
647  "textblockcontent",
648  "verbatimcontent",
649  "verbatim_after_lists",
650  "list",
651  "itemlist",
652  "enumlist",
653  "desclist",
654  "methodlist",
655  "lists2",
656  "itemlistitems",
657  "itemlistitem",
658  "first_textblock_in_itemlist",
659  "other_blocks_in_list",
660  "enumlistitems",
661  "enumlistitem",
662  "first_textblock_in_enumlist",
663  "desclistitems",
664  "desclistitem",
665  "description_part",
666  "methodlistitems",
667  "methodlistitem",
668  "whitelines",
669  "blocks_in_list",
670  "block_in_list",
671  "whitelines2" ]
672
673Racc_debug_parser = false
674
675##### State transition tables end #####
676
677# reduce 0 omitted
678
679def _reduce_1(val, _values, result)
680 result = RDoc::Markup::Document.new(*val[0])
681    result
682end
683
684def _reduce_2(val, _values, result)
685 raise ParseError, "file empty"
686    result
687end
688
689def _reduce_3(val, _values, result)
690 result = val[0].concat val[1]
691    result
692end
693
694def _reduce_4(val, _values, result)
695 result = val[0]
696    result
697end
698
699def _reduce_5(val, _values, result)
700 result = val
701    result
702end
703
704def _reduce_6(val, _values, result)
705 result = val
706    result
707end
708
709# reduce 7 omitted
710
711def _reduce_8(val, _values, result)
712 result = val
713    result
714end
715
716def _reduce_9(val, _values, result)
717 result = val
718    result
719end
720
721def _reduce_10(val, _values, result)
722 result = [RDoc::Markup::BlankLine.new]
723    result
724end
725
726def _reduce_11(val, _values, result)
727 result = val[0].parts
728    result
729end
730
731def _reduce_12(val, _values, result)
732      # val[0] is like [level, title]
733      title = @inline_parser.parse(val[0][1])
734      result = RDoc::Markup::Heading.new(val[0][0], title)
735
736    result
737end
738
739def _reduce_13(val, _values, result)
740      result = RDoc::Markup::Include.new val[0], @include_path
741
742    result
743end
744
745def _reduce_14(val, _values, result)
746      # val[0] is Array of String
747      result = paragraph val[0]
748
749    result
750end
751
752def _reduce_15(val, _values, result)
753 result << val[1].rstrip
754    result
755end
756
757def _reduce_16(val, _values, result)
758 result = [val[0].rstrip]
759    result
760end
761
762def _reduce_17(val, _values, result)
763      # val[1] is Array of String
764      content = cut_off val[1]
765      result = RDoc::Markup::Verbatim.new(*content)
766
767      # imform to lexer.
768      @in_verbatim = false
769
770    result
771end
772
773def _reduce_18(val, _values, result)
774      # val[0] is Array of String
775      content = cut_off val[0]
776      result = RDoc::Markup::Verbatim.new(*content)
777
778      # imform to lexer.
779      @in_verbatim = false
780
781    result
782end
783
784def _reduce_19(val, _values, result)
785      result << val[1]
786
787    result
788end
789
790def _reduce_20(val, _values, result)
791      result.concat val[2]
792
793    result
794end
795
796def _reduce_21(val, _values, result)
797      result << "\n"
798
799    result
800end
801
802def _reduce_22(val, _values, result)
803      result = val
804      # inform to lexer.
805      @in_verbatim = true
806
807    result
808end
809
810# reduce 23 omitted
811
812# reduce 24 omitted
813
814# reduce 25 omitted
815
816# reduce 26 omitted
817
818def _reduce_27(val, _values, result)
819      result = val[0]
820
821    result
822end
823
824def _reduce_28(val, _values, result)
825      result = val[1]
826
827    result
828end
829
830def _reduce_29(val, _values, result)
831      result = val[1].push(val[2])
832
833    result
834end
835
836def _reduce_30(val, _values, result)
837 result = val[0] << val[1]
838    result
839end
840
841def _reduce_31(val, _values, result)
842 result = [val[0]]
843    result
844end
845
846def _reduce_32(val, _values, result)
847      result = RDoc::Markup::List.new :BULLET, *val[0]
848
849    result
850end
851
852def _reduce_33(val, _values, result)
853 result.push(val[1])
854    result
855end
856
857def _reduce_34(val, _values, result)
858 result = val
859    result
860end
861
862def _reduce_35(val, _values, result)
863      result = RDoc::Markup::ListItem.new nil, val[0], *val[1]
864
865    result
866end
867
868def _reduce_36(val, _values, result)
869      result = RDoc::Markup::List.new :NUMBER, *val[0]
870
871    result
872end
873
874def _reduce_37(val, _values, result)
875 result.push(val[1])
876    result
877end
878
879def _reduce_38(val, _values, result)
880 result = val
881    result
882end
883
884def _reduce_39(val, _values, result)
885      result = RDoc::Markup::ListItem.new nil, val[0], *val[1]
886
887    result
888end
889
890def _reduce_40(val, _values, result)
891      result = RDoc::Markup::List.new :NOTE, *val[0]
892
893    result
894end
895
896def _reduce_41(val, _values, result)
897 result.push(val[1])
898    result
899end
900
901def _reduce_42(val, _values, result)
902 result = val
903    result
904end
905
906def _reduce_43(val, _values, result)
907      term = @inline_parser.parse val[0].strip
908
909      result = RDoc::Markup::ListItem.new term, *val[1]
910
911    result
912end
913
914def _reduce_44(val, _values, result)
915      result = RDoc::Markup::List.new :LABEL, *val[0]
916
917    result
918end
919
920def _reduce_45(val, _values, result)
921 result.push(val[1])
922    result
923end
924
925def _reduce_46(val, _values, result)
926 result = val
927    result
928end
929
930def _reduce_47(val, _values, result)
931      result = RDoc::Markup::ListItem.new "<tt>#{val[0].strip}</tt>", *val[1]
932
933    result
934end
935
936def _reduce_48(val, _values, result)
937      result = [val[1]].concat(val[2])
938
939    result
940end
941
942def _reduce_49(val, _values, result)
943      result = [val[1]]
944
945    result
946end
947
948def _reduce_50(val, _values, result)
949      result = val[2]
950
951    result
952end
953
954def _reduce_51(val, _values, result)
955      result = []
956
957    result
958end
959
960def _reduce_52(val, _values, result)
961 result.concat val[1]
962    result
963end
964
965# reduce 53 omitted
966
967def _reduce_54(val, _values, result)
968 result = val
969    result
970end
971
972def _reduce_55(val, _values, result)
973 result = val
974    result
975end
976
977# reduce 56 omitted
978
979def _reduce_57(val, _values, result)
980 result = []
981    result
982end
983
984# reduce 58 omitted
985
986# reduce 59 omitted
987
988# reduce 60 omitted
989
990# reduce 61 omitted
991
992def _reduce_62(val, _values, result)
993      result = paragraph [val[0]].concat(val[1])
994
995    result
996end
997
998def _reduce_63(val, _values, result)
999      result = paragraph [val[0]]
1000
1001    result
1002end
1003
1004def _reduce_64(val, _values, result)
1005      result = paragraph [val[0]].concat(val[1])
1006
1007    result
1008end
1009
1010def _reduce_65(val, _values, result)
1011      result = paragraph [val[0]]
1012
1013    result
1014end
1015
1016def _reduce_66(val, _values, result)
1017      result = [val[0]].concat(val[1])
1018
1019    result
1020end
1021
1022def _reduce_67(val, _values, result)
1023 result.concat val[1]
1024    result
1025end
1026
1027def _reduce_68(val, _values, result)
1028 result = val[1]
1029    result
1030end
1031
1032def _reduce_69(val, _values, result)
1033 result = val
1034    result
1035end
1036
1037# reduce 70 omitted
1038
1039def _reduce_71(val, _values, result)
1040 result = []
1041    result
1042end
1043
1044def _reduce_72(val, _values, result)
1045 result = []
1046    result
1047end
1048
1049def _reduce_none(val, _values, result)
1050  val[0]
1051end
1052
1053end   # class BlockParser
1054
1055end
1056