#
# DO NOT MODIFY!!!!
# This file is automatically generated by Racc 1.8.1
# from Racc grammar file "rdblockparser.ry".
#

require 'racc/parser.rb'

require "rd/rdinlineparser.tab.rb"
require "rd/parser-util"

module RD
class RDParser < Racc::Parser

module_eval(<<'...end rdblockparser.ry/module_eval...', 'rdblockparser.ry', 231)
include ParserUtility

TMPFILE = ["rdtmp", $$, 0]

attr_reader :tree

def initialize
  @inline_parser = RDInlineParser.new(self)
end

def parse(src, tree)
  @src = src
  @src.push(false)
  # RDtree
  @tree = tree
  
  # @i: index(line no.) of src
  @i = 0
  # stack for current indentation
  @indent_stack = []
  # how indented.
  @current_indent = @indent_stack.join("")
  # RDParser for tmp src
  @subparser = nil
  # which part is in now
  @in_part = nil
  @part_content = []

  @in_verbatim = false

  @yydebug = true
  do_parse
end

def next_token
  # preprocessing
  # if it is not in RD part
  # => method
  while @in_part != "rd"
    line = @src[@i]
    @i += 1 # next line
    
    case line
    # src end
    when false
      return [false, false]
    # RD part begin
    when /^=begin\s*(?:\bRD\b.*)?\s*$/
      if @in_part # if in non-RD part
	@part_content.push(line)
      else
	@in_part = "rd"
	return [:WHITELINE, "=begin\n"] # <= for textblockand
      end
    # non-RD part begin
    when /^=begin\s+(\w+)/
      part = $1
      if @in_part # if in non-RD part
	@part_content.push(line)
      else
	@in_part = part if @tree.filter[part] # if filter exists
#	p "BEGIN_PART: #{@in_part}" # DEBUG
      end
    # non-RD part end
    when /^=end/
      if @in_part # if in non-RD part
#	p "END_PART: #{@in_part}" # DEBUG
	# make Part-in object
	part = RD::Part.new(@part_content.join(""), @tree, "r")
	@part_content.clear
	# call filter, part_out is output(Part object)
	part_out = @tree.filter[@in_part].call(part)
	
	if @tree.filter[@in_part].mode == :rd # if output is RD formated
	  subtree = parse_subtree( (RUBY_VERSION >= '1.9.0' ? part_out.lines.to_a : part_out.to_a ) )
	else # if output is target formated
	  basename = TMPFILE.join('.')
	  TMPFILE[-1] += 1
	  tmpfile = open(@tree.tmp_dir + "/" + basename + ".#{@in_part}", "w")
	  tmpfile.print(part_out)
	  tmpfile.close
	  subtree = parse_subtree(["=begin\n", "<<< #{basename}\n", "=end\n"])
	end
	@in_part = nil
	return [:SUBTREE, subtree]
      end
    else
      if @in_part # if in non-RD part
	@part_content.push(line)
      end
    end
  end

  @current_indent = @indent_stack.join("")
  line = @src[@i]
  case line
  when false
    if_current_indent_equal("") do
      [false, false]
    end
  when /^=end/
    if_current_indent_equal("") do
      @in_part = nil
      [:WHITELINE, "=end"] # MUST CHANGE??
    end
  when /^\s*$/
    @i += 1 # next line
    return [:WHITELINE, ':WHITELINE']
  when /^\#/  # comment line
    @i += 1 # next line
    self.next_token()
  when /^(={1,4})(?!=)\s*(?=\S)/, /^(\+{1,2})(?!\+)\s*(?=\S)/
    rest = $'                    # '
    rest.strip!
    mark = $1
    if_current_indent_equal("") do
      return [:HEADLINE, [Headline.mark_to_level(mark), rest]]
    end
  when /^<<<\s*(\S+)/
    file = $1
    if_current_indent_equal("") do
      suffix = file[-3 .. -1] 
      if suffix == ".rd" or suffix == ".rb"
	subtree = parse_subtree(get_included(file))
	[:SUBTREE, subtree]
      else
	[:INCLUDE, file]
      end
    end
  when /^(\s*)\*(\s*)/
    rest = $'                   # '
    newIndent = $2
    if_current_indent_equal($1) do
      if @in_verbatim
	[:STRINGLINE, line]
      else
	@indent_stack.push("\s" << newIndent)
	[:ITEMLISTLINE, rest]
      end
    end
  when /^(\s*)(\(\d+\))(\s*)/
    rest = $'                     # '
    mark = $2
    newIndent = $3
    if_current_indent_equal($1) do
      if @in_verbatim
	[:STRINGLINE, line]
      else
	@indent_stack.push("\s" * mark.size << newIndent)
	[:ENUMLISTLINE, rest]
      end
    end
  when /^(\s*):(\s*)/
    rest = $'                    # '
    newIndent = $2
    if_current_indent_equal($1) do
      if @in_verbatim
	[:STRINGLINE, line]
      else
	@indent_stack.push("\s" << $2)
	[:DESCLISTLINE, rest]
      end
    end
  when /^(\s*)---(?!-|\s*$)/
    indent = $1
    rest = $'
    /\s*/ === rest
    term = $'
    new_indent = $&
    if_current_indent_equal(indent) do
      if @in_verbatim
	[:STRINGLINE, line]
      else
	@indent_stack.push("\s\s\s" + new_indent)
	[:METHODLISTLINE, term]
      end
    end
  when /^(\s*)/
    if_current_indent_equal($1) do
      [:STRINGLINE, line]
    end
  else
    raise "[BUG] parsing error may occured."
  end
