Index: EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/core/bnf.tab.rb
===================================================================
--- EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/core/bnf.tab.rb	(revision 321)
+++ EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/core/bnf.tab.rb	(revision 429)
@@ -1,5 +1,5 @@
 #
 # DO NOT MODIFY!!!!
-# This file is automatically generated by Racc 1.4.12
+# This file is automatically generated by Racc 1.4.14
 # from Racc grammer file "".
 #
@@ -8,5 +8,5 @@
 class Generator < Racc::Parser
 
-module_eval(<<'...end bnf.y.rb/module_eval...', 'bnf.y.rb', 1504)
+module_eval(<<'...end bnf.y.rb/module_eval...', 'bnf.y.rb', 1534)
 
   RESERVED = {
@@ -30,4 +30,5 @@
     'import_C' => :IMPORT_C,
     'generate' => :GENERATE,
+    '__tool_info__' => :TOOL_INFO,
 
     # types
@@ -165,4 +166,7 @@
   # すべての構文解析が完了した
   @@b_end_all_parse = false
+
+  # tag なし struct
+  @@no_struct_tag_num = 0
 
   def self.parse( file_name, plugin = nil, b_reuse = false )
@@ -280,5 +284,5 @@
                   string += line
                   # この位置では error メソッドは使えない (token 読出し前)
-                  puts "error: #{file} line #{lineno}: string literal has newline without escape"
+                  puts "#{file}:#{lineno}:#{col}: error: string literal has newline without escape"
                   @@n_error += 1
                 end
@@ -321,8 +325,9 @@
                   b_in_string = true
                   # この位置では error メソッドは使えない (token 読出し前) # mikan cdl_error ではない
-                  puts "error: #{file} line #{lineno}: string literal has newline without escape"
+                  puts "#{file}:#{lineno}:#{col}: error: string literal has newline without escape"
                   @@n_error += 1
                 # 山括弧で囲まれた文字列
-                when /\A<[0-9A-Za-z_\. \/]+>/   # AB: angle bracke
+                # when /\A<[0-9A-Za-z_\. \/]+>/   # AB: angle bracke
+                when /\A<(?:[^>\\]|\\.)*>/   # これはうまく行くようだ
                   @q << [:AB_STRING_LITERAL, Token.new($&, file, lineno, col)]
                 # 行コメント
@@ -420,4 +425,5 @@
   @@n_error = 0
   @@n_warning = 0
+  @@n_info = 0
 
   # このメソッドは構文解析、意味解析からのみ呼出し可（コード生成でエラー発生は不適切）
@@ -453,5 +459,5 @@
       end
       if locale then
-        Console.puts "error: #{locale[0]}: line #{locale[1]} #{msg}"
+        Console.puts "#{locale[0]}:#{locale[1]}:#{locale[2]}: error: #{msg}"
       else
         Console.puts "error: #{msg}"
@@ -486,5 +492,5 @@
       end
       if locale then
-        Console.puts "warning: #{locale[0]}: line #{locale[1]} #{msg}"
+        Console.puts "#{locale[0]}:#{locale[1]}:#{locale[2]}: warning: #{msg}"
       else
         Console.puts "warning: #{msg}"
@@ -493,4 +499,37 @@
   end
 
+  # このメソッドは構文解析、意味解析からのみ呼出し可
+  def self.info( msg, *arg )
+    locale = nil
+    self.info2( locale, msg, *arg )
+  end
+
+  def self.info2( locale, msg, *arg )
+    @@n_info += 1
+
+    msg = TECSMsg.get_info_message( msg )
+    # $1, $2, ... を arg で置換
+    count = 1
+    arg.each{ |a|
+      str = TECSIO.str_code_convert( msg, a.to_s )
+      msg.sub!( /\$#{count}/, str )
+      count += 1
+    }
+
+    # import_C の中でのウォーニング？
+    if @@import_C then
+      C_parser.info( msg )
+    else
+      if @@b_end_all_parse == false || locale == nil then
+        locale = @@current_locale[ @@generator_nest ]
+      end
+      if locale then
+        Console.puts "#{locale[0]}:#{locale[1]}:#{locale[2]}: info: #{msg}"
+      else
+        Console.puts "info: #{msg}"
+      end
+    end
+  end
+
   def self.get_n_error
     @@n_error
@@ -501,6 +540,14 @@
   end
 
+  def self.get_n_info
+    @@n_info
+  end
+
   def self.get_nest
     @@generator_nest
+  end
+
+  def self.parsing_C?
+    @@import_C
   end
 
@@ -543,159 +590,165 @@
 
 clist = [
-'65,566,323,779,733,806,77,346,347,323,77,77,77,160,194,195,196,197,198',
-'199,200,202,174,203,664,133,860,133,99,207,208,209,210,211,212,213,663',
-'244,831,551,394,512,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25',
-'26,27,28,29,30,31,32,33,34,35,38,678,395,459,309,696,42,43,44,45,46',
-'47,48,49,858,98,654,827,440,133,133,826,133,133,133,133,133,65,186,186',
-'186,186,69,67,68,308,70,71,77,72,323,73,299,300,319,819,133,175,133',
-'134,320,134,322,186,74,74,74,75,76,76,76,133,86,186,186,186,186,78,85',
-'5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32',
-'33,34,35,38,77,420,186,358,359,42,43,44,45,46,47,48,49,186,134,134,134',
-'65,134,134,134,134,134,133,133,87,571,77,77,570,323,69,67,68,325,70',
-'71,133,72,799,73,530,134,341,134,299,300,319,342,343,397,798,682,320',
-'74,322,75,134,76,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26',
-'27,28,29,30,31,32,33,34,35,38,444,48,49,352,353,42,43,44,45,46,47,48',
-'49,328,329,509,510,65,299,300,301,186,302,303,305,306,683,606,77,134',
-'134,69,67,68,856,70,71,272,72,607,73,77,177,134,643,299,300,319,77,77',
-'636,203,780,320,74,322,75,684,76,5,6,7,10,13,14,15,16,17,18,19,20,21',
-'22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,795,160,610,676,855,42',
-'43,44,45,46,47,48,49,160,637,403,470,86,160,471,633,426,781,85,793,470',
-'87,87,471,502,705,69,67,68,758,70,71,397,72,396,73,159,625,402,194,195',
-'196,197,198,199,200,202,614,203,74,792,75,133,76,207,208,209,210,211',
-'212,213,299,300,301,160,302,303,305,306,194,195,196,197,198,199,200',
-'202,160,203,624,609,283,133,626,207,208,209,210,211,212,213,867,742',
-'809,194,195,196,197,198,199,200,202,335,203,336,159,337,133,229,207',
-'208,209,210,211,212,213,194,195,196,197,198,199,200,202,810,203,251',
-'160,230,133,409,207,208,209,210,211,212,213,229,649,707,666,400,837',
-'79,134,496,277,676,251,571,704,846,570,160,539,845,393,230,848,596,408',
-'818,229,748,147,619,630,146,706,648,684,667,401,838,134,761,495,278',
-'675,250,705,167,230,620,229,86,847,760,86,817,86,85,177,618,85,87,85',
-'341,87,134,87,270,342,343,230,632,177,194,195,196,197,198,199,200,202',
-'173,203,614,744,869,133,134,207,208,209,210,211,212,213,194,195,196',
-'197,198,199,200,202,147,203,650,146,651,133,172,207,208,209,210,211',
-'212,213,194,195,196,197,198,199,200,202,171,203,388,389,390,133,170',
-'207,208,209,210,211,212,213,194,195,196,197,198,199,200,202,169,203',
-'388,389,390,133,659,207,208,209,210,211,212,213,348,349,350,351,194',
-'195,196,197,198,199,200,202,168,203,583,330,660,133,134,207,208,209',
-'210,211,212,213,194,195,196,197,198,199,200,202,661,203,344,345,165',
-'133,134,207,208,209,210,211,212,213,194,195,196,197,198,199,200,202',
-'164,203,282,283,665,133,134,207,208,209,210,211,212,213,194,195,196',
-'197,198,199,200,202,668,203,352,353,670,133,134,207,208,209,210,211',
-'212,213,348,349,350,351,194,195,196,197,198,199,200,202,431,203,346',
-'347,671,133,134,207,208,209,210,211,212,213,672,448,673,376,377,378',
-'430,432,433,434,435,431,346,347,134,371,372,373,374,375,379,229,450',
-'451,452,449,348,349,350,351,674,430,432,433,434,435,134,341,142,143',
-'677,230,342,343,194,195,196,197,198,199,200,202,163,203,346,347,203',
-'133,134,207,208,209,210,211,212,213,346,347,344,345,194,195,196,197',
-'198,199,200,202,680,203,344,345,162,133,134,207,208,209,210,211,212',
-'213,194,195,196,197,198,199,200,202,161,203,398,330,689,133,160,207',
-'208,209,210,211,212,213,194,195,196,197,198,199,200,202,691,203,719',
-'510,692,133,693,207,208,209,210,211,212,213,194,195,196,197,198,199',
-'200,202,160,203,376,377,378,133,134,207,208,209,210,211,212,213,371',
-'372,373,374,375,379,102,103,104,105,106,107,108,109,110,111,112,695',
-'134,697,698,699,700,703,708,229,20,21,22,23,24,25,26,27,28,29,30,31',
-'32,33,134,711,562,74,714,230,715,716,194,195,196,197,198,199,200,202',
-'717,203,157,744,720,133,134,207,208,209,210,211,212,213,194,195,196',
-'197,198,199,200,202,721,203,722,599,724,133,134,207,208,209,210,211',
-'212,213,194,195,196,197,198,199,200,202,725,203,726,728,614,133,731',
-'207,208,209,210,211,212,213,194,195,196,197,198,199,200,202,732,203',
-'156,153,736,133,152,207,208,209,210,211,212,213,739,743,751,752,194',
-'195,196,197,198,199,200,202,144,203,754,576,755,133,134,207,208,209',
-'210,211,212,213,194,195,196,197,198,199,200,202,757,203,759,762,763',
-'133,134,207,208,209,210,211,212,213,194,195,196,197,198,199,200,202',
-'764,203,767,768,769,133,134,207,208,209,210,211,212,213,194,195,196',
-'197,198,199,200,202,770,203,643,232,703,133,134,207,208,209,210,211',
-'212,213,86,86,86,229,177,775,85,85,85,86,87,87,87,776,86,85,777,778',
-'134,87,85,141,711,230,87,786,194,195,196,197,198,199,200,202,140,203',
-'788,138,132,133,134,207,208,209,210,211,212,213,194,195,196,197,198',
-'199,200,202,791,203,130,796,128,133,134,207,208,209,210,211,212,213',
-'194,195,196,197,198,199,200,202,800,203,801,-383,802,133,134,207,208',
-'209,210,211,212,213,194,195,196,197,198,199,200,202,803,203,804,124',
-'123,133,807,207,208,209,210,211,212,213,767,203,813,816,194,195,196',
-'197,198,199,200,202,821,203,822,94,824,133,134,207,208,209,210,211,212',
-'213,194,195,196,197,198,199,200,202,828,203,829,830,90,133,134,207,208',
-'209,210,211,212,213,194,195,196,197,198,199,200,202,833,203,834,89,836',
-'133,134,207,208,209,210,211,212,213,194,195,196,197,198,199,200,202',
-'798,203,839,840,323,133,134,207,208,209,210,211,212,213,842,843,844',
-'849,194,195,196,197,198,199,200,202,850,203,851,88,857,133,134,207,208',
-'209,210,211,212,213,194,195,196,197,198,199,200,202,357,203,356,362',
-'363,133,134,207,208,209,210,211,212,213,194,195,196,197,198,199,200',
-'202,365,203,366,122,861,133,134,207,208,209,210,211,212,213,194,195',
-'196,197,198,199,200,202,3,203,156,355,399,133,134,207,208,209,210,211',
-'212,213,404,140,406,407,194,195,196,197,198,199,200,202,410,203,411',
-'412,413,133,134,207,208,209,210,211,212,213,194,195,196,197,198,199',
-'200,202,414,203,415,354,862,133,134,207,208,209,210,211,212,213,194',
-'195,196,197,198,199,200,202,438,203,439,442,453,133,134,207,208,209',
-'210,211,212,213,194,195,196,197,198,199,200,202,330,203,456,457,186',
-'133,134,207,208,209,210,211,212,213,464,465,466,473,194,195,196,197',
-'198,199,200,202,474,203,307,285,284,133,134,207,208,209,210,211,212',
-'213,194,195,196,197,198,199,200,202,281,203,280,279,276,133,134,207',
-'208,209,210,211,212,213,194,195,196,197,198,199,200,202,275,203,274',
-'267,177,133,134,207,208,209,210,211,212,213,194,195,196,197,198,199',
-'200,202,265,203,203,259,203,133,134,207,208,209,210,211,212,213,156',
-'503,504,505,194,195,196,197,198,199,200,202,506,203,507,863,513,133',
-'134,207,208,209,210,211,212,213,194,195,196,197,198,199,200,202,514',
-'203,515,259,517,133,134,207,208,209,210,211,212,213,86,86,86,86,252',
-'265,85,85,85,85,87,87,87,87,134,299,300,301,520,302,303,305,306,521',
-'194,195,196,197,198,199,200,202,203,203,524,203,134,133,203,207,208',
-'209,210,211,212,213,177,528,194,195,196,197,198,199,200,202,529,203',
-'532,533,534,133,134,207,208,209,210,211,212,213,115,116,117,118,119',
-'120,121,115,116,117,118,119,120,121,134,536,537,540,186,5,6,7,10,13',
-'14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38',
-'265,865,550,554,160,42,43,44,45,46,47,48,49,134,194,195,196,197,198',
-'199,200,202,556,203,866,186,560,133,562,207,208,209,210,211,212,213',
-'323,134,565,87,242,190,578,579,354,355,356,357,580,189,188,186,185,184',
-'183,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31',
-'32,33,34,35,38,182,181,596,597,599,42,43,44,45,46,47,48,49,194,195,196',
-'197,198,199,200,202,600,203,330,601,603,133,604,207,208,209,210,211',
-'212,213,605,,134,194,195,196,197,198,199,200,339,,203,,,,133,,207,208',
-'209,210,211,212,213,194,195,196,197,198,199,200,202,,203,,685,,133,',
-'207,208,209,210,211,212,213,194,195,196,197,198,199,200,202,,203,,,',
-'133,,207,208,209,210,211,212,213,,194,195,196,197,198,199,200,202,,203',
-',576,,133,134,207,208,209,210,211,212,213,,,,194,195,196,197,198,199',
-'200,202,,203,,655,,133,134,207,208,209,210,211,212,213,194,195,196,197',
-'198,199,200,202,,203,,,,133,134,207,208,209,210,211,212,213,194,195',
-'196,197,198,199,200,202,,203,,,,133,134,207,208,209,210,211,212,213',
-',194,195,196,197,198,199,200,202,,203,,,,133,134,207,208,209,210,211',
-'212,213,,,,194,195,196,197,198,199,200,202,,203,,,,133,134,207,208,209',
-'210,211,212,213,194,195,196,197,198,199,200,202,,203,,,,133,134,207',
-'208,209,210,211,212,213,194,195,196,197,198,199,200,202,,203,,,,133',
-'134,207,208,209,210,211,212,213,,194,195,196,197,198,199,200,202,,203',
-',,,133,134,207,208,209,210,211,212,213,,,,194,195,196,197,198,199,200',
-'202,,203,,,,133,134,207,208,209,210,211,212,213,102,103,104,105,106',
-'107,108,109,110,111,112,,,,134,,,,,,,,,,,,,,,,,,,,,,134,,115,116,117',
-'118,119,120,121,,,229,581,,,470,574,,573,,,,,134,,87,,,,,,230,,,,,,',
-',,,,,,,,,,134,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27',
-'28,29,30,31,32,33,34,35,38,236,,77,,,42,43,44,45,46,47,48,49,,,,,,,',
-',,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28',
-'29,30,31,32,33,34,35,38,657,,77,,,42,43,44,45,46,47,48,49,,,,,,,,,,',
-',,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29',
-'30,31,32,33,34,35,38,77,,,,,42,43,44,45,46,47,48,49,,,,,,,,,,,,,,,,',
-',,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31',
-'32,33,34,35,38,77,,,,,42,43,44,45,46,47,48,49,498,,,,,,,,,,,,,,,,,,5',
+'66,575,328,559,538,815,78,330,869,328,78,78,78,409,199,200,201,202,203',
+'204,205,207,846,208,678,135,897,135,647,212,213,214,215,216,217,218',
+'249,679,177,872,870,408,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24',
+'25,26,27,28,29,30,31,32,33,34,35,38,465,189,693,333,334,42,43,44,45',
+'46,47,48,49,896,88,644,406,666,761,711,87,135,871,135,135,135,135,189',
+'66,189,189,70,68,69,135,71,72,328,73,78,74,304,305,324,860,901,189,407',
+'136,325,136,327,189,75,75,75,76,77,77,77,135,874,178,189,189,189,79',
+'875,101,80,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28',
+'29,30,31,32,33,34,35,38,78,364,365,256,899,42,43,44,45,46,47,48,49,189',
+'189,189,136,66,136,136,136,136,878,135,135,89,100,78,78,136,328,70,68',
+'69,399,71,72,135,73,877,74,304,305,324,135,446,135,478,868,325,479,327',
+'867,879,75,136,76,89,77,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24',
+'25,26,27,28,29,30,31,32,33,34,35,38,450,48,49,314,838,42,43,44,45,46',
+'47,48,49,135,135,839,135,66,304,305,306,135,307,308,310,311,691,838',
+'78,136,136,70,68,69,313,71,72,275,73,880,74,78,180,136,816,304,305,324',
+'78,881,136,136,136,325,75,327,76,690,77,5,6,7,10,13,14,15,16,17,18,19',
+'20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,835,426,403,282,697',
+'42,43,44,45,46,47,48,49,163,817,163,620,288,277,136,136,432,136,180',
+'504,78,150,136,654,149,720,70,68,69,283,71,72,403,73,402,74,520,636',
+'162,199,200,201,202,203,204,205,207,328,208,75,503,76,135,77,212,213',
+'214,215,216,217,218,304,305,306,859,307,308,310,311,199,200,201,202',
+'203,204,205,207,889,208,635,648,883,135,637,212,213,214,215,216,217',
+'218,884,858,681,199,200,201,202,203,204,205,207,341,208,342,888,343',
+'135,234,212,213,214,215,216,217,218,199,200,201,202,203,204,205,207',
+'682,208,885,668,235,135,661,212,213,214,215,216,217,218,88,789,790,691',
+'256,400,87,136,150,890,89,149,199,200,201,202,203,204,205,207,667,208',
+'891,660,163,135,776,212,213,214,215,216,217,218,794,255,401,136,199',
+'200,201,202,203,204,205,207,892,208,719,415,850,135,162,212,213,214',
+'215,216,217,218,887,898,136,902,886,582,721,903,581,833,199,200,201',
+'202,203,204,205,207,720,208,414,851,904,135,136,212,213,214,215,216',
+'217,218,199,200,201,202,203,204,205,207,832,208,722,698,826,135,906',
+'212,213,214,215,216,217,218,163,163,88,478,136,907,479,582,87,908,581',
+'607,89,163,3,163,88,910,827,699,699,81,87,352,353,234,89,797,170,770',
+'136,199,200,201,202,203,204,205,207,796,208,547,587,564,135,235,212',
+'213,214,215,216,217,218,90,199,200,201,202,203,204,205,207,136,208,394',
+'395,396,135,91,212,213,214,215,216,217,218,199,200,201,202,203,204,205',
+'207,136,208,394,395,396,135,92,212,213,214,215,216,217,218,199,200,201',
+'202,203,204,205,207,163,208,350,351,96,135,124,212,213,214,215,216,217',
+'218,594,336,125,199,200,201,202,203,204,205,207,126,208,130,510,132',
+'135,136,212,213,214,215,216,217,218,134,199,200,201,202,203,204,205',
+'207,140,208,352,353,142,135,136,212,213,214,215,216,217,218,199,200',
+'201,202,203,204,205,207,143,208,404,336,144,135,136,212,213,214,215',
+'216,217,218,199,200,201,202,203,204,205,207,147,208,358,359,155,135',
+'136,212,213,214,215,216,217,218,350,351,156,199,200,201,202,203,204',
+'205,207,159,208,350,351,160,135,136,212,213,214,215,216,217,218,164',
+'199,200,201,202,203,204,205,207,165,208,358,359,166,135,136,212,213',
+'214,215,216,217,218,199,200,201,202,203,204,205,207,167,208,630,437',
+'168,135,136,212,213,214,215,216,217,218,352,353,234,747,518,171,631',
+'287,288,436,438,439,440,441,136,347,629,172,347,173,348,349,235,348',
+'349,199,200,201,202,203,204,205,207,174,208,352,353,175,135,136,212',
+'213,214,215,216,217,218,176,199,200,201,202,203,204,205,207,180,208',
+'184,772,185,135,136,212,213,214,215,216,217,218,199,200,201,202,203',
+'204,205,207,454,208,145,146,186,135,136,212,213,214,215,216,217,218',
+'347,187,234,517,518,348,349,456,457,458,455,199,200,201,202,203,204',
+'205,207,454,208,188,235,189,135,191,212,213,214,215,216,217,218,354',
+'355,356,357,787,788,136,456,457,458,455,354,355,356,357,199,200,201',
+'202,203,204,205,207,437,208,382,383,384,135,136,212,213,214,215,216',
+'217,218,377,378,379,380,381,385,436,438,439,440,441,304,305,306,136',
+'307,308,310,311,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27',
+'28,29,30,31,32,33,34,35,38,136,354,355,356,357,42,43,44,45,46,47,48',
+'49,199,200,201,202,203,204,205,207,192,208,352,353,193,135,196,212,213',
+'214,215,216,217,218,247,89,136,199,200,201,202,203,204,205,207,257,208',
+'159,264,208,135,270,212,213,214,215,216,217,218,199,200,201,202,203',
+'204,205,207,180,208,272,279,280,135,281,212,213,214,215,216,217,218',
+'234,284,285,286,289,290,199,200,201,202,203,204,205,207,312,208,335',
+'189,336,135,235,212,213,214,215,216,217,218,360,199,200,201,202,203',
+'204,205,207,136,208,361,670,362,135,363,212,213,214,215,216,217,218',
+'199,200,201,202,203,204,205,207,368,208,369,136,371,135,372,212,213',
+'214,215,216,217,218,159,199,200,201,202,203,204,205,207,405,208,136',
+'587,410,135,142,212,213,214,215,216,217,218,412,413,199,200,201,202',
+'203,204,205,207,416,208,417,418,419,135,136,212,213,214,215,216,217',
+'218,420,199,200,201,202,203,204,205,207,421,208,444,445,448,135,136',
+'212,213,214,215,216,217,218,199,200,201,202,203,204,205,207,459,208',
+'462,772,463,135,136,212,213,214,215,216,217,218,470,88,234,88,382,383',
+'384,87,472,87,473,89,474,89,481,136,377,378,379,380,381,385,235,482',
+'208,199,200,201,202,203,204,205,207,511,208,512,513,514,135,136,212',
+'213,214,215,216,217,218,515,199,200,201,202,203,204,205,207,521,208',
+'522,523,264,135,136,212,213,214,215,216,217,218,199,200,201,202,203',
+'204,205,207,525,208,270,528,529,135,136,212,213,214,215,216,217,218',
+'199,200,201,202,203,204,205,207,208,208,532,208,208,135,180,212,213',
+'214,215,216,217,218,536,537,540,199,200,201,202,203,204,205,207,541',
+'208,542,544,545,135,136,212,213,214,215,216,217,218,737,738,740,741',
+'548,189,270,558,562,196,739,737,738,740,741,136,565,189,743,742,196',
+'739,234,592,569,88,88,571,88,743,742,87,87,88,87,89,89,136,89,87,328',
+'574,235,89,196,199,200,201,202,203,204,205,207,589,208,590,700,360,135',
+'136,212,213,214,215,216,217,218,361,362,472,199,200,201,202,203,204',
+'205,207,363,208,472,591,607,135,136,212,213,214,215,216,217,218,199',
+'200,201,202,203,204,205,207,608,208,611,336,612,135,614,212,213,214',
+'215,216,217,218,199,200,201,202,203,204,205,207,615,208,616,617,618',
+'135,208,212,213,214,215,216,217,218,621,737,738,740,741,163,625,88,88',
+'641,196,739,785,87,87,136,643,89,89,743,742,625,662,663,669,674,199',
+'200,201,202,203,204,205,207,675,208,676,680,683,135,136,212,213,214',
+'215,216,217,218,199,200,201,202,203,204,205,207,685,208,686,687,688',
+'135,136,212,213,214,215,216,217,218,472,104,105,106,107,108,109,110',
+'111,112,113,114,689,189,136,692,208,695,704,5,6,7,10,13,14,15,16,17',
+'18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,163,706,707',
+'708,163,42,43,44,45,46,47,48,49,710,712,136,117,118,119,120,121,122',
+'123,199,200,201,202,203,204,205,207,713,208,714,715,718,135,136,212',
+'213,214,215,216,217,218,199,200,201,202,203,204,205,207,723,208,726',
+'571,75,135,729,212,213,214,215,216,217,218,199,200,201,202,203,204,205',
+'207,730,208,196,744,745,135,748,212,213,214,215,216,217,218,199,200',
+'201,202,203,204,205,207,749,208,752,753,754,135,756,212,213,214,215',
+'216,217,218,625,759,760,764,199,200,201,202,203,204,205,207,767,208',
+'771,779,780,135,136,212,213,214,215,216,217,218,199,200,201,202,203',
+'204,205,207,782,208,783,791,793,135,136,212,213,214,215,216,217,218',
+'199,200,201,202,203,204,205,207,189,208,795,798,799,135,136,212,213',
+'214,215,216,217,218,199,200,201,202,203,204,205,207,800,208,803,804',
+'805,135,136,212,213,214,215,216,217,218,806,654,718,180,199,200,201',
+'202,203,204,205,207,811,208,812,813,814,135,136,212,213,214,215,216',
+'217,218,199,200,201,202,203,204,205,207,726,208,823,828,831,135,136',
+'212,213,214,215,216,217,218,199,200,201,202,203,204,205,207,836,208',
+'840,841,-386,135,136,212,213,214,215,216,217,218,199,200,201,202,203',
+'204,205,207,842,208,843,237,844,135,136,212,213,214,215,216,217,218',
+'848,803,208,854,199,200,201,202,203,204,205,207,857,208,862,863,865',
+'135,136,212,213,214,215,216,217,218,199,200,201,202,203,204,205,207',
+',208,,,,135,136,212,213,214,215,216,217,218,199,200,201,202,203,204',
+'205,207,,208,,,,135,136,212,213,214,215,216,217,218,199,200,201,202',
+'203,204,205,207,,208,,,,135,136,212,213,214,215,216,217,218,88,,,,,',
+'87,,,88,89,737,738,740,741,87,,,136,89,196,739,,,,234,,,,743,742,117',
+'118,119,120,121,122,123,,,136,,,,,235,,,199,200,201,202,203,204,205',
+'207,,208,,,,135,136,212,213,214,215,216,217,218,199,200,201,202,203',
+'204,205,207,,208,472,,,135,136,212,213,214,215,216,217,218,199,200,201',
+'202,203,204,205,345,,208,,,,135,,212,213,214,215,216,217,218,199,200',
+'201,202,203,204,205,207,,208,,,,135,,212,213,214,215,216,217,218,,,',
+'104,105,106,107,108,109,110,111,112,113,114,,,,,136,,,,,,,104,105,106',
+'107,108,109,110,111,112,113,114,,,,,136,117,118,119,120,121,122,123',
+',,,478,585,,584,,,,,,,89,136,117,118,119,120,121,122,123,20,21,22,23',
+'24,25,26,27,28,29,30,31,32,33,136,5,6,7,10,13,14,15,16,17,18,19,20,21',
+'22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,672,,78,,,42,43,44,45,46',
+'47,48,49,,,,,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22',
+'23,24,25,26,27,28,29,30,31,32,33,34,35,38,241,,78,,,42,43,44,45,46,47',
+'48,49,,,,,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23',
+'24,25,26,27,28,29,30,31,32,33,34,35,38,78,,,,,42,43,44,45,46,47,48,49',
+',,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26',
+'27,28,29,30,31,32,33,34,35,38,78,,,,,42,43,44,45,46,47,48,49,506,,,',
+',,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27',
+'28,29,30,31,32,33,34,35,38,78,428,,,,42,43,44,45,46,47,48,49,,,,,,,',
+',,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28',
+'29,30,31,32,33,34,35,38,78,,,,,42,43,44,45,46,47,48,49,,,,,,,,,,,,,',
+',,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30',
+'31,32,33,34,35,38,78,,,,,42,43,44,45,46,47,48,49,,,,,,,,,,,,,,,,,,,5',
 '6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33',
-'34,35,38,126,381,,,,42,43,44,45,46,47,48,49,,,,,,,,,,,,,,,,,,,5,6,7',
-'10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34',
-'35,38,77,,,,,42,43,44,45,46,47,48,49,,,,,,,,,,,,,,,,,,,5,6,7,10,13,14',
-'15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,77',
-',,,,42,43,44,45,46,47,48,49,,,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17',
-'18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,77,,,,,42,43',
-'44,45,46,47,48,49,,,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20',
-'21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,77,422,,,,42,43,44,45',
-'46,47,48,49,,,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22',
-'23,24,25,26,27,28,29,30,31,32,33,34,35,38,77,508,,,,42,43,44,45,46,47',
+'34,35,38,78,632,,,,42,43,44,45,46,47,48,49,,,,,,,,,,,,,,,,,,,5,6,7,10',
+'13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35',
+'38,78,638,,,,42,43,44,45,46,47,48,49,,,,,,,,,,,,,,,,,,,5,6,7,10,13,14',
+'15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,128',
+'658,,,,42,43,44,45,46,47,48,49,,,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16',
+'17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,78,,,,,42',
+'43,44,45,46,47,48,49,,,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19',
+'20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,78,516,,,,42,43,44',
+'45,46,47,48,49,,,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21',
+'22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,78,,,,,42,43,44,45,46,47',
 '48,49,,,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24',
-'25,26,27,28,29,30,31,32,33,34,35,38,77,,,,,42,43,44,45,46,47,48,49,',
-',,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26',
-'27,28,29,30,31,32,33,34,35,38,77,,,,,42,43,44,45,46,47,48,49,,,,,,,',
+'25,26,27,28,29,30,31,32,33,34,35,38,78,387,,,,42,43,44,45,46,47,48,49',
+',,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26',
+'27,28,29,30,31,32,33,34,35,38,78,,,,,42,43,44,45,46,47,48,49,,,,,,,',
 ',,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28',
-'29,30,31,32,33,34,35,38,77,,,,,42,43,44,45,46,47,48,49,,,,,,,,,,,,,',
-',,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30',
-'31,32,33,34,35,38,77,621,,,,42,43,44,45,46,47,48,49,,,,,,,,,,,,,,,,',
-',,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31',
-'32,33,34,35,38,77,627,,,,42,43,44,45,46,47,48,49,,,,,,,,,,,,,,,,,,,5',
-'6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33',
-'34,35,38,,646,,,,42,43,44,45,46,47,48,49,102,103,104,105,106,107,108',
-'109,110,111,112,,,,,,,,,,,,,,,,,,,,,,,,,,,,115,116,117,118,119,120,121',
+'29,30,31,32,33,34,35,38,,,,,,42,43,44,45,46,47,48,49,5,6,7,10,13,14',
+'15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,,',
+',,,42,43,44,45,46,47,48,49,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23',
+'24,25,26,27,28,29,30,31,32,33,34,35,38,,,,,,42,43,44,45,46,47,48,49',
 '5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32',
 '33,34,35,38,,,,,,42,43,44,45,46,47,48,49,5,6,7,10,13,14,15,16,17,18',
@@ -707,9 +760,6 @@
 '23,24,25,26,27,28,29,30,31,32,33,34,35,38,,,,,,42,43,44,45,46,47,48',
 '49,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31',
-'32,33,34,35,38,,,,,,42,43,44,45,46,47,48,49,5,6,7,10,13,14,15,16,17',
-'18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,,,,,,42,43',
-'44,45,46,47,48,49,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26',
-'27,28,29,30,31,32,33,34,35,38,,,,,,42,43,44,45,46,47' ]
-        racc_action_table = arr = ::Array.new(3597, nil)
+'32,33,34,35,38,,,,,,42,43,44,45,46,47' ]
+        racc_action_table = arr = ::Array.new(3593, nil)
         idx = 0
         clist.each do |str|
@@ -721,189 +771,192 @@
 
 clist = [
-'2,463,803,749,688,787,189,218,218,189,602,2,324,386,714,714,714,714',
-'714,714,714,714,123,714,586,754,854,714,41,714,714,714,714,714,714,714',
-'585,151,815,441,257,386,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2',
-'2,2,2,2,2,2,602,257,324,187,631,2,2,2,2,2,2,2,2,854,41,567,810,303,298',
-'550,810,90,620,328,74,320,286,749,688,787,463,2,2,2,187,2,2,286,2,555',
-'2,189,189,189,803,799,123,504,754,189,714,189,586,602,2,324,2,602,2',
-'324,503,83,815,441,585,151,2,83,286,286,286,286,286,286,286,286,286',
-'286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286',
-'286,286,184,286,631,225,225,286,286,286,286,286,286,286,286,567,303',
-'298,550,158,90,620,328,74,320,281,706,87,469,310,158,469,310,286,286',
-'286,191,286,286,464,286,776,286,416,799,480,504,555,555,555,480,480',
-'614,776,614,555,286,555,286,503,286,158,158,158,158,158,158,158,158',
-'158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158',
-'158,158,158,310,87,87,220,220,158,158,158,158,158,158,158,158,191,191',
-'383,383,182,184,184,184,416,184,184,184,184,615,528,182,281,706,158',
-'158,158,852,158,158,169,158,529,158,553,169,464,553,310,310,310,289',
-'750,552,530,750,310,158,310,158,615,158,182,182,182,182,182,182,182',
-'182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182',
-'182,182,182,182,772,369,535,723,852,182,182,182,182,182,182,182,182',
-'100,553,264,334,125,536,334,552,289,750,125,765,468,334,125,468,369',
-'772,182,182,182,723,182,182,259,182,259,182,100,545,264,705,705,705',
-'705,705,705,705,705,540,705,182,765,182,705,182,705,705,705,705,705',
-'705,705,289,289,289,701,289,289,289,289,761,761,761,761,761,761,761',
-'761,564,761,545,531,531,761,545,761,761,761,761,761,761,761,865,701',
-'794,760,760,760,760,760,760,760,760,205,760,205,564,205,760,705,760',
-'760,760,760,760,760,760,720,720,720,720,720,720,720,720,794,720,253',
-'428,705,720,273,720,720,720,720,720,720,720,761,559,645,588,262,825',
-'3,705,360,173,598,154,569,642,838,569,113,428,838,253,761,839,728,273',
-'801,760,705,145,541,549,145,642,559,645,588,262,825,761,728,360,173',
-'598,154,642,113,760,541,720,681,839,728,510,801,283,681,124,541,510',
-'681,283,479,510,760,283,168,479,479,720,551,168,704,704,704,704,704',
-'704,704,704,122,704,556,704,868,704,720,704,704,704,704,704,704,704',
-'699,699,699,699,699,699,699,699,84,699,561,84,563,699,121,699,699,699',
-'699,699,699,699,695,695,695,695,695,695,695,695,120,695,512,512,512',
-'695,117,695,695,695,695,695,695,695,691,691,691,691,691,691,691,691',
-'116,691,249,249,249,691,572,691,691,691,691,691,691,691,219,219,219',
-'219,667,667,667,667,667,667,667,667,115,667,497,497,575,667,704,667',
-'667,667,667,667,667,667,285,285,285,285,285,285,285,285,577,285,217',
-'217,112,285,699,285,285,285,285,285,285,285,252,252,252,252,252,252',
-'252,252,108,252,178,178,587,252,695,252,252,252,252,252,252,252,229',
-'229,229,229,229,229,229,229,589,229,489,489,593,229,691,229,229,229',
-'229,229,229,229,488,488,488,488,861,861,861,861,861,861,861,861,539',
-'861,486,486,594,861,667,861,861,861,861,861,861,861,595,313,596,241',
-'241,241,539,539,539,539,539,292,485,485,285,241,241,241,241,241,241',
-'229,313,313,313,313,487,487,487,487,597,292,292,292,292,292,252,216',
-'80,80,600,229,216,216,848,848,848,848,848,848,848,848,106,848,484,484',
-'605,848,229,848,848,848,848,848,848,848,483,483,482,482,821,821,821',
-'821,821,821,821,821,608,821,481,481,104,821,861,821,821,821,821,821',
-'821,821,818,818,818,818,818,818,818,818,102,818,260,260,621,818,623',
-'818,818,818,818,818,818,818,807,807,807,807,807,807,807,807,625,807',
-'669,669,626,807,627,807,807,807,807,807,807,807,798,798,798,798,798',
-'798,798,798,629,798,502,502,502,798,848,798,798,798,798,798,798,798',
-'502,502,502,502,502,502,159,159,159,159,159,159,159,159,159,159,159',
-'630,821,632,633,635,637,640,646,807,36,36,36,36,36,36,36,36,36,36,36',
-'36,36,36,818,650,651,652,653,807,654,656,795,795,795,795,795,795,795',
-'795,658,795,99,795,673,795,807,795,795,795,795,795,795,795,786,786,786',
-'786,786,786,786,786,674,786,676,677,678,786,798,786,786,786,786,786',
-'786,786,775,775,775,775,775,775,775,775,679,775,680,682,684,775,685',
-'775,775,775,775,775,775,775,770,770,770,770,770,770,770,770,686,770',
-'98,93,692,770,92,770,770,770,770,770,770,770,696,703,710,712,471,471',
-'471,471,471,471,471,471,82,471,715,471,718,471,795,471,471,471,471,471',
-'471,471,144,144,144,144,144,144,144,144,721,144,727,732,733,144,786',
-'144,144,144,144,144,144,144,466,466,466,466,466,466,466,466,735,466',
-'736,738,739,466,775,466,466,466,466,466,466,466,146,146,146,146,146',
-'146,146,146,740,146,741,146,742,146,770,146,146,146,146,146,146,146',
-'240,86,4,144,743,744,240,86,4,591,240,86,4,745,418,591,747,748,471,591',
-'418,78,752,144,418,753,867,867,867,867,867,867,867,867,76,867,757,75',
-'73,867,144,867,867,867,867,867,867,867,397,397,397,397,397,397,397,397',
-'763,397,72,774,71,397,466,397,397,397,397,397,397,397,359,359,359,359',
-'359,359,359,359,778,359,779,780,781,359,146,359,359,359,359,359,359',
-'359,358,358,358,358,358,358,358,358,784,358,785,69,68,358,788,358,358',
-'358,358,358,358,358,793,796,797,800,357,357,357,357,357,357,357,357',
-'805,357,806,38,809,357,867,357,357,357,357,357,357,357,163,163,163,163',
-'163,163,163,163,811,163,812,814,16,163,397,163,163,163,163,163,163,163',
-'356,356,356,356,356,356,356,356,819,356,820,9,822,356,359,356,356,356',
-'356,356,356,356,355,355,355,355,355,355,355,355,828,355,831,832,833',
-'355,358,355,355,355,355,355,355,355,835,836,837,840,354,354,354,354',
-'354,354,354,354,841,354,842,8,853,354,357,354,354,354,354,354,354,354',
-'353,353,353,353,353,353,353,353,224,353,223,230,231,353,163,353,353',
-'353,353,353,353,353,352,352,352,352,352,352,352,352,235,352,237,67,856',
-'352,356,352,352,352,352,352,352,352,351,351,351,351,351,351,351,351',
-'1,351,251,222,261,351,355,351,351,351,351,351,351,351,266,267,269,271',
-'350,350,350,350,350,350,350,350,275,350,276,277,278,350,354,350,350',
-'350,350,350,350,350,349,349,349,349,349,349,349,349,279,349,280,221',
-'857,349,353,349,349,349,349,349,349,349,348,348,348,348,348,348,348',
-'348,301,348,302,304,319,348,352,348,348,348,348,348,348,348,347,347',
-'347,347,347,347,347,347,201,347,321,322,193,347,351,347,347,347,347',
-'347,347,347,329,331,332,336,346,346,346,346,346,346,346,346,337,346',
-'186,181,180,346,350,346,346,346,346,346,346,346,345,345,345,345,345',
-'345,345,345,176,345,175,174,172,345,349,345,345,345,345,345,345,345',
-'344,344,344,344,344,344,344,344,171,344,170,166,165,344,348,344,344',
-'344,344,344,344,344,343,343,343,343,343,343,343,343,164,343,162,161',
-'362,343,347,343,343,343,343,343,343,343,157,374,375,376,342,342,342',
-'342,342,342,342,342,377,342,378,860,388,342,346,342,342,342,342,342',
-'342,342,341,341,341,341,341,341,341,341,389,341,390,395,396,341,345',
-'341,341,341,341,341,341,341,424,367,248,143,156,401,424,367,248,143',
-'424,367,248,143,344,538,538,538,402,538,538,538,538,403,335,335,335',
-'335,335,335,335,335,404,335,405,406,343,335,407,335,335,335,335,335',
-'335,335,408,410,339,339,339,339,339,339,339,339,413,339,419,420,422',
-'339,342,339,339,339,339,339,339,339,255,255,255,255,255,255,255,167',
-'167,167,167,167,167,167,341,425,426,431,436,339,339,339,339,339,339',
-'339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339',
-'339,339,339,339,339,437,863,440,444,446,339,339,339,339,339,339,339',
-'339,335,202,202,202,202,202,202,202,202,448,202,864,454,455,202,456',
-'202,202,202,202,202,202,202,457,339,459,149,148,139,472,475,490,491',
-'492,493,494,137,136,135,134,131,129,202,202,202,202,202,202,202,202',
-'202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202',
-'202,202,202,127,126,517,518,520,202,202,202,202,202,202,202,202,206',
-'206,206,206,206,206,206,206,521,206,522,523,525,206,526,206,206,206',
-'206,206,206,206,527,,202,207,207,207,207,207,207,207,207,,207,,,,207',
-',207,207,207,207,207,207,207,619,619,619,619,619,619,619,619,,619,,619',
-',619,,619,619,619,619,619,619,619,580,580,580,580,580,580,580,580,,580',
-',,,580,,580,580,580,580,580,580,580,,573,573,573,573,573,573,573,573',
-',573,,573,,573,206,573,573,573,573,573,573,573,,,,570,570,570,570,570',
-'570,570,570,,570,,570,,570,207,570,570,570,570,570,570,570,566,566,566',
-'566,566,566,566,566,,566,,,,566,619,566,566,566,566,566,566,566,515',
-'515,515,515,515,515,515,515,,515,,,,515,580,515,515,515,515,515,515',
-'515,,514,514,514,514,514,514,514,514,,514,,,,514,573,514,514,514,514',
-'514,514,514,,,,513,513,513,513,513,513,513,513,,513,,,,513,570,513,513',
-'513,513,513,513,513,507,507,507,507,507,507,507,507,,507,,,,507,566',
-'507,507,507,507,507,507,507,506,506,506,506,506,506,506,506,,506,,,',
-'506,515,506,506,506,506,506,506,506,,505,505,505,505,505,505,505,505',
-',505,,,,505,514,505,505,505,505,505,505,505,,,,496,496,496,496,496,496',
-'496,496,,496,,,,496,513,496,496,496,496,496,496,496,458,458,458,458',
-'458,458,458,458,458,458,458,,,,507,,,,,,,,,,,,,,,,,,,,,,506,,458,458',
-'458,458,458,458,458,,,496,496,,,470,470,,470,,,,,505,,470,,,,,,496,',
-',,,,,,,,,,,,,,,496,470,470,470,470,470,470,470,470,470,470,470,470,470',
-'470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,147,,147',
-',,470,470,470,470,470,470,470,470,,,,,,,,,,,,,,,,,,,,,147,147,147,147',
-'147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147',
-'147,147,147,147,147,147,147,571,,571,,,147,147,147,147,147,147,147,147',
-',,,,,,,,,,,,,,,,,,,,571,571,571,571,571,571,571,571,571,571,571,571',
-'571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,366',
-',,,,571,571,571,571,571,571,571,571,,,,,,,,,,,,,,,,,,,366,366,366,366',
-'366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366',
-'366,366,366,366,366,366,366,246,,,,,366,366,366,366,366,366,366,366',
-'366,,,,,,,,,,,,,,,,,,246,246,246,246,246,246,246,246,246,246,246,246',
-'246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,70,246',
-',,,246,246,246,246,246,246,246,246,,,,,,,,,,,,,,,,,,,70,70,70,70,70',
-'70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70',
-'153,,,,,70,70,70,70,70,70,70,70,,,,,,,,,,,,,,,,,,,153,153,153,153,153',
-'153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153',
-'153,153,153,153,153,153,245,,,,,153,153,153,153,153,153,153,153,,,,',
-',,,,,,,,,,,,,,245,245,245,245,245,245,245,245,245,245,245,245,245,245',
-'245,245,245,245,245,245,245,245,245,245,245,245,245,245,288,,,,,245',
-'245,245,245,245,245,245,245,,,,,,,,,,,,,,,,,,,288,288,288,288,288,288',
-'288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288',
-'288,288,288,288,288,380,288,,,,288,288,288,288,288,288,288,288,,,,,',
-',,,,,,,,,,,,,380,380,380,380,380,380,380,380,380,380,380,380,380,380',
-'380,380,380,380,380,380,380,380,380,380,380,380,380,380,438,380,,,,380',
-'380,380,380,380,380,380,380,,,,,,,,,,,,,,,,,,,438,438,438,438,438,438',
-'438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438',
-'438,438,438,438,438,439,,,,,438,438,438,438,438,438,438,438,,,,,,,,',
-',,,,,,,,,,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439',
-'439,439,439,439,439,439,439,439,439,439,439,439,439,453,,,,,439,439',
-'439,439,439,439,439,439,,,,,,,,,,,,,,,,,,,453,453,453,453,453,453,453',
-'453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453',
-'453,453,453,453,542,,,,,453,453,453,453,453,453,453,453,,,,,,,,,,,,',
-',,,,,,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542',
-'542,542,542,542,542,542,542,542,542,542,542,542,546,542,,,,542,542,542',
-'542,542,542,542,542,,,,,,,,,,,,,,,,,,,546,546,546,546,546,546,546,546',
-'546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546',
-'546,546,546,557,546,,,,546,546,546,546,546,546,546,546,,,,,,,,,,,,,',
-',,,,,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557',
-'557,557,557,557,557,557,557,557,557,557,557,557,,557,,,,557,557,557',
-'557,557,557,557,557,53,53,53,53,53,53,53,53,53,53,53,,,,,,,,,,,,,,,',
-',,,,,,,,,,,,53,53,53,53,53,53,53,694,694,694,694,694,694,694,694,694',
-'694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694',
-'694,694,,,,,,694,694,694,694,694,694,694,694,690,690,690,690,690,690',
-'690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690',
-'690,690,690,690,690,,,,,,690,690,690,690,690,690,690,690,239,239,239',
-'239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239',
-'239,239,239,239,239,239,239,239,,,,,,239,239,239,239,239,239,239,239',
-'40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40',
-'40,40,40,40,40,,,,,,40,40,40,40,40,40,40,40,284,284,284,284,284,284',
-'284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284',
-'284,284,284,284,284,,,,,,284,284,284,284,284,284,284,284,511,511,511',
-'511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511',
-'511,511,511,511,511,511,511,511,,,,,,511,511,511,511,511,511,511,511',
-'611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611',
-'611,611,611,611,611,611,611,611,611,611,611,,,,,,611,611,611,611,611',
-'611,611,611,234,234,234,234,234,234,234,234,234,234,234,234,234,234',
-'234,234,234,234,234,234,234,234,234,234,234,234,234,234,,,,,,234,234',
-'234,234,234,234' ]
-        racc_action_check = arr = ::Array.new(3597, nil)
+'2,469,843,447,422,777,192,194,852,192,329,2,613,269,515,515,515,515',
+'515,515,515,515,824,515,596,325,893,515,560,515,515,515,515,515,515',
+'515,154,597,125,856,853,269,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2',
+'2,2,2,2,2,2,2,2,329,422,613,194,194,2,2,2,2,2,2,2,2,893,85,560,267,576',
+'703,642,85,721,855,631,558,528,511,447,161,777,469,2,2,2,92,2,2,563',
+'2,161,2,192,192,192,843,895,824,267,325,192,515,192,596,329,2,613,2',
+'329,2,613,75,860,125,856,154,597,2,861,41,2,161,161,161,161,161,161',
+'161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161',
+'161,161,161,161,161,187,230,230,258,895,161,161,161,161,161,161,161',
+'161,576,703,642,721,185,631,558,528,511,866,691,303,89,41,315,185,92',
+'315,161,161,161,258,161,161,333,161,863,161,563,563,563,286,308,782',
+'340,851,563,340,563,851,866,161,75,161,340,161,185,185,185,185,185,185',
+'185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185',
+'185,185,185,185,185,315,89,89,190,869,185,185,185,185,185,185,185,185',
+'839,470,812,692,291,187,187,187,512,187,187,187,187,609,812,291,691',
+'303,185,185,185,190,185,185,171,185,872,185,778,171,333,778,315,315',
+'315,294,873,286,308,782,315,185,315,185,609,185,291,291,291,291,291',
+'291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291',
+'291,291,291,291,291,291,808,291,625,176,625,291,291,291,291,291,291',
+'291,291,392,778,573,539,539,172,839,470,294,692,172,366,561,86,512,561',
+'86,808,291,291,291,176,291,291,264,291,264,291,392,553,573,720,720,720',
+'720,720,720,720,720,874,720,291,366,291,720,291,720,720,720,720,720',
+'720,720,294,294,294,841,294,294,294,294,902,902,902,902,902,902,902',
+'902,880,902,553,561,876,902,553,902,902,902,902,902,902,902,877,841',
+'599,889,889,889,889,889,889,889,889,210,889,210,880,210,889,720,889',
+'889,889,889,889,889,889,521,521,521,521,521,521,521,521,599,521,878',
+'577,720,521,568,521,521,521,521,521,521,521,430,743,743,751,157,262',
+'430,720,148,881,430,148,522,522,522,522,522,522,522,522,577,522,882',
+'568,102,522,720,522,522,522,522,522,522,522,751,157,262,902,523,523',
+'523,523,523,523,523,523,883,523,653,278,834,523,102,523,523,523,523',
+'523,523,523,879,894,889,897,879,580,653,898,580,801,234,234,234,234',
+'234,234,234,234,653,234,278,834,901,234,521,234,234,234,234,234,234',
+'234,166,166,166,166,166,166,166,166,801,166,657,626,784,166,904,166',
+'166,166,166,166,166,166,115,716,518,476,522,905,476,477,518,906,477',
+'756,518,434,1,452,127,909,784,657,626,3,127,494,494,234,127,756,115',
+'716,523,479,479,479,479,479,479,479,479,756,479,434,479,452,479,234',
+'479,479,479,479,479,479,479,8,358,358,358,358,358,358,358,358,234,358',
+'520,520,520,358,9,358,358,358,358,358,358,358,363,363,363,363,363,363',
+'363,363,166,363,254,254,254,363,16,363,363,363,363,363,363,363,360,360',
+'360,360,360,360,360,360,375,360,222,222,38,360,68,360,360,360,360,360',
+'360,360,505,505,69,361,361,361,361,361,361,361,361,70,361,72,375,73',
+'361,479,361,361,361,361,361,361,361,74,682,682,682,682,682,682,682,682',
+'76,682,223,223,77,682,358,682,682,682,682,682,682,682,862,862,862,862',
+'862,862,862,862,79,862,265,265,80,862,363,862,862,862,862,862,862,862',
+'362,362,362,362,362,362,362,362,84,362,225,225,94,362,360,362,362,362',
+'362,362,362,362,489,489,95,797,797,797,797,797,797,797,797,100,797,490',
+'490,101,797,361,797,797,797,797,797,797,797,104,811,811,811,811,811',
+'811,811,811,106,811,497,497,108,811,682,811,811,811,811,811,811,811',
+'838,838,838,838,838,838,838,838,110,838,549,297,114,838,862,838,838',
+'838,838,838,838,838,491,491,797,684,684,117,549,181,181,297,297,297',
+'297,297,362,487,549,118,221,119,487,487,797,221,221,796,796,796,796',
+'796,796,796,796,122,796,492,492,123,796,797,796,796,796,796,796,796',
+'796,124,835,835,835,835,835,835,835,835,126,835,128,835,129,835,811',
+'835,835,835,835,835,835,835,514,514,514,514,514,514,514,514,318,514',
+'82,82,131,514,838,514,514,514,514,514,514,514,488,133,796,389,389,488',
+'488,318,318,318,318,823,823,823,823,823,823,823,823,564,823,136,796',
+'137,823,138,823,823,823,823,823,823,823,495,495,495,495,742,742,796',
+'564,564,564,564,224,224,224,224,207,207,207,207,207,207,207,207,547',
+'207,510,510,510,207,835,207,207,207,207,207,207,207,510,510,510,510',
+'510,510,547,547,547,547,547,546,546,546,514,546,546,546,546,207,207',
+'207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207',
+'207,207,207,207,207,207,207,207,207,823,496,496,496,496,207,207,207',
+'207,207,207,207,207,748,748,748,748,748,748,748,748,139,748,493,493',
+'141,748,144,748,748,748,748,748,748,748,151,152,207,859,859,859,859',
+'859,859,859,859,159,859,160,164,165,859,167,859,859,859,859,859,859',
+'859,575,575,575,575,575,575,575,575,168,575,169,173,174,575,175,575',
+'575,575,575,575,575,575,748,177,178,179,183,184,257,257,257,257,257',
+'257,257,257,189,257,195,198,206,257,748,257,257,257,257,257,257,257',
+'226,581,581,581,581,581,581,581,581,748,581,227,581,228,581,229,581',
+'581,581,581,581,581,581,729,729,729,729,729,729,729,729,235,729,236',
+'859,240,729,242,729,729,729,729,729,729,729,256,584,584,584,584,584',
+'584,584,584,266,584,575,584,271,584,272,584,584,584,584,584,584,584',
+'274,276,147,147,147,147,147,147,147,147,280,147,281,282,283,147,257',
+'147,147,147,147,147,147,147,284,591,591,591,591,591,591,591,591,285',
+'591,306,307,309,591,581,591,591,591,591,591,591,591,719,719,719,719',
+'719,719,719,719,324,719,326,719,327,719,729,719,719,719,719,719,719',
+'719,334,288,147,602,246,246,246,288,335,602,337,288,338,602,342,584',
+'246,246,246,246,246,246,147,343,368,714,714,714,714,714,714,714,714',
+'380,714,381,382,383,714,147,714,714,714,714,714,714,714,384,710,710',
+'710,710,710,710,710,710,394,710,395,396,401,710,591,710,710,710,710',
+'710,710,710,706,706,706,706,706,706,706,706,402,706,407,408,409,706',
+'719,706,706,706,706,706,706,706,504,504,504,504,504,504,504,504,410',
+'504,411,412,413,504,414,504,504,504,504,504,504,504,416,419,425,365',
+'365,365,365,365,365,365,365,426,365,428,431,432,365,714,365,365,365',
+'365,365,365,365,827,827,827,827,437,442,443,446,450,827,827,783,783',
+'783,783,710,454,460,827,827,783,783,504,504,461,4,696,462,373,783,783',
+'4,696,146,373,4,696,706,373,146,463,465,504,146,472,630,630,630,630',
+'630,630,630,630,480,630,483,630,498,630,504,630,630,630,630,630,630',
+'630,499,500,827,364,364,364,364,364,364,364,364,501,364,783,502,525',
+'364,365,364,364,364,364,364,364,364,908,908,908,908,908,908,908,908',
+'526,908,529,530,531,908,533,908,908,908,908,908,908,908,341,341,341',
+'341,341,341,341,341,534,341,535,536,537,341,538,341,341,341,341,341',
+'341,341,543,739,739,739,739,544,548,88,424,557,739,739,739,88,424,630',
+'559,88,424,739,739,565,570,572,578,583,347,347,347,347,347,347,347,347',
+'586,347,588,598,600,347,364,347,347,347,347,347,347,347,345,345,345',
+'345,345,345,345,345,604,345,605,606,607,345,908,345,345,345,345,345',
+'345,345,739,162,162,162,162,162,162,162,162,162,162,162,608,610,341',
+'611,616,619,632,345,345,345,345,345,345,345,345,345,345,345,345,345',
+'345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,634,636',
+'637,638,640,345,345,345,345,345,345,345,345,641,643,347,260,260,260',
+'260,260,260,260,348,348,348,348,348,348,348,348,644,348,646,648,651',
+'348,345,348,348,348,348,348,348,348,349,349,349,349,349,349,349,349',
+'658,349,662,663,664,349,665,349,349,349,349,349,349,349,350,350,350',
+'350,350,350,350,350,666,350,668,671,673,350,688,350,350,350,350,350',
+'350,350,351,351,351,351,351,351,351,351,689,351,693,694,695,351,697',
+'351,351,351,351,351,351,351,699,700,701,707,352,352,352,352,352,352',
+'352,352,711,352,718,725,727,352,348,352,352,352,352,352,352,352,353',
+'353,353,353,353,353,353,353,730,353,731,746,749,353,349,353,353,353',
+'353,353,353,353,354,354,354,354,354,354,354,354,750,354,755,760,761',
+'354,350,354,354,354,354,354,354,354,355,355,355,355,355,355,355,355',
+'763,355,764,766,767,355,351,355,355,355,355,355,355,355,768,769,770',
+'771,356,356,356,356,356,356,356,356,772,356,773,775,776,356,352,356',
+'356,356,356,356,356,356,357,357,357,357,357,357,357,357,780,357,781',
+'793,799,357,353,357,357,357,357,357,357,357,359,359,359,359,359,359',
+'359,359,810,359,814,815,816,359,354,359,359,359,359,359,359,359,149',
+'149,149,149,149,149,149,149,817,149,821,149,822,149,355,149,149,149',
+'149,149,149,149,828,833,836,837,474,474,474,474,474,474,474,474,840',
+'474,845,846,850,474,356,474,474,474,474,474,474,474,290,290,290,290',
+'290,290,290,290,,290,,,,290,357,290,290,290,290,290,290,290,848,848',
+'848,848,848,848,848,848,,848,,,,848,359,848,848,848,848,848,848,848',
+'806,806,806,806,806,806,806,806,,806,,,,806,149,806,806,806,806,806',
+'806,806,245,,,,,,245,,,253,245,669,669,669,669,253,,,474,253,669,669',
+',,,848,,,,669,669,170,170,170,170,170,170,170,,,290,,,,,848,,,403,403',
+'403,403,403,403,403,403,,403,,,,403,848,403,403,403,403,403,403,403',
+'513,513,513,513,513,513,513,513,,513,669,,,513,806,513,513,513,513,513',
+'513,513,212,212,212,212,212,212,212,212,,212,,,,212,,212,212,212,212',
+'212,212,212,211,211,211,211,211,211,211,211,,211,,,,211,,211,211,211',
+'211,211,211,211,,,,464,464,464,464,464,464,464,464,464,464,464,,,,,403',
+',,,,,,54,54,54,54,54,54,54,54,54,54,54,,,,,513,464,464,464,464,464,464',
+'464,,,,478,478,,478,,,,,,,478,212,54,54,54,54,54,54,54,36,36,36,36,36',
+'36,36,36,36,36,36,36,36,36,211,478,478,478,478,478,478,478,478,478,478',
+'478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478',
+'478,582,,582,,,478,478,478,478,478,478,478,478,,,,,,,,,,,,,,,,,,,,,582',
+'582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582',
+'582,582,582,582,582,582,582,582,582,582,150,,150,,,582,582,582,582,582',
+'582,582,582,,,,,,,,,,,,,,,,,,,,,150,150,150,150,150,150,150,150,150',
+'150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150',
+'150,150,372,,,,,150,150,150,150,150,150,150,150,,,,,,,,,,,,,,,,,,,372',
+'372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372',
+'372,372,372,372,372,372,372,372,372,372,293,,,,,372,372,372,372,372',
+'372,372,372,372,,,,,,,,,,,,,,,,,,293,293,293,293,293,293,293,293,293',
+'293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293',
+'293,293,444,293,,,,293,293,293,293,293,293,293,293,,,,,,,,,,,,,,,,,',
+',444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444',
+'444,444,444,444,444,444,444,444,444,444,444,445,,,,,444,444,444,444',
+'444,444,444,444,,,,,,,,,,,,,,,,,,,445,445,445,445,445,445,445,445,445',
+'445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445',
+'445,445,550,,,,,445,445,445,445,445,445,445,445,,,,,,,,,,,,,,,,,,,550',
+'550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550',
+'550,550,550,550,550,550,550,550,550,550,554,550,,,,550,550,550,550,550',
+'550,550,550,,,,,,,,,,,,,,,,,,,554,554,554,554,554,554,554,554,554,554',
+'554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554',
+'554,566,554,,,,554,554,554,554,554,554,554,554,,,,,,,,,,,,,,,,,,,566',
+'566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566',
+'566,566,566,566,566,566,566,566,566,566,71,566,,,,566,566,566,566,566',
+'566,566,566,,,,,,,,,,,,,,,,,,,71,71,71,71,71,71,71,71,71,71,71,71,71',
+'71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,386,,,,,71,71,71,71,71',
+'71,71,71,,,,,,,,,,,,,,,,,,,386,386,386,386,386,386,386,386,386,386,386',
+'386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386',
+'459,386,,,,386,386,386,386,386,386,386,386,,,,,,,,,,,,,,,,,,,459,459',
+'459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459',
+'459,459,459,459,459,459,459,459,459,251,,,,,459,459,459,459,459,459',
+'459,459,,,,,,,,,,,,,,,,,,,251,251,251,251,251,251,251,251,251,251,251',
+'251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251',
+'250,251,,,,251,251,251,251,251,251,251,251,,,,,,,,,,,,,,,,,,,250,250',
+'250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250',
+'250,250,250,250,250,250,250,250,250,156,,,,,250,250,250,250,250,250',
+'250,250,,,,,,,,,,,,,,,,,,,156,156,156,156,156,156,156,156,156,156,156',
+'156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156',
+',,,,,156,156,156,156,156,156,156,156,622,622,622,622,622,622,622,622',
+'622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622',
+'622,622,622,,,,,,622,622,622,622,622,622,622,622,40,40,40,40,40,40,40',
+'40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,,,,,',
+'40,40,40,40,40,40,40,40,705,705,705,705,705,705,705,705,705,705,705',
+'705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705',
+',,,,,705,705,705,705,705,705,705,705,244,244,244,244,244,244,244,244',
+'244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244',
+'244,244,244,,,,,,244,244,244,244,244,244,244,244,519,519,519,519,519',
+'519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519',
+'519,519,519,519,519,519,,,,,,519,519,519,519,519,519,519,519,709,709',
+'709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709',
+'709,709,709,709,709,709,709,709,709,,,,,,709,709,709,709,709,709,709',
+'709,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289',
+'289,289,289,289,289,289,289,289,289,289,289,289,,,,,,289,289,289,289',
+'289,289,289,289,239,239,239,239,239,239,239,239,239,239,239,239,239',
+'239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,,,,,,239',
+'239,239,239,239,239' ]
+        racc_action_check = arr = ::Array.new(3593, nil)
         idx = 0
         clist.each do |str|
@@ -915,796 +968,838 @@
 
 racc_action_pointer = [
-   nil,  1429,    -1,   489,  1138,   nil,   nil,   nil,  1326,  1278,
-   nil,   nil,   nil,   nil,   nil,   nil,  1288,   nil,   nil,   nil,
+   nil,   613,    -1,   620,  1492,   nil,   nil,   nil,   612,   627,
+   nil,   nil,   nil,   nil,   nil,   nil,   680,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   889,   nil,  1259,   nil,
-  3351,    13,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,  3134,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,  1401,  1240,  1239,
-  2552,  1190,  1188,  1168,    79,  1167,  1164,   nil,  1095,   nil,
-   757,   nil,  1023,   122,   574,   nil,  1137,   172,   nil,   nil,
-    76,   nil,   974,   971,   nil,   nil,   nil,   nil,  1026,   904,
-   340,   nil,   850,   nil,   832,   nil,   802,   nil,   688,   nil,
-   nil,   nil,   670,   486,   nil,   644,   618,   602,   nil,   nil,
-   596,   580,   550,    11,   523,   348,  1803,  1804,   nil,  1775,
-   nil,  1774,   nil,   nil,  1829,  1735,  1827,  1770,   nil,  1762,
-   nil,   nil,   nil,  1669,  1077,   501,  1121,  2314,  1822,  1812,
-   nil,    27,   nil,  2611,   453,   nil,  1637,  1612,   182,   831,
-   nil,  1601,  1604,  1283,  1598,  1580,  1465,  1622,   537,   280,
-  1578,  1576,  1558,   482,  1562,  1561,  1528,   nil,   659,   nil,
-  1538,  1541,   269,   nil,   154,   nil,  1534,    33,   nil,    -6,
-   nil,   128,   nil,  1417,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,  1510,  1804,   nil,   nil,   435,  1886,  1911,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   777,   657,   -19,   613,
-   224,  1462,  1398,  1352,  1349,   132,   nil,   nil,   nil,   709,
-  1379,  1376,   nil,   nil,  3515,  1397,   nil,  1368,   nil,  3310,
-  1136,   689,   nil,   nil,   nil,  2670,  2493,   nil,  1668,   556,
-   nil,  1416,   687,   430,   nil,  1615,   nil,    30,   nil,   365,
-   851,  1423,   477,   nil,   341,   nil,  1402,  1429,   nil,  1404,
-   nil,  1405,   nil,   465,   nil,  1414,  1447,  1418,  1448,  1437,
-  1439,   174,   nil,   527,  3392,   665,    95,   nil,  2729,   289,
-   nil,   nil,   678,   nil,   nil,   nil,   nil,   nil,    73,   nil,
-   nil,  1428,  1430,    72,  1431,   nil,   nil,   nil,   nil,   nil,
-   181,   nil,   nil,   668,   nil,   nil,   nil,   nil,   nil,  1432,
-    80,  1395,  1510,   nil,     0,   nil,   nil,   nil,    78,  1526,
-   nil,  1526,  1527,   nil,   347,  1697,  1523,  1532,   nil,  1721,
-   nil,  1651,  1629,  1603,  1581,  1559,  1537,  1511,  1489,  1467,
-  1445,  1419,  1397,  1375,  1353,  1327,  1305,  1261,  1235,  1213,
-   450,   nil,  1606,   nil,   nil,   nil,  2434,  1667,   nil,   328,
-   nil,   nil,   nil,   nil,  1619,  1620,  1621,  1630,  1632,   nil,
-  2788,   nil,   nil,   228,   nil,   nil,     0,   nil,  1634,  1652,
-  1654,   nil,   nil,   nil,   nil,  1649,  1650,  1191,   nil,   nil,
-   nil,  1665,  1622,  1683,  1696,  1638,  1699,  1702,  1706,   nil,
-  1711,   nil,   nil,  1721,   nil,   nil,   166,   nil,  1150,  1723,
-  1694,   nil,  1695,   nil,  1666,  1650,  1721,   nil,   459,   nil,
-   nil,  1753,   nil,   nil,   nil,   nil,  1655,  1777,  2847,  2906,
-  1752,    25,   nil,   nil,  1755,   nil,  1783,   nil,  1805,   nil,
-   nil,   nil,   nil,  2965,  1709,  1803,  1805,  1813,  2119,  1790,
-   nil,   nil,   nil,    -8,   188,   nil,  1099,   nil,   356,   183,
-  2253,  1055,  1821,   nil,   nil,  1825,   nil,   nil,   nil,   524,
-   190,   819,   807,   799,   787,   745,   721,   757,   705,   689,
-  1818,  1803,  1803,  1803,  1801,   nil,  2187,   645,   nil,   nil,
-   nil,   nil,   832,   115,   102,  2162,  2139,  2117,   nil,   nil,
-   525,  3433,   534,  2095,  2070,  2047,   nil,  1863,  1865,   nil,
-  1864,  1854,  1887,  1889,   nil,  1890,  1892,  1869,   270,   252,
-   293,   385,   nil,   nil,   nil,   302,   345,   nil,  1573,   653,
-   377,   499,  3024,   nil,   nil,   308,  3083,   nil,   nil,   438,
-    74,   536,   288,   282,   nil,    94,   548,  3142,   nil,   444,
-   nil,   571,   nil,   459,   409,   nil,  2025,    71,   nil,   486,
-  2003,  2375,   623,  1978,   nil,   647,   nil,   662,   nil,   nil,
-  1955,   nil,   nil,   nil,   nil,    26,    14,   691,   476,   709,
-   nil,  1145,   nil,   713,   739,   749,   746,   775,   452,   nil,
-   728,   nil,    -2,   nil,   nil,   804,   nil,   nil,   827,   nil,
-   nil,  3474,   nil,   nil,   204,   269,   nil,   nil,   nil,  1933,
-    77,   823,   nil,   852,   nil,   872,   843,   847,   nil,   890,
-   925,    60,   896,   897,   nil,   929,   nil,   899,   nil,   nil,
-   814,   nil,   484,   nil,   nil,   475,   901,   nil,   nil,   nil,
-   943,   944,   835,   920,   948,   nil,   951,   nil,   963,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   643,   nil,   843,
-   nil,   nil,   nil,   935,   980,   nil,   982,   983,   959,  1007,
-   979,   522,  1005,   nil,  1006,   983,  1026,   nil,   -10,   nil,
-  3269,   617,   972,   nil,  3228,   595,  1038,   nil,   nil,   573,
-   nil,   396,   nil,  1045,   551,   382,   175,   nil,   nil,   nil,
-  1015,   nil,  1042,   nil,    12,   939,   nil,   nil,  1059,   nil,
-   459,  1073,   nil,   302,   nil,   nil,   nil,  1049,   491,   nil,
-   nil,   nil,  1050,  1076,   nil,  1099,  1100,   nil,  1102,  1073,
-  1090,  1118,  1009,  1134,  1108,  1145,   nil,  1121,  1148,   -11,
-   290,   nil,  1152,  1129,    10,   nil,   nil,  1166,   nil,   nil,
-   437,   412,   nil,  1161,   nil,   323,   nil,   nil,   nil,   nil,
-  1029,   nil,   328,   nil,  1163,  1007,   175,   nil,  1208,  1210,
-  1098,  1187,   nil,   nil,  1117,  1207,   985,    -9,  1209,   nil,
-   nil,   nil,   nil,  1248,   428,   963,  1249,  1221,   893,   100,
-  1222,   495,   nil,   -13,   nil,  1230,  1258,   871,   nil,  1235,
-    75,  1280,  1285,   nil,  1256,    24,   nil,   nil,   849,  1301,
-  1277,   827,  1309,   nil,   nil,   478,   nil,   nil,  1295,   nil,
-   nil,  1324,  1327,  1326,   nil,  1341,  1281,  1313,   486,   492,
-  1314,  1323,  1294,   nil,   nil,   nil,   nil,   nil,   801,   nil,
-   nil,   nil,   272,  1354,    11,   nil,  1402,  1441,   nil,   nil,
-  1633,   735,   nil,  1778,  1806,   395,   nil,  1169,   555,   nil ]
+   nil,   nil,   nil,   nil,   nil,   nil,  2268,   nil,   694,   nil,
+  3265,   123,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,  2185,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   702,   712,
+   721,  2888,   717,   719,   729,   115,   738,   742,   nil,   704,
+   770,   nil,   921,   nil,   755,    75,   359,   nil,  1610,   174,
+   nil,   nil,    89,   nil,   730,   742,   nil,   nil,   nil,   nil,
+   807,   755,   496,   nil,   827,   nil,   836,   nil,   840,   nil,
+   858,   nil,   nil,   nil,   862,   586,   nil,   877,   889,   891,
+   nil,   nil,   905,   909,   917,    27,   922,   606,   866,   870,
+   nil,   892,   nil,   903,   nil,   nil,   979,   888,   983,  1040,
+   nil,  1044,   nil,   nil,  1106,   nil,  1500,  1268,   484,  2000,
+  2416,  1115,  1107,   nil,    26,   nil,  3183,   448,   nil,  1094,
+  1123,    97,  1591,   nil,  1124,  1129,   575,  1127,  1143,  1031,
+  2017,   282,   350,  1146,  1147,  1149,   335,  1163,  1164,  1134,
+   nil,   848,   nil,  1163,  1168,   184,   nil,   156,   nil,  1171,
+   218,   nil,    -6,   nil,   -65,  1178,   nil,   nil,  1081,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,  1179,  1019,   nil,   nil,
+   437,  2228,  2206,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   880,   687,   729,   989,   767,  1182,  1177,  1178,  1179,
+   132,   nil,   nil,   nil,   553,  1222,  1220,   nil,   nil,  3511,
+  1225,   nil,  1196,   nil,  3347,  2107,  1268,   nil,   nil,   nil,
+  3124,  3065,   nil,  2116,   612,   nil,  1230,  1176,   130,   nil,
+  1615,   nil,   480,   nil,   367,   767,  1244,    76,   nil,    -1,
+   nil,  1217,  1245,   nil,  1227,   nil,  1228,   nil,   524,   nil,
+  1237,  1270,  1241,  1271,  1252,  1261,   197,   nil,  1329,  3470,
+  2048,   271,   nil,  2534,   291,   nil,   nil,   778,   nil,   nil,
+   nil,   nil,   nil,   177,   nil,   nil,  1232,  1233,   198,  1234,
+   nil,   nil,   nil,   nil,   nil,   183,   nil,   nil,   867,   nil,
+   nil,   nil,   nil,   nil,  1252,    10,  1197,  1313,   nil,    -2,
+   nil,   nil,   nil,   190,  1328,  1274,   nil,  1337,  1339,   nil,
+   206,  1588,  1336,  1345,   nil,  1658,   nil,  1636,  1750,  1772,
+  1794,  1816,  1842,  1864,  1886,  1908,  1934,  1956,   651,  1978,
+   695,   720,   787,   673,  1544,  1452,   325,   nil,  1350,   nil,
+   nil,   nil,  2475,  1495,   nil,   692,   nil,   nil,   nil,   nil,
+  1361,  1363,  1364,  1365,  1375,   nil,  2947,   nil,   nil,   936,
+   nil,   nil,   342,   nil,  1384,  1386,  1387,   nil,   nil,   nil,
+   nil,  1382,  1400,  2162,   nil,   nil,   nil,  1402,  1347,  1404,
+  1426,  1368,  1429,  1430,  1428,   nil,  1440,   nil,   nil,  1442,
+   nil,   nil,   -37,   nil,  1611,  1443,  1422,   nil,  1424,   nil,
+   476,  1355,  1426,   nil,   599,   nil,   nil,  1471,   nil,   nil,
+   nil,   nil,  1373,  1467,  2593,  2652,  1441,   -11,   nil,   nil,
+  1444,   nil,   601,   nil,  1483,   nil,   nil,   nil,   nil,  3006,
+  1385,  1485,  1488,  1501,  2163,  1477,   nil,   nil,   nil,    -8,
+   254,   nil,  1509,   nil,  2026,   nil,   593,   597,  2294,   628,
+  1516,   nil,   nil,  1521,   nil,   nil,   nil,   877,   954,   791,
+   804,   855,   890,  1087,   596,   978,  1063,   815,  1515,  1509,
+  1509,  1518,  1518,   nil,  1427,   709,   nil,   nil,   nil,   nil,
+   958,    81,   261,  2184,   949,    12,   nil,   nil,   592,  3388,
+   590,   461,   495,   521,   nil,  1544,  1563,   nil,    80,  1536,
+  1568,  1570,   nil,  1572,  1588,  1559,  1591,  1562,  1593,   318,
+   nil,   nil,   nil,  1572,  1604,   nil,   937,   937,  1603,   857,
+  2711,   nil,   nil,   310,  2770,   nil,   nil,  1547,    79,  1613,
+    13,   355,   nil,    92,   900,  1618,  2829,   nil,   437,   nil,
+  1620,   nil,  1507,   344,   nil,  1148,    73,   433,  1597,   nil,
+   541,  1199,  2355,  1627,  1244,   nil,  1636,   nil,  1635,   nil,
+   nil,  1291,   nil,   nil,   nil,   nil,    14,    27,  1639,   430,
+  1640,   nil,  1331,   nil,  1658,  1660,  1661,  1657,  1680,   240,
+  1587,  1626,   nil,     0,   nil,   nil,  1687,   nil,   nil,  1689,
+   nil,   nil,  3224,   nil,   nil,   332,   578,   nil,   nil,   nil,
+  1519,    78,  1660,   nil,  1716,   nil,  1721,  1689,  1692,   nil,
+  1720,  1733,    75,  1703,  1720,   nil,  1753,   nil,  1723,   nil,
+   nil,  1638,   nil,   521,   nil,   nil,   nil,   577,  1742,   nil,
+   nil,   nil,  1769,  1770,  1661,  1747,  1789,   nil,  1795,  2125,
+   nil,  1794,   nil,  1798,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   743,   nil,   844,   nil,   nil,   nil,  1768,  1811,
+   nil,   176,   256,  1788,  1819,  1790,  1493,  1817,   nil,  1825,
+  1801,  1829,   nil,    74,   nil,  3306,  1405,  1772,   nil,  3429,
+  1383,  1837,   nil,   nil,  1360,   nil,   587,   nil,  1845,  1313,
+   384,    76,   nil,   nil,   nil,  1815,   nil,  1842,   nil,  1221,
+  1746,  1837,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  1611,
+   nil,   nil,  1006,   482,   nil,   nil,  1867,   nil,  1101,  1864,
+  1788,   447,   nil,   nil,   nil,  1858,   596,   nil,   nil,   nil,
+  1859,  1885,   nil,  1908,  1909,   nil,  1911,  1882,  1891,  1918,
+  1808,  1920,  1902,  1933,   nil,  1907,  1934,    -9,   284,   nil,
+  1951,  1927,   199,  1485,   576,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,  1954,   nil,   nil,   904,   812,   nil,  1930,
+   nil,   513,   nil,   nil,   nil,   nil,  2092,   nil,   330,   nil,
+  1947,   835,   240,   nil,  1975,  1976,  1864,  1970,   nil,   nil,
+   nil,  1884,  1974,   982,     8,   nil,   nil,  1474,  1982,   nil,
+   nil,   nil,   nil,  2014,   525,   927,  2015,  1987,   857,   253,
+  1996,   399,   nil,   -13,   nil,  1997,  2024,   nil,  2070,   nil,
+  2000,   205,    -5,    30,   nil,    52,    25,   nil,   nil,  1126,
+   117,    97,   765,   197,   nil,   nil,   180,   nil,   nil,   217,
+   nil,   nil,   279,   291,   379,   nil,   418,   367,   433,   534,
+   412,   454,   467,   460,   nil,   nil,   nil,   nil,   nil,   439,
+   nil,   nil,   nil,    11,   533,   100,   nil,   539,   512,   nil,
+   nil,   558,   414,   nil,   576,   594,   567,   nil,  1566,   606,
+   nil ]
 
 racc_action_default = [
-  -194,  -418,    -1,  -418,  -418,   -69,   -70,   -71,   -72,   -73,
-   -74,   -75,   -76,   -77,   -78,   -79,  -418,   -81,   -82,   -83,
+  -195,  -442,    -1,  -442,  -442,   -69,   -70,   -71,   -72,   -73,
+   -74,   -75,   -76,   -77,   -78,   -79,  -442,   -81,   -82,   -83,
    -84,   -85,   -86,   -87,   -88,   -89,   -90,   -91,   -92,   -93,
-   -94,   -95,   -96,   -97,   -98,   -99,  -418,  -101,  -104,  -118,
-  -418,  -418,  -126,  -127,  -128,  -129,  -130,  -131,  -136,  -137,
-  -192,  -193,  -195,  -418,  -197,  -198,  -199,  -200,  -201,  -202,
-  -203,  -206,  -207,  -208,  -209,  -210,  -234,  -418,  -418,  -418,
-  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -405,  -418,   870,
-  -418,   -65,   -67,  -418,  -139,  -140,  -418,  -146,  -205,  -204,
-  -418,  -100,  -106,  -418,  -109,   -72,   -73,  -119,  -418,  -125,
-  -418,  -211,  -418,  -214,  -418,  -216,  -418,  -218,  -418,  -220,
-  -221,  -222,  -418,  -418,  -386,  -418,  -418,  -418,  -394,  -395,
-  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -247,  -418,
-  -254,  -418,  -260,  -250,  -418,  -327,  -418,  -418,  -350,  -418,
-  -398,  -410,   -62,  -418,  -418,  -138,  -418,  -418,  -418,  -147,
-  -148,  -418,  -102,  -418,  -418,  -132,  -134,  -418,  -418,  -418,
-  -406,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,
-  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -337,  -418,  -244,
-  -418,  -242,  -418,  -255,  -418,  -251,  -418,  -418,  -328,  -418,
-  -399,  -418,   -66,    -2,    -3,    -4,    -5,    -6,    -7,    -8,
-    -9,   -10,  -418,   -12,   -14,   -18,  -418,  -418,   -22,   -23,
-   -24,   -25,   -26,   -27,   -28,   -30,   -34,   -37,   -40,   -45,
-   -48,   -50,   -52,   -54,   -56,   -58,   -61,   -68,  -186,  -418,
-  -418,  -418,  -143,   -63,  -418,  -418,  -145,  -150,  -152,  -418,
-  -156,  -418,  -141,  -149,   -80,  -418,  -418,  -107,  -418,  -418,
-  -123,  -418,  -418,  -418,  -196,  -418,  -212,  -418,  -224,  -418,
-  -418,  -418,  -418,  -228,  -418,  -291,  -418,  -418,  -387,  -418,
-  -389,  -418,  -391,  -418,  -404,  -418,  -418,  -418,  -418,  -418,
-  -418,  -418,  -240,  -418,  -418,  -418,  -418,  -248,  -418,  -418,
-  -261,  -263,  -418,  -265,  -266,  -267,  -268,  -269,  -418,  -288,
-  -289,  -418,  -418,  -418,  -418,  -313,  -314,  -252,  -324,  -326,
-  -418,  -351,  -353,  -418,  -355,  -356,  -357,  -358,  -365,  -418,
-  -418,  -418,  -418,  -381,  -418,  -407,  -408,  -409,  -418,  -418,
-   -13,  -418,  -418,   -60,  -172,  -418,  -418,  -418,   -19,  -418,
-   -20,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,
-  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,
-  -418,  -190,  -418,  -142,   -64,  -144,  -418,  -157,  -155,  -418,
-  -159,  -161,  -162,  -163,  -418,  -418,  -166,  -418,  -418,  -171,
-  -418,  -105,  -108,  -418,  -120,  -122,  -418,  -112,  -114,  -418,
-  -418,  -133,  -135,  -124,  -213,  -418,  -418,  -418,  -215,  -217,
-  -219,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -393,
-  -418,  -397,  -235,  -418,  -237,  -238,  -418,  -245,  -418,  -418,
-  -418,  -249,  -418,  -256,  -418,  -418,  -418,  -262,  -418,  -270,
-  -272,  -418,  -274,  -275,  -276,  -277,  -290,  -418,  -418,  -418,
-  -250,  -418,  -315,  -329,  -418,  -352,  -418,  -359,  -418,  -361,
-  -362,  -363,  -364,  -418,  -372,  -418,  -418,  -418,  -418,  -418,
-  -400,  -401,  -402,  -418,  -418,   -11,  -418,  -173,  -174,  -175,
-  -418,  -418,  -418,   -16,   -17,  -418,   -31,   -32,   -33,   -35,
-   -36,   -38,   -39,   -41,   -42,   -43,   -44,   -46,   -47,   -49,
-   -51,   -53,   -55,   -57,  -418,  -187,  -418,  -418,  -151,  -153,
-  -154,  -158,  -418,  -418,  -418,  -418,  -418,  -418,  -103,  -110,
-  -418,  -418,  -418,  -418,  -418,  -418,  -225,  -418,  -418,  -229,
-  -418,  -418,  -338,  -418,  -399,  -418,  -418,  -418,  -418,  -418,
-  -418,  -418,  -243,  -246,  -253,  -418,  -418,  -259,  -418,  -418,
-  -418,  -418,  -418,  -294,  -296,  -418,  -418,  -305,  -307,  -418,
-  -418,  -418,  -418,  -418,  -349,  -418,  -418,  -418,  -367,  -418,
-  -373,  -418,  -382,  -418,  -418,  -385,  -418,  -418,   -29,  -176,
-  -418,  -418,  -418,  -405,  -182,  -418,  -178,  -418,   -15,   -21,
-  -418,  -188,  -191,  -189,  -160,  -418,  -418,  -418,  -418,  -418,
-  -121,  -418,  -113,  -418,  -418,  -418,  -418,  -418,  -418,  -232,
-  -418,  -223,  -418,  -388,  -390,  -418,  -396,  -236,  -418,  -241,
-  -257,  -418,  -264,  -271,  -418,  -418,  -278,  -279,  -284,  -418,
-  -418,  -418,  -295,  -418,  -298,  -418,  -418,  -418,  -306,  -418,
-  -418,  -418,  -418,  -418,  -316,  -418,  -319,  -418,  -330,  -331,
-  -418,  -333,  -418,  -343,  -354,  -418,  -418,  -368,  -369,  -371,
-  -418,  -418,  -418,  -418,  -418,  -180,  -418,  -184,  -418,  -177,
-  -183,  -179,   -59,  -164,  -165,  -167,  -168,  -418,  -170,  -418,
-  -115,  -116,  -117,  -418,  -418,  -230,  -418,  -418,  -418,  -418,
-  -418,  -418,  -418,  -273,  -418,  -418,  -418,  -292,  -418,  -293,
-  -418,  -418,  -418,  -304,  -418,  -418,  -418,  -310,  -312,  -418,
-  -325,  -418,  -335,  -418,  -418,  -418,  -418,  -360,  -366,  -374,
-  -418,  -383,  -418,  -403,  -418,  -418,  -181,  -185,  -418,  -111,
-  -418,  -418,  -233,  -418,  -384,  -392,  -239,  -418,  -418,  -280,
-  -281,  -285,  -418,  -418,  -297,  -418,  -418,  -308,  -418,  -418,
-  -418,  -418,  -418,  -418,  -418,  -418,  -348,  -418,  -418,  -418,
-  -418,  -379,  -418,  -418,  -418,  -169,  -226,  -418,  -231,  -258,
-  -418,  -418,  -286,  -418,  -299,  -418,  -302,  -303,  -309,  -311,
-  -418,  -332,  -418,  -334,  -418,  -418,  -418,  -341,  -418,  -418,
-  -343,  -418,  -375,  -376,  -418,  -418,  -418,  -418,  -418,  -282,
-  -283,  -287,  -300,  -418,  -418,  -418,  -418,  -418,  -418,  -418,
-  -418,  -418,  -370,  -418,  -380,  -418,  -418,  -418,  -301,  -418,
-  -418,  -418,  -418,  -339,  -418,  -418,  -342,  -344,  -418,  -418,
-  -418,  -418,  -418,  -227,  -317,  -418,  -320,  -322,  -418,  -336,
-  -340,  -418,  -418,  -418,  -378,  -418,  -418,  -418,  -418,  -418,
-  -418,  -418,  -418,  -417,  -318,  -321,  -323,  -346,  -418,  -345,
-  -377,  -413,  -418,  -418,  -418,  -415,  -418,  -418,  -411,  -412,
-  -418,  -418,  -347,  -418,  -418,  -418,  -416,  -418,  -418,  -414 ]
+   -94,   -95,   -96,   -97,   -98,   -99,  -442,  -101,  -104,  -118,
+  -442,  -442,  -126,  -127,  -128,  -129,  -130,  -131,  -136,  -137,
+  -192,  -193,  -194,  -196,  -442,  -198,  -199,  -200,  -201,  -202,
+  -203,  -204,  -207,  -208,  -209,  -210,  -211,  -235,  -442,  -442,
+  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -408,  -442,
+  -442,   911,  -442,   -65,   -67,  -442,  -139,  -140,  -442,  -146,
+  -206,  -205,  -442,  -100,  -106,  -442,  -109,   -72,   -73,  -119,
+  -442,  -125,  -442,  -212,  -442,  -215,  -442,  -217,  -442,  -219,
+  -442,  -221,  -222,  -223,  -442,  -442,  -389,  -442,  -442,  -442,
+  -397,  -398,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,
+  -248,  -442,  -255,  -442,  -261,  -251,  -442,  -328,  -442,  -442,
+  -351,  -442,  -401,  -413,  -442,   -62,  -442,  -442,  -138,  -442,
+  -442,  -442,  -147,  -148,  -442,  -102,  -442,  -442,  -132,  -134,
+  -442,  -442,  -442,  -409,  -442,  -442,  -442,  -442,  -442,  -442,
+  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,
+  -338,  -442,  -245,  -442,  -243,  -442,  -256,  -442,  -252,  -442,
+  -442,  -329,  -442,  -402,  -442,  -442,  -435,   -66,    -2,    -3,
+    -4,    -5,    -6,    -7,    -8,    -9,   -10,  -442,   -12,   -14,
+   -18,  -442,  -442,   -22,   -23,   -24,   -25,   -26,   -27,   -28,
+   -30,   -34,   -37,   -40,   -45,   -48,   -50,   -52,   -54,   -56,
+   -58,   -61,   -68,  -186,  -442,  -442,  -442,  -143,   -63,  -442,
+  -442,  -145,  -150,  -152,  -442,  -156,  -442,  -141,  -149,   -80,
+  -442,  -442,  -107,  -442,  -442,  -123,  -442,  -442,  -442,  -197,
+  -442,  -213,  -442,  -225,  -442,  -442,  -442,  -442,  -229,  -442,
+  -292,  -442,  -442,  -390,  -442,  -392,  -442,  -394,  -442,  -407,
+  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -241,  -442,  -442,
+  -442,  -442,  -249,  -442,  -442,  -262,  -264,  -442,  -266,  -267,
+  -268,  -269,  -270,  -442,  -289,  -290,  -442,  -442,  -442,  -442,
+  -314,  -315,  -253,  -325,  -327,  -442,  -352,  -354,  -442,  -356,
+  -357,  -358,  -359,  -367,  -442,  -442,  -442,  -442,  -384,  -442,
+  -410,  -411,  -412,  -442,  -442,  -442,   -13,  -442,  -442,   -60,
+  -172,  -442,  -442,  -442,   -19,  -442,   -20,  -442,  -442,  -442,
+  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -442,
+  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -190,  -442,  -142,
+   -64,  -144,  -442,  -157,  -155,  -442,  -159,  -161,  -162,  -163,
+  -442,  -442,  -166,  -442,  -442,  -171,  -442,  -105,  -108,  -442,
+  -120,  -122,  -442,  -112,  -114,  -442,  -442,  -133,  -135,  -124,
+  -214,  -442,  -442,  -442,  -216,  -218,  -220,  -442,  -442,  -442,
+  -442,  -442,  -442,  -442,  -442,  -396,  -442,  -400,  -236,  -442,
+  -238,  -239,  -442,  -246,  -442,  -442,  -442,  -250,  -442,  -257,
+  -442,  -442,  -442,  -263,  -442,  -271,  -273,  -442,  -275,  -276,
+  -277,  -278,  -291,  -442,  -442,  -442,  -251,  -442,  -316,  -330,
+  -442,  -353,  -442,  -360,  -442,  -363,  -364,  -365,  -366,  -442,
+  -374,  -442,  -442,  -442,  -442,  -442,  -403,  -404,  -405,  -442,
+  -442,  -421,  -442,   -11,  -442,  -173,  -174,  -175,  -442,  -442,
+  -442,   -16,   -17,  -442,   -31,   -32,   -33,   -35,   -36,   -38,
+   -39,   -41,   -42,   -43,   -44,   -46,   -47,   -49,   -51,   -53,
+   -55,   -57,  -442,  -187,  -442,  -442,  -151,  -153,  -154,  -158,
+  -442,  -442,  -442,  -442,  -442,  -442,  -103,  -110,  -442,  -442,
+  -442,  -442,  -442,  -442,  -226,  -442,  -442,  -230,  -442,  -442,
+  -339,  -442,  -402,  -442,  -442,  -442,  -442,  -442,  -442,  -442,
+  -244,  -247,  -254,  -442,  -442,  -260,  -442,  -442,  -442,  -442,
+  -442,  -295,  -297,  -442,  -442,  -306,  -308,  -442,  -442,  -442,
+  -442,  -442,  -350,  -442,  -442,  -442,  -442,  -369,  -442,  -375,
+  -442,  -385,  -442,  -442,  -388,  -442,  -442,  -442,  -442,   -29,
+  -176,  -442,  -442,  -442,  -408,  -182,  -442,  -178,  -442,   -15,
+   -21,  -442,  -188,  -191,  -189,  -160,  -442,  -442,  -442,  -442,
+  -442,  -121,  -442,  -113,  -442,  -442,  -442,  -442,  -442,  -442,
+  -233,  -442,  -224,  -442,  -391,  -393,  -442,  -399,  -237,  -442,
+  -242,  -258,  -442,  -265,  -272,  -442,  -442,  -279,  -280,  -285,
+  -442,  -442,  -442,  -296,  -442,  -299,  -442,  -442,  -442,  -307,
+  -442,  -442,  -442,  -442,  -442,  -317,  -442,  -320,  -442,  -331,
+  -332,  -442,  -334,  -442,  -344,  -355,  -361,  -442,  -442,  -370,
+  -371,  -373,  -442,  -442,  -442,  -442,  -442,  -422,  -442,  -442,
+  -180,  -442,  -184,  -442,  -177,  -183,  -179,   -59,  -164,  -165,
+  -167,  -168,  -442,  -170,  -442,  -115,  -116,  -117,  -442,  -442,
+  -231,  -442,  -442,  -442,  -442,  -442,  -442,  -442,  -274,  -442,
+  -442,  -442,  -293,  -442,  -294,  -442,  -442,  -442,  -305,  -442,
+  -442,  -442,  -311,  -313,  -442,  -326,  -442,  -336,  -442,  -442,
+  -442,  -442,  -362,  -368,  -376,  -442,  -386,  -442,  -406,  -442,
+  -442,  -442,  -423,  -425,  -426,  -427,  -428,  -429,  -430,  -442,
+  -436,  -437,  -442,  -442,  -181,  -185,  -442,  -111,  -442,  -442,
+  -234,  -442,  -387,  -395,  -240,  -442,  -442,  -281,  -282,  -286,
+  -442,  -442,  -298,  -442,  -442,  -309,  -442,  -442,  -442,  -442,
+  -442,  -442,  -442,  -442,  -349,  -442,  -442,  -442,  -442,  -382,
+  -442,  -442,  -442,  -442,  -442,  -432,  -433,  -438,  -439,  -440,
+  -441,  -169,  -227,  -442,  -232,  -259,  -442,  -442,  -287,  -442,
+  -300,  -442,  -303,  -304,  -310,  -312,  -442,  -333,  -442,  -335,
+  -442,  -442,  -442,  -342,  -442,  -442,  -344,  -442,  -377,  -378,
+  -379,  -442,  -442,  -442,  -442,  -424,  -431,  -442,  -442,  -283,
+  -284,  -288,  -301,  -442,  -442,  -442,  -442,  -442,  -442,  -442,
+  -442,  -442,  -372,  -442,  -383,  -442,  -442,  -434,  -442,  -302,
+  -442,  -442,  -442,  -442,  -340,  -442,  -442,  -343,  -345,  -442,
+  -442,  -442,  -442,  -442,  -228,  -318,  -442,  -321,  -323,  -442,
+  -337,  -341,  -442,  -442,  -442,  -381,  -442,  -442,  -442,  -442,
+  -442,  -442,  -442,  -442,  -420,  -319,  -322,  -324,  -347,  -442,
+  -346,  -380,  -416,  -442,  -442,  -442,  -418,  -442,  -442,  -414,
+  -415,  -442,  -442,  -348,  -442,  -442,  -442,  -419,  -442,  -442,
+  -417 ]
 
 racc_goto_table = [
-    53,   135,    82,   227,   260,   176,   149,   333,   231,   233,
-   158,   258,   100,   150,    97,   318,   235,   151,   563,   383,
-   462,   178,    50,   166,   324,   261,   523,   461,   525,   526,
-   387,   370,     9,     8,   338,   429,   263,   638,   561,    81,
-   139,   598,   311,   382,   125,   467,   266,   332,   547,   269,
-   271,   702,   290,   246,   154,   543,   745,   615,   766,   642,
-   710,   483,   484,   485,   486,   137,   234,   487,   488,   310,
-   558,   544,   548,   645,   644,   243,   479,   480,   481,   482,
-   446,   447,   557,   455,   148,   559,   544,   750,   361,   709,
-   333,   783,   268,   273,   191,   326,   364,   327,   854,   859,
-     1,   233,   852,     2,   340,   489,   490,   491,   492,   493,
-    80,   367,    91,   253,   392,   808,    92,   245,    93,   386,
-   590,   391,   419,   179,   145,   499,   369,   248,   569,   360,
-    51,   254,   256,   257,   262,   541,   318,   180,   127,   286,
-   333,    82,   129,   288,   333,   380,   423,   811,   131,   289,
-   612,   249,   608,   773,   428,   628,   255,   427,   234,   622,
-   784,   729,   785,   445,   333,   437,   686,   542,   623,   476,
-   477,   478,   472,   765,   647,   544,   334,   382,   192,   548,
-    53,   572,   292,   546,   475,   629,   552,   313,     9,     8,
-   544,   634,   635,   825,   136,   187,   494,   553,   723,   443,
-   639,   701,   287,   771,   497,   nil,   nil,   nil,   416,   nil,
-   nil,   nil,     9,     8,   nil,   nil,   nil,   nil,   nil,   248,
-   248,   nil,   nil,   nil,   nil,   436,   nil,   679,   233,   nil,
-   441,   405,   nil,   712,   782,   nil,   nil,   nil,   368,   nil,
-   nil,   nil,   nil,   249,   249,   516,   522,   454,   522,   522,
-   nil,   nil,   nil,   nil,   nil,   463,   nil,   nil,   418,   518,
-   468,   nil,   424,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   519,   nil,   nil,   nil,   nil,   nil,   501,
-   nil,   417,   613,   nil,    53,   234,   425,   292,   nil,   527,
-   nil,   nil,   584,   592,   568,   nil,   511,   nil,   462,   nil,
-   nil,   nil,   nil,   nil,   nil,   461,   421,   nil,   313,   nil,
-   333,   333,   333,   334,   531,   nil,     9,     8,   333,   333,
-   333,   nil,   458,   734,   nil,   nil,   nil,   737,   nil,   nil,
-   nil,   nil,   233,   577,   nil,   nil,   nil,   nil,   538,   575,
-   nil,   nil,   587,   588,   589,   nil,   nil,   nil,   713,   nil,
-   593,   594,   595,   nil,   248,   582,   555,   nil,   602,   nil,
-   nil,   nil,   669,   nil,   820,   500,   nil,   nil,   nil,   nil,
-   nil,   nil,   522,   nil,   nil,   nil,   nil,   nil,   249,   nil,
-   nil,   318,   nil,   nil,   nil,   662,   nil,   nil,   nil,   234,
-   nil,   567,   nil,   nil,   841,   nil,   468,   nil,   nil,   nil,
+    54,   137,   232,    84,   236,   265,   263,   161,   179,   195,
+   339,   152,   240,   572,   238,   102,   153,    99,   154,   323,
+   169,   266,   389,   329,   531,   468,   533,   534,   467,   393,
+     9,   181,   425,   435,    50,   376,   453,   344,   268,   570,
+     8,   552,   556,   649,   650,   609,   141,   732,   127,    83,
+   271,   388,   251,   274,   276,   338,   552,   475,   316,   717,
+   773,   725,   295,   555,   157,   551,   802,   626,   491,   492,
+   493,   494,   239,   487,   488,   495,   496,   489,   490,   248,
+   567,   452,   566,   480,   657,   461,   568,   151,   778,   367,
+   724,   819,   273,   339,   278,   194,   331,   332,   895,   900,
+   893,   471,   577,   370,     1,   784,     2,   502,   238,   346,
+   497,   498,   398,   499,   500,   501,    82,   786,   373,    93,
+    94,   250,    95,   392,   258,   601,   182,   397,   148,   507,
+   375,   580,   366,   253,    51,   849,    52,   259,   261,   262,
+   267,   549,   323,   183,   339,    84,   386,   552,   339,   129,
+   291,   556,   619,   131,   254,   293,   429,   133,   294,   260,
+   623,   825,   434,   552,   757,   443,   239,   701,   339,   433,
+   550,   633,   639,   484,   485,   486,   852,   821,   809,   822,
+   634,   451,   801,    54,   340,   297,   388,   659,   554,     9,
+   318,   197,   640,   483,   560,   583,   645,   646,   866,     8,
+   138,   190,   561,   449,   716,   847,   807,   808,   505,   751,
+   139,   315,   422,     9,   655,   nil,   nil,   292,   nil,   nil,
+   nil,   nil,   nil,     8,   nil,   nil,   nil,   253,   253,   442,
+   694,   nil,   nil,   nil,   447,   nil,   238,   nil,   nil,   nil,
+   727,   411,   nil,   524,   374,   nil,   nil,   nil,   254,   254,
+   530,   460,   530,   530,   nil,   598,   599,   600,   526,   469,
+   818,   820,   nil,   604,   605,   606,   424,   476,   nil,   nil,
+   430,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   527,   nil,
+   509,   nil,   656,   624,   nil,   nil,   nil,   423,   nil,    54,
+   nil,   431,   297,   nil,   239,   603,   535,   519,   nil,   595,
+   579,   nil,   762,   nil,   nil,   nil,   765,   nil,   nil,   468,
+   nil,   nil,   467,   318,   nil,   nil,   339,   339,   339,     9,
+   nil,   nil,   340,   427,   339,   339,   339,   464,   539,     8,
+   nil,   nil,   nil,   nil,   588,   nil,   nil,   578,   nil,   546,
+   586,   nil,   238,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   563,   nil,   593,
+   728,   nil,   613,   253,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   684,   508,   nil,   nil,   nil,   nil,   nil,   530,   nil,
+   nil,   nil,   nil,   nil,   254,   nil,   nil,   nil,   nil,   nil,
+   323,   nil,   nil,   861,   677,   nil,   576,   nil,   nil,   nil,
+   239,   nil,   nil,   nil,   nil,   476,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   179,   564,   812,   nil,
-   nil,   nil,   535,   nil,   nil,   nil,   nil,   nil,   653,   nil,
-   585,   586,   656,   233,   nil,   577,   545,   549,   nil,   nil,
-   658,   nil,   nil,   nil,   nil,   nil,   611,   522,   nil,   nil,
-   nil,   545,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   182,   882,   573,   nil,   nil,   nil,   543,
+   665,   nil,   nil,   nil,   nil,   nil,   671,   596,   597,   588,
+   nil,   nil,   553,   557,   673,   nil,   238,   nil,   763,   622,
+   853,   nil,   766,   nil,   610,   nil,   530,   553,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   652,   nil,   nil,   631,   nil,   nil,
-   nil,   687,   nil,   nil,   nil,   591,   nil,   nil,   nil,   nil,
-   234,   nil,   nil,   nil,   nil,   nil,   333,   nil,   nil,   nil,
-   333,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   664,   nil,
+   nil,   nil,   nil,   nil,   642,   702,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   602,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   239,   nil,   nil,   nil,   nil,   339,
+   nil,   nil,   nil,   339,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   735,   718,
-   nil,   nil,   738,   690,   730,   nil,   nil,   nil,   nil,   694,
-   545,   nil,   nil,   nil,   549,   nil,   nil,   688,   nil,   nil,
-   nil,   640,   nil,   nil,   nil,   545,   nil,   nil,   nil,   nil,
-   nil,   740,   nil,   nil,   747,   nil,   746,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   753,   nil,   nil,   756,
-   333,   nil,   nil,   nil,   nil,   681,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   731,   nil,   nil,   nil,   746,   nil,   705,
+   nil,   758,   nil,   nil,   nil,   709,   nil,   nil,   553,   nil,
+   nil,   nil,   557,   837,   nil,   nil,   nil,   703,   nil,   651,
+   nil,   nil,   nil,   nil,   553,   nil,   nil,   nil,   nil,   768,
+   nil,   nil,   nil,   nil,   774,   775,   nil,   nil,   nil,   nil,
+   855,   nil,   nil,   nil,   781,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   696,
+   nil,   873,   nil,   792,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   464,   nil,   nil,   339,   nil,   nil,   750,   610,   nil,
+   nil,   769,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   894,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   339,   nil,   nil,   nil,   nil,   nil,   777,   nil,   nil,
+   nil,   829,   830,   810,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   834,   339,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   530,   nil,   845,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   458,   nil,   nil,   333,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   741,   797,   nil,   nil,   nil,   nil,   nil,   nil,   789,
-   790,   nil,   nil,   333,   774,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   794,   749,   nil,   814,   nil,   nil,   522,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   805,   nil,
-   nil,   nil,   nil,   333,   nil,   832,   nil,   746,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   823,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   727,
-   nil,   787,   nil,   835,   nil,   853,   nil,   nil,   nil,   nil,
+   774,   nil,   339,   nil,   nil,   755,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   864,   nil,   nil,   nil,   nil,   824,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   876,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   864,   nil,   nil,   815,   nil,   nil,   868,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   905,   nil,   nil,
+   nil,   nil,   nil,   909,   nil,   856,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   651 ]
+
+racc_goto_check = [
+    45,     4,    32,    31,    23,     5,    85,    47,    83,   167,
+    22,    29,    55,   153,    28,    68,    53,    25,     4,   101,
+    47,    23,    44,   157,    84,    74,    84,    84,    76,    48,
+    34,    89,     6,   106,    64,    60,   145,    10,    86,   154,
+    33,    24,    24,   129,   130,    88,   156,   170,    25,    30,
+    83,    43,    40,    83,    83,    11,    24,    61,   138,   133,
+   135,   152,    98,   118,    51,   113,   116,   107,    14,    14,
+    14,    14,    29,    12,    12,    15,    15,    13,    13,    53,
+   113,   140,   146,     6,   107,   147,   148,    31,   149,    32,
+   150,   151,   158,    22,   159,   161,   162,   163,   164,   165,
+   166,   168,   169,    28,     1,   173,     2,     6,    28,     8,
+    16,    17,    23,    18,    19,    20,    26,   170,    27,    37,
+    39,    41,    42,    46,    51,    49,    31,    52,    54,    57,
+    59,    62,    63,    25,    65,   116,    66,    67,    80,    81,
+    82,    87,   101,    90,    22,    31,    40,    24,    22,    91,
+    92,    24,    84,    93,    45,    94,    95,    96,    97,    45,
+    99,   170,   100,    24,   108,   110,    29,   111,    22,    98,
+   112,   113,   118,    10,    10,    10,   135,   152,   133,   152,
+   114,   138,   115,    45,    25,    45,    43,   113,   117,    34,
+    45,    30,   119,    11,   121,    61,   122,   123,   124,    33,
+   125,   126,   127,   128,   131,   170,   132,   134,     5,    88,
+   136,   137,     4,    34,   139,   nil,   nil,    64,   nil,   nil,
+   nil,   nil,   nil,    33,   nil,   nil,   nil,    25,    25,     4,
+    84,   nil,   nil,   nil,     4,   nil,    28,   nil,   nil,   nil,
+   154,   156,   nil,    85,    31,   nil,   nil,   nil,    45,    45,
+     5,     4,     5,     5,   nil,     6,     6,     6,    23,     4,
+   129,   130,   nil,     6,     6,     6,    25,    53,   nil,   nil,
+    25,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    86,   nil,
+    47,   nil,   145,   106,   nil,   nil,   nil,    31,   nil,    45,
+   nil,    45,    45,   nil,    29,    48,    83,    47,   nil,    60,
+    10,   nil,    24,   nil,   nil,   nil,    24,   nil,   nil,    74,
+   nil,   nil,    76,    45,   nil,   nil,    22,    22,    22,    34,
+   nil,   nil,    25,    64,    22,    22,    22,    45,    89,    33,
+   nil,   nil,   nil,   nil,    23,   nil,   nil,   167,   nil,    47,
+    55,   nil,    28,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,    47,   nil,    32,
+    74,   nil,   157,    25,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,    44,    31,   nil,   nil,   nil,   nil,   nil,     5,   nil,
+   nil,   nil,   nil,   nil,    45,   nil,   nil,   nil,   nil,   nil,
+   101,   nil,   nil,   153,    22,   nil,     4,   nil,   nil,   nil,
+    29,   nil,   nil,   nil,   nil,    53,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   640 ]
-
-racc_goto_check = [
-    45,     4,    31,    32,     5,    82,    29,    22,    23,    28,
-    47,    84,    67,    53,    25,   100,    55,     4,   152,    44,
-    73,    88,    64,    47,   156,    23,    83,    75,    83,    83,
-    48,    60,    34,    33,    10,   105,    85,   128,   153,    30,
-   155,    87,   137,    43,    25,    61,    82,    11,   117,    82,
-    82,   132,    97,    40,    51,   112,   134,   106,   115,   133,
-   151,    14,    14,    14,    14,   135,    29,    15,    15,   136,
-   112,    24,    24,   106,   138,    53,    12,    12,    13,    13,
-   139,   144,   145,   146,    31,   147,    24,   148,    32,   149,
-    22,   150,   157,   158,   160,   161,    28,   162,   163,   164,
-     1,    28,   165,     2,     8,    16,    17,    18,    19,    20,
-    26,    27,    37,    51,    23,   115,    39,    41,    42,    46,
-    49,    52,     6,    31,    54,    57,    59,    25,    62,    63,
-    65,    66,    79,    80,    81,    86,   100,    89,    90,    91,
-    22,    31,    92,    93,    22,    40,    94,   134,    95,    96,
-    98,    45,    83,   132,    99,   117,    45,    97,    29,   112,
-   151,   107,   151,   137,    22,   109,   110,   111,   113,    10,
-    10,    10,     6,   114,   112,    24,    25,    43,    30,    24,
-    45,    61,    45,   116,    11,   118,   120,    45,    34,    33,
-    24,   121,   122,   123,   124,   125,     6,   126,    87,   127,
-   129,   130,    64,   131,     5,   nil,   nil,   nil,     4,   nil,
-   nil,   nil,    34,    33,   nil,   nil,   nil,   nil,   nil,    25,
-    25,   nil,   nil,   nil,   nil,     4,   nil,    83,    28,   nil,
-     4,   155,   nil,   153,   128,   nil,   nil,   nil,    31,   nil,
-   nil,   nil,   nil,    45,    45,    84,     5,     4,     5,     5,
-   nil,   nil,   nil,   nil,   nil,     4,   nil,   nil,    25,    23,
-    53,   nil,    25,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,    85,   nil,   nil,   nil,   nil,   nil,    47,
-   nil,    31,   105,   nil,    45,    29,    45,    45,   nil,    82,
-   nil,   nil,    60,    48,    10,   nil,    47,   nil,    73,   nil,
-   nil,   nil,   nil,   nil,   nil,    75,    64,   nil,    45,   nil,
-    22,    22,    22,    25,    88,   nil,    34,    33,    22,    22,
-    22,   nil,    45,    24,   nil,   nil,   nil,    24,   nil,   nil,
-   nil,   nil,    28,    23,   nil,   nil,   nil,   nil,    47,    55,
-   nil,   nil,     6,     6,     6,   nil,   nil,   nil,    73,   nil,
-     6,     6,     6,   nil,    25,    32,    47,   nil,   156,   nil,
-   nil,   nil,    44,   nil,   152,    31,   nil,   nil,   nil,   nil,
-   nil,   nil,     5,   nil,   nil,   nil,   nil,   nil,    45,   nil,
-   nil,   100,   nil,   nil,   nil,    22,   nil,   nil,   nil,    29,
-   nil,     4,   nil,   nil,   152,   nil,    53,   nil,   nil,   nil,
+   nil,   nil,   nil,    31,   153,    68,   nil,   nil,   nil,    31,
+    23,   nil,   nil,   nil,   nil,   nil,    23,     4,     4,    23,
+   nil,   nil,    45,    45,    55,   nil,    28,   nil,     6,    47,
+    84,   nil,     6,   nil,     4,   nil,     5,    45,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    31,    67,    83,   nil,
-   nil,   nil,    31,   nil,   nil,   nil,   nil,   nil,    23,   nil,
-     4,     4,    23,    28,   nil,    23,    45,    45,   nil,   nil,
-    55,   nil,   nil,   nil,   nil,   nil,    47,     5,   nil,   nil,
-   nil,    45,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    47,   nil,
+   nil,   nil,   nil,   nil,     4,    23,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,    25,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,    29,   nil,   nil,   nil,   nil,    22,
+   nil,   nil,   nil,    22,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,    47,   nil,   nil,     4,   nil,   nil,
-   nil,    23,   nil,   nil,   nil,    25,   nil,   nil,   nil,   nil,
-    29,   nil,   nil,   nil,   nil,   nil,    22,   nil,   nil,   nil,
-    22,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   167,   nil,   nil,   nil,    23,   nil,    47,
+   nil,    85,   nil,   nil,   nil,    47,   nil,   nil,    45,   nil,
+   nil,   nil,    45,     6,   nil,   nil,   nil,     4,   nil,    45,
+   nil,   nil,   nil,   nil,    45,   nil,   nil,   nil,   nil,    23,
+   nil,   nil,   nil,   nil,    23,    32,   nil,   nil,   nil,   nil,
+     6,   nil,   nil,   nil,    23,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    25,
+   nil,     6,   nil,    32,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,    45,   nil,   nil,    22,   nil,   nil,     4,     4,   nil,
+   nil,    47,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,     6,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,    22,   nil,   nil,   nil,   nil,   nil,     4,   nil,   nil,
+   nil,    32,    32,    83,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,    23,    22,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,     5,   nil,    23,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,     6,    23,
-   nil,   nil,     6,    47,    84,   nil,   nil,   nil,   nil,    47,
-    45,   nil,   nil,   nil,    45,   nil,   nil,     4,   nil,   nil,
-   nil,    45,   nil,   nil,   nil,    45,   nil,   nil,   nil,   nil,
-   nil,    23,   nil,   nil,    32,   nil,    23,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    23,   nil,   nil,    32,
-    22,   nil,   nil,   nil,   nil,    25,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-    45,   nil,   nil,    22,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,    47,     6,   nil,   nil,   nil,   nil,   nil,   nil,    32,
-    32,   nil,   nil,    22,    82,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,    23,     4,   nil,     6,   nil,   nil,     5,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    23,   nil,
-   nil,   nil,   nil,    22,   nil,     6,   nil,    23,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    32,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    31,
-   nil,     4,   nil,    23,   nil,     6,   nil,   nil,   nil,   nil,
+    23,   nil,    22,   nil,   nil,    31,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,    32,   nil,   nil,   nil,   nil,     4,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,    23,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,    23,   nil,   nil,     4,   nil,   nil,    23,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,    23,   nil,   nil,
+   nil,   nil,   nil,    23,   nil,     4,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,    45 ]
+
+racc_goto_pointer = [
+   nil,   104,   106,   nil,   -74,  -160,  -258,   nil,  -103,   nil,
+  -174,  -152,  -277,  -275,  -286,  -283,  -250,  -250,  -249,  -249,
+  -249,   nil,  -197,  -145,  -403,   -23,   112,  -126,  -136,   -78,
+    45,    -1,  -145,    38,    28,   nil,   nil,    83,   nil,    82,
+  -104,   -34,    84,  -200,  -231,    -2,  -131,   -95,  -225,  -393,
+   nil,   -36,  -129,   -73,    43,  -138,   nil,  -243,   nil,  -116,
+  -211,  -283,  -345,  -102,    32,   132,   134,   -24,   -39,   nil,
+   nil,   nil,   nil,   nil,  -304,   nil,  -301,   nil,   nil,   nil,
+   -24,   -25,   -27,  -118,  -386,  -158,  -129,  -302,  -483,   -96,
+    15,    77,   -35,    80,   -31,  -137,    83,   -29,  -125,  -386,
+  -135,  -173,   nil,   nil,   nil,   nil,  -264,  -481,  -535,   nil,
+  -138,  -463,  -274,  -379,  -373,  -582,  -698,  -257,  -382,  -365,
+   nil,  -254,  -364,  -363,  -653,   125,    63,  -247,  -110,  -518,
+  -517,  -447,  -563,  -592,  -562,  -659,   134,    19,  -134,  -349,
+  -237,   nil,   nil,   nil,   nil,  -282,  -377,  -240,  -375,  -636,
+  -570,  -687,  -601,  -450,  -423,   nil,   -31,  -170,   -78,   -79,
+   nil,   -48,   -98,   -97,  -794,  -796,  -784,  -135,  -234,  -370,
+  -622,   nil,   nil,  -634 ]
+
+racc_goto_default = [
+   nil,   nil,   nil,   209,   198,   206,   337,   210,   219,   211,
+   220,   nil,   221,   222,   223,   224,   225,   226,   227,   228,
+   229,   230,   231,   233,    67,     4,   nil,   245,    39,    40,
+   nil,   391,   nil,    97,    98,    11,    12,    37,    36,   nil,
+   nil,   nil,   nil,   252,   nil,   246,   nil,   nil,   nil,   390,
+    41,   nil,   158,    85,    86,   nil,   242,   243,   244,   nil,
+   nil,   nil,   477,   nil,   nil,   nil,   nil,    53,   nil,    55,
+    56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+   103,   nil,   nil,   nil,   nil,   628,   nil,   269,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   296,
+   nil,   298,   299,   300,   301,   302,   nil,   nil,   627,   303,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    45 ]
-
-racc_goto_pointer = [
-   nil,   100,   103,   nil,   -73,  -158,  -163,   nil,  -103,   nil,
-  -172,  -155,  -268,  -268,  -287,  -285,  -249,  -249,  -249,  -249,
-  -249,   nil,  -195,  -138,  -367,   -26,   106,  -128,  -138,   -81,
-    35,    -2,  -141,    31,    30,   nil,   nil,    76,   nil,    78,
-  -100,   -35,    80,  -203,  -229,    -2,  -130,   -90,  -219,  -390,
-   nil,   -44,  -130,   -74,    41,  -131,   nil,  -241,   nil,  -115,
-  -210,  -289,  -340,  -100,    20,   128,   -27,   -41,   nil,   nil,
-   nil,   nil,   nil,  -304,   nil,  -297,   nil,   nil,   nil,   -27,
-   -28,   -30,  -119,  -378,  -150,  -128,  -302,  -479,  -104,    11,
-    67,   -43,    70,   -40,  -142,    75,   -35,  -132,  -388,  -138,
-  -174,   nil,   nil,   nil,   nil,  -257,  -483,  -523,   nil,  -133,
-  -453,  -271,  -383,  -377,  -563,  -678,  -256,  -391,  -364,   nil,
-  -256,  -361,  -360,  -617,   120,    59,  -246,  -109,  -516,  -353,
-  -439,  -538,  -589,  -494,  -648,   -10,  -120,  -147,  -481,  -233,
-   nil,   nil,   nil,   nil,  -232,  -371,  -237,  -370,  -622,  -559,
-  -659,  -590,  -439,  -418,   nil,   -36,  -166,   -75,   -77,   nil,
-   -47,   -96,   -94,  -753,  -755,  -741 ]
-
-racc_goto_default = [
-   nil,   nil,   nil,   204,   193,   201,   331,   205,   214,   206,
-   215,   nil,   216,   217,   218,   219,   220,   221,   222,   223,
-   224,   225,   226,   228,    66,     4,   nil,   240,    39,    40,
-   nil,   385,   nil,    95,    96,    11,    12,    37,    36,   nil,
-   nil,   nil,   nil,   247,   nil,   241,   nil,   nil,   nil,   384,
-    41,   nil,   155,    83,    84,   nil,   237,   238,   239,   nil,
-   nil,   nil,   469,   nil,   nil,   nil,    52,   nil,    54,    55,
-    56,    57,    58,    59,    60,    61,    62,    63,    64,   101,
-   nil,   nil,   nil,   nil,   617,   nil,   264,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   291,   nil,
-   293,   294,   295,   296,   297,   nil,   nil,   616,   298,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   304,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   641,   nil,   772,   nil,   nil,   nil,   nil,   312,   nil,
-   314,   315,   316,   317,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   321,   nil,   113,   nil,   nil,   114,   nil,   460,
-   nil,   nil,   nil,   nil,   nil,   nil ]
+   309,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   652,   nil,   653,   nil,   nil,   nil,   nil,   317,
+   nil,   319,   320,   321,   322,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   326,   nil,   115,   nil,   nil,   116,   nil,
+   466,   nil,   nil,   nil,   nil,   nil,   nil,   733,   735,   nil,
+   nil,   734,   736,   nil ]
 
 racc_reduce_table = [
   0, 0, :racc_error,
-  1, 141, :_reduce_none,
-  1, 143, :_reduce_2,
-  1, 143, :_reduce_3,
-  1, 143, :_reduce_4,
-  1, 143, :_reduce_5,
-  1, 143, :_reduce_6,
-  1, 143, :_reduce_7,
-  1, 143, :_reduce_8,
-  1, 143, :_reduce_9,
-  1, 143, :_reduce_10,
-  3, 143, :_reduce_11,
-  1, 145, :_reduce_none,
-  2, 145, :_reduce_13,
-  1, 147, :_reduce_none,
-  4, 147, :_reduce_15,
-  3, 147, :_reduce_16,
-  3, 147, :_reduce_17,
+  1, 142, :_reduce_none,
+  1, 144, :_reduce_2,
+  1, 144, :_reduce_3,
+  1, 144, :_reduce_4,
+  1, 144, :_reduce_5,
+  1, 144, :_reduce_6,
+  1, 144, :_reduce_7,
+  1, 144, :_reduce_8,
+  1, 144, :_reduce_9,
+  1, 144, :_reduce_10,
+  3, 144, :_reduce_11,
+  1, 146, :_reduce_none,
+  2, 146, :_reduce_13,
   1, 148, :_reduce_none,
-  2, 148, :_reduce_19,
-  2, 148, :_reduce_20,
-  4, 148, :_reduce_21,
-  1, 149, :_reduce_22,
-  1, 149, :_reduce_23,
-  1, 149, :_reduce_24,
-  1, 149, :_reduce_25,
-  1, 149, :_reduce_26,
-  1, 149, :_reduce_27,
-  1, 150, :_reduce_none,
-  4, 150, :_reduce_29,
-  1, 152, :_reduce_none,
-  3, 152, :_reduce_31,
-  3, 152, :_reduce_32,
-  3, 152, :_reduce_33,
+  4, 148, :_reduce_15,
+  3, 148, :_reduce_16,
+  3, 148, :_reduce_17,
+  1, 149, :_reduce_none,
+  2, 149, :_reduce_19,
+  2, 149, :_reduce_20,
+  4, 149, :_reduce_21,
+  1, 150, :_reduce_22,
+  1, 150, :_reduce_23,
+  1, 150, :_reduce_24,
+  1, 150, :_reduce_25,
+  1, 150, :_reduce_26,
+  1, 150, :_reduce_27,
+  1, 151, :_reduce_none,
+  4, 151, :_reduce_29,
   1, 153, :_reduce_none,
-  3, 153, :_reduce_35,
-  3, 153, :_reduce_36,
+  3, 153, :_reduce_31,
+  3, 153, :_reduce_32,
+  3, 153, :_reduce_33,
   1, 154, :_reduce_none,
-  3, 154, :_reduce_38,
-  3, 154, :_reduce_39,
+  3, 154, :_reduce_35,
+  3, 154, :_reduce_36,
   1, 155, :_reduce_none,
-  3, 155, :_reduce_41,
-  3, 155, :_reduce_42,
-  3, 155, :_reduce_43,
-  3, 155, :_reduce_44,
+  3, 155, :_reduce_38,
+  3, 155, :_reduce_39,
   1, 156, :_reduce_none,
-  3, 156, :_reduce_46,
-  3, 156, :_reduce_47,
+  3, 156, :_reduce_41,
+  3, 156, :_reduce_42,
+  3, 156, :_reduce_43,
+  3, 156, :_reduce_44,
   1, 157, :_reduce_none,
-  3, 157, :_reduce_49,
+  3, 157, :_reduce_46,
+  3, 157, :_reduce_47,
   1, 158, :_reduce_none,
-  3, 158, :_reduce_51,
+  3, 158, :_reduce_49,
   1, 159, :_reduce_none,
-  3, 159, :_reduce_53,
+  3, 159, :_reduce_51,
   1, 160, :_reduce_none,
-  3, 160, :_reduce_55,
+  3, 160, :_reduce_53,
   1, 161, :_reduce_none,
-  3, 161, :_reduce_57,
+  3, 161, :_reduce_55,
   1, 162, :_reduce_none,
-  5, 162, :_reduce_59,
-  1, 146, :_reduce_60,
-  1, 163, :_reduce_61,
-  3, 164, :_reduce_62,
-  1, 167, :_reduce_none,
-  2, 167, :_reduce_64,
-  1, 166, :_reduce_65,
-  3, 166, :_reduce_66,
-  1, 170, :_reduce_none,
-  3, 170, :_reduce_68,
-  1, 168, :_reduce_69,
-  1, 168, :_reduce_70,
-  1, 168, :_reduce_71,
+  3, 162, :_reduce_57,
+  1, 163, :_reduce_none,
+  5, 163, :_reduce_59,
+  1, 147, :_reduce_60,
+  1, 164, :_reduce_61,
+  3, 165, :_reduce_62,
   1, 168, :_reduce_none,
-  1, 168, :_reduce_none,
-  1, 168, :_reduce_74,
-  1, 168, :_reduce_none,
-  1, 168, :_reduce_none,
-  1, 168, :_reduce_77,
-  1, 168, :_reduce_78,
-  1, 168, :_reduce_79,
-  4, 168, :_reduce_80,
-  1, 176, :_reduce_81,
-  1, 176, :_reduce_82,
-  1, 176, :_reduce_83,
-  1, 177, :_reduce_84,
-  1, 177, :_reduce_85,
-  1, 177, :_reduce_86,
-  1, 177, :_reduce_87,
-  1, 177, :_reduce_88,
-  1, 177, :_reduce_89,
-  1, 177, :_reduce_90,
-  1, 177, :_reduce_91,
-  1, 177, :_reduce_92,
-  1, 177, :_reduce_93,
-  1, 177, :_reduce_94,
-  1, 177, :_reduce_95,
-  1, 177, :_reduce_96,
-  1, 177, :_reduce_97,
-  1, 178, :_reduce_98,
-  1, 178, :_reduce_99,
-  2, 175, :_reduce_100,
-  1, 175, :_reduce_none,
-  0, 181, :_reduce_102,
-  6, 173, :_reduce_103,
-  0, 182, :_reduce_104,
-  5, 173, :_reduce_105,
-  2, 173, :_reduce_106,
-  1, 180, :_reduce_none,
-  2, 180, :_reduce_none,
-  1, 179, :_reduce_109,
-  3, 183, :_reduce_110,
-  6, 183, :_reduce_111,
-  1, 186, :_reduce_112,
-  3, 186, :_reduce_113,
-  1, 188, :_reduce_114,
-  4, 188, :_reduce_115,
-  4, 188, :_reduce_116,
-  4, 188, :_reduce_117,
-  1, 165, :_reduce_none,
-  2, 165, :_reduce_119,
-  1, 184, :_reduce_120,
-  3, 184, :_reduce_121,
-  1, 189, :_reduce_none,
-  4, 174, :_reduce_none,
-  5, 174, :_reduce_none,
-  2, 174, :_reduce_none,
-  1, 190, :_reduce_126,
-  1, 190, :_reduce_127,
-  1, 190, :_reduce_128,
-  1, 190, :_reduce_129,
-  1, 190, :_reduce_130,
-  1, 190, :_reduce_131,
-  1, 191, :_reduce_none,
-  3, 191, :_reduce_none,
+  2, 168, :_reduce_64,
+  1, 167, :_reduce_65,
+  3, 167, :_reduce_66,
+  1, 171, :_reduce_none,
+  3, 171, :_reduce_68,
+  1, 169, :_reduce_69,
+  1, 169, :_reduce_70,
+  1, 169, :_reduce_71,
+  1, 169, :_reduce_none,
+  1, 169, :_reduce_none,
+  1, 169, :_reduce_74,
+  1, 169, :_reduce_none,
+  1, 169, :_reduce_none,
+  1, 169, :_reduce_77,
+  1, 169, :_reduce_78,
+  1, 169, :_reduce_79,
+  4, 169, :_reduce_80,
+  1, 177, :_reduce_81,
+  1, 177, :_reduce_82,
+  1, 177, :_reduce_83,
+  1, 178, :_reduce_84,
+  1, 178, :_reduce_85,
+  1, 178, :_reduce_86,
+  1, 178, :_reduce_87,
+  1, 178, :_reduce_88,
+  1, 178, :_reduce_89,
+  1, 178, :_reduce_90,
+  1, 178, :_reduce_91,
+  1, 178, :_reduce_92,
+  1, 178, :_reduce_93,
+  1, 178, :_reduce_94,
+  1, 178, :_reduce_95,
+  1, 178, :_reduce_96,
+  1, 178, :_reduce_97,
+  1, 179, :_reduce_98,
+  1, 179, :_reduce_99,
+  2, 176, :_reduce_100,
+  1, 176, :_reduce_none,
+  0, 182, :_reduce_102,
+  6, 174, :_reduce_103,
+  0, 183, :_reduce_104,
+  5, 174, :_reduce_105,
+  2, 174, :_reduce_106,
+  1, 181, :_reduce_none,
+  2, 181, :_reduce_none,
+  1, 180, :_reduce_109,
+  3, 184, :_reduce_110,
+  6, 184, :_reduce_111,
+  1, 187, :_reduce_112,
+  3, 187, :_reduce_113,
+  1, 189, :_reduce_114,
+  4, 189, :_reduce_115,
+  4, 189, :_reduce_116,
+  4, 189, :_reduce_117,
+  1, 166, :_reduce_none,
+  2, 166, :_reduce_119,
+  1, 185, :_reduce_120,
+  3, 185, :_reduce_121,
+  1, 190, :_reduce_none,
+  4, 175, :_reduce_none,
+  5, 175, :_reduce_none,
+  2, 175, :_reduce_none,
+  1, 191, :_reduce_126,
+  1, 191, :_reduce_127,
+  1, 191, :_reduce_128,
+  1, 191, :_reduce_129,
+  1, 191, :_reduce_130,
+  1, 191, :_reduce_131,
   1, 192, :_reduce_none,
   3, 192, :_reduce_none,
-  1, 169, :_reduce_136,
-  1, 169, :_reduce_137,
-  2, 171, :_reduce_138,
-  1, 171, :_reduce_none,
-  1, 194, :_reduce_140,
-  3, 194, :_reduce_141,
-  4, 194, :_reduce_142,
-  3, 194, :_reduce_143,
-  4, 194, :_reduce_144,
-  3, 194, :_reduce_145,
-  1, 193, :_reduce_146,
-  2, 193, :_reduce_147,
-  2, 193, :_reduce_148,
-  3, 193, :_reduce_149,
-  1, 195, :_reduce_none,
-  3, 195, :_reduce_none,
-  1, 196, :_reduce_152,
-  3, 196, :_reduce_153,
-  3, 197, :_reduce_154,
-  2, 197, :_reduce_155,
-  1, 197, :_reduce_156,
-  2, 197, :_reduce_157,
-  3, 198, :_reduce_158,
-  1, 199, :_reduce_159,
-  3, 199, :_reduce_160,
-  1, 200, :_reduce_161,
-  1, 200, :_reduce_162,
-  1, 200, :_reduce_163,
-  4, 200, :_reduce_164,
-  4, 200, :_reduce_165,
-  1, 200, :_reduce_166,
-  4, 200, :_reduce_167,
-  4, 200, :_reduce_168,
-  6, 200, :_reduce_169,
-  4, 200, :_reduce_170,
-  1, 200, :_reduce_171,
-  1, 151, :_reduce_none,
-  2, 151, :_reduce_173,
-  1, 201, :_reduce_none,
-  1, 201, :_reduce_none,
-  2, 201, :_reduce_none,
-  3, 202, :_reduce_177,
-  2, 202, :_reduce_178,
-  3, 202, :_reduce_179,
-  3, 202, :_reduce_180,
-  4, 202, :_reduce_181,
-  2, 202, :_reduce_182,
-  3, 202, :_reduce_none,
-  3, 202, :_reduce_184,
-  4, 202, :_reduce_185,
-  1, 172, :_reduce_186,
-  3, 172, :_reduce_187,
-  4, 172, :_reduce_188,
-  4, 172, :_reduce_189,
-  1, 203, :_reduce_190,
-  3, 203, :_reduce_191,
-  2, 142, :_reduce_none,
-  2, 142, :_reduce_none,
-  0, 142, :_reduce_none,
-  1, 204, :_reduce_none,
-  4, 204, :_reduce_196,
-  1, 206, :_reduce_none,
-  1, 206, :_reduce_none,
-  1, 206, :_reduce_none,
-  1, 206, :_reduce_none,
-  1, 206, :_reduce_none,
-  1, 206, :_reduce_none,
-  1, 206, :_reduce_none,
-  2, 206, :_reduce_none,
-  2, 206, :_reduce_none,
-  1, 206, :_reduce_none,
-  1, 206, :_reduce_none,
-  1, 206, :_reduce_none,
-  1, 206, :_reduce_none,
-  1, 206, :_reduce_none,
-  1, 207, :_reduce_211,
-  3, 207, :_reduce_212,
-  4, 219, :_reduce_213,
-  1, 219, :_reduce_214,
-  4, 219, :_reduce_215,
-  1, 219, :_reduce_216,
-  4, 219, :_reduce_217,
-  1, 219, :_reduce_218,
-  4, 219, :_reduce_219,
-  1, 219, :_reduce_220,
-  1, 219, :_reduce_221,
-  1, 219, :_reduce_222,
-  6, 219, :_reduce_223,
-  1, 220, :_reduce_224,
-  3, 220, :_reduce_225,
-  7, 224, :_reduce_226,
-  10, 224, :_reduce_227,
-  1, 221, :_reduce_228,
-  3, 221, :_reduce_229,
-  5, 225, :_reduce_230,
-  7, 225, :_reduce_231,
-  1, 227, :_reduce_232,
-  3, 227, :_reduce_233,
-  1, 209, :_reduce_234,
-  5, 217, :_reduce_235,
-  7, 217, :_reduce_236,
-  5, 216, :_reduce_237,
-  5, 216, :_reduce_238,
-  9, 218, :_reduce_239,
-  4, 208, :_reduce_240,
-  7, 208, :_reduce_241,
-  1, 229, :_reduce_none,
-  4, 229, :_reduce_none,
-  1, 228, :_reduce_244,
-  3, 228, :_reduce_245,
-  6, 210, :_reduce_246,
-  1, 230, :_reduce_247,
+  1, 193, :_reduce_none,
+  3, 193, :_reduce_none,
+  1, 170, :_reduce_136,
+  1, 170, :_reduce_137,
+  2, 172, :_reduce_138,
+  1, 172, :_reduce_none,
+  1, 195, :_reduce_140,
+  3, 195, :_reduce_141,
+  4, 195, :_reduce_142,
+  3, 195, :_reduce_143,
+  4, 195, :_reduce_144,
+  3, 195, :_reduce_145,
+  1, 194, :_reduce_146,
+  2, 194, :_reduce_147,
+  2, 194, :_reduce_148,
+  3, 194, :_reduce_149,
+  1, 196, :_reduce_none,
+  3, 196, :_reduce_none,
+  1, 197, :_reduce_152,
+  3, 197, :_reduce_153,
+  3, 198, :_reduce_154,
+  2, 198, :_reduce_155,
+  1, 198, :_reduce_156,
+  2, 198, :_reduce_157,
+  3, 199, :_reduce_158,
+  1, 200, :_reduce_159,
+  3, 200, :_reduce_160,
+  1, 201, :_reduce_161,
+  1, 201, :_reduce_162,
+  1, 201, :_reduce_163,
+  4, 201, :_reduce_164,
+  4, 201, :_reduce_165,
+  1, 201, :_reduce_166,
+  4, 201, :_reduce_167,
+  4, 201, :_reduce_168,
+  6, 201, :_reduce_169,
+  4, 201, :_reduce_170,
+  1, 201, :_reduce_171,
+  1, 152, :_reduce_none,
+  2, 152, :_reduce_173,
+  1, 202, :_reduce_none,
+  1, 202, :_reduce_none,
+  2, 202, :_reduce_none,
+  3, 203, :_reduce_177,
+  2, 203, :_reduce_178,
+  3, 203, :_reduce_179,
+  3, 203, :_reduce_180,
+  4, 203, :_reduce_181,
+  2, 203, :_reduce_182,
+  3, 203, :_reduce_none,
+  3, 203, :_reduce_184,
+  4, 203, :_reduce_185,
+  1, 173, :_reduce_186,
+  3, 173, :_reduce_187,
+  4, 173, :_reduce_188,
+  4, 173, :_reduce_189,
+  1, 204, :_reduce_190,
+  3, 204, :_reduce_191,
+  2, 143, :_reduce_none,
+  2, 143, :_reduce_none,
+  2, 143, :_reduce_none,
+  0, 143, :_reduce_none,
+  1, 205, :_reduce_none,
+  4, 205, :_reduce_197,
+  1, 208, :_reduce_none,
+  1, 208, :_reduce_none,
+  1, 208, :_reduce_none,
+  1, 208, :_reduce_none,
+  1, 208, :_reduce_none,
+  1, 208, :_reduce_none,
+  1, 208, :_reduce_none,
+  2, 208, :_reduce_none,
+  2, 208, :_reduce_none,
+  1, 208, :_reduce_none,
+  1, 208, :_reduce_none,
+  1, 208, :_reduce_none,
+  1, 208, :_reduce_none,
+  1, 208, :_reduce_none,
+  1, 209, :_reduce_212,
+  3, 209, :_reduce_213,
+  4, 221, :_reduce_214,
+  1, 221, :_reduce_215,
+  4, 221, :_reduce_216,
+  1, 221, :_reduce_217,
+  4, 221, :_reduce_218,
+  1, 221, :_reduce_219,
+  4, 221, :_reduce_220,
+  1, 221, :_reduce_221,
+  1, 221, :_reduce_222,
+  1, 221, :_reduce_223,
+  6, 221, :_reduce_224,
+  1, 222, :_reduce_225,
+  3, 222, :_reduce_226,
+  7, 226, :_reduce_227,
+  10, 226, :_reduce_228,
+  1, 223, :_reduce_229,
+  3, 223, :_reduce_230,
+  5, 227, :_reduce_231,
+  7, 227, :_reduce_232,
+  1, 229, :_reduce_233,
+  3, 229, :_reduce_234,
+  1, 211, :_reduce_235,
+  5, 219, :_reduce_236,
+  7, 219, :_reduce_237,
+  5, 218, :_reduce_238,
+  5, 218, :_reduce_239,
+  9, 220, :_reduce_240,
+  4, 210, :_reduce_241,
+  7, 210, :_reduce_242,
   1, 231, :_reduce_none,
-  2, 231, :_reduce_none,
-  1, 144, :_reduce_250,
-  2, 144, :_reduce_251,
-  3, 144, :_reduce_252,
-  6, 211, :_reduce_253,
-  1, 232, :_reduce_254,
-  0, 233, :_reduce_255,
-  2, 233, :_reduce_256,
-  3, 234, :_reduce_257,
-  6, 234, :_reduce_258,
-  6, 212, :_reduce_259,
-  1, 235, :_reduce_260,
-  1, 236, :_reduce_none,
-  2, 236, :_reduce_none,
-  1, 237, :_reduce_263,
-  4, 237, :_reduce_264,
+  4, 231, :_reduce_none,
+  1, 230, :_reduce_245,
+  3, 230, :_reduce_246,
+  6, 212, :_reduce_247,
+  1, 232, :_reduce_248,
+  1, 233, :_reduce_none,
+  2, 233, :_reduce_none,
+  1, 145, :_reduce_251,
+  2, 145, :_reduce_252,
+  3, 145, :_reduce_253,
+  6, 213, :_reduce_254,
+  1, 234, :_reduce_255,
+  0, 235, :_reduce_256,
+  2, 235, :_reduce_257,
+  3, 236, :_reduce_258,
+  6, 236, :_reduce_259,
+  6, 214, :_reduce_260,
+  1, 237, :_reduce_261,
   1, 238, :_reduce_none,
-  1, 238, :_reduce_none,
-  1, 238, :_reduce_none,
-  1, 238, :_reduce_none,
-  1, 238, :_reduce_none,
-  1, 239, :_reduce_270,
-  3, 239, :_reduce_271,
-  1, 245, :_reduce_272,
-  4, 245, :_reduce_273,
-  1, 245, :_reduce_274,
-  1, 245, :_reduce_275,
-  1, 245, :_reduce_276,
-  1, 245, :_reduce_277,
-  1, 246, :_reduce_278,
-  1, 246, :_reduce_279,
-  3, 246, :_reduce_280,
-  3, 246, :_reduce_281,
-  5, 247, :_reduce_282,
-  5, 247, :_reduce_283,
-  4, 240, :_reduce_284,
-  6, 240, :_reduce_285,
-  7, 240, :_reduce_286,
-  8, 240, :_reduce_287,
-  1, 248, :_reduce_288,
-  1, 248, :_reduce_289,
-  1, 249, :_reduce_290,
-  1, 226, :_reduce_none,
-  1, 250, :_reduce_none,
-  5, 241, :_reduce_293,
-  1, 251, :_reduce_294,
-  2, 251, :_reduce_295,
-  1, 252, :_reduce_296,
-  4, 252, :_reduce_297,
-  1, 253, :_reduce_298,
-  4, 253, :_reduce_299,
-  5, 253, :_reduce_300,
-  3, 254, :_reduce_301,
-  1, 254, :_reduce_302,
-  1, 255, :_reduce_none,
-  5, 242, :_reduce_304,
-  1, 256, :_reduce_305,
-  2, 256, :_reduce_306,
-  1, 257, :_reduce_307,
-  4, 257, :_reduce_308,
-  4, 258, :_reduce_309,
-  5, 243, :_reduce_310,
-  7, 243, :_reduce_311,
-  5, 244, :_reduce_none,
-  1, 259, :_reduce_313,
-  1, 259, :_reduce_314,
-  0, 260, :_reduce_none,
-  2, 260, :_reduce_none,
-  7, 261, :_reduce_317,
-  9, 261, :_reduce_318,
-  1, 262, :_reduce_none,
-  1, 263, :_reduce_320,
-  3, 263, :_reduce_321,
-  1, 263, :_reduce_322,
-  3, 263, :_reduce_323,
-  0, 267, :_reduce_324,
-  8, 213, :_reduce_325,
-  4, 213, :_reduce_326,
-  1, 264, :_reduce_327,
-  1, 265, :_reduce_328,
-  0, 266, :_reduce_none,
-  2, 266, :_reduce_none,
-  2, 266, :_reduce_none,
-  4, 268, :_reduce_332,
-  1, 268, :_reduce_333,
-  3, 270, :_reduce_334,
-  1, 270, :_reduce_335,
-  6, 272, :_reduce_336,
-  1, 222, :_reduce_337,
-  1, 223, :_reduce_none,
-  6, 271, :_reduce_339,
-  7, 271, :_reduce_340,
-  4, 271, :_reduce_341,
-  6, 271, :_reduce_342,
-  1, 273, :_reduce_none,
-  6, 269, :_reduce_344,
-  9, 269, :_reduce_345,
-  9, 269, :_reduce_346,
-  12, 269, :_reduce_347,
-  1, 274, :_reduce_none,
-  6, 214, :_reduce_349,
-  1, 275, :_reduce_350,
+  2, 238, :_reduce_none,
+  1, 239, :_reduce_264,
+  4, 239, :_reduce_265,
+  1, 240, :_reduce_none,
+  1, 240, :_reduce_none,
+  1, 240, :_reduce_none,
+  1, 240, :_reduce_none,
+  1, 240, :_reduce_none,
+  1, 241, :_reduce_271,
+  3, 241, :_reduce_272,
+  1, 247, :_reduce_273,
+  4, 247, :_reduce_274,
+  1, 247, :_reduce_275,
+  1, 247, :_reduce_276,
+  1, 247, :_reduce_277,
+  1, 247, :_reduce_278,
+  1, 248, :_reduce_279,
+  1, 248, :_reduce_280,
+  3, 248, :_reduce_281,
+  3, 248, :_reduce_282,
+  5, 249, :_reduce_283,
+  5, 249, :_reduce_284,
+  4, 242, :_reduce_285,
+  6, 242, :_reduce_286,
+  7, 242, :_reduce_287,
+  8, 242, :_reduce_288,
+  1, 250, :_reduce_289,
+  1, 250, :_reduce_290,
+  1, 251, :_reduce_291,
+  1, 228, :_reduce_none,
+  1, 252, :_reduce_none,
+  5, 243, :_reduce_294,
+  1, 253, :_reduce_295,
+  2, 253, :_reduce_296,
+  1, 254, :_reduce_297,
+  4, 254, :_reduce_298,
+  1, 255, :_reduce_299,
+  4, 255, :_reduce_300,
+  5, 255, :_reduce_301,
+  3, 256, :_reduce_302,
+  1, 256, :_reduce_303,
+  1, 257, :_reduce_none,
+  5, 244, :_reduce_305,
+  1, 258, :_reduce_306,
+  2, 258, :_reduce_307,
+  1, 259, :_reduce_308,
+  4, 259, :_reduce_309,
+  4, 260, :_reduce_310,
+  5, 245, :_reduce_311,
+  7, 245, :_reduce_312,
+  5, 246, :_reduce_none,
+  1, 261, :_reduce_314,
+  1, 261, :_reduce_315,
+  0, 262, :_reduce_none,
+  2, 262, :_reduce_none,
+  7, 263, :_reduce_318,
+  9, 263, :_reduce_319,
+  1, 264, :_reduce_none,
+  1, 265, :_reduce_321,
+  3, 265, :_reduce_322,
+  1, 265, :_reduce_323,
+  3, 265, :_reduce_324,
+  0, 269, :_reduce_325,
+  8, 215, :_reduce_326,
+  4, 215, :_reduce_327,
+  1, 266, :_reduce_328,
+  1, 267, :_reduce_329,
+  0, 268, :_reduce_none,
+  2, 268, :_reduce_none,
+  2, 268, :_reduce_none,
+  4, 270, :_reduce_333,
+  1, 270, :_reduce_334,
+  3, 272, :_reduce_335,
+  1, 272, :_reduce_336,
+  6, 274, :_reduce_337,
+  1, 224, :_reduce_338,
+  1, 225, :_reduce_none,
+  6, 273, :_reduce_340,
+  7, 273, :_reduce_341,
+  4, 273, :_reduce_342,
+  6, 273, :_reduce_343,
+  1, 275, :_reduce_none,
+  6, 271, :_reduce_345,
+  9, 271, :_reduce_346,
+  9, 271, :_reduce_347,
+  12, 271, :_reduce_348,
   1, 276, :_reduce_none,
-  2, 276, :_reduce_none,
-  1, 277, :_reduce_353,
-  4, 277, :_reduce_354,
+  6, 216, :_reduce_350,
+  1, 277, :_reduce_351,
   1, 278, :_reduce_none,
-  1, 278, :_reduce_none,
-  1, 278, :_reduce_none,
-  1, 278, :_reduce_none,
-  1, 279, :_reduce_359,
-  4, 284, :_reduce_360,
-  1, 284, :_reduce_361,
-  1, 284, :_reduce_362,
-  1, 284, :_reduce_363,
-  1, 284, :_reduce_364,
-  1, 280, :_reduce_365,
-  5, 281, :_reduce_366,
-  1, 285, :_reduce_367,
-  2, 285, :_reduce_368,
-  0, 289, :_reduce_369,
-  8, 282, :_reduce_370,
-  4, 282, :_reduce_371,
-  1, 286, :_reduce_372,
-  1, 287, :_reduce_373,
-  0, 288, :_reduce_none,
-  2, 288, :_reduce_none,
-  2, 288, :_reduce_none,
-  6, 290, :_reduce_377,
-  4, 290, :_reduce_378,
-  6, 283, :_reduce_379,
-  8, 283, :_reduce_380,
-  1, 292, :_reduce_none,
+  2, 278, :_reduce_none,
+  1, 279, :_reduce_354,
+  4, 279, :_reduce_355,
+  1, 280, :_reduce_none,
+  1, 280, :_reduce_none,
+  1, 280, :_reduce_none,
+  1, 280, :_reduce_none,
+  1, 281, :_reduce_360,
+  3, 281, :_reduce_361,
+  4, 286, :_reduce_362,
+  1, 286, :_reduce_363,
+  1, 286, :_reduce_364,
+  1, 286, :_reduce_365,
+  1, 286, :_reduce_366,
+  1, 282, :_reduce_367,
+  5, 283, :_reduce_368,
+  1, 287, :_reduce_369,
+  2, 287, :_reduce_370,
+  0, 291, :_reduce_371,
+  8, 284, :_reduce_372,
+  4, 284, :_reduce_373,
+  1, 288, :_reduce_374,
+  1, 289, :_reduce_375,
+  0, 290, :_reduce_none,
+  2, 290, :_reduce_none,
+  2, 290, :_reduce_none,
+  2, 290, :_reduce_none,
+  6, 292, :_reduce_380,
+  4, 292, :_reduce_381,
+  6, 285, :_reduce_382,
+  8, 285, :_reduce_383,
+  1, 294, :_reduce_none,
+  1, 295, :_reduce_none,
   1, 293, :_reduce_none,
-  1, 291, :_reduce_none,
-  9, 215, :_reduce_384,
-  6, 215, :_reduce_385,
-  1, 294, :_reduce_none,
-  3, 294, :_reduce_none,
-  6, 297, :_reduce_388,
-  3, 297, :_reduce_389,
-  6, 297, :_reduce_390,
-  3, 297, :_reduce_391,
-  8, 297, :_reduce_392,
-  4, 297, :_reduce_393,
-  1, 297, :_reduce_394,
-  1, 297, :_reduce_395,
-  6, 297, :_reduce_396,
-  4, 297, :_reduce_397,
-  1, 295, :_reduce_398,
-  0, 296, :_reduce_none,
-  2, 296, :_reduce_none,
-  2, 296, :_reduce_none,
-  1, 299, :_reduce_none,
-  4, 299, :_reduce_403,
-  1, 298, :_reduce_404,
-  1, 185, :_reduce_405,
-  1, 187, :_reduce_406,
-  4, 205, :_reduce_none,
-  2, 300, :_reduce_none,
-  2, 300, :_reduce_none,
-  0, 300, :_reduce_none,
-  14, 301, :_reduce_411,
-  2, 303, :_reduce_412,
-  0, 303, :_reduce_413,
-  6, 304, :_reduce_414,
-  13, 302, :_reduce_415,
-  5, 305, :_reduce_416,
-  0, 305, :_reduce_417 ]
-
-racc_reduce_n = 418
-
-racc_shift_n = 870
+  9, 217, :_reduce_387,
+  6, 217, :_reduce_388,
+  1, 296, :_reduce_none,
+  3, 296, :_reduce_none,
+  6, 299, :_reduce_391,
+  3, 299, :_reduce_392,
+  6, 299, :_reduce_393,
+  3, 299, :_reduce_394,
+  8, 299, :_reduce_395,
+  4, 299, :_reduce_396,
+  1, 299, :_reduce_397,
+  1, 299, :_reduce_398,
+  6, 299, :_reduce_399,
+  4, 299, :_reduce_400,
+  1, 297, :_reduce_401,
+  0, 298, :_reduce_none,
+  2, 298, :_reduce_none,
+  2, 298, :_reduce_none,
+  1, 301, :_reduce_none,
+  4, 301, :_reduce_406,
+  1, 300, :_reduce_407,
+  1, 186, :_reduce_408,
+  1, 188, :_reduce_409,
+  4, 206, :_reduce_none,
+  2, 302, :_reduce_none,
+  2, 302, :_reduce_none,
+  0, 302, :_reduce_none,
+  14, 303, :_reduce_414,
+  2, 305, :_reduce_415,
+  0, 305, :_reduce_416,
+  6, 306, :_reduce_417,
+  13, 304, :_reduce_418,
+  5, 307, :_reduce_419,
+  0, 307, :_reduce_420,
+  5, 207, :_reduce_421,
+  3, 309, :_reduce_422,
+  3, 310, :_reduce_423,
+  5, 310, :_reduce_424,
+  1, 311, :_reduce_none,
+  1, 311, :_reduce_none,
+  1, 311, :_reduce_none,
+  1, 311, :_reduce_none,
+  1, 311, :_reduce_429,
+  1, 311, :_reduce_430,
+  3, 313, :_reduce_431,
+  2, 313, :_reduce_432,
+  1, 314, :_reduce_433,
+  3, 314, :_reduce_434,
+  1, 308, :_reduce_435,
+  1, 312, :_reduce_436,
+  1, 312, :_reduce_437,
+  2, 312, :_reduce_438,
+  2, 312, :_reduce_439,
+  2, 312, :_reduce_440,
+  2, 312, :_reduce_441 ]
+
+racc_reduce_n = 442
+
+racc_shift_n = 911
 
 racc_token_table = {
@@ -1848,7 +1943,8 @@
   :__LOCATION_INFORMATION__ => 137,
   :__CELL__ => 138,
-  :__JOIN__ => 139 }
-
-racc_nt_base = 140
+  :__JOIN__ => 139,
+  :TOOL_INFO => 140 }
+
+racc_nt_base = 141
 
 racc_use_result_var = true