end

=begin private
  --- RDParser#if_current_indent_equal(indent)
        if (({@current_indent == ((|indent|))})) then yield block, otherwise
        process indentation.
=end
# always @current_indent = @indent_stack.join("") 
def if_current_indent_equal(indent)
  indent = indent.sub(/\t/, "\s" * 8)
  if @current_indent == indent
    @i += 1 # next line
    yield
  elsif indent.index(@current_indent) == 0
    @indent_stack.push(indent[@current_indent.size .. -1])
    [:INDENT, ":INDENT"]
  else
    @indent_stack.pop
    [:DEDENT, ":DEDENT"]
  end
end
private :if_current_indent_equal

def cut_off(src)
  ret = []
  whiteline_buf = []
  line = src.shift
  /^\s*/ =~ line
  indent = Regexp.quote($&)
  ret.push($')                 # '
  while line = src.shift
    if /^(\s*)$/ =~ line
      whiteline_buf.push(line)
    elsif /^#{indent}/ =~ line
      unless whiteline_buf.empty?
	ret.concat(whiteline_buf)
	whiteline_buf.clear
      end
      ret.push($')            # '
    else
      raise "[BUG]: probably Parser Error while cutting off.\n"
    end
  end
  ret
end
private :cut_off

def set_term_to_element(parent, term)
#  parent.set_term_under_document_struct(term, @tree.document_struct)
  parent.set_term_without_document_struct(term)
end
private :set_term_to_element

def on_error( et, ev, _values )
  prv, cur, nxt = format_line_num(@i, @i+1, @i+2)
  
  raise ParseError, <<Msg

RD syntax error: line #{@i+1}:
  #{prv}  |#{@src[@i-1].chomp}
  #{cur}=>|#{@src[@i].chomp}
  #{nxt}  |#{@src[@i+1].chomp}

Msg
end

def line_index
  @i
end

def parse_subtree(src)
  @subparser = RD::RDParser.new() unless @subparser
  
  @subparser.parse(src, @tree)
end
private :parse_subtree

def get_included(file)
  included = ""
  @tree.include_path.each do |dir|
    file_name = dir + "/" + file
    if test(?e, file_name)
      included = IO.readlines(file_name)
      break
    end
  end
  included
end
private :get_included

def format_line_num(*args)
  width = args.collect{|i| i.to_s.length }.max
  args.collect{|i| sprintf("%#{width}d", i) }
end
private :format_line_num

...end rdblockparser.ry/module_eval...
##### State transition tables begin ###

racc_action_table = [
    34,    35,    30,    33,    40,    34,    35,    30,    33,    40,
    65,    34,    35,    30,    33,    14,    73,    36,    38,    34,
    15,    88,    34,    35,    30,    33,    14,     9,    10,    11,
    12,    15,    34,    35,    30,    33,    14,     9,    10,    11,
    12,    15,    34,    35,    30,    33,    35,    47,    30,    54,
    33,    15,    34,    35,    30,    33,    54,    47,    14,    14,
    59,    15,    34,    35,    30,    33,    14,    73,    67,    76,
    77,    15,    34,    35,    30,    33,    14,    73,    54,    81,
    38,    15,    34,    35,    30,    33,    14,    73,    38,    40,
    83,    15,    34,    35,    30,    33,    14,    73,   nil,   nil,
   nil,    15,    34,    35,    30,    33,    14,    73,   nil,   nil,
   nil,    15,    34,    35,    30,    33,    14,    73,   nil,   nil,
   nil,    15,    34,    35,    30,    33,    14,    73,   nil,   nil,
   nil,    15,    34,    35,    30,    33,    14,    73,   nil,   nil,
   nil,    15,    34,    35,    30,    33,    14,    73,    61,    63,
   nil,    15,    14,    62,    60,    61,    63,    79,    61,    63,
    62,    87,   nil,    62,    34,    35,    30,    33 ]

racc_action_check = [
    41,    41,    41,    41,    41,    15,    15,    15,    15,    15,
    41,    86,    86,    86,    86,    86,    86,     1,    13,    22,
    86,    86,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,    24,    24,    24,    24,    25,    24,    28,    30,
    31,    24,    27,    27,    27,    27,    33,    27,    34,    35,
    36,    27,    45,    45,    45,    45,    45,    45,    44,    49,
    51,    45,    46,    46,    46,    46,    46,    46,    54,    56,
    57,    46,    47,    47,    47,    47,    47,    47,    58,    62,
    66,    47,    68,    68,    68,    68,    68,    68,   nil,   nil,
   nil,    68,    74,    74,    74,    74,    74,    74,   nil,   nil,
   nil,    74,    75,    75,    75,    75,    75,    75,   nil,   nil,
   nil,    75,    78,    78,    78,    78,    78,    78,   nil,   nil,
   nil,    78,    79,    79,    79,    79,    79,    79,   nil,   nil,
   nil,    79,    85,    85,    85,    85,    85,    85,    39,    39,
   nil,    85,    52,    39,    39,    82,    82,    52,    64,    64,
    82,    82,   nil,    64,    20,    20,    20,    20 ]

racc_action_pointer = [
    19,    17,    29,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,    11,   nil,     2,   nil,   nil,   nil,   nil,
   161,   nil,    16,   nil,    39,    42,   nil,    49,    43,   nil,
    41,    44,   nil,    48,    51,    52,    60,   nil,   nil,   141,
   nil,    -3,   nil,   nil,    55,    59,    69,    79,   nil,    56,
   nil,    57,   145,   nil,    70,   nil,    66,    73,    81,   nil,
   nil,   nil,    82,   nil,   151,   nil,    77,   nil,    89,   nil,
   nil,   nil,   nil,   nil,    99,   109,   nil,   nil,   119,   129,
   nil,   nil,   148,   nil,   nil,   139,     8,   nil,   nil ]

racc_action_default = [
    -2,   -73,    -1,    -4,    -5,    -6,    -7,    -8,    -9,   -10,
   -11,   -12,   -13,   -14,   -16,   -73,   -23,   -24,   -25,   -26,
   -27,   -31,   -32,   -34,   -72,   -36,   -38,   -72,   -40,   -42,
   -59,   -44,   -46,   -59,   -63,   -65,   -73,    -3,   -15,   -73,
   -22,   -73,   -30,   -33,   -73,   -69,   -70,   -71,   -37,   -73,
   -41,   -73,   -51,   -58,   -61,   -45,   -73,   -62,   -64,    89,
   -17,   -19,   -73,   -21,   -18,   -28,   -73,   -35,   -66,   -53,
   -54,   -55,   -56,   -57,   -67,   -68,   -39,   -43,   -49,   -73,
   -60,   -47,   -73,   -29,   -52,   -48,   -73,   -20,   -50 ]

racc_goto_table = [
     4,    39,     4,    68,    74,    75,     5,     6,     5,     6,
    44,    42,    51,    49,     3,    56,    37,    57,    58,     1,
     2,    66,    84,    41,    43,    48,    50,    64,    84,    84,
    45,    46,    42,    45,    46,    55,    85,    86,    80,    84,
    84,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    82,   nil,
   nil,   nil,    78 ]

racc_goto_check = [
     4,    10,     4,    31,    31,    31,     5,     6,     5,     6,
    21,    12,    27,    21,     3,    27,     3,     9,     9,     1,
     2,    11,    32,    17,    19,    23,    26,    10,    32,    32,
     5,     6,    12,     5,     6,    29,    31,    31,    33,    32,
    32,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    10,   nil,
   nil,   nil,     4 ]

racc_goto_pointer = [
   nil,    19,    20,    14,     0,     6,     7,   nil,   nil,   -17,
   -14,   -20,    -9,   nil,   nil,   nil,   nil,     8,   nil,     2,
   nil,   -14,   nil,     0,   nil,   nil,    -2,   -18,   nil,     4,
   nil,   -42,   -46,   -16 ]

racc_goto_default = [
   nil,   nil,   nil,   nil,    70,    71,    72,     7,     8,    13,
   nil,   nil,    21,    16,    17,    18,    19,    20,    22,    23,
    24,   nil,    25,    26,    27,    28,    29,   nil,    31,    32,
    52,   nil,    69,    53 ]

racc_reduce_table = [
  0, 0, :racc_error,
  1, 15, :_reduce_1,
  0, 15, :_reduce_2,
  2, 16, :_reduce_3,
  1, 16, :_reduce_none,
  1, 17, :_reduce_5,
  1, 17, :_reduce_6,
  1, 17, :_reduce_none,
  1, 17, :_reduce_8,
  1, 17, :_reduce_9,
  1, 17, :_reduce_10,
  1, 17, :_reduce_11,
  1, 21, :_reduce_12,
  1, 22, :_reduce_13,
  1, 18, :_reduce_14,
  2, 23, :_reduce_15,
  1, 23, :_reduce_16,
  3, 19, :_reduce_17,
  1, 25, :_reduce_18,
  2, 24, :_reduce_19,
  4, 24, :_reduce_20,
  2, 24, :_reduce_21,
  1, 24, :_reduce_22,
  1, 26, :_reduce_none,
  1, 26, :_reduce_none,
  1, 26, :_reduce_none,
  1, 26, :_reduce_none,
  1, 20, :_reduce_none,
  3, 20, :_reduce_28,
  4, 20, :_reduce_29,
  2, 31, :_reduce_30,
  1, 31, :_reduce_31,
  1, 27, :_reduce_32,
  2, 32, :_reduce_33,
  1, 32, :_reduce_34,
  3, 33, :_reduce_35,
  1, 28, :_reduce_36,
  2, 36, :_reduce_37,
  1, 36, :_reduce_38,
  3, 37, :_reduce_39,
  1, 29, :_reduce_40,
  2, 39, :_reduce_41,
  1, 39, :_reduce_42,
  3, 40, :_reduce_43,
  1, 30, :_reduce_44,
  2, 42, :_reduce_45,
  1, 42, :_reduce_46,
  3, 43, :_reduce_47,
  3, 41, :_reduce_48,
  2, 41, :_reduce_49,
  4, 41, :_reduce_50,
  1, 41, :_reduce_51,
  2, 45, :_reduce_52,
  1, 45, :_reduce_none,
  1, 46, :_reduce_54,
  1, 46, :_reduce_55,
  1, 46, :_reduce_none,
  1, 46, :_reduce_57,
  1, 44, :_reduce_none,
  0, 44, :_reduce_none,
  2, 47, :_reduce_none,
  1, 47, :_reduce_none,
  2, 34, :_reduce_62,
  1, 34, :_reduce_63,
  2, 38, :_reduce_64,
  1, 38, :_reduce_65,
  2, 35, :_reduce_66,
  2, 35, :_reduce_67,
  2, 35, :_reduce_68,
  1, 35, :_reduce_69,
  1, 35, :_reduce_none,
  1, 35, :_reduce_71,
  0, 35, :_reduce_72 ]

racc_reduce_n = 73

racc_shift_n = 89

racc_token_table = {
  false => 0,
  :error => 1,
  :DUMMY => 2,
  :ITEMLISTLINE => 3,
  :ENUMLISTLINE => 4,
  :DESCLISTLINE => 5,
  :METHODLISTLINE => 6,
  :STRINGLINE => 7,
  :WHITELINE => 8,
  :SUBTREE => 9,
  :HEADLINE => 10,
  :INCLUDE => 11,
  :INDENT => 12,
  :DEDENT => 13 }

racc_nt_base = 14

racc_use_result_var = true

Racc_arg = [
  racc_action_table,
  racc_action_check,
  racc_action_default,
  racc_action_pointer,
  racc_goto_table,
  racc_goto_check,
  racc_goto_default,
  racc_goto_pointer,
  racc_nt_base,
  racc_reduce_table,
  racc_token_table,
  racc_shift_n,
  racc_reduce_n,
  racc_use_result_var ]
Ractor.make_shareable(Racc_arg) if defined?(Ractor)

Racc_token_to_s_table = [
  "$end",
  "error",
  "DUMMY",
  "ITEMLISTLINE",
  "ENUMLISTLINE",
  "DESCLISTLINE",
  "METHODLISTLINE",
  "STRINGLINE",
  "WHITELINE",
  "SUBTREE",
  "HEADLINE",
  "INCLUDE",
  "INDENT",
  "DEDENT",
  "$start",
  "document",
  "blocks",
  "block",
  "textblock",
  "verbatim",
  "lists",
  "headline",
  "include",
  "textblockcontent",
  "verbatimcontent",
  "verbatim_after_lists",
  "list",
  "itemlist",
  "enumlist",
  "desclist",
  "methodlist",
  "lists2",
  "itemlistitems",
  "itemlistitem",
  "first_textblock_in_itemlist",
  "other_blocks_in_list",
  "enumlistitems",
  "enumlistitem",
  "first_textblock_in_enumlist",
  "desclistitems",
  "desclistitem",
  "description_part",
  "methodlistitems",
  "methodlistitem",
  "whitelines",
  "blocks_in_list",
  "block_in_list",
  "whitelines2" ]
Ractor.make_shareable(Racc_token_to_s_table) if defined?(Ractor)

Racc_debug_parser = false

##### State transition tables end #####

# reduce 0 omitted

module_eval(<<'.,.,', 'rdblockparser.ry', 12)
  def _reduce_1(val, _values, result)
     result = DocumentElement.new
		       add_children_to_element(result, *val[0])

    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 16)
  def _reduce_2(val, _values, result)
                             raise ParseError,
                         "Error: file empty."

    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 20)
  def _reduce_3(val, _values, result)
     result.concat(val[1])
    result
  end