@@ -2011,4 +2107,5 @@
   "__CELL__",
   "__JOIN__",
+  "TOOL_INFO",
   "$start",
   "all",
@@ -2077,4 +2174,5 @@
   "specified_statement",
   "location_information",
+  "tool_info",
   "statement",
   "statement_specifier_list",
@@ -2089,5 +2187,5 @@
   "import",
   "import_C",
-  "signature_plugin",
+  "generate_statement",
   "statement_specifier",
   "alloc_list",
@@ -2176,5 +2274,12 @@
   "port_location_list",
   "port_location",
-  "bar_list" ]
+  "bar_list",
+  "JSON_string",
+  "JSON_object",
+  "JSON_property_list",
+  "JSON_value",
+  "JSON_number",
+  "JSON_array",
+  "JSON_array_list" ]
 
 Racc_debug_parser = false
@@ -2838,5 +2943,7 @@
 module_eval(<<'.,.,', 'bnf.y.rb', 379)
   def _reduce_104(val, _values, result)
-    			result = StructType.new()
+    			# tag が無い場合、内部名を与える
+			result = StructType.new( :"TAG__#{@@no_struct_tag_num}__" )
+			@@no_struct_tag_num += 1
 			StructType.set_define( true )
 		
@@ -2845,5 +2952,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 384)
+module_eval(<<'.,.,', 'bnf.y.rb', 386)
   def _reduce_105(val, _values, result)
     			StructType.end_of_parse
@@ -2854,5 +2961,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 389)
+module_eval(<<'.,.,', 'bnf.y.rb', 391)
   def _reduce_106(val, _values, result)
     			StructType.set_define( false )
@@ -2868,5 +2975,5 @@
 # reduce 108 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 400)
+module_eval(<<'.,.,', 'bnf.y.rb', 402)
   def _reduce_109(val, _values, result)
      result = StructType.new( val[0].val ) 
@@ -2875,5 +2982,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 406)
+module_eval(<<'.,.,', 'bnf.y.rb', 408)
   def _reduce_110(val, _values, result)
     			val[1].each { |i|	# i: Decl
@@ -2889,5 +2996,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 416)
+module_eval(<<'.,.,', 'bnf.y.rb', 418)
   def _reduce_111(val, _values, result)
     			val[4].each { |i|	# i: Decl
@@ -2904,5 +3011,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 427)
+module_eval(<<'.,.,', 'bnf.y.rb', 429)
   def _reduce_112(val, _values, result)
      result = [ val[0] ] 
@@ -2911,5 +3018,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 428)
+module_eval(<<'.,.,', 'bnf.y.rb', 430)
   def _reduce_113(val, _values, result)
      result <<  val[2] 
@@ -2918,5 +3025,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 431)
+module_eval(<<'.,.,', 'bnf.y.rb', 433)
   def _reduce_114(val, _values, result)
      result = [:STRING,-1] 