.,.,

# reduce 4 omitted

module_eval(<<'.,.,', 'rdblockparser.ry', 23)
  def _reduce_5(val, _values, result)
     result = val
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 24)
  def _reduce_6(val, _values, result)
     result = val
    result
  end
.,.,

# reduce 7 omitted

module_eval(<<'.,.,', 'rdblockparser.ry', 26)
  def _reduce_8(val, _values, result)
     result = val
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 27)
  def _reduce_9(val, _values, result)
     result = val
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 28)
  def _reduce_10(val, _values, result)
     result = []
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 29)
  def _reduce_11(val, _values, result)
     result = val[0].blocks
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 32)
  def _reduce_12(val, _values, result)
     # val[0] is like [level, title]
			  title = @inline_parser.parse(val[0][1])
			  result = Headline.new(val[0][0])
			  add_children_to_element(result, *title)

    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 38)
  def _reduce_13(val, _values, result)
     result = Include.new(val[0])
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 42)
  def _reduce_14(val, _values, result)
     # val[0] is Array of String
			  content = cut_off(val[0]).join("")
			  contents = @inline_parser.parse(content)
			  result = TextBlock.new()
			  add_children_to_element(result, *contents)

    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 50)
  def _reduce_15(val, _values, result)
     result.push(val[1])
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 51)
  def _reduce_16(val, _values, result)
     result = val
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 55)
  def _reduce_17(val, _values, result)
     # val[1] is Array of String
			  content = cut_off(val[1])
			  result = Verbatim.new(content)
			  # imform to lexer.
			  @in_verbatim = false
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 62)
  def _reduce_18(val, _values, result)
     # val[0] is Array of String
			  content = cut_off(val[0])
			  result = Verbatim.new(content)
			  # imform to lexer.
			  @in_verbatim = false
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 69)
  def _reduce_19(val, _values, result)
     result.push(val[1])
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 71)
  def _reduce_20(val, _values, result)
     result.concat(val[2])
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 73)
  def _reduce_21(val, _values, result)
     result.push("\n")
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 74)
  def _reduce_22(val, _values, result)
     result = val
					# imform to lexer.
					@in_verbatim = true
    result
  end
.,.,

# reduce 23 omitted

# reduce 24 omitted

# reduce 25 omitted

# reduce 26 omitted

# reduce 27 omitted

module_eval(<<'.,.,', 'rdblockparser.ry', 85)
  def _reduce_28(val, _values, result)
     result = val[1]
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 87)
  def _reduce_29(val, _values, result)
     result = val[1].push(val[2])
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 90)
  def _reduce_30(val, _values, result)
     result.push(val[1])
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 91)
  def _reduce_31(val, _values, result)
     result = val
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 95)
  def _reduce_32(val, _values, result)
                              result = ItemList.new
			  add_children_to_element(result, *val[0])

    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 100)
  def _reduce_33(val, _values, result)
     result.push(val[1])
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 101)
  def _reduce_34(val, _values, result)
     result = val
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 105)
  def _reduce_35(val, _values, result)
                      result = ItemListItem.new
		  add_children_to_element(result, val[0], *val[1])

    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 111)
  def _reduce_36(val, _values, result)
                              result = EnumList.new
			  add_children_to_element(result, *val[0])

    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 116)
  def _reduce_37(val, _values, result)
     result.push(val[1])
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 117)
  def _reduce_38(val, _values, result)
     result = val
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 121)
  def _reduce_39(val, _values, result)
                      result = EnumListItem.new
		  add_children_to_element(result, val[0], *val[1])

    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 127)
  def _reduce_40(val, _values, result)
                              result = DescList.new
			  add_children_to_element(result, *val[0])

    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 132)
  def _reduce_41(val, _values, result)
    			result.push(val[1])
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 133)
  def _reduce_42(val, _values, result)
     result = val
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 137)
  def _reduce_43(val, _values, result)
                              term = DescListItem::Term.new
                          term_contents = @inline_parser.parse(val[0].strip)
			  add_children_to_element(term, *term_contents)

			  result = DescListItem.new
                          set_term_to_element(result, term)
		          add_children_to_element(result, *val[1])

    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 148)
  def _reduce_44(val, _values, result)
                              result = MethodList.new
			  add_children_to_element(result, *val[0])

    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 153)
  def _reduce_45(val, _values, result)
     result.push(val[1])
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 154)
  def _reduce_46(val, _values, result)
     result = val
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 158)
  def _reduce_47(val, _values, result)
    			  term = MethodListItem::Term.new(val[0].strip)
			  result = MethodListItem.new
                          set_term_to_element(result, term)
			  add_children_to_element(result, *val[1])

    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 166)
  def _reduce_48(val, _values, result)
     result = [val[1]].concat(val[2])
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 167)
  def _reduce_49(val, _values, result)
     result = [val[1]]
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 169)
  def _reduce_50(val, _values, result)
     result = val[2]
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 170)
  def _reduce_51(val, _values, result)
     result = []
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 173)
  def _reduce_52(val, _values, result)
     result.concat(val[1])
    result
  end