@@ -2925,5 +3032,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 432)
+module_eval(<<'.,.,', 'bnf.y.rb', 434)
   def _reduce_115(val, _values, result)
      result = [:STRING,val[2]] 
@@ -2932,5 +3039,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 433)
+module_eval(<<'.,.,', 'bnf.y.rb', 435)
   def _reduce_116(val, _values, result)
      result = [:SIZE_IS,val[2]] 
@@ -2939,5 +3046,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 434)
+module_eval(<<'.,.,', 'bnf.y.rb', 436)
   def _reduce_117(val, _values, result)
      result = [:COUNT_IS,val[2]] 
@@ -2948,5 +3055,5 @@
 # reduce 118 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 445)
+module_eval(<<'.,.,', 'bnf.y.rb', 447)
   def _reduce_119(val, _values, result)
     			val[1].set_qualifier( val[0] )
@@ -2957,5 +3064,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 454)
+module_eval(<<'.,.,', 'bnf.y.rb', 456)
   def _reduce_120(val, _values, result)
      result = [ val[0] ] 
@@ -2964,5 +3071,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 456)
+module_eval(<<'.,.,', 'bnf.y.rb', 458)
   def _reduce_121(val, _values, result)
      result << val[2] 
@@ -2979,5 +3086,5 @@
 # reduce 125 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 469)
+module_eval(<<'.,.,', 'bnf.y.rb', 471)
   def _reduce_126(val, _values, result)
      result = EnumType.new( -1 ) 
@@ -2986,5 +3093,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 470)
+module_eval(<<'.,.,', 'bnf.y.rb', 472)
   def _reduce_127(val, _values, result)
      result = EnumType.new( 8 ) 
@@ -2993,5 +3100,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 471)
+module_eval(<<'.,.,', 'bnf.y.rb', 473)
   def _reduce_128(val, _values, result)
      result = EnumType.new( 16 ) 
@@ -3000,5 +3107,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 472)
+module_eval(<<'.,.,', 'bnf.y.rb', 474)
   def _reduce_129(val, _values, result)
      result = EnumType.new( 32 ) 
@@ -3007,5 +3114,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 473)
+module_eval(<<'.,.,', 'bnf.y.rb', 475)
   def _reduce_130(val, _values, result)
      result = EnumType.new( 64 ) 
@@ -3014,5 +3121,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 474)
+module_eval(<<'.,.,', 'bnf.y.rb', 476)
   def _reduce_131(val, _values, result)
      result = EnumType.new( 128 ) 
@@ -3029,5 +3136,5 @@
 # reduce 135 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 485)
+module_eval(<<'.,.,', 'bnf.y.rb', 487)
   def _reduce_136(val, _values, result)
      result = :CONST 