.,.,

# reduce 53 omitted

module_eval(<<'.,.,', 'rdblockparser.ry', 176)
  def _reduce_54(val, _values, result)
     result = val
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 177)
  def _reduce_55(val, _values, result)
     result = val
    result
  end
.,.,

# reduce 56 omitted

module_eval(<<'.,.,', 'rdblockparser.ry', 179)
  def _reduce_57(val, _values, result)
     result = []
    result
  end
.,.,

# reduce 58 omitted

# reduce 59 omitted

# reduce 60 omitted

# reduce 61 omitted

module_eval(<<'.,.,', 'rdblockparser.ry', 190)
  def _reduce_62(val, _values, result)
     content = cut_off([val[0]].concat(val[1])).join("")
		  contents = @inline_parser.parse(content)
                  result = TextBlock.new()
		  add_children_to_element(result, *contents)

    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 197)
  def _reduce_63(val, _values, result)
     content = cut_off([val[0]]).join("")
		  contents = @inline_parser.parse(content)
		  result = TextBlock.new()
		  add_children_to_element(result, *contents)

    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 205)
  def _reduce_64(val, _values, result)
     content = cut_off([val[0]].concat(val[1])).join("")
		  contents = @inline_parser.parse(content)
	          result = TextBlock.new()
		  add_children_to_element(result, *contents)

    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 212)
  def _reduce_65(val, _values, result)
     content = cut_off([val[0]]).join("")
		  contents = @inline_parser.parse(content)
	          result = TextBlock.new()
		  add_children_to_element(result, *contents)

    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 219)
  def _reduce_66(val, _values, result)
     result = [val[0]].concat(val[1])
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 220)
  def _reduce_67(val, _values, result)
     result.concat(val[1])
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 221)
  def _reduce_68(val, _values, result)
     result = val[1]
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 222)
  def _reduce_69(val, _values, result)
     result = val
    result
  end
.,.,

# reduce 70 omitted

module_eval(<<'.,.,', 'rdblockparser.ry', 224)
  def _reduce_71(val, _values, result)
     result = []
    result
  end
.,.,

module_eval(<<'.,.,', 'rdblockparser.ry', 225)
  def _reduce_72(val, _values, result)
     result = []
    result
  end
.,.,

def _reduce_none(val, _values, result)
  val[0]
end

end   # class RDParser

end # end of module RD 