@@ -3036,5 +3143,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 486)
+module_eval(<<'.,.,', 'bnf.y.rb', 488)
   def _reduce_137(val, _values, result)
      result = :VOLATILE 
@@ -3043,5 +3150,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 491)
+module_eval(<<'.,.,', 'bnf.y.rb', 493)
   def _reduce_138(val, _values, result)
     			val[1].set_type( val[0] )
@@ -3054,5 +3161,5 @@
 # reduce 139 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 498)
+module_eval(<<'.,.,', 'bnf.y.rb', 500)
   def _reduce_140(val, _values, result)
      result = Decl.new( val[0].val ) 
@@ -3061,5 +3168,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 500)
+module_eval(<<'.,.,', 'bnf.y.rb', 502)
   def _reduce_141(val, _values, result)
      result = val[1] 
@@ -3068,5 +3175,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 503)
+module_eval(<<'.,.,', 'bnf.y.rb', 505)
   def _reduce_142(val, _values, result)
     			val[0].set_type( ArrayType.new( val[2] ) )
@@ -3077,5 +3184,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 508)
+module_eval(<<'.,.,', 'bnf.y.rb', 510)
   def _reduce_143(val, _values, result)
     			val[0].set_type( ArrayType.new )
@@ -3086,5 +3193,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 513)
+module_eval(<<'.,.,', 'bnf.y.rb', 515)
   def _reduce_144(val, _values, result)
     			val[0].set_type( FuncType.new( val[2] ) )
@@ -3095,5 +3202,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 519)
+module_eval(<<'.,.,', 'bnf.y.rb', 521)
   def _reduce_145(val, _values, result)
     			Generator.warning( "W5010 need 'void' for no parameter"  )
@@ -3105,5 +3212,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 526)
+module_eval(<<'.,.,', 'bnf.y.rb', 528)
   def _reduce_146(val, _values, result)
      result = PtrType.new 
@@ -3112,5 +3219,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 529)
+module_eval(<<'.,.,', 'bnf.y.rb', 531)
   def _reduce_147(val, _values, result)
     			result = PtrType.new
@@ -3121,5 +3228,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 534)
+module_eval(<<'.,.,', 'bnf.y.rb', 536)
   def _reduce_148(val, _values, result)
     			val[1].set_type(PtrType.new)
@@ -3130,5 +3237,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 539)
+module_eval(<<'.,.,', 'bnf.y.rb', 541)
   def _reduce_149(val, _values, result)
     			ptrtype = PtrType.new
@@ -3145,5 +3252,5 @@
 # reduce 151 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 553)
+module_eval(<<'.,.,', 'bnf.y.rb', 555)
   def _reduce_152(val, _values, result)
      result = ParamList.new( val[0] ) 
@@ -3152,5 +3259,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 556)
+module_eval(<<'.,.,', 'bnf.y.rb', 558)
   def _reduce_153(val, _values, result)
     			val[0].add_param( val[2] )
@@ -3161,5 +3268,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 566)
+module_eval(<<'.,.,', 'bnf.y.rb', 568)
   def _reduce_154(val, _values, result)
     			val[2].set_kind( :PARAMETER )
@@ -3172,5 +3279,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 575)
+module_eval(<<'.,.,', 'bnf.y.rb', 577)
   def _reduce_155(val, _values, result)
     			Generator.error( "G1001 need specifier for \'$1\'" , val[1].get_name )
@@ -3181,5 +3288,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 580)
+module_eval(<<'.,.,', 'bnf.y.rb', 582)
   def _reduce_156(val, _values, result)
     			unless val[0].instance_of?( VoidType ) then
@@ -3192,5 +3299,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 588)
+module_eval(<<'.,.,', 'bnf.y.rb', 590)
   def _reduce_157(val, _values, result)
     			unless val[1].instance_of?( VoidType ) then
@@ -3203,5 +3310,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 595)
+module_eval(<<'.,.,', 'bnf.y.rb', 597)
   def _reduce_158(val, _values, result)
      result = val[1] 
@@ -3210,5 +3317,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 599)
+module_eval(<<'.,.,', 'bnf.y.rb', 601)
   def _reduce_159(val, _values, result)
      result = val[0] 
@@ -3217,5 +3324,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 601)
+module_eval(<<'.,.,', 'bnf.y.rb', 603)
   def _reduce_160(val, _values, result)
      result = result + val[2] 
@@ -3224,5 +3331,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 604)
+module_eval(<<'.,.,', 'bnf.y.rb', 606)
   def _reduce_161(val, _values, result)
      result = [ [:IN]  ] 
@@ -3231,5 +3338,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 605)
+module_eval(<<'.,.,', 'bnf.y.rb', 607)
   def _reduce_162(val, _values, result)
      result = [ [:OUT] ] 
@@ -3238,5 +3345,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 606)
+module_eval(<<'.,.,', 'bnf.y.rb', 608)
   def _reduce_163(val, _values, result)
      result = [ [:INOUT] ] 
@@ -3245,5 +3352,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 607)
+module_eval(<<'.,.,', 'bnf.y.rb', 609)
   def _reduce_164(val, _values, result)
      result = [ [:SEND,   val[2]] ] 
@@ -3252,5 +3359,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 608)
+module_eval(<<'.,.,', 'bnf.y.rb', 610)
   def _reduce_165(val, _values, result)
      result = [ [:RECEIVE,val[2]] ] 
@@ -3259,5 +3366,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 609)
+module_eval(<<'.,.,', 'bnf.y.rb', 611)
   def _reduce_166(val, _values, result)
      result = [ [:STRING,nil] ] 
@@ -3266,5 +3373,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 610)
+module_eval(<<'.,.,', 'bnf.y.rb', 612)
   def _reduce_167(val, _values, result)
      result = [ [:STRING,  val[2]] ] 
@@ -3273,5 +3380,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 611)
+module_eval(<<'.,.,', 'bnf.y.rb', 613)
   def _reduce_168(val, _values, result)
      result = [ [:SIZE_IS, val[2]] ] 
@@ -3280,5 +3387,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 614)
+module_eval(<<'.,.,', 'bnf.y.rb', 616)
   def _reduce_169(val, _values, result)
     			result = [ [:SIZE_IS,val[2]], [:MAX_IS, val[4]] ]
@@ -3288,5 +3395,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 616)
+module_eval(<<'.,.,', 'bnf.y.rb', 618)
   def _reduce_170(val, _values, result)
      result = [ [:COUNT_IS,val[2]] ] 
@@ -3295,5 +3402,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 617)
+module_eval(<<'.,.,', 'bnf.y.rb', 619)
   def _reduce_171(val, _values, result)
      result = [ [:NULLABLE] ] 
@@ -3304,5 +3411,5 @@
 # reduce 172 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 623)
+module_eval(<<'.,.,', 'bnf.y.rb', 625)
   def _reduce_173(val, _values, result)
     			if val[1] then
@@ -3324,5 +3431,5 @@
 # reduce 176 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 640)
+module_eval(<<'.,.,', 'bnf.y.rb', 642)
   def _reduce_177(val, _values, result)
      result = val[1] 
@@ -3331,5 +3438,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 643)
+module_eval(<<'.,.,', 'bnf.y.rb', 645)
   def _reduce_178(val, _values, result)
     			Generator.error( "G1004 impossible array type"  )
@@ -3340,5 +3447,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 648)
+module_eval(<<'.,.,', 'bnf.y.rb', 650)
   def _reduce_179(val, _values, result)
     			Generator.error( "G1005 impossible array type"  )
@@ -3349,5 +3456,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 653)
+module_eval(<<'.,.,', 'bnf.y.rb', 655)
   def _reduce_180(val, _values, result)
     			Generator.error( "G1006 impossible array type"  )
@@ -3358,5 +3465,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 658)
+module_eval(<<'.,.,', 'bnf.y.rb', 660)
   def _reduce_181(val, _values, result)
     			Generator.error( "G1007 impossible array type"  )
@@ -3367,5 +3474,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 663)
+module_eval(<<'.,.,', 'bnf.y.rb', 665)
   def _reduce_182(val, _values, result)
     			Generator.error( "G1008 impossible function type"  )
@@ -3378,5 +3485,5 @@
 # reduce 183 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 669)
+module_eval(<<'.,.,', 'bnf.y.rb', 671)
   def _reduce_184(val, _values, result)
     			Generator.warning( "W5011 need 'void' for no parameter"  )
@@ -3388,5 +3495,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 675)
+module_eval(<<'.,.,', 'bnf.y.rb', 677)
   def _reduce_185(val, _values, result)
     			val[0].set_type( FuncType.new( val[2] ) )
@@ -3397,5 +3504,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 682)
+module_eval(<<'.,.,', 'bnf.y.rb', 684)
   def _reduce_186(val, _values, result)
      result = val[0] 
@@ -3404,5 +3511,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 684)
+module_eval(<<'.,.,', 'bnf.y.rb', 686)
   def _reduce_187(val, _values, result)
      result = val[1] 
@@ -3411,5 +3518,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 686)
+module_eval(<<'.,.,', 'bnf.y.rb', 688)
   def _reduce_188(val, _values, result)
      result = val[1] 
@@ -3418,5 +3525,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 689)
+module_eval(<<'.,.,', 'bnf.y.rb', 691)
   def _reduce_189(val, _values, result)
      result = C_EXP.new( val[2] ) 
@@ -3425,5 +3532,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 694)
+module_eval(<<'.,.,', 'bnf.y.rb', 696)
   def _reduce_190(val, _values, result)
     			result = [ val[0] ]
@@ -3433,5 +3540,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 698)
+module_eval(<<'.,.,', 'bnf.y.rb', 700)
   def _reduce_191(val, _values, result)
     			val[0] << val[2]
@@ -3450,6 +3557,8 @@
 # reduce 195 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 716)
-  def _reduce_196(val, _values, result)
+# reduce 196 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 719)
+  def _reduce_197(val, _values, result)
     			obj = val[3]
 			if obj.kind_of?( Cell ) || obj.kind_of?( Signature ) || obj.kind_of?( Celltype ) || obj.kind_of?( CompositeCelltype )then
@@ -3464,6 +3573,4 @@
 .,.,
 
-# reduce 197 omitted
-
 # reduce 198 omitted
 
@@ -3492,6 +3599,8 @@
 # reduce 210 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 745)
-  def _reduce_211(val, _values, result)
+# reduce 211 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 748)
+  def _reduce_212(val, _values, result)
      Generator.add_statement_specifier val[0]	
     result
@@ -3499,6 +3608,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 747)
-  def _reduce_212(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 750)
+  def _reduce_213(val, _values, result)
      Generator.add_statement_specifier val[2] 
     result
@@ -3506,6 +3615,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 751)
-  def _reduce_213(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 754)
+  def _reduce_214(val, _values, result)
      result = [ :ALLOCATOR, val[2] ] 
     result
@@ -3513,6 +3622,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 753)
-  def _reduce_214(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 756)
+  def _reduce_215(val, _values, result)
      result = [ :CALLBACK ] 
     result
@@ -3520,6 +3629,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 755)
-  def _reduce_215(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 758)
+  def _reduce_216(val, _values, result)
      result = [ :CONTEXT, val[2].val ] 
     result
@@ -3527,6 +3636,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 757)
-  def _reduce_216(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 760)
+  def _reduce_217(val, _values, result)
      result = [ :DEVIATE ] 
     result
@@ -3534,6 +3643,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 759)
-  def _reduce_217(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 762)
+  def _reduce_218(val, _values, result)
      result = [ :ID, val[2] ] 
     result
@@ -3541,6 +3650,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 761)
-  def _reduce_218(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 764)
+  def _reduce_219(val, _values, result)
      result = [ :PROTOTYPE ] 
     result
@@ -3548,6 +3657,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 763)
-  def _reduce_219(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 766)
+  def _reduce_220(val, _values, result)
      result = [ :RESTRICT, val[2] ] 
     result
@@ -3555,6 +3664,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 764)
-  def _reduce_220(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 767)
+  def _reduce_221(val, _values, result)
      result = [:SINGLETON] 
     result
@@ -3562,6 +3671,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 765)
-  def _reduce_221(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 768)
+  def _reduce_222(val, _values, result)
      result = [:IDX_IS_ID] 
     result
@@ -3569,14 +3678,7 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 766)
-  def _reduce_222(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 769)
+  def _reduce_223(val, _values, result)
      result = [:ACTIVE] 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'bnf.y.rb', 768)
-  def _reduce_223(val, _values, result)
-     result = [:GENERATE, val[2].val, val[4].val] 
     result
   end
@@ -3585,4 +3687,11 @@
 module_eval(<<'.,.,', 'bnf.y.rb', 771)
   def _reduce_224(val, _values, result)
+     result = [:GENERATE, val[2].val, val[4].val] 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 774)
+  def _reduce_225(val, _values, result)
      result = [ val[0] ] 
     result
@@ -3590,6 +3699,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 772)
-  def _reduce_225(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 775)
+  def _reduce_226(val, _values, result)
      result << val[2] 
     result
@@ -3597,6 +3706,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 776)
-  def _reduce_226(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 779)
+  def _reduce_227(val, _values, result)
       result = [ :NORMAL_ALLOC, val[0], nil, val[2], val[4], val[6] ] 
     result
@@ -3604,6 +3713,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 778)
-  def _reduce_227(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 781)
+  def _reduce_228(val, _values, result)
       result = [ :NORMAL_ALLOC, val[0], val[2], val[5], val[7], val[9] ] 
     result
@@ -3611,6 +3720,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 787)
-  def _reduce_228(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 790)
+  def _reduce_229(val, _values, result)
     	result = [val[0]]		
     result
@@ -3618,6 +3727,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 789)
-  def _reduce_229(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 792)
+  def _reduce_230(val, _values, result)
     	result << val[2]		
     result
@@ -3625,6 +3734,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 793)
-  def _reduce_230(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 796)
+  def _reduce_231(val, _values, result)
     	result = [ val[0].val, nil, val[3] ]		
     result
@@ -3632,6 +3741,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 795)
-  def _reduce_231(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 798)
+  def _reduce_232(val, _values, result)
     	result = [ val[0].val, val[2].val, val[5] ]		
     result
@@ -3639,20 +3748,20 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 799)
-  def _reduce_232(val, _values, result)
-    	result = [val[0].val]		
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'bnf.y.rb', 801)
+module_eval(<<'.,.,', 'bnf.y.rb', 802)
   def _reduce_233(val, _values, result)
-    	result << val[2].val		
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'bnf.y.rb', 806)
+    	result = [val[0]]		
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 804)
   def _reduce_234(val, _values, result)
+    	result << val[2]		
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 809)
+  def _reduce_235(val, _values, result)
     			val[0].each { |decl|
 				decl.set_kind( :CONSTANT )
@@ -3665,6 +3774,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 816)
-  def _reduce_235(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 819)
+  def _reduce_236(val, _values, result)
     			@@import_C = true
 			Import_C.new( val[2] )
@@ -3675,6 +3784,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 822)
-  def _reduce_236(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 825)
+  def _reduce_237(val, _values, result)
     			@@import_C = true
 			Import_C.new( val[2], val[4] )
@@ -3685,6 +3794,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 829)
-  def _reduce_237(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 832)
+  def _reduce_238(val, _values, result)
      Import.new( val[2] ) 
     result
@@ -3692,6 +3801,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 831)
-  def _reduce_238(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 834)
+  def _reduce_239(val, _values, result)
      Import.new( val[2], true ) 
     result
@@ -3699,6 +3808,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 836)
-  def _reduce_239(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 839)
+  def _reduce_240(val, _values, result)
      Generate.new( val[2].val, val[4], val[6] ) 
     result
@@ -3706,6 +3815,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 841)
-  def _reduce_240(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 844)
+  def _reduce_241(val, _values, result)
     			val[2].each{ |i|       # i:Decl
 				i.set_kind( :TYPEDEF )
@@ -3720,6 +3829,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 851)
-  def _reduce_241(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 854)
+  def _reduce_242(val, _values, result)
     			val[5].each{ |i|       # i:Decl
 				i.set_kind( :TYPEDEF )
@@ -3734,10 +3843,10 @@
 .,.,
 
-# reduce 242 omitted
-
 # reduce 243 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 868)
-  def _reduce_244(val, _values, result)
+# reduce 244 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 871)
+  def _reduce_245(val, _values, result)
      result = [ val[0] ] 
     result
@@ -3745,6 +3854,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 870)
-  def _reduce_245(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 873)
+  def _reduce_246(val, _values, result)
      result << val[2] 
     result
@@ -3752,6 +3861,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 874)
-  def _reduce_246(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 877)
+  def _reduce_247(val, _values, result)
     val[1].end_of_parse
     result
@@ -3759,6 +3868,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 878)
-  def _reduce_247(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 881)
+  def _reduce_248(val, _values, result)
     result = Namespace.new(val[0].val)
     result
@@ -3766,10 +3875,10 @@
 .,.,
 
-# reduce 248 omitted
-
 # reduce 249 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 886)
-  def _reduce_250(val, _values, result)
+# reduce 250 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 889)
+  def _reduce_251(val, _values, result)
      result = NamespacePath.new( val[0].val, false ) 
     result
@@ -3777,6 +3886,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 887)
-  def _reduce_251(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 890)
+  def _reduce_252(val, _values, result)
      result = NamespacePath.new( val[1].val, true ) 
     result
@@ -3784,6 +3893,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 889)
-  def _reduce_252(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 892)
+  def _reduce_253(val, _values, result)
      result = val[0].append!( val[2].val ) 
     result
@@ -3791,6 +3900,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 894)
-  def _reduce_253(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 897)
+  def _reduce_254(val, _values, result)
      result = val[1].end_of_parse( val[3] ) 
     result
@@ -3798,6 +3907,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 898)
-  def _reduce_254(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 901)
+  def _reduce_255(val, _values, result)
     result = Signature.new( val[0].val ) 
     result
@@ -3805,6 +3914,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 904)
-  def _reduce_255(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 907)
+  def _reduce_256(val, _values, result)
      result = NamedList.new( nil, "function" ) 
     result
@@ -3812,6 +3921,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 906)
-  def _reduce_256(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 909)
+  def _reduce_257(val, _values, result)
      result = val[0].add_item( val[1] ) 
     result
@@ -3819,6 +3928,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 911)
-  def _reduce_257(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 914)
+  def _reduce_258(val, _values, result)
     			# val[1]: Decl
 			if val[1].is_function? then
@@ -3836,6 +3945,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 924)
-  def _reduce_258(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 927)
+  def _reduce_259(val, _values, result)
     			if val[4].is_function? then
 				result = FuncHead.new( val[4], val[3], true )
@@ -3849,6 +3958,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 937)
-  def _reduce_259(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 940)
+  def _reduce_260(val, _values, result)
     			val[1].end_of_parse
 			result = val[1]
@@ -3858,6 +3967,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 943)
-  def _reduce_260(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 946)
+  def _reduce_261(val, _values, result)
      result = Celltype.new(val[0].val) 
     result
@@ -3865,10 +3974,10 @@
 .,.,
 
-# reduce 261 omitted
-
 # reduce 262 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 952)
-  def _reduce_263(val, _values, result)
+# reduce 263 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 955)
+  def _reduce_264(val, _values, result)
     			if val[0].kind_of? Port then
 				Celltype.new_port( val[0] )
@@ -3879,6 +3988,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 958)
-  def _reduce_264(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 961)
+  def _reduce_265(val, _values, result)
     			if val[3].kind_of? Port then
 				val[3].set_specifier val[1]  # 設定順序あり
@@ -3893,6 +4002,4 @@
 .,.,
 
-# reduce 265 omitted
-
 # reduce 266 omitted
 
@@ -3903,14 +4010,9 @@
 # reduce 269 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 977)
-  def _reduce_270(val, _values, result)
+# reduce 270 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 980)
+  def _reduce_271(val, _values, result)
      result = [ val[0] ] 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'bnf.y.rb', 979)
-  def _reduce_271(val, _values, result)
-     result << val[2] 
     result
   end
@@ -3919,4 +4021,11 @@
 module_eval(<<'.,.,', 'bnf.y.rb', 982)
   def _reduce_272(val, _values, result)
+     result << val[2] 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 985)
+  def _reduce_273(val, _values, result)
      result = [ :INLINE ] 
     result
@@ -3924,6 +4033,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 983)
-  def _reduce_273(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 986)
+  def _reduce_274(val, _values, result)
      result = [ :ALLOCATOR, val[2] ] 
     result
@@ -3931,6 +4040,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 984)
-  def _reduce_274(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 987)
+  def _reduce_275(val, _values, result)
      result = [ :OPTIONAL ] 
     result
@@ -3938,6 +4047,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 985)
-  def _reduce_275(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 988)
+  def _reduce_276(val, _values, result)
      result = [ :REF_DESC ] 
     result
@@ -3945,14 +4054,7 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 986)
-  def _reduce_276(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 989)
+  def _reduce_277(val, _values, result)
      result = [ :DYNAMIC ] 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'bnf.y.rb', 987)
-  def _reduce_277(val, _values, result)
-     result = [ :OMIT ] 
     result
   end
@@ -3961,10 +4063,10 @@
 module_eval(<<'.,.,', 'bnf.y.rb', 990)
   def _reduce_278(val, _values, result)
-     result = [ val[0] ] 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'bnf.y.rb', 991)
+     result = [ :OMIT ] 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 993)
   def _reduce_279(val, _values, result)
      result = [ val[0] ] 
@@ -3973,12 +4075,12 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 992)
+module_eval(<<'.,.,', 'bnf.y.rb', 994)
   def _reduce_280(val, _values, result)
-     result << val[2] 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'bnf.y.rb', 993)
+     result = [ val[0] ] 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 995)
   def _reduce_281(val, _values, result)
      result << val[2] 
@@ -3987,6 +4089,13 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 997)
+module_eval(<<'.,.,', 'bnf.y.rb', 996)
   def _reduce_282(val, _values, result)
+     result << val[2] 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1000)
+  def _reduce_283(val, _values, result)
       result = [ :INTERNAL_ALLOC, val[0].val, val[2].val, val[4] ] 
     result
@@ -3994,6 +4103,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 999)
-  def _reduce_283(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1002)
+  def _reduce_284(val, _values, result)
       result = [ :RELAY_ALLOC, val[0].val, val[2].val, val[4] ] 
     result
@@ -4001,6 +4110,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1005)
-  def _reduce_284(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1008)
+  def _reduce_285(val, _values, result)
      result = Port.new( val[2].val, val[1], val[0] ) 
     result
@@ -4008,6 +4117,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1007)
-  def _reduce_285(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1010)
+  def _reduce_286(val, _values, result)
      result = Port.new( val[2].val, val[1], val[0], "[]" ) 
     result
@@ -4015,14 +4124,7 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1009)
-  def _reduce_286(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1012)
+  def _reduce_287(val, _values, result)
      result = Port.new(val[2].val, val[1], val[0], val[4]) 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'bnf.y.rb', 1011)
-  def _reduce_287(val, _values, result)
-     result = Port.new( val[2].val, val[1], val[0], nil, val[4], val[ 6 ].val ) 
     result
   end
@@ -4031,4 +4133,11 @@
 module_eval(<<'.,.,', 'bnf.y.rb', 1014)
   def _reduce_288(val, _values, result)
+     result = Port.new( val[2].val, val[1], val[0], nil, val[4], val[ 6 ].val ) 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1017)
+  def _reduce_289(val, _values, result)
      result = :CALL 
     result
@@ -4036,6 +4145,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1015)
-  def _reduce_289(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1018)
+  def _reduce_290(val, _values, result)
      result = :ENTRY 
     result
@@ -4043,6 +4152,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1019)
-  def _reduce_290(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1022)
+  def _reduce_291(val, _values, result)
      result = val[0] 
     result
@@ -4050,10 +4159,10 @@
 .,.,
 
-# reduce 291 omitted
-
 # reduce 292 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1031)
-  def _reduce_293(val, _values, result)
+# reduce 293 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1034)
+  def _reduce_294(val, _values, result)
      result = nil 
     result
@@ -4061,6 +4170,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1035)
-  def _reduce_294(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1038)
+  def _reduce_295(val, _values, result)
      Celltype.new_attribute( val[0] ) 
     result
@@ -4068,6 +4177,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1037)
-  def _reduce_295(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1040)
+  def _reduce_296(val, _values, result)
      Celltype.new_attribute( val[1] ) 
     result
@@ -4075,6 +4184,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1043)
-  def _reduce_296(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1046)
+  def _reduce_297(val, _values, result)
     			val[0].each{ |i|       # i:Decl
 				i.set_kind( :ATTRIBUTE )
@@ -4087,6 +4196,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1051)
-  def _reduce_297(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1054)
+  def _reduce_298(val, _values, result)
     			val[3].each{ |i|       # i:Decl
 				i.set_kind( :ATTRIBUTE )   # 設定順序あり
@@ -4100,6 +4209,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1060)
-  def _reduce_298(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1063)
+  def _reduce_299(val, _values, result)
      result = [:OMIT] 
     result
@@ -4107,14 +4216,7 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1061)
-  def _reduce_299(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1064)
+  def _reduce_300(val, _values, result)
      result = [:SIZE_IS,val[2]] 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'bnf.y.rb', 1062)
-  def _reduce_300(val, _values, result)
-      result = [:CHOICE,val[3]] 
     result
   end
@@ -4123,4 +4225,11 @@
 module_eval(<<'.,.,', 'bnf.y.rb', 1065)
   def _reduce_301(val, _values, result)
+      result = [:CHOICE,val[3]] 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1068)
+  def _reduce_302(val, _values, result)
       result << val[2] 
     result
@@ -4128,6 +4237,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1066)
-  def _reduce_302(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1069)
+  def _reduce_303(val, _values, result)
       result = [ val[0] ] 
     result
@@ -4135,8 +4244,8 @@
 .,.,
 
-# reduce 303 omitted
-
-module_eval(<<'.,.,', 'bnf.y.rb', 1074)
-  def _reduce_304(val, _values, result)
+# reduce 304 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1077)
+  def _reduce_305(val, _values, result)
      result = nil 
     result
@@ -4144,6 +4253,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1078)
-  def _reduce_305(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1081)
+  def _reduce_306(val, _values, result)
      Celltype.new_var( val[0] ) 
     result
@@ -4151,6 +4260,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1080)
-  def _reduce_306(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1083)
+  def _reduce_307(val, _values, result)
      Celltype.new_var( val[1] ) 
     result
@@ -4158,6 +4267,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1085)
-  def _reduce_307(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1088)
+  def _reduce_308(val, _values, result)
     			val[0].each{ |i|       # i:Decl
 				i.set_kind( :VAR )
@@ -4169,6 +4278,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1092)
-  def _reduce_308(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1095)
+  def _reduce_309(val, _values, result)
     			val[3].each{ |i|       # i:Decl
 				i.set_kind( :VAR )   # 設定順序あり
@@ -4182,6 +4291,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1101)
-  def _reduce_309(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1104)
+  def _reduce_310(val, _values, result)
      result = [:SIZE_IS,val[2]] 
     result
@@ -4189,6 +4298,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1107)
-  def _reduce_310(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1110)
+  def _reduce_311(val, _values, result)
     			Celltype.new_require( val[1], val[3] )
 		
@@ -4197,6 +4306,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1111)
-  def _reduce_311(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1114)
+  def _reduce_312(val, _values, result)
     			Celltype.new_require( val[3], val[5], val[1].val )
 		
@@ -4205,8 +4314,8 @@
 .,.,
 
-# reduce 312 omitted
-
-module_eval(<<'.,.,', 'bnf.y.rb', 1119)
-  def _reduce_313(val, _values, result)
+# reduce 313 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1122)
+  def _reduce_314(val, _values, result)
      Factory.set_f_celltype( false ) 
     result
@@ -4214,6 +4323,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1120)
-  def _reduce_314(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1123)
+  def _reduce_315(val, _values, result)
      Factory.set_f_celltype( true ) 
     result
@@ -4221,10 +4330,10 @@
 .,.,
 
-# reduce 315 omitted
-
 # reduce 316 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1128)
-  def _reduce_317(val, _values, result)
+# reduce 317 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1131)
+  def _reduce_318(val, _values, result)
      Factory.new( val[0].val, val[2], val[4], nil    ) 
     result
@@ -4232,6 +4341,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1130)
-  def _reduce_318(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1133)
+  def _reduce_319(val, _values, result)
      Factory.new( val[0].val, val[2], val[4], val[6] ) 
     result
@@ -4239,8 +4348,8 @@
 .,.,
 
-# reduce 319 omitted
-
-module_eval(<<'.,.,', 'bnf.y.rb', 1137)
-  def _reduce_320(val, _values, result)
+# reduce 320 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1140)
+  def _reduce_321(val, _values, result)
      result = [ [ :IDENTIFIER, val[0].val ] ] 
     result
@@ -4248,6 +4357,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1139)
-  def _reduce_321(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1142)
+  def _reduce_322(val, _values, result)
      result << [ :IDENTIFIER, val[2].val ] 
     result
@@ -4255,6 +4364,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1141)
-  def _reduce_322(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1144)
+  def _reduce_323(val, _values, result)
      result = [ [ :STRING_LITERAL, val[0].val ] ] 
     result
@@ -4262,6 +4371,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1143)
-  def _reduce_323(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1146)
+  def _reduce_324(val, _values, result)
      result << [ :STRING_LITERAL, val[2].val ] 
     result
@@ -4269,6 +4378,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1148)
-  def _reduce_324(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1151)
+  def _reduce_325(val, _values, result)
      Cell.new_def 
     result
@@ -4276,6 +4385,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1150)
-  def _reduce_325(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1153)
+  def _reduce_326(val, _values, result)
      result = Cell.end_of_parse true 
     result
@@ -4283,6 +4392,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1152)
-  def _reduce_326(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1155)
+  def _reduce_327(val, _values, result)
      result = Cell.end_of_parse false 
     result
@@ -4290,6 +4399,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1156)
-  def _reduce_327(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1159)
+  def _reduce_328(val, _values, result)
      result = Cell.new(val[0]) 
     result
@@ -4297,6 +4406,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1160)
-  def _reduce_328(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1163)
+  def _reduce_329(val, _values, result)
      result = Cell.set_name(val[0].val) 
     result
@@ -4304,12 +4413,12 @@
 .,.,
 
-# reduce 329 omitted
-
 # reduce 330 omitted
 
 # reduce 331 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1169)
-  def _reduce_332(val, _values, result)
+# reduce 332 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1172)
+  def _reduce_333(val, _values, result)
      val[3].set_specifier_list( val[1] )  
     result
@@ -4317,6 +4426,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1171)
-  def _reduce_333(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1174)
+  def _reduce_334(val, _values, result)
      val[0].set_specifier_list( [] ) 
     result
@@ -4324,6 +4433,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1175)
-  def _reduce_334(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1178)
+  def _reduce_335(val, _values, result)
      result << val[2] 
     result
@@ -4331,14 +4440,7 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1177)
-  def _reduce_335(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1180)
+  def _reduce_336(val, _values, result)
      result = [val[0]] 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'bnf.y.rb', 1181)
-  def _reduce_336(val, _values, result)
-     result = [ :THROUGH, val[2], val[4] ] 
     result
   end
@@ -4347,4 +4449,11 @@
 module_eval(<<'.,.,', 'bnf.y.rb', 1184)
   def _reduce_337(val, _values, result)
+     result = [ :THROUGH, val[2], val[4] ] 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1187)
+  def _reduce_338(val, _values, result)
      result = val[0] 
     result
@@ -4352,8 +4461,8 @@
 .,.,
 
-# reduce 338 omitted
-
-module_eval(<<'.,.,', 'bnf.y.rb', 1198)
-  def _reduce_339(val, _values, result)
+# reduce 339 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1201)
+  def _reduce_340(val, _values, result)
     			result = Join.new( val[0].val,  -1, val[4] )
 			Cell.new_join( result, true )
@@ -4363,6 +4472,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1203)
-  def _reduce_340(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1206)
+  def _reduce_341(val, _values, result)
     			result = Join.new( val[0].val, val[2], val[5] )
 			Cell.new_join( result, true )
@@ -4372,6 +4481,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1208)
-  def _reduce_341(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1211)
+  def _reduce_342(val, _values, result)
     			result = Join.new( val[0].val, nil, val[2] )
 			Cell.new_join( result, true )
@@ -4381,6 +4490,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1213)
-  def _reduce_342(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1216)
+  def _reduce_343(val, _values, result)
     			result = Join.new( val[0].val, nil, [ :COMPOSITE, val[4] ] )
 			Cell.new_join( result, true )
@@ -4390,8 +4499,8 @@
 .,.,
 
-# reduce 343 omitted
-
-module_eval(<<'.,.,', 'bnf.y.rb', 1224)
-  def _reduce_344(val, _values, result)
+# reduce 344 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1227)
+  def _reduce_345(val, _values, result)
     			rj = ReverseJoin.new( val[0].val, nil, val[2], val[4].val )
 			Cell.new_reverse_join( rj )
@@ -4401,6 +4510,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1230)
-  def _reduce_345(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1233)
+  def _reduce_346(val, _values, result)
     			rj = ReverseJoin.new( val[0].val, nil, val[2], val[4].val, val[6] )
 			Cell.new_reverse_join( rj )
@@ -4410,6 +4519,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1236)
-  def _reduce_346(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1239)
+  def _reduce_347(val, _values, result)
     			rj = ReverseJoin.new( val[0].val, val[2], val[5], val[7].val )
 			Cell.new_reverse_join( rj )
@@ -4419,6 +4528,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1242)
-  def _reduce_347(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1245)
+  def _reduce_348(val, _values, result)
     			rj = ReverseJoin.new( val[0].val, val[2], val[5], val[7].val, val[9] )
 			Cell.new_reverse_join( rj )
@@ -4428,8 +4537,8 @@
 .,.,
 
-# reduce 348 omitted
-
-module_eval(<<'.,.,', 'bnf.y.rb', 1254)
-  def _reduce_349(val, _values, result)
+# reduce 349 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1257)
+  def _reduce_350(val, _values, result)
     			CompositeCelltype.end_of_parse
 			result = val[1]
@@ -4439,6 +4548,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1260)
-  def _reduce_350(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1263)
+  def _reduce_351(val, _values, result)
      result = CompositeCelltype.new(val[0].val) 
     result
@@ -4446,10 +4555,10 @@
 .,.,
 
-# reduce 351 omitted
-
 # reduce 352 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1269)
-  def _reduce_353(val, _values, result)
+# reduce 353 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1272)
+  def _reduce_354(val, _values, result)
     			if val[0].kind_of?( Port ) then
 				CompositeCelltype.new_port( val[0] )   # 遅延して登録
@@ -4460,6 +4569,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1275)
-  def _reduce_354(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1278)
+  def _reduce_355(val, _values, result)
     			if val[3].kind_of?( Port ) then
 				# port 以外 val[3] に有効な値が入っていないので、以下のメソッドを適用できない
@@ -4479,6 +4588,4 @@
 .,.,
 
-# reduce 355 omitted
-
 # reduce 356 omitted
 
@@ -4487,6 +4594,8 @@
 # reduce 358 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1299)
-  def _reduce_359(val, _values, result)
+# reduce 359 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1302)
+  def _reduce_360(val, _values, result)
     			Generator.add_statement_specifier val[0]
 			result = [ val[0] ]
@@ -4496,6 +4605,15 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1304)
-  def _reduce_360(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1307)
+  def _reduce_361(val, _values, result)
+    			Generator.add_statement_specifier val[2]
+			result = val[0] << val[2]
+		
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1312)
+  def _reduce_362(val, _values, result)
      result = [ :ALLOCATOR, val[2] ] 
     result
@@ -4503,6 +4621,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1305)
-  def _reduce_361(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1313)
+  def _reduce_363(val, _values, result)
      result = [ :OMIT ] 
     result
@@ -4510,6 +4628,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1306)
-  def _reduce_362(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1314)
+  def _reduce_364(val, _values, result)
      result = [ :OPTIONAL ] 
     result
@@ -4517,6 +4635,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1307)
-  def _reduce_363(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1315)
+  def _reduce_365(val, _values, result)
      result = [ :REF_DESC ] 
     result
@@ -4524,6 +4642,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1308)
-  def _reduce_364(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1316)
+  def _reduce_366(val, _values, result)
      result = [ :DYNAMIC ] 
     result
@@ -4531,6 +4649,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1313)
-  def _reduce_365(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1321)
+  def _reduce_367(val, _values, result)
     			# CompositeCelltype.new_port( val[0] )
 			result = val[0]
@@ -4540,6 +4658,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1320)
-  def _reduce_366(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1328)
+  def _reduce_368(val, _values, result)
      result = nil 
     result
@@ -4547,6 +4665,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1324)
-  def _reduce_367(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1332)
+  def _reduce_369(val, _values, result)
      CompositeCelltype.new_attribute( val[0] ) 
     result
@@ -4554,6 +4672,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1326)
-  def _reduce_368(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1334)
+  def _reduce_370(val, _values, result)
      CompositeCelltype.new_attribute( val[1] ) 
     result
@@ -4561,6 +4679,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1331)
-  def _reduce_369(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1339)
+  def _reduce_371(val, _values, result)
      Cell.new_def 
     result
@@ -4568,6 +4686,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1333)
-  def _reduce_370(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1341)
+  def _reduce_372(val, _values, result)
      result = Cell.end_of_parse true 
     result
@@ -4575,6 +4693,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1335)
-  def _reduce_371(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1343)
+  def _reduce_373(val, _values, result)
      result = Cell.end_of_parse false 
     result
@@ -4582,6 +4700,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1340)
-  def _reduce_372(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1348)
+  def _reduce_374(val, _values, result)
      Cell.new(val[0],true) 
     result
@@ -4589,6 +4707,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1344)
-  def _reduce_373(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1352)
+  def _reduce_375(val, _values, result)
      Cell.set_name(val[0].val) 
     result
@@ -4596,12 +4714,14 @@
 .,.,
 
-# reduce 374 omitted
-
-# reduce 375 omitted
-
 # reduce 376 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1354)
-  def _reduce_377(val, _values, result)
+# reduce 377 omitted
+
+# reduce 378 omitted
+
+# reduce 379 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1363)
+  def _reduce_380(val, _values, result)
     	Cell.external_join( val[0].val, val[4].val, true )	
     result
@@ -4609,6 +4729,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1356)
-  def _reduce_378(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1365)
+  def _reduce_381(val, _values, result)
     	Cell.external_join( val[0].val, val[2].val, false )	
     result
@@ -4616,6 +4736,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1363)
-  def _reduce_379(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1372)
+  def _reduce_382(val, _values, result)
     			CompositeCelltype.new_join( val[0].val,
 						val[2].val, val[4].val, :ENTRY )
@@ -4625,6 +4745,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1368)
-  def _reduce_380(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1377)
+  def _reduce_383(val, _values, result)
     			CompositeCelltype.new_join( val[2].val,
 						val[4].val, val[6].val, :ENTRY )
@@ -4634,30 +4754,30 @@
 .,.,
 
-# reduce 381 omitted
-
-# reduce 382 omitted
-
-# reduce 383 omitted
-
-module_eval(<<'.,.,', 'bnf.y.rb', 1384)
-  def _reduce_384(val, _values, result)
+# reduce 384 omitted
+
+# reduce 385 omitted
+
+# reduce 386 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1393)
+  def _reduce_387(val, _values, result)
      Region.end_of_parse 
     result
   end
 .,.,
-
-module_eval(<<'.,.,', 'bnf.y.rb', 1386)
-  def _reduce_385(val, _values, result)
-     Region.end_of_parse 
-    result
-  end
-.,.,
-
-# reduce 386 omitted
-
-# reduce 387 omitted
 
 module_eval(<<'.,.,', 'bnf.y.rb', 1395)
   def _reduce_388(val, _values, result)
+     Region.end_of_parse 
+    result
+  end
+.,.,
+
+# reduce 389 omitted
+
+# reduce 390 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1404)
+  def _reduce_391(val, _values, result)
      Region.new_in_through( val[2].val, val[4].val ) 
     result
@@ -4665,6 +4785,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1397)
-  def _reduce_389(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1406)
+  def _reduce_392(val, _values, result)
      Region.new_in_through 
     result
@@ -4672,6 +4792,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1399)
-  def _reduce_390(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1408)
+  def _reduce_393(val, _values, result)
      Region.new_out_through( val[2].val, val[4].val ) 
     result
@@ -4679,6 +4799,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1401)
-  def _reduce_391(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1410)
+  def _reduce_394(val, _values, result)
      Region.new_out_through() 
     result
@@ -4686,6 +4806,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1403)
-  def _reduce_392(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1412)
+  def _reduce_395(val, _values, result)
      Region.new_to_through( val[2], val[4].val, val[6].val ) 
     result
@@ -4693,6 +4813,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1405)
-  def _reduce_393(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1414)
+  def _reduce_396(val, _values, result)
      Region.new_to_through( val[2], nil, nil ) 
     result
@@ -4700,6 +4820,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1407)
-  def _reduce_394(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1416)
+  def _reduce_397(val, _values, result)
      Region.set_type( :NODE ) 
     result
@@ -4707,6 +4827,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1409)
-  def _reduce_395(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1418)
+  def _reduce_398(val, _values, result)
      Region.set_type( :LINKUNIT ) 
     result
@@ -4714,6 +4834,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1411)
-  def _reduce_396(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1420)
+  def _reduce_399(val, _values, result)
      Region.set_domain( val[2].val, val[4] ) 
     result
@@ -4721,6 +4841,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1413)
-  def _reduce_397(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1422)
+  def _reduce_400(val, _values, result)
      Region.set_type( :CLASS, val[2].val ) 
     result
@@ -4728,6 +4848,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1417)
-  def _reduce_398(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1426)
+  def _reduce_401(val, _values, result)
      result = Region.new( val[0].val ) 
     result
@@ -4735,14 +4855,14 @@
 .,.,
 
-# reduce 399 omitted
-
-# reduce 400 omitted
-
-# reduce 401 omitted
-
 # reduce 402 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1428)
-  def _reduce_403(val, _values, result)
+# reduce 403 omitted
+
+# reduce 404 omitted
+
+# reduce 405 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1437)
+  def _reduce_406(val, _values, result)
     			obj = val[3]
 			if obj.kind_of?( Cell ) then
@@ -4756,6 +4876,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1450)
-  def _reduce_404(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1459)
+  def _reduce_407(val, _values, result)
      result = [ val[0].val ] 
     result
@@ -4763,6 +4883,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1455)
-  def _reduce_405(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1464)
+  def _reduce_408(val, _values, result)
      set_in_specifier 
     result
@@ -4770,6 +4890,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1457)
-  def _reduce_406(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1466)
+  def _reduce_409(val, _values, result)
      unset_in_specifier 
     result
@@ -4777,14 +4897,14 @@
 .,.,
 
-# reduce 407 omitted
-
-# reduce 408 omitted
-
-# reduce 409 omitted
-
 # reduce 410 omitted
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1471)
-  def _reduce_411(val, _values, result)
+# reduce 411 omitted
+
+# reduce 412 omitted
+
+# reduce 413 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1480)
+  def _reduce_414(val, _values, result)
     			TECSGEN::Cell_location.new( val[1], val[3], val[5], val[7], val[9], val[12] )
 		
@@ -4793,6 +4913,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1477)
-  def _reduce_412(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1486)
+  def _reduce_415(val, _values, result)
     			result = val[0] << val[1]
 		
@@ -4801,6 +4921,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1480)
-  def _reduce_413(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1489)
+  def _reduce_416(val, _values, result)
      result = [] 
     result
@@ -4808,6 +4928,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1484)
-  def _reduce_414(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1493)
+  def _reduce_417(val, _values, result)
      result = [ val[0], val[2], val[3] ] 
     result
@@ -4815,6 +4935,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1489)
-  def _reduce_415(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1498)
+  def _reduce_418(val, _values, result)
                 TECSGEN::Join_location.new( val[2], val[4], val[6], val[8], val[11] )
 		
@@ -4823,6 +4943,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1495)
-  def _reduce_416(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1504)
+  def _reduce_419(val, _values, result)
                 result = val[0] << [ val[1], val[3] ]
           
@@ -4831,7 +4951,134 @@
 .,.,
 
-module_eval(<<'.,.,', 'bnf.y.rb', 1497)
-  def _reduce_417(val, _values, result)
+module_eval(<<'.,.,', 'bnf.y.rb', 1506)
+  def _reduce_420(val, _values, result)
      result = [] 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1510)
+  def _reduce_421(val, _values, result)
+     TOOL_INFO.new( val[2].to_sym, val[4] ) 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1511)
+  def _reduce_422(val, _values, result)
+      result = val[1] 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1512)
+  def _reduce_423(val, _values, result)
+     result = { val[0].to_sym => val[2] } 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1514)
+  def _reduce_424(val, _values, result)
+     val[0][ val[2].to_sym ] = val[4] 
+    result
+  end
+.,.,
+
+# reduce 425 omitted
+
+# reduce 426 omitted
+
+# reduce 427 omitted
+
+# reduce 428 omitted
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1516)
+  def _reduce_429(val, _values, result)
+     result=val[0].val 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1516)
+  def _reduce_430(val, _values, result)
+     result=val[0].val 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1517)
+  def _reduce_431(val, _values, result)
+     result = val[1]  
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1518)
+  def _reduce_432(val, _values, result)
+     result = []  
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1519)
+  def _reduce_433(val, _values, result)
+     result = [ val[0] ] 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1520)
+  def _reduce_434(val, _values, result)
+     val[0] << val[2] 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1521)
+  def _reduce_435(val, _values, result)
+     result = val[0].val.gsub!( /\"(.*)\"/, "\\1" ) 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1522)
+  def _reduce_436(val, _values, result)
+     result = val[0].val.to_i 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1523)
+  def _reduce_437(val, _values, result)
+     result = val[0].val.to_f 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1524)
+  def _reduce_438(val, _values, result)
+     result = - val[0].val.to_i 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1525)
+  def _reduce_439(val, _values, result)
+     result = - val[0].val.to_f 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1526)
+  def _reduce_440(val, _values, result)
+     result = val[0].val.to_i 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'bnf.y.rb', 1527)
+  def _reduce_441(val, _values, result)
+     result = val[0].val.to_f 
     result
   end
