Index: EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/core/C_parser.tab.rb
===================================================================
--- EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/core/C_parser.tab.rb	(revision 321)
+++ EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/core/C_parser.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.9
 # from Racc grammer file "".
 #
@@ -8,282 +8,300 @@
 class C_parser < Racc::Parser
 
-module_eval(<<'...end C_parser.y.rb/module_eval...', 'C_parser.y.rb', 715)
-
-  RESERVED = {
-    # keyword
-    'typedef' => :TYPEDEF,
-    'struct' => :STRUCT,
-    'union' => :UNION,
-    'sizeof' => :SIZEOF,
-    'throw' => :THROW,
-
-    # specifier
-    # types
-    'void'    => :VOID,
-    'char'    => :CHAR,
-    'short'   => :SHORT,
-
-    'volatile'=> :VOLATILE,
-    'const'   => :CONST,
-    'extern'   => :EXTERN,
-
-    'long'    => :LONG,
-    'float'   => :FLOAT,
-    'double'  => :DOUBLE,
-    'signed'  => :SIGNED,
-    'unsigned'=> :UNSIGNED,
-
-    'int'     => :INT,
-    'enum'    => :ENUM,
-
-    'if'      => :IF,
-    'else'    => :ELSE,
-    'while'   => :WHILE,
-    'do'      => :DO,
-    'for'     => :FOR,
-    'case'    => :CASE,
-    'default' => :DEFAULT,
-    'goto'    => :GOTO,
-    'continue' => :CONTINUE,
-    'break'   => :BREAK,
-    'return'  => :RETURN,
-    '__inline__'  => :__INLINE__,
-    'inline'  => :INLINE,
-    '__inline'  => :__INLINE,
-    'Inline'  => :CINLINE,        # inline starting with Capital letter
-    'static'  => :STATIC,
-    'register' => :REGISTER,
-    'auto'    => :AUTO,
-    '__extension__'    => :EXTENSION,
-
-  }
-
-  @@generator_nest = -1
-  @@generator_stack = []
-  @@current_locale = []
-
-  def finalize
-
-    # mikan Namespace.pop
-    Celltype.pop
-    Cell.pop
-    CompositeCelltype.pop
-    Region.pop
-
-  end
-
-  def set_plugin( plugin )
-    @plugin = plugin
-  end
-
-  def self.get_plugin
-    @@generator_stack[@@generator_nest].get_plugin
-  end
-
-  def get_plugin
-    @plugin
-  end
-
-  def parse(files)
-
-    # mikan Namespace.push
-    Celltype.push
-    Cell.push
-    CompositeCelltype.push
-    Region.push
-
-    @@generator_nest += 1
-    @@generator_stack[@@generator_nest] = self
-    @b_no_type_name = false
-
-   begin
-
-    @q = []
-    comment = false
-
-    # euc のコメントを utf8 として扱うと、コメントの終わりを誤る問題の対策
-    TECS_LANG::set_kcode_binary
-
-    # 800U, 0xffLL など (整数リテラルに共通の修飾子)
-    integer_qualifier = "([Uu][Ll][Ll]|[Uu][Ll]|[Uu]|[Ll][Ll]|[Ll])?"
-
-    files.each {|file|
-      lineno = 1
-     begin
-#2.0       IO.foreach(file) {|line|
-       TECSIO.foreach(file) {|line|
-        col = 1
-        line.rstrip!
-
-        until line.empty?
-
-          if comment
-            case line
-            # コメント終了
-            when /\A\*\//
-              comment = false
-            when /\A./
-              ;
-            end
-          else
-            case line
-            # 空白、プリプロセスディレクティブ
-            when /\A\s+/
-              ;
-            # 識別子
-            when /\A[a-zA-Z_]\w*/
-              word = $&
-              @q << [RESERVED[word] || :IDENTIFIER, Token.new(word.intern, file, lineno, col)]
-            # 16 進数定数
-            when /\A0x[0-9A-Fa-f]+#{integer_qualifier}/
-              @q << [:HEX_CONSTANT, Token.new($&, file, lineno, col)]
-            # 8 進数定数
-            when /\A0[0-7]+#{integer_qualifier}/
-              @q << [:OCTAL_CONSTANT, Token.new($&, file, lineno, col)]
-            # 浮動小数定数
-            when /\A[0-9]+\.([0-9]*)?([Ee][+-]?[0-9]+)?/
-              @q << [:FLOATING_CONSTANT, Token.new($&, file, lineno, col)]
-            # 整数定数
-            when /\A\d+#{integer_qualifier}/
-            # when /\A\d+/
-              @q << [:INTEGER_CONSTANT, Token.new($&.to_i, file, lineno, col)]
-            # 文字
-            when /\A'(?:[^'\\]|\\.)'/
-              @q << [:CHARACTER_LITERAL, Token.new($&, file, lineno, col)]
-            # 文字列
-#              "#include  #include #include \"../systask/logtask.cfg\"       最後の " 忘れ)で無限ループ
-#            when /\A"(?:[^"\\]+|\\.)*"/
-            when /\A"(?:[^"\\]|\\.)*"/   # これはうまく行くようだ
-              @q << [:STRING_LITERAL, Token.new($&, file, lineno, col)]
-            # 行コメント
-            when /\A\/\/.*$/
-              # 読み飛ばすだけ
-            # コメント開始
-            when /\A\/\*/
-              comment = true
-            when /\A>>=/, /\A<<=/, /\A>>/,  /\A<</
-              @q << [$&, Token.new($&, file, lineno, col)]
-            when /\A\+=/, /\A\-=/, /\A\*=/, /\A\/=/, /\A%=/, /\A&=/, /\A\|=/, /\A\^=/
-              @q << [$&, Token.new($&, file, lineno, col)]
-            when /\A::/, /\A==/, /\A!=/, /\A>=/, /\A<=/, /\A\->/, /\A\+\+/, /\A\-\-/
-              @q << [$&, Token.new($&, file, lineno, col)]
-            when /\A./
-              @q << [$&, Token.new($&, file, lineno, col)]
-            else
-              raise
-            end
-          end
-
-          line = $'
-          col += $&.length
-        end
-
-        lineno += 1
-      }
-
-     rescue => evar
-       Generator.error( "B1002 while open or reading \'$1\'" , file )
-       print_exception( evar )
-     end
-    }
-
-    # 終了の印
-    @q << nil
-
-    @yydebug = true
-    do_parse
-
-   ensure
-    @@generator_nest -= 1
-    TECS_LANG::reset_kcode
-   end
-
-  end
-
-
-  def next_token
-    token = @q.shift
-
-    if token then
-      @@current_locale[@@generator_nest] = token[1].locale
-
-      case token[1].val
-      when ";", ":", ",", "(", ")", "{", "}"
-        set_no_type_name false
-      when ".", "->"
-        set_no_type_name true
-      end
-
-      # TYPE_NAME トークンへ置き換え
-      if @b_no_type_name == false
-        if token[0] == :IDENTIFIER && Namespace.is_typename?( token[1].val ) then
-          token[0] = :TYPE_NAME
-        end
-      end
-
-      if $debug then     # 070107 token 無効時ここを通さないようした (through 対応 -d の時に例外発生) 
-        locale = @@current_locale[@@generator_nest]
-        if token then
-          print( "#{locale[0]}: line #{locale[1]} : #{token[0]} '#{token[1].val}'\n" )
-        else
-          print( "#{locale[0]}: line #{locale[1]} : EOF\n" )
-        end
-      end
-    end
-
-    token
-  end
-
-  def on_error(t, v, vstack)
-    if v == "$" then
-     Generator.error( "B1003 Unexpected EOF"  )
-    else
-     Generator.error( "B1004 syntax error near \'$1\'" , v.val )
-    end
-
-  end
-
-  def self.current_locale
-    @@current_locale[ @@generator_nest ]
-  end
-
-  @@n_error = 0
-  @@n_warning = 0
-
-  # このメソッドは構文解析、意味解析からのみ呼出し可（コード生成でエラー発生は不適切）
-  def self.error( msg )
-    @@n_error += 1
-    locale = @@current_locale[ @@generator_nest ]
-
-    if locale then
-      Console.puts "error: #{locale[0]}: line #{locale[1]} #{msg}"
-    else
-      Console.puts "error: #{msg}"
-    end
-  end
-
-  # このメソッドは構文解析、意味解析からのみ呼出し可（コード生成でウォーニング発生は不適切）
-  def self.warning( msg )
-    @@n_warning += 1
-    locale = @@current_locale[ @@generator_nest ]
-    Console.puts "warning: #{locale[0]}: line #{locale[1]} #{msg}"
-  end
-
-  def self.get_n_error
-    @@n_error
-  end
-
-  def self.get_n_warning
-    @@n_warning
-  end
-
-  def self.get_nest
-    @@generator_nest
-  end
-
-  def set_no_type_name b_no_type_name
-    # print "b_no_type_name=#{b_no_type_name}\n"
-    @b_no_type_name = b_no_type_name
-  end
+module_eval(<<'...end C_parser.y.rb/module_eval...', 'C_parser.y.rb', 784)
+
+	RESERVED = {
+		# keyword
+		'typedef' => :TYPEDEF,
+		'struct' => :STRUCT,
+		'union' => :UNION,
+		'sizeof' => :SIZEOF,
+		'throw' => :THROW,
+
+		# specifier
+		# types
+		'void'    => :VOID,
+		'char'    => :CHAR,
+		'short'   => :SHORT,
+
+		'volatile'=> :VOLATILE,
+		'restrict'=> :RESTRICT,
+		'const'   => :CONST,
+		'extern'   => :EXTERN,
+
+		'long'    => :LONG,
+		'float'   => :FLOAT,
+		'double'  => :DOUBLE,
+		'signed'  => :SIGNED,
+		'unsigned'=> :UNSIGNED,
+
+		'int'     => :INT,
+		'enum'    => :ENUM,
+
+		'if'      => :IF,
+		'else'    => :ELSE,
+		'while'   => :WHILE,
+		'do'      => :DO,
+		'for'     => :FOR,
+		'switch'  => :SWITCH,
+		'case'    => :CASE,
+		'default' => :DEFAULT,
+		'goto'    => :GOTO,
+		'continue' => :CONTINUE,
+		'break'   => :BREAK,
+		'return'  => :RETURN,
+		'__inline__'  => :__INLINE__,
+		'inline'  => :INLINE,
+		'__inline'  => :__INLINE,
+		'Inline'  => :CINLINE,        # inline starting with Capital letter
+		'static'  => :STATIC,
+		'register' => :REGISTER,
+		'auto'    => :AUTO,
+		'__extension__'    => :EXTENSION,
+		'__asm__' => :_ASM,
+		'asm' =>     :_ASM
+
+	}
+
+	@@generator_nest = -1
+	@@generator_stack = []
+	@@current_locale = []
+
+	def finalize
+
+		# mikan Namespace.pop
+		Celltype.pop
+		Cell.pop
+		CompositeCelltype.pop
+		Region.pop
+
+	end
+
+	def set_plugin( plugin )
+		@plugin = plugin
+	end
+
+	def self.get_plugin
+		@@generator_stack[@@generator_nest].get_plugin
+	end
+
+	def get_plugin
+		@plugin
+	end
+
+	def parse(files)
+
+		# mikan Namespace.push
+		Celltype.push
+		Cell.push
+		CompositeCelltype.push
+		Region.push
+
+		@@generator_nest += 1
+		@@generator_stack[@@generator_nest] = self
+		@b_no_type_name = false
+
+	begin
+
+		@q = []
+		comment = false
+#		b_asm   = false
+
+		# euc のコメントを utf8 として扱うと、コメントの終わりを誤る問題の対策
+		TECS_LANG::set_kcode_binary
+
+		# 800U, 0xffLL など (整数リテラルに共通の修飾子)
+		integer_qualifier = "([Uu][Ll][Ll]|[Uu][Ll]|[Uu]|[Ll][Ll]|[Ll])?"
+
+		files.each {|file|
+			lineno = 1
+		begin
+#2.0		IO.foreach(file) {|line|
+			TECSIO.foreach(file) {|line|
+			col = 1
+			line.rstrip!
+
+			until line.empty?
+
+				if comment
+					case line
+					# コメント終了
+					when /\A\*\//
+						comment = false
+					when /\A./
+						;
+					end
+				else
+					case line
+					# 空白、プリプロセスディレクティブ
+					when /\A\s+/
+						;
+					# 識別子
+					when /\A[a-zA-Z_]\w*/
+						word = $&
+						@q << [RESERVED[word] || :IDENTIFIER, Token.new(word.intern, file, lineno, col)]
+					# 16 進数定数
+					when /\A0x[0-9A-Fa-f]+#{integer_qualifier}/
+						@q << [:HEX_CONSTANT, Token.new($&, file, lineno, col)]
+					# 8 進数定数
+					when /\A0[0-7]+#{integer_qualifier}/
+						@q << [:OCTAL_CONSTANT, Token.new($&, file, lineno, col)]
+					# 浮動小数定数
+					when /\A[0-9]+\.([0-9]*)?([Ee][+-]?[0-9]+)?/
+						@q << [:FLOATING_CONSTANT, Token.new($&, file, lineno, col)]
+					# 整数定数
+					when /\A\d+#{integer_qualifier}/
+					# when /\A\d+/
+						@q << [:INTEGER_CONSTANT, Token.new($&.to_i, file, lineno, col)]
+					# 文字
+					when /\A'(?:[^'\\]|\\.)'/
+						@q << [:CHARACTER_LITERAL, Token.new($&, file, lineno, col)]
+					# 文字列
+#					"#include  #include #include \"../systask/logtask.cfg\"       最後の " 忘れ)で無限ループ
+#					when /\A"(?:[^"\\]+|\\.)*"/
+					when /\A"(?:[^"\\]|\\.)*"/   # これはうまく行くようだ
+						@q << [:STRING_LITERAL, Token.new($&, file, lineno, col)]
+					# 行コメント
+					when /\A\/\/.*$/
+						# 読み飛ばすだけ
+					# コメント開始
+					when /\A\/\*/
+						comment = true
+					when /\A>>=/, /\A<<=/, /\A>>/,  /\A<</
+						@q << [$&, Token.new($&, file, lineno, col)]
+					when /\A\+=/, /\A\-=/, /\A\*=/, /\A\/=/, /\A%=/, /\A&=/, /\A\|=/, /\A\^=/
+						@q << [$&, Token.new($&, file, lineno, col)]
+					when /\A::/, /\A==/, /\A!=/, /\A>=/, /\A<=/, /\A\->/, /\A\+\+/, /\A\-\-/
+						@q << [$&, Token.new($&, file, lineno, col)]
+					when /\A\|\|/, /\A\&\&/
+						@q << [$&, Token.new($&, file, lineno, col)]
+					when /\A./
+						@q << [$&, Token.new($&, file, lineno, col)]
+					else
+						raise
+					end
+				end
+
+				line = $'
+				col += $&.length
+			end
+
+			lineno += 1
+		}
+
+		rescue => evar
+			Generator.error( "B1002 while open or reading \'$1\'" , file )
+			print_exception( evar )
+		end
+	}
+
+	# 終了の印
+	@q << nil
+
+	@yydebug = true
+	do_parse
+
+		ensure
+			@@generator_nest -= 1
+			TECS_LANG::reset_kcode
+		end
+
+	end
+
+
+	def next_token
+		token = @q.shift
+
+		if token then
+			@@current_locale[@@generator_nest] = token[1].locale
+
+			case token[1].val
+			when ";", ":", ",", "(", ")", "{", "}"
+			set_no_type_name false
+			when ".", "->"
+			set_no_type_name true
+			end
+
+			# TYPE_NAME トークンへ置き換え
+			if @b_no_type_name == false
+				if token[0] == :IDENTIFIER && Namespace.is_typename?( token[1].val ) then
+					token[0] = :TYPE_NAME
+					locale = @@current_locale[@@generator_nest]
+#print( "#{locale[0]}: line #{locale[1]} : #{token[0]} '#{token[1].val}: type_name'\n" )
+				end
+			end
+
+			if $debug then     # 070107 token 無効時ここを通さないようした (through 対応 -d の時に例外発生) 
+				locale = @@current_locale[@@generator_nest]
+				if token then
+					print( "#{locale[0]}: line #{locale[1]} : #{token[0]} '#{token[1].val}'\n" )
+				else
+					print( "#{locale[0]}: line #{locale[1]} : EOF\n" )
+				end
+			end
+		end
+
+		token
+	end
+
+	def on_error(t, v, vstack)
+		if v == "$" then
+			Generator.error( "B1003 Unexpected EOF"  )
+		else
+			Generator.error( "B1004 syntax error near \'$1\'" , v.val )
+		end
+
+	end
+
+	def self.current_locale
+		@@current_locale[ @@generator_nest ]
+	end
+
+	@@n_error = 0
+	@@n_warning = 0
+	@@n_info = 0
+
+	# このメソッドは構文解析、意味解析からのみ呼出し可（コード生成でエラー発生は不適切）
+	def self.error( msg )
+		@@n_error += 1
+		locale = @@current_locale[ @@generator_nest ]
+
+		if locale then
+			Console.puts "#{locale[0]}:#{locale[1]}: error: #{msg}"
+		else
+			Console.puts "error: #{msg}"
+		end
+	end
+
+	# このメソッドは構文解析、意味解析からのみ呼出し可（コード生成でウォーニング発生は不適切）
+	def self.warning( msg )
+		@@n_warning += 1
+		locale = @@current_locale[ @@generator_nest ]
+		Console.puts "#{locale[0]}:#{locale[1]}: warning: #{msg}"
+	end
+
+	# このメソッドは構文解析、意味解析からのみ呼出し可
+	def self.info( msg )
+		@@n_info += 1
+		locale = @@current_locale[ @@generator_nest ]
+		Console.puts "#{locale[0]}:#{locale[1]}: info: #{msg}"
+	end
+
+	def self.get_n_error
+		@@n_error
+	end
+
+	def self.get_n_warning
+		@@n_warning
+	end
+
+	def self.get_nest
+		@@generator_nest
+	end
+
+	def set_no_type_name b_no_type_name
+		locale = @@current_locale[ @@generator_nest ]
+#print "b_no_type_name=#{b_no_type_name} #{locale[0]}: line #{locale[1]}\n"
+		@b_no_type_name = b_no_type_name
+	end
 
 ...end C_parser.y.rb/module_eval...
@@ -291,128 +309,145 @@
 
 clist = [
-'104,105,106,107,108,110,68,111,66,179,300,141,53,116,117,206,115,118',
-'119,120,121,122,123,104,105,106,107,108,110,168,111,203,204,207,141',
-'74,116,117,168,115,118,119,120,121,122,123,303,208,67,299,65,26,27,104',
-'105,106,107,108,110,73,111,26,27,75,141,348,116,117,167,115,118,119',
-'120,121,122,123,77,265,195,196,160,304,305,306,307,308,309,310,311,312',
-'313,262,351,142,8,9,10,11,15,16,17,18,19,20,21,22,53,192,23,25,26,27',
-'193,194,343,261,142,104,105,106,107,108,110,344,111,172,340,151,141',
-'272,116,117,251,115,118,119,120,121,122,123,104,105,106,107,108,110',
-'142,111,355,171,339,141,81,116,117,80,115,118,119,120,121,122,123,104',
-'105,106,107,108,110,52,111,195,196,3,141,51,116,117,359,115,118,119',
-'120,121,122,123,104,105,106,107,108,110,373,111,96,335,361,141,334,116',
-'117,344,115,118,119,120,121,122,123,79,142,247,335,272,251,334,251,51',
-'104,105,106,107,108,110,81,111,53,80,362,234,363,116,117,142,115,118',
-'119,120,121,122,123,247,52,364,251,197,198,51,51,197,198,79,197,198',
-'53,53,142,228,365,8,9,10,11,15,16,17,18,19,20,21,22,77,192,23,25,26',
-'27,193,194,142,229,95,230,231,232,233,87,235,236,238,239,240,241,192',
-'199,200,201,202,193,194,197,198,370,37,38,39,40,41,42,43,44,142,104',
-'105,106,107,108,110,86,111,203,204,85,141,375,116,117,376,115,118,119',
-'120,121,122,123,104,105,106,107,108,110,377,111,195,196,378,141,379',
-'116,117,380,115,118,119,120,121,122,123,104,105,106,107,108,110,382',
-'111,383,35,384,141,63,116,117,60,115,118,119,120,121,122,123,104,105',
-'106,107,108,110,389,111,209,210,390,141,391,116,117,392,115,118,119',
-'120,121,122,123,59,142,394,34,396,8,9,10,11,15,16,17,18,19,20,21,22',
-'52,278,23,25,26,27,51,142,36,52,52,52,35,53,52,51,51,51,197,198,51,45',
-'53,53,53,277,275,53,269,268,142,267,37,38,39,40,41,42,43,44,181,95,182',
-'254,183,184,185,199,200,201,202,253,34,142,8,9,10,11,15,16,17,18,19',
-'20,21,22,245,244,23,25,26,27,243,30,36,104,105,106,107,108,110,214,111',
-'213,208,207,141,206,116,117,205,115,118,119,120,121,122,123,37,38,39',
-'40,41,42,43,44,301,104,105,106,107,108,110,314,111,315,317,318,234,319',
-'116,117,321,115,118,119,120,121,122,123,52,52,52,322,52,323,51,51,51',
-'324,51,327,174,53,53,53,228,53,8,9,10,11,15,16,17,18,19,20,21,22,77',
-'173,23,25,26,27,75,95,142,229,169,230,231,232,233,161,235,236,238,239',
-'240,241,199,200,201,202,346,347,205,,,,37,38,39,40,41,42,43,44,142,104',
-'105,106,107,108,110,,111,,,,141,,116,117,,115,118,119,120,121,122,123',
-',,104,105,106,107,108,110,,111,,,,234,,116,117,,115,118,119,120,121',
-'122,123,,,,,,,,,,,,,,,,,228,,8,9,10,11,15,16,17,18,19,20,21,22,77,,23',
-'25,26,27,,,,229,,230,231,232,233,142,235,236,238,239,240,241,,,,,,,',
-',,,37,38,39,40,41,42,43,44,142,104,105,106,107,108,110,,111,,,,234,',
-'116,117,,115,118,119,120,121,122,123,,,,,,,,,,,,,,,,,228,,8,9,10,11',
-'15,16,17,18,19,20,21,22,77,,23,25,26,27,,,,229,,230,231,232,233,,235',
-'236,238,239,240,241,,,,,,,,,,,37,38,39,40,41,42,43,44,142,104,105,106',
-'107,108,110,,111,,,,141,,116,117,,115,118,119,120,121,122,123,104,105',
-'106,107,108,110,,111,,,,141,,116,117,,115,118,119,120,121,122,123,104',
-'105,106,107,108,110,,111,,,,141,,116,117,,115,118,119,120,121,122,123',
-'104,105,106,107,108,110,,111,,,,141,,116,117,,115,118,119,120,121,122',
-'123,,142,,,,,,,,104,105,106,107,108,110,,111,,,,141,,116,117,142,115',
-'118,119,120,121,122,123,104,105,106,107,108,110,,111,,366,,141,,116',
-'117,142,115,118,119,120,121,122,123,,,,,,,,104,105,106,107,108,110,',
-'111,142,,,234,,116,117,,115,118,119,120,121,122,123,,,,,,,,,,,,,,,,',
-'228,142,8,9,10,11,15,16,17,18,19,20,21,22,77,,23,25,26,27,,,,229,142',
-'230,231,232,233,,235,236,238,239,240,241,,,,,,,,,,,37,38,39,40,41,42',
-'43,44,142,104,105,106,107,108,110,,111,,,,234,,116,117,,115,118,119',
-'120,121,122,123,,,,,,,,,,,,,,,,,228,,8,9,10,11,15,16,17,18,19,20,21',
-'22,77,,23,25,26,27,,,,229,,230,231,232,233,,235,236,238,239,240,241',
-',,,,,,,,,,37,38,39,40,41,42,43,44,142,104,105,106,107,108,110,,111,',
-',,234,,116,117,,115,118,119,120,121,122,123,,,,,,,,,,,,,,,,,228,,8,9',
-'10,11,15,16,17,18,19,20,21,22,77,,23,25,26,27,,,,229,,230,231,232,233',
-',235,236,238,239,240,241,,,,,,,,,,,37,38,39,40,41,42,43,44,142,104,105',
-'106,107,108,110,,111,,,,141,,116,117,,115,118,119,120,121,122,123,104',
-'105,106,107,108,110,,111,,,,141,,116,117,,115,118,119,120,121,122,123',
-'104,105,106,107,108,110,,111,,,,141,,116,117,,115,118,119,120,121,122',
-'123,104,105,106,107,108,110,,111,,,,141,,116,117,,115,118,119,120,121',
-'122,123,,142,,,,,,139,,,,,,140,104,105,106,107,108,110,,111,,145,142',
-'141,,116,117,,115,118,119,120,121,122,123,104,105,106,107,108,110,,111',
-',,142,141,,116,117,,115,118,119,120,121,122,123,104,105,106,107,108',
-'110,,111,,,142,141,,116,117,,115,118,119,120,121,122,123,104,105,106',
-'107,108,110,,111,,,,141,,116,117,,115,118,119,120,121,122,123,,142,',
-',,,,,,104,105,106,107,108,110,,111,,,,141,,116,117,142,115,118,119,120',
-'121,122,123,104,105,106,107,108,110,,111,,,,141,,116,117,142,115,118',
-'119,120,121,122,123,104,105,106,107,108,110,,111,,,,141,,116,117,142',
-'115,118,119,120,121,122,123,104,105,106,107,108,110,,111,,,,141,,116',
-'117,,115,118,119,120,121,122,123,,142,,,,,,139,349,,,,,140,104,105,106',
-'107,108,110,,111,,,142,141,,116,117,,115,118,119,120,121,122,123,104',
-'105,106,107,108,110,,111,,,142,141,,116,117,,115,118,119,120,121,122',
-'123,104,105,106,107,108,110,,111,,,142,141,,116,117,,115,118,119,120',
-'121,122,123,104,105,106,107,108,110,,111,,,,141,,116,117,,115,118,119',
-'120,121,122,123,,142,,,,,,,,104,105,106,107,108,110,,111,,,,141,,116',
-'117,142,115,118,119,120,121,122,123,104,105,106,107,108,110,,111,,,',
-'141,,116,117,142,115,118,119,120,121,122,123,104,105,106,107,108,110',
-',111,,,,141,,116,117,142,115,118,119,120,121,122,123,,,,,,,,,,104,105',
-'106,107,108,110,,111,,,,234,,116,117,142,115,118,119,120,121,122,123',
-',,,,,,,,,,,,,,,142,228,,8,9,10,11,15,16,17,18,19,20,21,22,77,237,23',
-'25,26,27,,,142,229,,230,231,232,233,,235,236,238,239,240,241,,,,,,,',
-',,,37,38,39,40,41,42,43,44,142,104,105,106,107,108,110,,111,,336,,141',
-',116,117,,115,118,119,120,121,122,123,104,105,106,107,108,110,,111,',
-',,141,,116,117,,115,118,119,120,121,122,123,8,9,10,11,15,16,17,18,19',
-'20,21,22,,,23,25,26,27,8,9,10,11,15,16,17,18,19,20,21,22,,,23,25,26',
-'27,,104,105,106,107,108,110,,111,,,142,141,,116,117,,115,118,119,120',
-'121,122,123,104,105,106,107,108,110,,111,,,142,141,,116,117,,115,118',
-'119,120,121,122,123,104,105,106,107,108,110,,111,,,,141,,116,117,,115',
-'118,119,120,121,122,123,104,105,106,107,108,187,,111,,,,141,,116,117',
-',115,118,119,120,121,122,123,,142,,,,,,,,104,105,106,107,108,189,,111',
-',,,141,,116,117,142,115,118,119,120,121,122,123,104,105,106,107,108',
-'189,,111,,,,141,,116,117,142,115,118,119,120,121,122,123,104,105,106',
-'107,108,110,,111,,,,141,,116,117,142,115,118,119,120,121,122,123,104',
-'105,106,107,108,110,,111,,,,141,,116,117,,115,118,119,120,121,122,123',
-',142,,,,,,139,,,,,,140,272,332,326,251,104,105,106,107,108,110,142,111',
-',53,,141,,116,117,,115,118,119,120,121,122,123,,,,,,,142,,,8,9,10,11',
-'15,16,17,18,19,20,21,22,,,23,25,26,27,,,142,104,105,106,107,108,110',
-',111,,,,234,,116,117,,115,118,119,120,121,122,123,37,38,39,40,41,42',
-'43,44,,,,,,,,,228,142,8,9,10,11,15,16,17,18,19,20,21,22,77,,23,25,26',
-'27,,,,229,,230,231,232,233,,235,236,238,239,240,241,368,,,,,,,,,,37',
-'38,39,40,41,42,43,44,142,247,332,,251,,,51,,,,,,,53,,,8,9,10,11,15,16',
-'17,18,19,20,21,22,,,23,25,26,27,,,8,9,10,11,15,16,17,18,19,20,21,22',
-',,23,25,26,27,147,,,,,,37,38,39,40,41,42,43,44,,,,,,,,,328,,,,37,38',
-'39,40,41,42,43,44,,8,9,10,11,15,16,17,18,19,20,21,22,,,23,25,26,27,8',
-'9,10,11,15,16,17,18,19,20,21,22,,,23,25,26,27,,,,,,,,,37,38,39,40,41',
-'42,43,44,,,,,,,,,,,37,38,39,40,41,42,43,44,8,9,10,11,15,16,17,18,19',
-'20,21,22,,,23,25,26,27,8,9,10,11,15,16,17,18,19,20,21,22,,338,23,25',
-'26,27,,,,,,,,,37,38,39,40,41,42,43,44,,,,,,,,,,,37,38,39,40,41,42,43',
-'44,8,9,10,11,15,16,17,18,19,20,21,22,,162,23,25,26,27,8,9,10,11,15,16',
-'17,18,19,20,21,22,,,23,25,26,27,,,,,,,,,37,38,39,40,41,42,43,44,,,,',
-',,,,,,37,38,39,40,41,42,43,44,8,9,10,11,15,16,17,18,19,20,21,22,,,23',
-'25,26,27,8,9,10,11,15,16,17,18,19,20,21,22,,,23,25,26,27,,,,,,,,,37',
-'38,39,40,41,42,43,44,,,,,,,,,,,37,38,39,40,41,42,43,44,8,9,10,11,15',
-'16,17,18,19,20,21,22,,255,23,25,26,27,8,9,10,11,15,16,17,18,19,20,21',
-'22,,,23,25,26,27,,,,,,,,,37,38,39,40,41,42,43,44,,,,,,,,,,,37,38,39',
-'40,41,42,43,44,8,9,10,11,15,16,17,18,19,20,21,22,,260,23,25,26,27,8',
-'9,10,11,15,16,17,18,19,20,21,22,,,23,25,26,27,,,,,,,,,37,38,39,40,41',
-'42,43,44,,,,,,,,,,,37,38,39,40,41,42,43,44,8,9,10,11,15,16,17,18,19',
-'20,21,22,,,23,25,26,27,8,9,10,11,15,16,17,18,19,20,21,22,,,23,25,26',
-'27,,,,,,,,,37,38,39,40,41,42,43,44,8,9,10,11,15,16,17,18,19,20,21,22',
-',,23,25,26,27' ]
-        racc_action_table = arr = ::Array.new(2877, nil)
+'111,112,113,114,115,117,294,118,56,298,55,163,54,123,124,82,54,262,122',
+'125,126,127,128,129,130,111,112,113,114,115,117,217,118,271,391,101',
+'163,91,123,124,82,271,271,122,125,126,127,128,129,130,56,70,171,72,82',
+'69,397,71,80,32,33,34,224,309,271,223,216,226,84,227,228,229,84,392',
+'101,325,272,171,298,312,80,164,165,172,393,173,174,175,176,177,178,179',
+'180,149,181,101,218,79,308,369,388,32,33,34,265,266,164,165,172,73,173',
+'174,175,176,177,178,179,180,149,181,111,112,113,114,115,117,384,118',
+'32,33,34,163,78,123,124,82,440,402,122,125,126,127,128,129,130,55,219',
+'271,271,383,101,54,332,248,325,387,55,298,249,250,56,382,54,111,112',
+'113,114,115,117,56,118,56,171,331,163,395,123,124,82,276,210,122,125',
+'126,127,128,129,130,420,55,378,210,248,377,396,54,330,249,250,393,92',
+'164,165,172,56,173,174,175,176,177,178,179,180,149,181,171,9,10,11,12',
+'13,14,15,16,17,18,19,20,21,22,26,28,30,31,32,33,34,35,36,37,38,355,356',
+'213,164,165,172,204,173,174,175,176,177,178,179,180,149,181,111,112',
+'113,114,115,117,404,118,93,378,203,163,377,123,124,82,193,271,122,125',
+'126,127,128,129,130,111,112,113,114,115,117,290,118,101,86,55,163,85',
+'123,124,82,54,291,122,125,126,127,128,129,130,56,357,171,13,14,15,16',
+'17,18,19,20,21,22,26,28,30,31,32,33,34,248,86,322,438,85,249,250,171',
+'434,435,370,164,165,172,271,173,174,175,176,177,178,179,180,149,181',
+'259,260,261,321,255,256,257,258,315,316,262,164,165,172,271,173,174',
+'175,176,177,178,179,180,149,181,111,112,113,114,115,117,403,118,317',
+'318,263,163,264,123,124,82,320,271,122,125,126,127,128,129,130,13,14',
+'15,16,17,18,19,20,21,22,26,28,30,31,32,33,34,437,111,112,113,114,115',
+'117,360,118,400,171,271,163,368,123,124,82,166,103,122,125,126,127,128',
+'129,130,102,55,255,256,257,258,310,54,255,256,257,258,405,164,165,172',
+'56,173,174,175,176,177,178,179,180,149,181,171,9,10,11,12,13,14,15,16',
+'17,18,19,20,21,22,26,28,30,31,32,33,34,35,36,37,38,259,260,301,164,165',
+'172,300,173,174,175,176,177,178,179,180,149,181,111,112,113,114,115',
+'117,408,118,253,254,292,163,409,123,124,82,253,254,122,125,126,127,128',
+'129,130,111,112,113,114,115,117,410,118,253,254,55,163,289,123,124,82',
+'54,288,122,125,126,127,128,129,130,56,415,171,13,14,15,16,17,18,19,20',
+'21,22,26,28,30,31,32,33,34,253,254,253,254,251,252,261,171,211,212,285',
+'164,165,172,284,173,174,175,176,177,178,179,180,149,181,237,238,239',
+'240,241,242,243,244,245,246,247,164,165,172,283,173,174,175,176,177',
+'178,179,180,149,181,111,112,113,114,115,117,282,118,251,252,389,163',
+'389,123,124,82,251,252,122,125,126,127,128,129,130,111,112,113,114,115',
+'117,101,118,67,82,55,163,64,123,124,82,54,63,122,125,126,127,128,129',
+'130,56,55,171,55,55,294,280,54,298,54,54,54,279,430,431,432,56,433,56',
+'56,56,365,436,278,263,275,264,171,273,270,48,164,165,172,444,173,174',
+'175,176,177,178,179,180,149,181,269,3,,,,,,,,,,164,165,172,,173,174',
+'175,176,177,178,179,180,149,181,111,112,113,114,115,117,,118,,,,163',
+',123,124,82,,,122,125,126,127,128,129,130,111,112,113,114,115,117,,118',
+',,,148,,123,124,,,,122,125,126,127,128,129,130,,,171,111,112,113,114',
+'115,117,,118,,,,148,,123,124,,,,122,125,126,127,128,129,130,,,,164,165',
+'172,,173,174,175,176,177,178,179,180,149,181,,,,,,,111,112,113,114,115',
+'117,,118,,411,,148,,123,124,,,149,122,125,126,127,128,129,130,,,,111',
+'112,113,114,115,117,,118,,,,148,,123,124,,,149,122,125,126,127,128,129',
+'130,111,112,113,114,115,117,,118,,,,148,,123,124,,,,122,125,126,127',
+'128,129,130,,,171,,,,,,,,,,,,,149,,111,112,113,114,115,117,,118,,,171',
+'148,,123,124,,,,122,125,126,127,128,129,130,,149,,,,,,,,111,112,113',
+'114,115,117,,118,,,,148,,123,124,146,398,149,122,125,126,127,128,129',
+'130,111,112,113,114,115,117,,118,,,,148,,123,124,,,,122,125,126,127',
+'128,129,130,111,112,113,114,115,117,,118,,149,,148,,123,124,389,,,122',
+'125,126,127,128,129,130,,,,147,,,111,112,113,114,115,117,,118,,,,148',
+'149,123,124,,,,122,125,126,127,128,129,130,111,112,113,114,115,117,',
+'118,,379,,148,149,123,124,,,,122,125,126,127,128,129,130,,,,,,,,,,,',
+',149,,,,,111,112,113,114,115,117,,118,,,,148,,123,124,,,,122,125,126',
+'127,128,129,130,,149,,,,,,,,,,,,,,,,,,,,,,,,,149,171,9,10,11,12,13,14',
+'15,16,17,18,19,20,21,22,26,28,30,31,32,33,34,35,36,37,38,111,112,113',
+'114,115,117,,118,,,,148,,123,124,149,,,122,125,126,127,128,129,130,111',
+'112,113,114,115,117,,118,,,,148,,123,124,146,,,122,125,126,127,128,129',
+'130,111,112,113,114,115,117,,118,,,,148,,123,124,,,,122,125,126,127',
+'128,129,130,,111,112,113,114,115,117,,118,,,,148,,123,124,,,149,122',
+'125,126,127,128,129,130,,,147,,,111,112,113,114,115,117,,118,,,,148',
+'149,123,124,,,,122,125,126,127,128,129,130,111,112,113,114,115,117,',
+'118,,,,148,149,123,124,,,,122,125,126,127,128,129,130,,111,112,113,114',
+'115,117,,118,,,,148,149,123,124,,,,122,125,126,127,128,129,130,111,112',
+'113,114,115,117,,118,,,,148,,123,124,146,,149,122,125,126,127,128,129',
+'130,111,112,113,114,115,117,427,118,,,,148,,123,124,,,149,122,125,126',
+'127,128,129,130,,111,112,113,114,115,117,,118,,,,148,,123,124,,,149',
+'122,125,126,127,128,129,130,,,147,,,111,112,113,114,115,117,,118,,185',
+',148,149,123,124,,,,122,125,126,127,128,129,130,111,112,113,114,115',
+'117,,118,,,,148,149,123,124,,,,122,125,126,127,128,129,130,,111,112',
+'113,114,115,117,,118,,,,148,149,123,124,,,,122,125,126,127,128,129,130',
+'111,112,113,114,115,117,,118,,,,148,,123,124,,,149,122,125,126,127,128',
+'129,130,111,112,113,114,115,117,,118,,,,148,,123,124,,,149,122,125,126',
+'127,128,129,130,,111,112,113,114,115,117,,118,,,,148,,123,124,,,149',
+'122,125,126,127,128,129,130,111,112,113,114,115,117,,118,,,,148,,123',
+'124,,,149,122,125,126,127,128,129,130,111,112,113,114,115,117,,118,',
+',,148,,123,124,,,149,122,125,126,127,128,129,130,,111,112,113,114,115',
+'117,,118,,,,148,,123,124,,,149,122,125,126,127,128,129,130,111,112,113',
+'114,115,117,,118,,,,148,,123,124,,,149,122,125,126,127,128,129,130,111',
+'112,113,114,115,117,,118,,,,148,,123,124,,,149,122,125,126,127,128,129',
+'130,,111,112,113,114,115,117,,118,,,,148,,123,124,,,149,122,125,126',
+'127,128,129,130,111,112,113,114,115,117,,118,,,,148,,123,124,,,149,122',
+'125,126,127,128,129,130,111,112,113,114,115,117,,118,,,,148,,123,124',
+',,149,122,125,126,127,128,129,130,,111,112,113,114,115,117,,118,,,,148',
+',123,124,,,149,122,125,126,127,128,129,130,111,112,113,114,115,117,',
+'118,,,,148,,123,124,,,149,122,125,126,127,128,129,130,111,112,113,114',
+'115,117,,118,,,,148,,123,124,146,,149,122,125,126,127,128,129,130,,111',
+'112,113,114,115,117,,118,,,,148,,123,124,,,149,122,125,126,127,128,129',
+'130,,,,,,,,,,,,,,,,,,149,,,,,,,,,,147,,,111,112,113,114,115,117,,118',
+',,,148,149,123,124,,,,122,125,126,127,128,129,130,,111,112,113,114,115',
+'117,,118,,,,148,149,123,124,,,,122,125,126,127,128,129,130,,,,,,,13',
+'14,15,16,17,18,19,20,21,22,26,28,30,31,32,33,34,,,111,112,113,114,115',
+'117,,118,,,,148,,123,124,,,149,122,125,126,127,128,129,130,,111,112',
+'113,114,115,231,,118,,,,148,,123,124,,,149,122,125,126,127,128,129,130',
+'111,112,113,114,115,233,,118,,,,148,,123,124,,,,122,125,126,127,128',
+'129,130,111,112,113,114,115,233,,118,,,,148,,123,124,,,149,122,125,126',
+'127,128,129,130,,,,,,,,,,,,,111,112,113,114,115,117,149,118,,,,148,',
+'123,124,,,,122,125,126,127,128,129,130,111,112,113,114,115,117,149,118',
+',,,148,,123,124,,,,122,125,126,127,128,129,130,,,,,,,149,13,14,15,16',
+'17,18,19,20,21,22,26,28,30,31,32,33,34,,,111,112,113,114,115,117,,118',
+',,,148,,123,124,,,149,122,125,126,127,128,129,130,111,112,113,114,115',
+'117,327,118,,,,148,,123,124,,,149,122,125,126,127,128,129,130,,,,,,',
+',13,14,15,16,17,18,19,20,21,22,26,28,30,31,32,33,34,,,111,112,113,114',
+'115,117,,118,,,,148,,123,124,,,149,122,125,126,127,128,129,130,111,112',
+'113,114,115,117,,118,,,,148,,123,124,,,149,122,125,126,127,128,129,130',
+'111,112,113,114,115,117,,118,,,,148,,123,124,,,,122,125,126,127,128',
+'129,130,,111,112,113,114,115,117,429,118,,,,148,,123,124,,,149,122,125',
+'126,127,128,129,130,,287,,,,111,112,113,114,115,117,,118,,,,148,149',
+'123,124,146,442,,122,125,126,127,128,129,130,111,112,113,114,115,117',
+',118,,,,148,149,123,124,,,,122,125,126,127,128,129,130,,111,112,113',
+'114,115,117,,118,,,,148,149,123,124,,,,122,125,126,127,128,129,130,',
+',147,,,,,,,,,,,,,,46,149,,,,,,,,,,,,,,,,,,,,,,,,,149,,,46,,,,,,,,,,',
+',,,,,,,,,,,,149,45,9,10,11,12,13,14,15,16,17,18,19,20,21,22,26,28,30',
+'31,32,33,34,35,36,37,38,,,47,45,9,10,11,12,13,14,15,16,17,18,19,20,21',
+'22,26,28,30,31,32,33,34,35,36,37,38,,41,47,294,375,,298,,,54,,,,,,,',
+',56,,,,,,,,,,325,375,,298,,,,,,,,,,,,56,,,,,,,,9,10,11,12,13,14,15,16',
+'17,18,19,20,21,22,26,28,30,31,32,33,34,35,36,37,38,9,10,11,12,13,14',
+'15,16,17,18,19,20,21,22,26,28,30,31,32,33,34,35,36,37,38,188,,,,,192',
+',,,,,,,,,,,,,,,,,,,413,,,,,,,,,,,,,,,,,,,,,,9,10,11,12,13,14,15,16,17',
+'18,19,20,21,22,26,28,30,31,32,33,34,35,36,37,38,9,10,11,12,13,14,15',
+'16,17,18,19,20,21,22,26,28,30,31,32,33,34,35,36,37,38,371,9,10,11,12',
+'13,14,15,16,17,18,19,20,21,22,26,28,30,31,32,33,34,35,36,37,38,,,,,',
+'205,,,,,,,,,,,,9,10,11,12,13,14,15,16,17,18,19,20,21,22,26,28,30,31',
+'32,33,34,35,36,37,38,9,10,11,12,13,14,15,16,17,18,19,20,21,22,26,28',
+'30,31,32,33,34,35,36,37,38,307,,,,,,,,,,,,,,,,,,,,,,,,,381,,,,,,,,,',
+',,9,10,11,12,13,14,15,16,17,18,19,20,21,22,26,28,30,31,32,33,34,35,36',
+'37,38,9,10,11,12,13,14,15,16,17,18,19,20,21,22,26,28,30,31,32,33,34',
+'35,36,37,38,302,9,10,11,12,13,14,15,16,17,18,19,20,21,22,26,28,30,31',
+'32,33,34,35,36,37,38,,,,,,,,,,,,9,10,11,12,13,14,15,16,17,18,19,20,21',
+'22,26,28,30,31,32,33,34,35,36,37,38,9,10,11,12,13,14,15,16,17,18,19',
+'20,21,22,26,28,30,31,32,33,34,35,36,37,38,9,10,11,12,13,14,15,16,17',
+'18,19,20,21,22,26,28,30,31,32,33,34,35,36,37,38,9,10,11,12,13,14,15',
+'16,17,18,19,20,21,22,26,28,30,31,32,33,34,35,36,37,38,9,10,11,12,13',
+'14,15,16,17,18,19,20,21,22,26,28,30,31,32,33,34,35,36,37,38,9,10,11',
+'12,13,14,15,16,17,18,19,20,21,22,26,28,30,31,32,33,34,35,36,37,38,9',
+'10,11,12,13,14,15,16,17,18,19,20,21,22,26,28,30,31,32,33,34,35,36,37',
+'38' ]
+        racc_action_table = arr = ::Array.new(3198, nil)
         idx = 0
         clist.each do |str|
@@ -424,133 +459,147 @@
 
 clist = [
-'208,208,208,208,208,208,24,208,23,112,211,208,53,208,208,295,208,208',
-'208,208,208,208,208,209,209,209,209,209,209,93,209,130,130,296,209,46',
-'209,209,170,209,209,209,209,209,209,209,215,297,24,211,23,53,53,187',
-'187,187,187,187,187,46,187,112,112,48,187,298,187,187,93,187,187,187',
-'187,187,187,187,48,170,285,285,88,215,215,215,215,215,215,215,215,215',
-'215,164,301,208,187,187,187,187,187,187,187,187,187,187,187,187,83,283',
-'187,187,187,187,283,283,273,164,209,392,392,392,392,392,392,273,392',
-'99,257,82,392,271,392,392,271,392,392,392,392,392,392,392,179,179,179',
-'179,179,179,187,179,316,99,257,179,50,179,179,50,179,179,179,179,179',
-'179,179,192,192,192,192,192,192,49,192,286,286,1,192,49,192,192,320',
-'192,192,192,192,192,192,192,193,193,193,193,193,193,345,193,68,250,322',
-'193,250,193,193,345,193,193,193,193,193,193,193,49,392,246,330,178,246',
-'330,178,246,390,390,390,390,390,390,78,390,178,78,325,390,328,390,390',
-'179,390,390,390,390,390,390,390,150,158,331,150,287,287,150,158,288',
-'288,246,289,289,150,158,192,390,333,390,390,390,390,390,390,390,390',
-'390,390,390,390,390,284,390,390,390,390,284,284,193,390,67,390,390,390',
-'390,64,390,390,390,390,390,390,126,129,129,129,129,126,126,290,290,337',
-'390,390,390,390,390,390,390,390,390,379,379,379,379,379,379,62,379,293',
-'293,61,379,352,379,379,353,379,379,379,379,379,379,379,378,378,378,378',
-'378,378,354,378,127,127,355,378,356,378,378,357,378,378,378,378,378',
-'378,378,194,194,194,194,194,194,363,194,367,30,369,194,22,194,194,14',
-'194,194,194,194,194,194,194,195,195,195,195,195,195,380,195,135,135',
-'385,195,387,195,195,388,195,195,195,195,195,195,195,12,379,391,30,395',
-'30,30,30,30,30,30,30,30,30,30,30,30,92,183,30,30,30,30,92,378,30,262',
-'74,4,2,92,72,262,74,4,128,128,72,3,262,74,4,182,180,72,176,175,194,173',
-'30,30,30,30,30,30,30,30,113,168,113,155,113,113,113,291,291,291,291',
-'154,2,195,2,2,2,2,2,2,2,2,2,2,2,2,148,146,2,2,2,2,144,2,2,196,196,196',
-'196,196,196,142,196,140,134,133,196,132,196,196,131,196,196,196,196',
-'196,196,196,2,2,2,2,2,2,2,2,213,377,377,377,377,377,377,229,377,230',
-'232,233,377,234,377,377,236,377,377,377,377,377,377,377,340,216,172',
-'238,52,239,340,216,172,240,52,242,109,340,216,172,377,52,377,377,377',
-'377,377,377,377,377,377,377,377,377,377,103,377,377,377,377,102,96,196',
-'377,95,377,377,377,377,89,377,377,377,377,377,377,292,292,292,292,276',
-'279,294,,,,377,377,377,377,377,377,377,377,377,169,169,169,169,169,169',
-',169,,,,169,,169,169,,169,169,169,169,169,169,169,,,376,376,376,376',
-'376,376,,376,,,,376,,376,376,,376,376,376,376,376,376,376,,,,,,,,,,',
-',,,,,,376,,376,376,376,376,376,376,376,376,376,376,376,376,376,,376',
-'376,376,376,,,,376,,376,376,376,376,169,376,376,376,376,376,376,,,,',
-',,,,,,376,376,376,376,376,376,376,376,376,359,359,359,359,359,359,,359',
-',,,359,,359,359,,359,359,359,359,359,359,359,,,,,,,,,,,,,,,,,359,,359',
-'359,359,359,359,359,359,359,359,359,359,359,359,,359,359,359,359,,,',
-'359,,359,359,359,359,,359,359,359,359,359,359,,,,,,,,,,,359,359,359',
-'359,359,359,359,359,359,197,197,197,197,197,197,,197,,,,197,,197,197',
-',197,197,197,197,197,197,197,348,348,348,348,348,348,,348,,,,348,,348',
-'348,,348,348,348,348,348,348,348,344,344,344,344,344,344,,344,,,,344',
-',344,344,,344,344,344,344,344,344,344,189,189,189,189,189,189,,189,',
-',,189,,189,189,,189,189,189,189,189,189,189,,197,,,,,,,,198,198,198',
-'198,198,198,,198,,,,198,,198,198,348,198,198,198,198,198,198,198,334',
-'334,334,334,334,334,,334,,334,,334,,334,334,344,334,334,334,334,334',
-'334,334,,,,,,,,321,321,321,321,321,321,,321,189,,,321,,321,321,,321',
-'321,321,321,321,321,321,,,,,,,,,,,,,,,,,321,198,321,321,321,321,321',
-'321,321,321,321,321,321,321,321,,321,321,321,321,,,,321,334,321,321',
-'321,321,,321,321,321,321,321,321,,,,,,,,,,,321,321,321,321,321,321,321',
-'321,321,319,319,319,319,319,319,,319,,,,319,,319,319,,319,319,319,319',
-'319,319,319,,,,,,,,,,,,,,,,,319,,319,319,319,319,319,319,319,319,319',
-'319,319,319,319,,319,319,319,319,,,,319,,319,319,319,319,,319,319,319',
-'319,319,319,,,,,,,,,,,319,319,319,319,319,319,319,319,319,396,396,396',
-'396,396,396,,396,,,,396,,396,396,,396,396,396,396,396,396,396,,,,,,',
-',,,,,,,,,,396,,396,396,396,396,396,396,396,396,396,396,396,396,396,',
-'396,396,396,396,,,,396,,396,396,396,396,,396,396,396,396,396,396,,,',
-',,,,,,,396,396,396,396,396,396,396,396,396,318,318,318,318,318,318,',
-'318,,,,318,,318,318,,318,318,318,318,318,318,318,317,317,317,317,317',
-'317,,317,,,,317,,317,317,,317,317,317,317,317,317,317,75,75,75,75,75',
-'75,,75,,,,75,,75,75,,75,75,75,75,75,75,75,315,315,315,315,315,315,,315',
-',,,315,,315,315,,315,315,315,315,315,315,315,,318,,,,,,75,,,,,,75,80',
-'80,80,80,80,80,,80,,80,317,80,,80,80,,80,80,80,80,80,80,80,181,181,181',
-'181,181,181,,181,,,75,181,,181,181,,181,181,181,181,181,181,181,314',
-'314,314,314,314,314,,314,,,315,314,,314,314,,314,314,314,314,314,314',
-'314,302,302,302,302,302,302,,302,,,,302,,302,302,,302,302,302,302,302',
-'302,302,,80,,,,,,,,199,199,199,199,199,199,,199,,,,199,,199,199,181',
-'199,199,199,199,199,199,199,200,200,200,200,200,200,,200,,,,200,,200',
-'200,314,200,200,200,200,200,200,200,300,300,300,300,300,300,,300,,,',
-'300,,300,300,302,300,300,300,300,300,300,300,275,275,275,275,275,275',
-',275,,,,275,,275,275,,275,275,275,275,275,275,275,,199,,,,,,300,300',
-',,,,300,201,201,201,201,201,201,,201,,,200,201,,201,201,,201,201,201',
-'201,201,201,201,207,207,207,207,207,207,,207,,,300,207,,207,207,,207',
-'207,207,207,207,207,207,210,210,210,210,210,210,,210,,,275,210,,210',
-'210,,210,210,210,210,210,210,210,202,202,202,202,202,202,,202,,,,202',
-',202,202,,202,202,202,202,202,202,202,,201,,,,,,,,269,269,269,269,269',
-'269,,269,,,,269,,269,269,207,269,269,269,269,269,269,269,203,203,203',
-'203,203,203,,203,,,,203,,203,203,210,203,203,203,203,203,203,203,204',
-'204,204,204,204,204,,204,,,,204,,204,204,202,204,204,204,204,204,204',
-'204,,,,,,,,,,143,143,143,143,143,143,,143,,,,143,,143,143,269,143,143',
-'143,143,143,143,143,,,,,,,,,,,,,,,,203,143,,143,143,143,143,143,143',
-'143,143,143,143,143,143,143,143,143,143,143,143,,,204,143,,143,143,143',
-'143,,143,143,143,143,143,143,,,,,,,,,,,143,143,143,143,143,143,143,143',
-'143,251,251,251,251,251,251,,251,,251,,251,,251,251,,251,251,251,251',
-'251,251,251,110,110,110,110,110,110,,110,,,,110,,110,110,,110,110,110',
-'110,110,110,110,70,70,70,70,70,70,70,70,70,70,70,70,,,70,70,70,70,110',
-'110,110,110,110,110,110,110,110,110,110,110,,,110,110,110,110,,205,205',
-'205,205,205,205,,205,,,251,205,,205,205,,205,205,205,205,205,205,205',
-'206,206,206,206,206,206,,206,,,110,206,,206,206,,206,206,206,206,206',
-'206,206,114,114,114,114,114,114,,114,,,,114,,114,114,,114,114,114,114',
-'114,114,114,115,115,115,115,115,115,,115,,,,115,,115,115,,115,115,115',
-'115,115,115,115,,205,,,,,,,,116,116,116,116,116,116,,116,,,,116,,116',
-'116,206,116,116,116,116,116,116,116,117,117,117,117,117,117,,117,,,',
-'117,,117,117,114,117,117,117,117,117,117,117,139,139,139,139,139,139',
-',139,,,,139,,139,139,115,139,139,139,139,139,139,139,241,241,241,241',
-'241,241,,241,,,,241,,241,241,,241,241,241,241,241,241,241,,116,,,,,',
-'139,,,,,,139,272,272,241,272,235,235,235,235,235,235,117,235,,272,,235',
-',235,235,,235,235,235,235,235,235,235,,,,,,,139,,,272,272,272,272,272',
-'272,272,272,272,272,272,272,,,272,272,272,272,,,241,231,231,231,231',
-'231,231,,231,,,,231,,231,231,,231,231,231,231,231,231,231,272,272,272',
-'272,272,272,272,272,,,,,,,,,231,235,231,231,231,231,231,231,231,231',
-'231,231,231,231,231,,231,231,231,231,,,,231,,231,231,231,231,,231,231',
-'231,231,231,231,335,,,,,,,,,,231,231,231,231,231,231,231,231,231,247',
-'247,,247,,,247,,,,,,,247,,,335,335,335,335,335,335,335,335,335,335,335',
-'335,,,335,335,335,335,,,247,247,247,247,247,247,247,247,247,247,247',
-'247,,,247,247,247,247,81,,,,,,335,335,335,335,335,335,335,335,,,,,,',
-',,245,,,,247,247,247,247,247,247,247,247,,81,81,81,81,81,81,81,81,81',
-'81,81,81,,,81,81,81,81,245,245,245,245,245,245,245,245,245,245,245,245',
-',,245,245,245,245,,,,,,,,,81,81,81,81,81,81,81,81,,,,,,,,,,,245,245',
-'245,245,245,245,245,245,5,5,5,5,5,5,5,5,5,5,5,5,,,5,5,5,5,252,252,252',
-'252,252,252,252,252,252,252,252,252,,252,252,252,252,252,,,,,,,,,5,5',
-'5,5,5,5,5,5,,,,,,,,,,,252,252,252,252,252,252,252,252,90,90,90,90,90',
-'90,90,90,90,90,90,90,,90,90,90,90,90,153,153,153,153,153,153,153,153',
-'153,153,153,153,,,153,153,153,153,,,,,,,,,90,90,90,90,90,90,90,90,,',
-',,,,,,,,153,153,153,153,153,153,153,153,87,87,87,87,87,87,87,87,87,87',
-'87,87,,,87,87,87,87,86,86,86,86,86,86,86,86,86,86,86,86,,,86,86,86,86',
-',,,,,,,,87,87,87,87,87,87,87,87,,,,,,,,,,,86,86,86,86,86,86,86,86,156',
-'156,156,156,156,156,156,156,156,156,156,156,,156,156,156,156,156,65',
-'65,65,65,65,65,65,65,65,65,65,65,,,65,65,65,65,,,,,,,,,156,156,156,156',
-'156,156,156,156,,,,,,,,,,,65,65,65,65,65,65,65,65,159,159,159,159,159',
-'159,159,159,159,159,159,159,,159,159,159,159,159,7,7,7,7,7,7,7,7,7,7',
-'7,7,,,7,7,7,7,,,,,,,,,159,159,159,159,159,159,159,159,,,,,,,,,,,7,7',
-'7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,,,6,6,6,6,36,36,36,36,36,36,36,36',
-'36,36,36,36,,,36,36,36,36,,,,,,,,,6,6,6,6,6,6,6,6,71,71,71,71,71,71',
-'71,71,71,71,71,71,,,71,71,71,71' ]
-        racc_action_check = arr = ::Array.new(2877, nil)
+'440,440,440,440,440,440,293,440,56,293,52,440,293,440,440,440,52,139',
+'440,440,440,440,440,440,440,438,438,438,438,438,438,106,438,354,326',
+'103,438,65,438,438,438,151,326,438,438,438,438,438,438,438,88,29,440',
+'31,51,29,354,31,109,56,56,56,120,207,286,120,106,120,293,120,120,120',
+'52,328,212,324,151,438,324,212,51,440,440,440,328,440,440,440,440,440',
+'440,440,440,440,440,318,110,49,207,286,318,88,88,88,142,142,438,438',
+'438,31,438,438,438,438,438,438,438,438,438,438,436,436,436,436,436,436',
+'304,436,120,120,120,436,49,436,436,436,428,362,436,436,436,436,436,436',
+'436,98,116,428,362,304,316,98,227,340,222,316,309,222,340,340,98,304',
+'309,167,167,167,167,167,167,222,167,309,436,226,167,333,167,167,167',
+'167,98,167,167,167,167,167,167,167,394,4,297,309,339,297,334,4,225,339',
+'339,394,66,436,436,436,4,436,436,436,436,436,436,436,436,436,436,167',
+'167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167',
+'167,167,167,167,167,167,167,167,267,267,101,167,167,167,95,167,167,167',
+'167,167,167,167,167,167,167,429,429,429,429,429,429,364,429,68,373,94',
+'429,373,429,429,429,87,364,429,429,429,429,429,429,429,427,427,427,427',
+'427,427,187,427,71,83,217,427,83,427,427,427,217,187,427,427,427,427',
+'427,427,427,217,269,429,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75',
+'75,75,133,53,221,426,53,133,133,427,418,418,291,429,429,429,426,429',
+'429,429,429,429,429,429,429,429,429,137,137,350,220,136,136,136,136',
+'214,214,351,427,427,427,220,427,427,427,427,427,427,427,427,427,427',
+'175,175,175,175,175,175,363,175,215,215,352,175,353,175,175,175,218',
+'363,175,175,175,175,175,175,175,76,76,76,76,76,76,76,76,76,76,76,76',
+'76,76,76,76,76,425,82,82,82,82,82,82,274,82,357,175,425,82,283,82,82',
+'82,82,73,82,82,82,82,82,82,82,72,201,347,347,347,347,209,201,348,348',
+'348,348,365,175,175,175,201,175,175,175,175,175,175,175,175,175,175',
+'82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82',
+'82,82,82,349,349,198,82,82,82,197,82,82,82,82,82,82,82,82,82,82,273',
+'273,273,273,273,273,371,273,135,135,189,273,374,273,273,273,346,346',
+'273,273,273,273,273,273,273,404,404,404,404,404,404,376,404,345,345',
+'79,404,186,404,404,404,79,184,404,404,404,404,404,404,404,79,380,273',
+'47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,344,344,343,343,342',
+'342,138,404,99,99,179,273,273,273,178,273,273,273,273,273,273,273,273',
+'273,273,131,131,131,131,131,131,131,131,131,131,131,404,404,404,177',
+'404,404,404,404,404,404,404,404,404,404,402,402,402,402,402,402,176',
+'402,341,341,395,402,396,402,402,402,134,134,402,402,402,402,402,402',
+'402,275,275,275,275,275,275,102,275,27,403,77,275,25,275,275,275,77',
+'23,275,275,275,275,275,275,275,77,55,402,152,384,191,174,55,191,152',
+'384,191,173,408,412,414,55,416,152,384,191,281,422,172,140,165,141,275',
+'163,149,3,402,402,402,437,402,402,402,402,402,402,402,402,402,402,147',
+'1,,,,,,,,,,275,275,275,,275,275,275,275,275,275,275,275,275,275,360',
+'360,360,360,360,360,,360,,,,360,,360,360,360,,,360,360,360,360,360,360',
+'360,249,249,249,249,249,249,,249,,,,249,,249,249,,,,249,249,249,249',
+'249,249,249,,,360,383,383,383,383,383,383,,383,,,,383,,383,383,,,,383',
+'383,383,383,383,383,383,,,,360,360,360,,360,360,360,360,360,360,360',
+'360,360,360,,,,,,,377,377,377,377,377,377,,377,,377,,377,,377,377,,',
+'249,377,377,377,377,377,377,377,,,,367,367,367,367,367,367,,367,,,,367',
+',367,367,,,383,367,367,367,367,367,367,367,366,366,366,366,366,366,',
+'366,,,,366,,366,366,,,,366,366,366,366,366,366,366,,,367,,,,,,,,,,,',
+',377,,393,393,393,393,393,393,,393,,,366,393,,393,393,,,,393,393,393',
+'393,393,393,393,,367,,,,,,,,356,356,356,356,356,356,,356,,,,356,,356',
+'356,356,356,366,356,356,356,356,356,356,356,330,330,330,330,330,330',
+',330,,,,330,,330,330,,,,330,330,330,330,330,330,330,322,322,322,322',
+'322,322,,322,,393,,322,,322,322,322,,,322,322,322,322,322,322,322,,',
+',356,,,310,310,310,310,310,310,,310,,,,310,356,310,310,,,,310,310,310',
+'310,310,310,310,298,298,298,298,298,298,,298,,298,,298,330,298,298,',
+',,298,298,298,298,298,298,298,,,,,,,,,,,,,322,,,,,282,282,282,282,282',
+'282,,282,,,,282,,282,282,,,,282,282,282,282,282,282,282,,310,,,,,,,',
+',,,,,,,,,,,,,,,,,298,282,282,282,282,282,282,282,282,282,282,282,282',
+'282,282,282,282,282,282,282,282,282,282,282,282,282,282,280,280,280',
+'280,280,280,,280,,,,280,,280,280,282,,,280,280,280,280,280,280,280,146',
+'146,146,146,146,146,,146,,,,146,,146,146,146,,,146,146,146,146,146,146',
+'146,278,278,278,278,278,278,,278,,,,278,,278,278,,,,278,278,278,278',
+'278,278,278,,397,397,397,397,397,397,,397,,,,397,,397,397,,,280,397',
+'397,397,397,397,397,397,,,146,,,405,405,405,405,405,405,,405,,,,405',
+'146,405,405,,,,405,405,405,405,405,405,405,271,271,271,271,271,271,',
+'271,,,,271,278,271,271,,,,271,271,271,271,271,271,271,,266,266,266,266',
+'266,266,,266,,,,266,397,266,266,,,,266,266,266,266,266,266,266,80,80',
+'80,80,80,80,,80,,,,80,,80,80,80,,405,80,80,80,80,80,80,80,406,406,406',
+'406,406,406,406,406,,,,406,,406,406,,,271,406,406,406,406,406,406,406',
+',265,265,265,265,265,265,,265,,,,265,,265,265,,,266,265,265,265,265',
+'265,265,265,,,80,,,85,85,85,85,85,85,,85,,85,,85,80,85,85,,,,85,85,85',
+'85,85,85,85,264,264,264,264,264,264,,264,,,,264,406,264,264,,,,264,264',
+'264,264,264,264,264,,263,263,263,263,263,263,,263,,,,263,265,263,263',
+',,,263,263,263,263,263,263,263,262,262,262,262,262,262,,262,,,,262,',
+'262,262,,,85,262,262,262,262,262,262,262,261,261,261,261,261,261,,261',
+',,,261,,261,261,,,264,261,261,261,261,261,261,261,,260,260,260,260,260',
+'260,,260,,,,260,,260,260,,,263,260,260,260,260,260,260,260,259,259,259',
+'259,259,259,,259,,,,259,,259,259,,,262,259,259,259,259,259,259,259,258',
+'258,258,258,258,258,,258,,,,258,,258,258,,,261,258,258,258,258,258,258',
+'258,,257,257,257,257,257,257,,257,,,,257,,257,257,,,260,257,257,257',
+'257,257,257,257,256,256,256,256,256,256,,256,,,,256,,256,256,,,259,256',
+'256,256,256,256,256,256,255,255,255,255,255,255,,255,,,,255,,255,255',
+',,258,255,255,255,255,255,255,255,,254,254,254,254,254,254,,254,,,,254',
+',254,254,,,257,254,254,254,254,254,254,254,253,253,253,253,253,253,',
+'253,,,,253,,253,253,,,256,253,253,253,253,253,253,253,252,252,252,252',
+'252,252,,252,,,,252,,252,252,,,255,252,252,252,252,252,252,252,,251',
+'251,251,251,251,251,,251,,,,251,,251,251,,,254,251,251,251,251,251,251',
+'251,250,250,250,250,250,250,,250,,,,250,,250,250,,,253,250,250,250,250',
+'250,250,250,389,389,389,389,389,389,,389,,,,389,,389,389,389,,252,389',
+'389,389,389,389,389,389,,248,248,248,248,248,248,,248,,,,248,,248,248',
+',,251,248,248,248,248,248,248,248,,,,,,,,,,,,,,,,,,250,,,,,,,,,,389',
+',,117,117,117,117,117,117,,117,,,,117,389,117,117,,,,117,117,117,117',
+'117,117,117,,236,236,236,236,236,236,,236,,,,236,248,236,236,,,,236',
+'236,236,236,236,236,236,,,,,,,117,117,117,117,117,117,117,117,117,117',
+'117,117,117,117,117,117,117,,,121,121,121,121,121,121,,121,,,,121,,121',
+'121,,,117,121,121,121,121,121,121,121,,122,122,122,122,122,122,,122',
+',,,122,,122,122,,,236,122,122,122,122,122,122,122,123,123,123,123,123',
+'123,,123,,,,123,,123,123,,,,123,123,123,123,123,123,123,124,124,124',
+'124,124,124,,124,,,,124,,124,124,,,121,124,124,124,124,124,124,124,',
+',,,,,,,,,,,233,233,233,233,233,233,122,233,,,,233,,233,233,,,,233,233',
+'233,233,233,233,233,223,223,223,223,223,223,123,223,,,,223,,223,223',
+',,,223,223,223,223,223,223,223,,,,,,,124,233,233,233,233,233,233,233',
+'233,233,233,233,233,233,233,233,233,233,,,231,231,231,231,231,231,,231',
+',,,231,,231,231,,,233,231,231,231,231,231,231,231,224,224,224,224,224',
+'224,224,224,,,,224,,224,224,,,223,224,224,224,224,224,224,224,,,,,,',
+',231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231',
+',,213,213,213,213,213,213,,213,,,,213,,213,213,,,231,213,213,213,213',
+'213,213,213,210,210,210,210,210,210,,210,,,,210,,210,210,,,224,210,210',
+'210,210,210,210,210,180,180,180,180,180,180,,180,,,,180,,180,180,,,',
+'180,180,180,180,180,180,180,,407,407,407,407,407,407,407,407,,,,407',
+',407,407,,,213,407,407,407,407,407,407,407,,180,,,,435,435,435,435,435',
+'435,,435,,,,435,210,435,435,435,435,,435,435,435,435,435,435,435,164',
+'164,164,164,164,164,,164,,,,164,180,164,164,,,,164,164,164,164,164,164',
+'164,,279,279,279,279,279,279,,279,,,,279,407,279,279,,,,279,279,279',
+'279,279,279,279,,,435,,,,,,,,,,,,,,41,435,,,,,,,,,,,,,,,,,,,,,,,,,164',
+',,2,,,,,,,,,,,,,,,,,,,,,,,279,41,41,41,41,41,41,41,41,41,41,41,41,41',
+'41,41,41,41,41,41,41,41,41,41,41,41,41,,,41,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,294,294,,294,,,294,,,,,,,,,294,,,,',
+',,,,,325,325,,325,,,,,,,,,,,,325,,,,,,,,294,294,294,294,294,294,294',
+'294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294',
+'294,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325',
+'325,325,325,325,325,325,325,325,325,86,,,,,86,,,,,,,,,,,,,,,,,,,,378',
+',,,,,,,,,,,,,,,,,,,,,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86',
+'86,86,86,86,86,86,86,86,86,378,378,378,378,378,378,378,378,378,378,378',
+'378,378,378,378,378,378,378,378,378,378,378,378,378,378,292,7,7,7,7',
+'7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,,,,,,96,,,,,,,,,,,,292,292',
+'292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292',
+'292,292,292,292,292,292,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96',
+'96,96,96,96,96,96,96,96,96,96,202,,,,,,,,,,,,,,,,,,,,,,,,,299,,,,,,',
+',,,,,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,299,299,299,299,299,299,299,299',
+'299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299',
+'199,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92',
+'92,92,92,,,,,,,,,,,,199,199,199,199,199,199,199,199,199,199,199,199',
+'199,199,199,199,199,199,199,199,199,199,199,199,199,8,8,8,8,8,8,8,8',
+'8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,196,196,196,196,196,196,196,196,196',
+'196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,6,6',
+'6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5',
+'5,5,5,5,5,5,5,5,5,5,5,5,5,5,93,93,93,93,93,93,93,93,93,93,93,93,93,93',
+'93,93,93,93,93,93,93,93,93,93,93,69,69,69,69,69,69,69,69,69,69,69,69',
+'69,69,69,69,69,69,69,69,69,69,69,69,69' ]
+        racc_action_check = arr = ::Array.new(3198, nil)
         idx = 0
         clist.each do |str|
@@ -562,425 +611,475 @@
 
 racc_action_pointer = [
-   nil,   173,   432,   442,   425,  2414,  2764,  2712,   nil,   nil,
-   nil,   nil,   363,   nil,   332,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   357,    -5,    -7,   nil,   nil,   nil,   nil,   nil,
-   366,   nil,   nil,   nil,   nil,   nil,  2782,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    18,   nil,    21,   162,
-   145,   nil,   548,    -8,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   267,   263,   nil,   231,  2642,   nil,   268,   139,   nil,
-  1860,  2816,   428,   nil,   424,  1315,   nil,   nil,   217,   nil,
-  1375,  2344,   119,    86,   nil,   nil,  2572,  2554,    39,   555,
-  2484,   nil,   414,    12,   nil,   549,   575,   nil,   nil,   108,
-   nil,   nil,   545,   487,   nil,   nil,   nil,   nil,   nil,   554,
-  1878,   nil,     2,   451,  1984,  2007,  2039,  2062,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   273,   322,   412,   265,
-    -2,   492,   473,   470,   468,   351,   nil,   nil,   nil,  2085,
-   497,   nil,   489,  1761,   482,   nil,   480,   nil,   470,   nil,
-   234,   nil,   nil,  2502,   431,   423,  2624,   nil,   235,  2694,
-   nil,   nil,   nil,   nil,    74,   nil,   nil,   nil,   449,   620,
-    21,   nil,   546,   439,   nil,   442,   441,   nil,   206,   138,
-   440,  1398,   433,   409,   nil,   nil,   nil,    51,   nil,   902,
-   nil,   nil,   161,   184,   356,   379,   494,   833,   934,  1476,
-  1499,  1582,  1651,  1706,  1729,  1938,  1961,  1605,    -2,    21,
-  1628,    -7,   nil,   518,   nil,     4,   545,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   527,
-   529,  2202,   530,   531,   500,  2149,   503,   nil,   541,   515,
-   519,  2108,   521,   nil,   nil,  2362,   204,  2291,   nil,   nil,
-   188,  1855,  2432,   nil,   nil,   nil,   nil,   109,   nil,   nil,
-   nil,   nil,   423,   nil,   nil,   nil,   nil,   nil,   nil,  1683,
-   nil,   122,  2140,   106,   nil,  1545,   596,   nil,   nil,   600,
-   nil,   nil,   nil,    87,   252,    57,   150,   218,   222,   225,
-   273,   439,   574,   287,   590,   -20,    -3,    10,    25,   nil,
-  1522,    84,  1444,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,  1421,  1338,    82,  1292,  1269,  1081,
-   138,   987,   155,   nil,   nil,   187,   nil,   nil,   218,   nil,
-   205,   235,   nil,   250,   957,  2271,   nil,   291,   nil,   nil,
-   544,   nil,   nil,   nil,   879,   184,   nil,   nil,   856,   nil,
-   nil,   nil,   283,   319,   333,   338,   306,   342,   nil,   739,
-   nil,   nil,   nil,   352,   nil,   nil,   nil,   355,   nil,   360,
-   nil,   nil,   nil,   nil,   nil,   nil,   645,   526,   333,   310,
-   317,   nil,   nil,   nil,   nil,   326,   nil,   385,   355,   nil,
-   216,   365,   115,   nil,   nil,   400,  1175,   nil ]
+   nil,   732,  2528,   716,   182,  3068,  3043,  2752,  2993,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   624,   nil,   619,   nil,   656,   nil,    38,
+   nil,    40,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,  2499,   nil,   nil,   nil,   nil,   nil,   510,   nil,    78,
+   nil,    37,     3,   322,   nil,   680,   -14,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    20,   183,   nil,   249,  3118,
+   nil,   278,   429,   421,   nil,   252,   344,   664,   nil,   544,
+  1392,   nil,   419,   285,   nil,  1473,  2701,   266,    28,   nil,
+   nil,   nil,  2932,  3093,   214,   193,  2819,   nil,   138,   576,
+   nil,   200,   654,    22,   nil,   nil,    12,   nil,   nil,    15,
+     1,   nil,   nil,   nil,   nil,   nil,   137,  1959,   nil,   nil,
+    55,  2035,  2061,  2086,  2111,   nil,   nil,   nil,   nil,   nil,
+   nil,   568,   nil,   306,   629,   495,   326,   318,   571,   -20,
+   672,   673,    64,   nil,   nil,   nil,  1235,   724,   nil,   702,
+   nil,    22,   682,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   672,  2431,   669,   nil,   161,   nil,   nil,
+   nil,   nil,   702,   691,   685,   376,   635,   612,   546,   542,
+  2350,   nil,   nil,   nil,   547,   nil,   545,   281,   nil,   507,
+   nil,   684,   nil,   nil,   nil,   nil,  3018,   451,   447,  2968,
+   nil,   440,  2881,   nil,   nil,   nil,   nil,    44,   nil,   410,
+  2325,   nil,    61,  2300,   343,   368,   nil,   286,   381,   nil,
+   348,   322,   147,  2173,  2249,   189,   160,   139,   nil,   nil,
+   nil,  2224,   nil,  2148,   nil,   nil,  1985,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  1904,   779,
+  1853,  1828,  1802,  1777,  1752,  1726,  1701,  1676,  1650,  1625,
+  1600,  1574,  1549,  1524,  1498,  1443,  1367,   223,   nil,   300,
+   nil,  1341,   nil,   514,   385,   659,   nil,   nil,  1260,  2457,
+  1210,   619,  1132,   379,   nil,   nil,    45,   nil,   nil,   nil,
+   nil,   325,  2794,    -1,  2604,   nil,   nil,   183,  1090,  2906,
+   nil,   nil,   nil,   nil,   107,   nil,   nil,   nil,   nil,   149,
+  1065,   nil,   nil,   nil,   nil,   nil,   137,   nil,    82,   nil,
+   nil,   nil,  1034,   nil,    68,  2629,    23,   nil,    65,   nil,
+  1009,   nil,   nil,   167,   186,   nil,   nil,   nil,   nil,   170,
+   131,   621,   567,   559,   557,   520,   503,   417,   423,   464,
+   334,   326,   350,   351,    14,   nil,   984,   421,   nil,   nil,
+   754,   nil,   129,   376,   256,   451,   908,   883,   nil,   nil,
+   nil,   510,   nil,   260,   520,   nil,   539,   855,  2726,   nil,
+   556,   nil,   nil,   807,   683,   nil,   nil,   nil,   nil,  1878,
+   nil,   nil,   nil,   950,   180,   629,   631,  1286,   nil,   nil,
+   nil,   nil,   634,   653,   539,  1316,  1417,  2376,   687,   nil,
+   nil,   nil,   689,   nil,   693,   nil,   649,   nil,   318,   nil,
+   nil,   nil,   622,   nil,   nil,   412,   323,   281,   128,   256,
+   nil,   nil,   nil,   nil,   nil,  2406,   118,   666,    23,   nil,
+    -2,   nil,   nil,   nil,   nil,   nil,   nil ]
 
 racc_action_default = [
-  -174,  -241,    -1,  -241,  -241,   -70,   -71,   -72,   -80,   -81,
-   -82,   -83,   -84,   -85,   -86,   -87,   -88,   -89,   -90,   -91,
-   -92,   -93,   -96,  -241,  -241,  -127,  -132,  -133,  -175,  -176,
-  -241,  -178,  -179,  -182,  -183,  -184,  -241,  -230,  -231,  -232,
-  -233,  -234,  -235,  -236,  -237,   398,  -241,   -76,   -78,  -241,
-  -135,  -137,  -241,  -143,   -73,   -84,   -86,   -74,   -75,  -181,
-  -180,   -98,  -241,  -101,  -114,  -241,  -117,  -241,  -126,  -177,
-  -105,  -107,  -241,   -69,  -241,  -241,  -188,  -189,  -134,  -136,
-  -241,  -241,  -241,  -144,  -145,   -94,  -241,  -241,   -84,   -85,
-  -241,  -115,  -241,  -241,  -128,  -130,  -241,  -106,  -108,  -241,
-  -186,   -77,   -78,    -2,    -3,    -4,    -5,    -6,    -7,    -8,
-  -241,   -10,   -12,   -23,  -241,  -241,  -241,  -241,   -29,   -30,
-   -31,   -32,   -33,   -34,   -35,   -37,   -41,   -44,   -47,   -52,
-   -55,   -57,   -59,   -61,   -63,   -65,   -68,   -79,  -168,  -241,
-  -241,  -238,  -241,  -241,  -241,  -140,  -241,  -142,  -147,  -149,
-  -153,  -138,  -146,  -241,   -84,   -85,  -241,   -99,  -241,  -241,
-  -120,  -119,  -113,  -116,  -241,  -121,  -123,  -124,  -241,  -241,
-  -241,  -185,  -241,  -241,   -11,  -241,  -241,   -67,  -154,   -20,
-  -241,  -241,  -241,  -241,   -18,   -19,   -24,  -241,   -25,  -241,
-   -27,   -28,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,
-  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,  -241,
-  -241,  -241,  -172,  -241,  -239,   -35,  -241,  -190,  -191,  -192,
-  -193,  -194,  -195,  -196,  -197,  -198,  -199,  -200,  -201,  -241,
-  -241,  -241,  -241,  -241,  -238,  -241,  -241,  -211,  -241,  -241,
-  -241,  -241,  -241,  -139,  -141,  -241,  -156,  -241,  -151,  -152,
-  -157,  -241,  -241,  -104,  -103,   -97,  -100,  -241,  -109,  -111,
-  -112,  -118,  -241,  -129,  -131,  -125,  -187,  -240,    -9,  -241,
-  -155,  -156,  -241,  -241,   -21,   -20,  -241,   -16,   -17,  -241,
-   -38,   -39,   -40,   -42,   -43,   -45,   -46,   -48,   -49,   -50,
-   -51,   -53,   -54,   -56,   -58,   -60,   -62,   -64,  -241,  -169,
-  -241,  -241,  -241,  -219,  -220,  -221,  -222,  -223,  -224,  -225,
-  -226,  -227,  -228,  -229,  -241,  -241,  -241,  -241,  -241,  -241,
-  -241,  -241,  -241,  -213,  -214,  -241,  -216,  -217,  -241,  -150,
-  -158,  -241,  -164,  -241,  -241,  -241,  -160,  -241,   -95,  -102,
-  -241,  -122,   -36,   -13,  -241,  -241,   -15,   -26,  -241,  -170,
-  -173,  -171,  -241,  -241,  -241,  -241,  -241,  -241,  -208,  -241,
-  -210,  -212,  -215,  -241,  -159,  -165,  -162,  -241,  -166,  -241,
-  -161,  -110,   -22,   -14,   -66,  -218,  -241,  -241,  -241,  -241,
-  -241,  -209,  -148,  -163,  -167,  -202,  -204,  -241,  -241,  -207,
-  -241,  -241,  -241,  -203,  -205,  -241,  -241,  -206 ]
+  -215,  -269,    -1,  -269,  -269,   -86,   -88,   -90,   -92,   -98,
+   -99,  -100,  -101,  -102,  -103,  -104,  -105,  -106,  -107,  -108,
+  -109,  -110,  -111,  -112,  -113,  -114,  -115,  -118,  -121,  -269,
+  -139,  -269,  -163,  -164,  -165,  -166,  -167,  -168,  -169,  -216,
+  -217,  -269,  -219,  -220,  -223,  -224,  -225,  -269,   447,  -269,
+   -94,   -96,  -269,  -171,  -173,  -269,  -180,   -87,  -112,  -114,
+   -89,   -91,   -93,  -222,  -221,  -120,  -269,  -124,  -138,  -269,
+  -142,  -269,  -155,  -158,  -218,  -130,  -132,  -269,   -85,  -269,
+  -269,  -229,  -269,  -170,  -172,  -269,  -269,  -269,  -181,  -182,
+  -184,  -116,  -269,  -269,  -112,  -113,  -269,  -140,  -269,  -269,
+  -159,  -161,  -269,  -269,  -129,  -131,  -269,  -227,   -95,   -96,
+    -2,    -3,    -4,    -5,    -6,    -7,    -8,  -269,   -10,   -12,
+   -25,  -269,  -269,  -269,  -269,   -31,   -32,   -33,   -34,   -35,
+   -36,   -37,   -39,   -43,   -46,   -49,   -54,   -57,   -59,   -61,
+   -63,   -65,   -67,   -69,   -97,  -209,  -269,  -269,  -265,  -269,
+   -82,  -269,  -269,  -230,  -231,  -232,  -233,  -234,  -235,  -236,
+  -237,  -238,  -239,  -265,  -269,  -269,  -243,  -269,  -245,  -247,
+  -248,  -249,  -269,  -269,  -269,  -269,  -269,  -269,  -269,  -269,
+  -269,  -268,   -37,   -84,  -269,  -176,  -269,  -269,  -179,  -186,
+  -188,  -192,  -193,  -174,  -183,  -185,  -269,  -112,  -113,  -269,
+  -122,  -269,  -269,  -145,  -144,  -137,  -141,  -269,  -146,  -148,
+  -269,  -151,  -269,  -269,  -269,  -269,  -226,  -269,  -269,   -11,
+  -269,  -269,  -195,  -269,  -269,  -269,  -269,  -269,   -19,   -20,
+   -26,  -269,   -27,  -269,   -29,   -30,  -269,   -71,   -72,   -73,
+   -74,   -75,   -76,   -77,   -78,   -79,   -80,   -81,  -269,  -269,
+  -269,  -269,  -269,  -269,  -269,  -269,  -269,  -269,  -269,  -269,
+  -269,  -269,  -269,  -269,  -269,  -269,  -269,  -269,  -213,  -269,
+  -266,  -269,  -250,  -269,  -269,  -269,  -244,  -246,  -269,  -269,
+  -269,  -269,  -269,  -269,  -261,  -262,  -269,  -263,  -175,  -177,
+  -178,  -269,  -269,  -197,  -269,  -190,  -191,  -198,  -269,  -269,
+  -128,  -127,  -119,  -123,  -269,  -133,  -135,  -136,  -143,  -269,
+  -269,  -149,  -153,  -160,  -162,  -152,  -269,  -156,  -269,  -228,
+  -267,    -9,  -269,  -196,  -197,  -269,  -269,   -14,  -269,   -23,
+  -269,   -17,   -18,  -269,  -269,   -70,   -40,   -41,   -42,   -44,
+   -45,   -47,   -48,   -50,   -51,   -52,   -53,   -55,   -56,   -58,
+   -60,   -62,   -64,   -66,  -269,  -210,  -269,  -269,   -83,  -240,
+  -269,  -242,  -269,  -269,  -269,  -269,  -269,  -269,  -260,  -264,
+  -194,  -269,  -189,  -199,  -269,  -205,  -269,  -269,  -269,  -201,
+  -269,  -117,  -125,  -269,  -269,  -147,  -150,  -154,  -157,  -269,
+   -38,   -13,   -15,  -269,  -269,   -28,  -269,  -269,  -211,  -214,
+  -212,  -241,  -269,  -269,  -269,  -269,  -269,  -269,  -269,  -200,
+  -206,  -203,  -269,  -207,  -269,  -202,  -269,  -134,  -269,   -24,
+   -16,   -68,  -251,  -253,  -254,  -269,  -269,  -269,  -269,  -269,
+  -187,  -204,  -208,  -126,   -21,  -269,  -269,  -269,  -269,  -256,
+  -269,  -258,   -22,  -252,  -255,  -257,  -259 ]
 
 racc_goto_table = [
-    48,     4,   144,   146,    54,    57,    58,   217,    84,    12,
-   136,   137,    78,   175,   258,   136,   273,   165,   188,   190,
-   191,   186,    72,    89,   256,    93,   176,   163,    70,     4,
-    33,   156,   249,    29,   283,   284,   302,    12,   152,    14,
-   330,     2,    71,   293,   155,    89,   215,    90,    89,   287,
-   288,   289,   290,   294,   170,   295,    97,    98,    33,    83,
-   270,    69,    70,    70,    92,   330,   296,    14,   100,   159,
-   102,   297,    88,   101,   136,   212,    71,    71,   285,   286,
-   150,    61,   274,   153,   276,   158,    92,    62,   166,    92,
-   175,   264,   175,   154,    88,   316,   163,    88,   252,   280,
-   281,   282,    70,   279,   136,   246,   291,   292,   257,    64,
-   164,   155,   345,   298,   155,   263,    71,    89,   180,   329,
-   256,   211,    28,    99,    76,   143,     1,   nil,   nil,   nil,
-   nil,   nil,   nil,   271,   215,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   325,   nil,   248,   nil,   nil,   nil,
-   nil,   nil,   158,   nil,   259,   158,   nil,   320,    92,   nil,
-   154,   nil,   nil,   154,   nil,   nil,    88,   nil,   266,   nil,
-   136,   nil,   nil,   337,   nil,   nil,   342,   nil,   274,    70,
-   nil,   nil,   nil,   358,   nil,   360,   136,   341,   nil,   nil,
-   nil,   nil,   nil,    71,   nil,   nil,   371,   nil,   nil,   nil,
-   nil,   nil,   246,   nil,   nil,   352,   nil,   nil,   nil,    78,
-   155,   nil,   102,   nil,   nil,   nil,   nil,   353,   354,   nil,
-   356,   357,   215,   381,   215,   nil,   nil,   271,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   136,   350,   nil,   nil,   nil,
-   385,   386,   nil,   nil,   150,   nil,   150,   372,   nil,   nil,
-   nil,   158,   nil,   nil,   393,   nil,   367,   369,   166,   154,
-   397,   nil,   215,   nil,   nil,   nil,   nil,   nil,   nil,   136,
-   nil,   150,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   215,
-   215,   387,   388,   374,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   215,   nil,   395,   nil,   nil,   nil,   215,
+    51,   144,   145,    81,   183,   182,   184,   281,   186,    23,
+   267,    95,   208,    83,   206,   305,   303,   313,   328,   169,
+    25,     4,   199,   230,    57,    60,    61,    62,    75,    89,
+    40,    99,   168,   221,   198,    95,   296,    77,    95,   220,
+   373,   182,   232,   234,   235,    65,    96,   207,    23,    76,
+   304,   366,   343,   344,   345,   346,    75,    75,    90,    25,
+     4,   194,   214,   215,    66,   104,   105,   323,   145,    74,
+   202,   373,   196,   107,    68,   109,    94,    76,    76,   347,
+   348,   339,   340,   183,   182,   274,   341,   342,    98,   108,
+   195,   236,   187,    88,   209,   372,   353,   352,    75,   197,
+    94,   152,   286,    94,   169,   359,    39,   361,   351,   106,
+   350,   201,    98,   349,     2,    98,   303,   277,   167,    76,
+   206,   313,   225,   313,   394,     1,   299,   nil,   nil,   183,
+   182,   311,   183,   182,   314,   406,   407,   nil,   198,   nil,
+   nil,   198,   nil,   nil,    95,   326,   329,   333,   109,   334,
+   336,   337,   338,   220,   nil,   220,   nil,   nil,   335,   nil,
+   nil,   nil,   nil,   nil,   293,   nil,   nil,   nil,   182,   182,
+   182,   182,   182,   182,   182,   182,   182,   182,   182,   182,
+   182,   182,   182,   182,   182,   182,   152,   295,   354,   nil,
+   nil,   nil,   401,   358,   nil,   324,   nil,   306,   417,   nil,
+   362,   363,   364,   197,   nil,   nil,   197,   nil,   nil,    94,
+   nil,   nil,    75,   319,    75,   201,   nil,   nil,   201,   367,
+   380,    98,   nil,   385,   390,   nil,   nil,   nil,   nil,   183,
+   182,   386,   nil,    76,   422,    76,   424,   nil,   nil,   nil,
+   nil,   198,   182,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   329,   418,    83,   nil,   nil,   nil,   nil,   439,
+   nil,   441,   nil,   nil,   nil,   nil,   nil,   293,   443,   nil,
+   445,   nil,   446,   nil,   nil,   nil,   nil,   399,   145,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   324,   412,
+   414,   152,   183,   182,   416,   209,   197,   nil,   nil,   nil,
+   nil,   145,   nil,   nil,   nil,   419,   421,   182,   201,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   425,   426,   428,
    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,   150,   nil,   259 ]
-
-racc_goto_check = [
-    32,    27,    25,    55,    27,    27,    27,    68,    53,    34,
-    24,    33,    54,     6,    44,    24,     8,    49,    10,    10,
-    10,    12,    43,    35,    41,    51,    13,    47,    30,    27,
-    26,    38,    58,    62,    14,    14,    77,    34,    53,    36,
-    59,     2,     9,    18,    35,    35,    10,    46,    35,    16,
-    16,    16,    16,    19,    51,    20,    43,    43,    26,     9,
-    58,    62,    30,    30,    27,    59,    21,    36,    32,    46,
-    32,    22,    34,    31,    24,    33,     9,     9,    15,    15,
-    27,    37,     6,    39,     6,    27,    27,    40,    32,    27,
-     6,    25,     6,    34,    34,    68,    47,    34,    38,    12,
-    12,    12,    30,    13,    24,    53,    17,    17,    42,    45,
-    48,    35,     8,     6,    35,    52,     9,    35,     9,    57,
-    41,    60,    61,    65,    66,    67,     1,   nil,   nil,   nil,
-   nil,   nil,   nil,    53,    10,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,     6,   nil,    32,   nil,   nil,   nil,
-   nil,   nil,    27,   nil,    32,    27,   nil,    25,    27,   nil,
-    34,   nil,   nil,    34,   nil,   nil,    34,   nil,    32,   nil,
-    24,   nil,   nil,    25,   nil,   nil,    12,   nil,     6,    30,
-   nil,   nil,   nil,    68,   nil,    68,    24,    49,   nil,   nil,
-   nil,   nil,   nil,     9,   nil,   nil,    44,   nil,   nil,   nil,
-   nil,   nil,    53,   nil,   nil,     6,   nil,   nil,   nil,    54,
-    35,   nil,    32,   nil,   nil,   nil,   nil,     6,     6,   nil,
-     6,     6,    10,    68,    10,   nil,   nil,    53,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,    24,    33,   nil,   nil,   nil,
-    68,    68,   nil,   nil,    27,   nil,    27,     6,   nil,   nil,
-   nil,    27,   nil,   nil,    68,   nil,    25,    55,    32,    34,
-    68,   nil,    10,   nil,   nil,   nil,   nil,   nil,   nil,    24,
-   nil,    27,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    10,
-    10,     6,     6,    24,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,    10,   nil,     6,   nil,   nil,   nil,    10,
+   nil,   nil,   nil,   nil,   nil,   423,   399,   145,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   306 ]
+
+racc_goto_check = [
+    36,    37,    12,    72,    26,    13,    28,    73,    60,    38,
+    11,    39,    55,    59,    53,    49,    46,    57,     8,    29,
+    40,    30,    43,    15,    30,    30,    30,    30,    33,    58,
+    68,    56,    84,    10,    39,    39,    65,    48,    39,     6,
+    66,    13,    13,    13,    13,    42,    52,    54,    38,     9,
+    47,    75,    18,    18,    18,    18,    33,    33,     9,    40,
+    30,    58,    56,    56,    45,    48,    48,    65,    12,    68,
+    52,    66,    44,    36,    51,    36,    38,     9,     9,    19,
+    19,    16,    16,    26,    13,    28,    17,    17,    30,    35,
+     9,    27,    61,    62,    36,    64,    24,    23,    33,    38,
+    38,    30,     6,    38,    29,    73,    67,    73,    22,    71,
+    21,    30,    30,    20,     2,    30,    46,    84,    83,     9,
+    53,    57,     9,    57,     8,     1,    43,   nil,   nil,    26,
+    13,    28,    26,    13,    28,    75,    75,   nil,    39,   nil,
+   nil,    39,   nil,   nil,    39,     6,    12,    10,    36,    10,
+    15,    15,    15,     6,   nil,     6,   nil,   nil,    12,   nil,
+   nil,   nil,   nil,   nil,    58,   nil,   nil,   nil,    13,    13,
+    13,    13,    13,    13,    13,    13,    13,    13,    13,    13,
+    13,    13,    13,    13,    13,    13,    30,    36,     6,   nil,
+   nil,   nil,    73,    12,   nil,    58,   nil,    36,    49,   nil,
+     6,     6,     6,    38,   nil,   nil,    38,   nil,   nil,    38,
+   nil,   nil,    33,    36,    33,    30,   nil,   nil,    30,    29,
+    12,    30,   nil,    55,    15,   nil,   nil,   nil,   nil,    26,
+    13,    28,   nil,     9,    73,     9,    73,   nil,   nil,   nil,
+   nil,    39,    13,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,    12,    11,    59,   nil,   nil,   nil,   nil,    73,
+   nil,    73,   nil,   nil,   nil,   nil,   nil,    58,    73,   nil,
+    73,   nil,    73,   nil,   nil,   nil,   nil,    37,    12,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,    27,   nil,    32 ]
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    58,    12,
+    60,    30,    26,    13,    28,    36,    38,   nil,   nil,   nil,
+   nil,    12,   nil,   nil,   nil,    12,    26,    13,    30,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,     6,     6,     6,
+   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,    72,    37,    12,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+    36 ]
 
 racc_goto_pointer = [
-   nil,   126,    41,   nil,   nil,   nil,   -97,   nil,  -163,     6,
-   -97,   nil,   -93,   -84,  -161,  -119,  -150,   -97,  -162,  -153,
-  -152,  -142,  -138,   nil,   -65,   -78,    28,    -1,   nil,   nil,
-    -8,    -1,    -4,   -64,     7,   -42,    37,    59,   -55,    -2,
-    65,  -132,   -50,   -14,  -144,    86,   -18,   -63,    18,   -75,
-   nil,   -42,   -53,   -45,   -37,   -78,   nil,  -126,  -118,  -206,
-   -18,   120,    31,   nil,   nil,    51,    76,    48,  -136,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -179 ]
+   nil,   125,   114,   nil,   nil,   nil,   -78,   nil,  -206,     2,
+   -84,  -136,   -78,   -80,   nil,   -98,  -170,  -167,  -203,  -180,
+  -148,  -152,  -155,  -167,  -169,   nil,   -81,   -40,   -79,   -63,
+    19,   nil,   nil,   -19,   nil,    10,    -4,   -79,     7,   -58,
+    18,   nil,    18,   -70,   -19,    37,  -183,  -151,   -10,  -186,
+   nil,    45,   -23,   -82,   -51,   -86,   -40,  -195,   -27,   -39,
+   -78,     6,    37,   nil,  -197,  -155,  -253,   104,    28,   nil,
+   nil,    32,   -48,  -168,   nil,  -231,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,    36,   -50 ]
 
 racc_goto_default = [
-   nil,   nil,   nil,   112,   103,   109,   242,   113,   nil,     7,
-   124,   114,   125,   nil,   126,   127,   128,   129,   130,   131,
-   132,   133,   134,   135,   177,   138,   218,   216,    46,     5,
-     6,    47,    82,   nil,    55,    13,    56,   nil,   nil,   nil,
-   nil,   157,   nil,   178,   nil,   nil,   nil,    91,   nil,   nil,
-    24,   nil,    94,    49,    50,   333,   148,   149,   331,   250,
-   nil,   nil,   nil,    31,    32,   nil,   225,   nil,   nil,   219,
-   220,   221,   222,   223,   224,   226,   227,   nil ]
+   nil,   nil,   nil,   119,   110,   116,   151,   120,   nil,     7,
+   nil,   nil,   150,   131,   121,   132,   133,   134,   135,   136,
+   137,   138,   139,   140,   141,   142,   143,   nil,   nil,    44,
+   191,    49,     5,     6,     8,    50,    87,   268,    58,    24,
+    59,    27,   nil,   nil,   nil,   nil,   200,   nil,   222,   nil,
+    29,   nil,   nil,    97,   nil,   nil,   nil,   100,    52,    53,
+   376,   nil,   nil,   189,   190,   374,   297,   nil,   nil,    42,
+    43,   nil,   154,   170,   153,   155,   156,   157,   158,   159,
+   160,   161,   162,   nil,   nil ]
 
 racc_reduce_table = [
   0, 0, :racc_error,
-  1, 97, :_reduce_none,
-  1, 99, :_reduce_2,
-  1, 99, :_reduce_3,
-  1, 99, :_reduce_4,
-  1, 99, :_reduce_5,
-  1, 99, :_reduce_6,
-  1, 99, :_reduce_7,
-  1, 99, :_reduce_8,
-  3, 99, :_reduce_9,
-  1, 101, :_reduce_10,
-  2, 101, :_reduce_11,
-  1, 103, :_reduce_none,
-  4, 103, :_reduce_none,
-  5, 103, :_reduce_none,
-  4, 103, :_reduce_15,
-  3, 103, :_reduce_16,
-  3, 103, :_reduce_17,
-  2, 103, :_reduce_18,
-  2, 103, :_reduce_19,
-  0, 104, :_reduce_none,
+  1, 98, :_reduce_none,
+  1, 100, :_reduce_2,
+  1, 100, :_reduce_3,
+  1, 100, :_reduce_4,
+  1, 100, :_reduce_5,
+  1, 100, :_reduce_6,
+  1, 100, :_reduce_7,
+  1, 100, :_reduce_8,
+  3, 100, :_reduce_9,
+  1, 102, :_reduce_10,
+  2, 102, :_reduce_11,
   1, 104, :_reduce_none,
+  4, 104, :_reduce_13,
   3, 104, :_reduce_none,
-  1, 106, :_reduce_none,
-  2, 106, :_reduce_24,
-  2, 106, :_reduce_25,
-  4, 106, :_reduce_26,
-  2, 106, :_reduce_27,
-  2, 106, :_reduce_28,
-  1, 107, :_reduce_29,
-  1, 107, :_reduce_30,
-  1, 107, :_reduce_31,
-  1, 107, :_reduce_32,
-  1, 107, :_reduce_33,
-  1, 107, :_reduce_34,
-  1, 108, :_reduce_none,
-  4, 108, :_reduce_36,
+  4, 104, :_reduce_none,
+  5, 104, :_reduce_none,
+  3, 104, :_reduce_17,
+  3, 104, :_reduce_18,
+  2, 104, :_reduce_19,
+  2, 104, :_reduce_20,
+  6, 104, :_reduce_none,
+  7, 104, :_reduce_none,
+  1, 105, :_reduce_none,
+  3, 105, :_reduce_none,
   1, 110, :_reduce_none,
-  3, 110, :_reduce_38,
-  3, 110, :_reduce_39,
-  3, 110, :_reduce_40,
-  1, 111, :_reduce_none,
-  3, 111, :_reduce_42,
-  3, 111, :_reduce_43,
+  2, 110, :_reduce_26,
+  2, 110, :_reduce_27,
+  4, 110, :_reduce_28,
+  2, 110, :_reduce_29,
+  2, 110, :_reduce_30,
+  1, 111, :_reduce_31,
+  1, 111, :_reduce_32,
+  1, 111, :_reduce_33,
+  1, 111, :_reduce_34,
+  1, 111, :_reduce_35,
+  1, 111, :_reduce_36,
   1, 112, :_reduce_none,
-  3, 112, :_reduce_45,
-  3, 112, :_reduce_46,
+  4, 112, :_reduce_38,
   1, 113, :_reduce_none,
-  3, 113, :_reduce_48,
-  3, 113, :_reduce_49,
-  3, 113, :_reduce_50,
-  3, 113, :_reduce_51,
+  3, 113, :_reduce_40,
+  3, 113, :_reduce_41,
+  3, 113, :_reduce_42,
   1, 114, :_reduce_none,
-  3, 114, :_reduce_53,
-  3, 114, :_reduce_54,
+  3, 114, :_reduce_44,
+  3, 114, :_reduce_45,
   1, 115, :_reduce_none,
-  3, 115, :_reduce_56,
+  3, 115, :_reduce_47,
+  3, 115, :_reduce_48,
   1, 116, :_reduce_none,
-  3, 116, :_reduce_58,
+  3, 116, :_reduce_50,
+  3, 116, :_reduce_51,
+  3, 116, :_reduce_52,
+  3, 116, :_reduce_53,
   1, 117, :_reduce_none,
-  3, 117, :_reduce_60,
+  3, 117, :_reduce_55,
+  3, 117, :_reduce_56,
   1, 118, :_reduce_none,
-  3, 118, :_reduce_62,
+  3, 118, :_reduce_58,
   1, 119, :_reduce_none,
-  3, 119, :_reduce_64,
+  3, 119, :_reduce_60,
   1, 120, :_reduce_none,
-  5, 120, :_reduce_66,
-  1, 102, :_reduce_67,
-  1, 121, :_reduce_68,
-  3, 122, :_reduce_none,
-  1, 123, :_reduce_70,
+  3, 120, :_reduce_62,
+  1, 121, :_reduce_none,
+  3, 121, :_reduce_64,
+  1, 122, :_reduce_none,
+  3, 122, :_reduce_66,
   1, 123, :_reduce_none,
-  1, 123, :_reduce_72,
-  2, 123, :_reduce_73,
-  2, 123, :_reduce_74,
-  2, 123, :_reduce_75,
-  1, 124, :_reduce_76,
-  3, 124, :_reduce_77,
+  5, 123, :_reduce_68,
+  1, 109, :_reduce_none,
+  3, 109, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 103, :_reduce_82,
+  3, 103, :_reduce_83,
+  1, 125, :_reduce_84,
+  3, 126, :_reduce_none,
+  1, 127, :_reduce_86,
+  2, 127, :_reduce_87,
   1, 127, :_reduce_none,
-  3, 127, :_reduce_79,
-  1, 126, :_reduce_80,
-  1, 126, :_reduce_81,
-  1, 126, :_reduce_82,
-  1, 126, :_reduce_83,
-  1, 126, :_reduce_84,
-  1, 126, :_reduce_85,
-  1, 126, :_reduce_86,
-  1, 126, :_reduce_87,
-  1, 126, :_reduce_88,
-  1, 126, :_reduce_89,
-  1, 126, :_reduce_90,
-  1, 126, :_reduce_91,
-  1, 126, :_reduce_92,
-  1, 126, :_reduce_93,
-  0, 135, :_reduce_94,
-  6, 130, :_reduce_95,
-  0, 136, :_reduce_96,
-  5, 130, :_reduce_97,
-  2, 130, :_reduce_98,
-  1, 134, :_reduce_none,
-  2, 134, :_reduce_none,
-  1, 133, :_reduce_101,
-  3, 137, :_reduce_102,
-  2, 137, :_reduce_none,
-  2, 137, :_reduce_none,
-  1, 139, :_reduce_none,
-  2, 139, :_reduce_106,
-  1, 139, :_reduce_107,
-  2, 139, :_reduce_108,
-  1, 138, :_reduce_109,
-  3, 138, :_reduce_110,
+  2, 127, :_reduce_89,
+  1, 127, :_reduce_90,
+  2, 127, :_reduce_91,
+  1, 127, :_reduce_none,
+  2, 127, :_reduce_none,
+  1, 128, :_reduce_94,
+  3, 128, :_reduce_95,
+  1, 132, :_reduce_none,
+  3, 132, :_reduce_97,
+  1, 129, :_reduce_none,
+  1, 129, :_reduce_none,
+  1, 129, :_reduce_none,
+  1, 129, :_reduce_none,
+  1, 130, :_reduce_102,
+  1, 130, :_reduce_103,
+  1, 130, :_reduce_104,
+  1, 130, :_reduce_105,
+  1, 130, :_reduce_106,
+  1, 130, :_reduce_107,
+  1, 130, :_reduce_108,
+  1, 130, :_reduce_109,
+  1, 130, :_reduce_110,
+  1, 130, :_reduce_111,
+  1, 130, :_reduce_112,
+  1, 130, :_reduce_113,
+  1, 130, :_reduce_114,
+  1, 130, :_reduce_115,
+  0, 141, :_reduce_116,
+  6, 135, :_reduce_117,
+  0, 142, :_reduce_118,
+  5, 135, :_reduce_119,
+  2, 135, :_reduce_120,
+  1, 138, :_reduce_121,
   1, 140, :_reduce_none,
-  5, 131, :_reduce_none,
-  4, 131, :_reduce_none,
-  2, 131, :_reduce_none,
-  1, 142, :_reduce_none,
-  2, 142, :_reduce_none,
-  1, 141, :_reduce_none,
-  3, 143, :_reduce_none,
+  2, 140, :_reduce_none,
+  1, 139, :_reduce_124,
+  3, 143, :_reduce_125,
+  5, 143, :_reduce_126,
   2, 143, :_reduce_none,
   2, 143, :_reduce_none,
-  1, 144, :_reduce_none,
-  3, 144, :_reduce_none,
+  2, 145, :_reduce_129,
   1, 145, :_reduce_none,
-  4, 132, :_reduce_none,
-  5, 132, :_reduce_none,
-  2, 132, :_reduce_none,
-  1, 146, :_reduce_127,
-  1, 147, :_reduce_none,
-  3, 147, :_reduce_none,
+  2, 145, :_reduce_131,
+  1, 145, :_reduce_132,
+  1, 144, :_reduce_133,
+  3, 144, :_reduce_134,
+  1, 146, :_reduce_none,
+  5, 136, :_reduce_none,
+  4, 136, :_reduce_none,
+  2, 136, :_reduce_none,
+  1, 147, :_reduce_139,
+  1, 149, :_reduce_none,
+  2, 149, :_reduce_none,
   1, 148, :_reduce_none,
-  3, 148, :_reduce_none,
-  1, 105, :_reduce_132,
-  1, 105, :_reduce_133,
-  2, 128, :_reduce_134,
-  1, 128, :_reduce_none,
-  2, 128, :_reduce_136,
-  1, 150, :_reduce_137,
-  3, 150, :_reduce_138,
-  4, 150, :_reduce_139,
-  3, 150, :_reduce_140,
-  4, 150, :_reduce_141,
-  3, 150, :_reduce_142,
-  1, 149, :_reduce_143,
-  2, 149, :_reduce_144,
-  2, 149, :_reduce_145,
-  3, 149, :_reduce_146,
+  3, 150, :_reduce_none,
+  2, 150, :_reduce_none,
+  2, 150, :_reduce_none,
   1, 151, :_reduce_none,
-  5, 151, :_reduce_none,
+  3, 151, :_reduce_none,
   1, 152, :_reduce_none,
+  2, 152, :_reduce_none,
   3, 152, :_reduce_none,
-  2, 153, :_reduce_none,
-  2, 153, :_reduce_none,
+  4, 137, :_reduce_none,
+  5, 137, :_reduce_none,
+  5, 137, :_reduce_none,
+  6, 137, :_reduce_none,
+  2, 137, :_reduce_none,
+  5, 137, :_reduce_none,
+  6, 137, :_reduce_none,
+  2, 137, :_reduce_none,
   1, 153, :_reduce_none,
-  1, 109, :_reduce_none,
-  2, 109, :_reduce_none,
+  3, 153, :_reduce_none,
   1, 154, :_reduce_none,
-  1, 154, :_reduce_none,
-  2, 154, :_reduce_none,
-  3, 155, :_reduce_none,
-  2, 155, :_reduce_none,
-  3, 155, :_reduce_none,
-  3, 155, :_reduce_none,
-  4, 155, :_reduce_none,
-  2, 155, :_reduce_164,
-  3, 155, :_reduce_none,
-  3, 155, :_reduce_166,
-  4, 155, :_reduce_none,
-  1, 129, :_reduce_168,
-  3, 129, :_reduce_169,
-  4, 129, :_reduce_170,
-  4, 129, :_reduce_171,
-  1, 156, :_reduce_172,
-  3, 156, :_reduce_173,
-  0, 98, :_reduce_none,
-  2, 98, :_reduce_none,
+  3, 154, :_reduce_none,
+  1, 106, :_reduce_163,
+  1, 106, :_reduce_none,
+  1, 106, :_reduce_165,
+  1, 131, :_reduce_none,
+  1, 131, :_reduce_none,
+  1, 131, :_reduce_none,
+  1, 131, :_reduce_none,
+  2, 133, :_reduce_170,
+  1, 133, :_reduce_none,
+  2, 133, :_reduce_172,
+  1, 156, :_reduce_173,
+  3, 156, :_reduce_174,
+  4, 156, :_reduce_175,
+  3, 156, :_reduce_176,
+  4, 156, :_reduce_177,
+  4, 156, :_reduce_none,
+  3, 156, :_reduce_179,
+  1, 155, :_reduce_180,
+  2, 155, :_reduce_181,
+  2, 155, :_reduce_182,
+  3, 155, :_reduce_183,
+  1, 159, :_reduce_none,
+  2, 159, :_reduce_none,
   1, 157, :_reduce_none,
-  2, 157, :_reduce_none,
+  5, 157, :_reduce_none,
+  1, 160, :_reduce_none,
+  3, 160, :_reduce_none,
+  2, 161, :_reduce_none,
+  2, 161, :_reduce_none,
+  1, 161, :_reduce_none,
   1, 158, :_reduce_none,
-  1, 158, :_reduce_none,
-  2, 158, :_reduce_none,
-  2, 158, :_reduce_none,
-  1, 158, :_reduce_none,
-  1, 158, :_reduce_none,
-  1, 158, :_reduce_none,
-  4, 159, :_reduce_185,
-  1, 161, :_reduce_186,
-  3, 161, :_reduce_187,
-  3, 160, :_reduce_none,
-  0, 163, :_reduce_none,
+  3, 158, :_reduce_none,
+  1, 107, :_reduce_none,
+  2, 107, :_reduce_none,
+  1, 162, :_reduce_none,
+  1, 162, :_reduce_none,
+  2, 162, :_reduce_none,
+  3, 163, :_reduce_none,
   2, 163, :_reduce_none,
+  3, 163, :_reduce_none,
+  3, 163, :_reduce_none,
+  4, 163, :_reduce_none,
+  2, 163, :_reduce_205,
+  3, 163, :_reduce_none,
+  3, 163, :_reduce_207,
+  4, 163, :_reduce_none,
+  1, 134, :_reduce_209,
+  3, 134, :_reduce_210,
+  4, 134, :_reduce_211,
+  4, 134, :_reduce_212,
+  1, 108, :_reduce_213,
+  3, 108, :_reduce_214,
+  0, 99, :_reduce_none,
+  2, 99, :_reduce_none,
   1, 164, :_reduce_none,
-  1, 164, :_reduce_none,
-  1, 164, :_reduce_none,
-  1, 164, :_reduce_none,
-  1, 164, :_reduce_none,
-  1, 164, :_reduce_none,
-  1, 164, :_reduce_none,
-  1, 164, :_reduce_none,
-  1, 164, :_reduce_none,
-  1, 164, :_reduce_none,
-  1, 164, :_reduce_none,
-  5, 165, :_reduce_none,
-  7, 165, :_reduce_none,
-  5, 166, :_reduce_none,
-  7, 167, :_reduce_none,
-  9, 168, :_reduce_none,
-  5, 169, :_reduce_none,
-  3, 170, :_reduce_none,
-  4, 170, :_reduce_none,
-  3, 170, :_reduce_none,
-  3, 162, :_reduce_none,
+  2, 164, :_reduce_none,
+  1, 165, :_reduce_none,
+  1, 165, :_reduce_none,
+  2, 165, :_reduce_none,
+  2, 165, :_reduce_none,
+  1, 165, :_reduce_none,
+  1, 165, :_reduce_none,
+  1, 165, :_reduce_none,
+  4, 166, :_reduce_226,
+  1, 168, :_reduce_227,
+  3, 168, :_reduce_228,
+  3, 167, :_reduce_none,
+  1, 170, :_reduce_none,
+  1, 170, :_reduce_none,
+  1, 170, :_reduce_none,
+  1, 170, :_reduce_none,
+  1, 170, :_reduce_none,
+  1, 170, :_reduce_none,
+  1, 170, :_reduce_none,
+  1, 170, :_reduce_none,
+  1, 170, :_reduce_none,
+  1, 170, :_reduce_none,
   3, 171, :_reduce_none,
-  2, 171, :_reduce_none,
-  2, 171, :_reduce_none,
+  4, 171, :_reduce_none,
   3, 171, :_reduce_none,
-  2, 171, :_reduce_none,
+  2, 169, :_reduce_none,
+  3, 169, :_reduce_none,
+  1, 180, :_reduce_none,
+  2, 180, :_reduce_none,
+  1, 181, :_reduce_none,
+  1, 181, :_reduce_none,
+  1, 172, :_reduce_none,
   2, 172, :_reduce_none,
-  4, 172, :_reduce_none,
-  1, 173, :_reduce_none,
-  1, 173, :_reduce_none,
-  1, 173, :_reduce_none,
-  1, 173, :_reduce_none,
-  1, 173, :_reduce_none,
-  1, 173, :_reduce_none,
-  1, 173, :_reduce_none,
-  1, 173, :_reduce_none,
-  1, 173, :_reduce_none,
-  1, 173, :_reduce_none,
-  1, 173, :_reduce_none,
-  1, 125, :_reduce_none,
-  1, 125, :_reduce_none,
-  1, 125, :_reduce_none,
-  1, 125, :_reduce_none,
-  1, 125, :_reduce_none,
-  1, 125, :_reduce_none,
-  1, 125, :_reduce_none,
-  1, 125, :_reduce_none,
-  1, 100, :_reduce_238,
-  2, 100, :_reduce_239,
-  3, 100, :_reduce_240 ]
-
-racc_reduce_n = 241
-
-racc_shift_n = 398
+  5, 173, :_reduce_none,
+  7, 173, :_reduce_none,
+  5, 177, :_reduce_none,
+  5, 174, :_reduce_none,
+  7, 175, :_reduce_none,
+  6, 176, :_reduce_none,
+  7, 176, :_reduce_none,
+  6, 176, :_reduce_none,
+  7, 176, :_reduce_none,
+  3, 178, :_reduce_none,
+  2, 178, :_reduce_none,
+  2, 178, :_reduce_none,
+  2, 178, :_reduce_none,
+  3, 178, :_reduce_none,
+  1, 101, :_reduce_265,
+  2, 101, :_reduce_266,
+  3, 101, :_reduce_267,
+  1, 179, :_reduce_268 ]
+
+racc_reduce_n = 269
+
+racc_shift_n = 447
 
 racc_token_table = {
@@ -1002,85 +1101,86 @@
   "++" => 15,
   "--" => 16,
-  "," => 17,
-  :SIZEOF => 18,
-  "&" => 19,
-  "*" => 20,
-  "+" => 21,
-  "-" => 22,
-  "~" => 23,
-  "!" => 24,
-  "/" => 25,
-  "%" => 26,
-  "<<" => 27,
-  ">>" => 28,
-  "<" => 29,
-  ">" => 30,
-  "<=" => 31,
-  ">=" => 32,
-  "==" => 33,
-  "!=" => 34,
-  "^" => 35,
-  "|" => 36,
-  "&&" => 37,
-  "||" => 38,
-  "?" => 39,
-  ":" => 40,
-  ";" => 41,
-  "=" => 42,
-  :VOID => 43,
-  :FLOAT => 44,
-  :DOUBLE => 45,
-  :BOOL => 46,
-  :TYPE_NAME => 47,
-  :CHAR => 48,
-  :SHORT => 49,
-  :INT => 50,
-  :LONG => 51,
-  :SIGNED => 52,
-  :UNSIGNED => 53,
-  :STRUCT => 54,
-  "{" => 55,
-  "}" => 56,
-  :UNION => 57,
-  :ENUM => 58,
-  :CONST => 59,
-  :VOLATILE => 60,
-  :C_EXP => 61,
-  :EXTENSION => 62,
-  :TYPEDEF => 63,
-  :IF => 64,
-  :ELSE => 65,
-  :WHILE => 66,
-  :DO => 67,
-  :FOR => 68,
-  :SWITCH => 69,
-  :infunc_statment => 70,
-  :CASE => 71,
-  :DEFAULT => 72,
-  :GOTO => 73,
-  :CONTINUE => 74,
-  :BREAK => 75,
-  :RETURN => 76,
-  "+=" => 77,
-  "-=" => 78,
-  "*=" => 79,
-  "/=" => 80,
-  "%=" => 81,
-  "<<=" => 82,
-  ">>=" => 83,
-  "&=" => 84,
-  "|=" => 85,
-  "^=" => 86,
-  :__INLINE__ => 87,
-  :INLINE => 88,
-  :__INLINE => 89,
-  :CINLINE => 90,
-  :EXTERN => 91,
-  :STATIC => 92,
-  :AUTO => 93,
-  :REGISTER => 94,
-  "::" => 95 }
-
-racc_nt_base = 96
+  "{" => 17,
+  "}" => 18,
+  "," => 19,
+  :SIZEOF => 20,
+  "&" => 21,
+  "*" => 22,
+  "+" => 23,
+  "-" => 24,
+  "~" => 25,
+  "!" => 26,
+  "/" => 27,
+  "%" => 28,
+  "<<" => 29,
+  ">>" => 30,
+  "<" => 31,
+  ">" => 32,
+  "<=" => 33,
+  ">=" => 34,
+  "==" => 35,
+  "!=" => 36,
+  "^" => 37,
+  "|" => 38,
+  "&&" => 39,
+  "||" => 40,
+  "?" => 41,
+  ":" => 42,
+  "=" => 43,
+  "+=" => 44,
+  "-=" => 45,
+  "*=" => 46,
+  "/=" => 47,
+  "%=" => 48,
+  "<<=" => 49,
+  ">>=" => 50,
+  "&=" => 51,
+  "|=" => 52,
+  "^=" => 53,
+  ";" => 54,
+  :EXTERN => 55,
+  :STATIC => 56,
+  :AUTO => 57,
+  :REGISTER => 58,
+  :VOID => 59,
+  :CHAR => 60,
+  :SHORT => 61,
+  :INT => 62,
+  :LONG => 63,
+  :FLOAT => 64,
+  :DOUBLE => 65,
+  :SIGNED => 66,
+  :UNSIGNED => 67,
+  :BOOL => 68,
+  :TYPE_NAME => 69,
+  :STRUCT => 70,
+  :UNION => 71,
+  :ENUM => 72,
+  :CONST => 73,
+  :RESTRICT => 74,
+  :VOLATILE => 75,
+  :__INLINE__ => 76,
+  :INLINE => 77,
+  :__INLINE => 78,
+  :CINLINE => 79,
+  :C_EXP => 80,
+  :EXTENSION => 81,
+  :TYPEDEF => 82,
+  :CASE => 83,
+  :DEFAULT => 84,
+  :IF => 85,
+  :ELSE => 86,
+  :SWITCH => 87,
+  :WHILE => 88,
+  :DO => 89,
+  :FOR => 90,
+  :GOTO => 91,
+  :CONTINUE => 92,
+  :BREAK => 93,
+  :RETURN => 94,
+  "::" => 95,
+  :_ASM => 96 }
+
+racc_nt_base = 97
 
 racc_use_result_var = true
@@ -1120,4 +1220,6 @@
   "\"++\"",
   "\"--\"",
+  "\"{\"",
+  "\"}\"",
   "\",\"",
   "SIZEOF",
@@ -1144,40 +1246,5 @@
   "\"?\"",
   "\":\"",
-  "\";\"",
   "\"=\"",
-  "VOID",
-  "FLOAT",
-  "DOUBLE",
-  "BOOL",
-  "TYPE_NAME",
-  "CHAR",
-  "SHORT",
-  "INT",
-  "LONG",
-  "SIGNED",
-  "UNSIGNED",
-  "STRUCT",
-  "\"{\"",
-  "\"}\"",
-  "UNION",
-  "ENUM",
-  "CONST",
-  "VOLATILE",
-  "C_EXP",
-  "EXTENSION",
-  "TYPEDEF",
-  "IF",
-  "ELSE",
-  "WHILE",
-  "DO",
-  "FOR",
-  "SWITCH",
-  "infunc_statment",
-  "CASE",
-  "DEFAULT",
-  "GOTO",
-  "CONTINUE",
-  "BREAK",
-  "RETURN",
   "\"+=\"",
   "\"-=\"",
@@ -1190,13 +1257,47 @@
   "\"|=\"",
   "\"^=\"",
+  "\";\"",
+  "EXTERN",
+  "STATIC",
+  "AUTO",
+  "REGISTER",
+  "VOID",
+  "CHAR",
+  "SHORT",
+  "INT",
+  "LONG",
+  "FLOAT",
+  "DOUBLE",
+  "SIGNED",
+  "UNSIGNED",
+  "BOOL",
+  "TYPE_NAME",
+  "STRUCT",
+  "UNION",
+  "ENUM",
+  "CONST",
+  "RESTRICT",
+  "VOLATILE",
   "__INLINE__",
   "INLINE",
   "__INLINE",
   "CINLINE",
-  "EXTERN",
-  "STATIC",
-  "AUTO",
-  "REGISTER",
+  "C_EXP",
+  "EXTENSION",
+  "TYPEDEF",
+  "CASE",
+  "DEFAULT",
+  "IF",
+  "ELSE",
+  "SWITCH",
+  "WHILE",
+  "DO",
+  "FOR",
+  "GOTO",
+  "CONTINUE",
+  "BREAK",
+  "RETURN",
   "\"::\"",
+  "_ASM",
   "$start",
   "all",
@@ -1207,10 +1308,12 @@
   "expression",
   "postfix_expression",
-  "argument_list",
+  "argument_expression_list",
   "type_qualifier",
+  "type_name",
+  "initializer_list",
+  "assignment_expression",
   "unary_expression",
   "unary_operator",
   "cast_expression",
-  "type_name",
   "multiplicative_expression",
   "additive_expression",
@@ -1224,10 +1327,12 @@
   "logical_or_expression",
   "conditional_expression",
+  "assignment_operator",
   "constant_expression",
   "declaration",
   "declaration_specifiers",
   "init_declarator_list",
-  "storage_class",
+  "storage_class_specifier",
   "type_specifier",
+  "function_specifier",
   "init_declarator",
   "declarator",
@@ -1236,4 +1341,5 @@
   "union_specifier",
   "enum_specifier",
+  "struct_term",
   "struct_tag",
   "struct_declaration_list",
@@ -1242,6 +1348,7 @@
   "struct_declaration",
   "struct_declarator_list",
-  "type_specifier_qualifier_list",
+  "specifier_qualifier_list",
   "struct_declarator",
+  "union_term",
   "union_tag",
   "union_declaration_list",
@@ -1249,5 +1356,4 @@
   "union_declarator_list",
   "union_declarator",
-  "enum_type",
   "enumerator_list",
   "enumerator",
@@ -1255,17 +1361,19 @@
   "direct_declarator",
   "parameter_type_list",
+  "identifier_list",
+  "type_qualifier_list",
   "parameter_list",
   "parameter_declaration",
   "abstract_declarator",
   "direct_abstract_declarator",
-  "initializer_list",
   "extension_statement",
-  "statement",
+  "cdl_statement",
   "typedef",
   "func_def",
   "declarator_list",
-  "compoundstatement",
-  "infunc_statement_list",
-  "infunc_statement",
+  "compound_statement",
+  "statement",
+  "labeled_statement",
+  "expression_statement",
   "ifstatement",
   "whilestatement",
@@ -1273,8 +1381,8 @@
   "forstatement",
   "switchstatement",
-  "labelstatement",
-  "gotostatement",
-  "expressionstatement",
-  "assignment_operator" ]
+  "jump_statement",
+  "asm_statement",
+  "block_item_list",
+  "block_item" ]
 
 Racc_debug_parser = false
@@ -1286,5 +1394,5 @@
 # reduce 1 omitted
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 52)
+module_eval(<<'.,.,', 'C_parser.y.rb', 57)
   def _reduce_2(val, _values, result)
      result = [ :IDENTIFIER, val[0] ] 
@@ -1293,5 +1401,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 60)
+module_eval(<<'.,.,', 'C_parser.y.rb', 65)
   def _reduce_3(val, _values, result)
      result = [ :INTEGER_CONSTANT, val[0] ] 
@@ -1300,5 +1408,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 62)
+module_eval(<<'.,.,', 'C_parser.y.rb', 67)
   def _reduce_4(val, _values, result)
      result = [ :FLOATING_CONSTANT, val[0] ] 
@@ -1307,5 +1415,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 64)
+module_eval(<<'.,.,', 'C_parser.y.rb', 69)
   def _reduce_5(val, _values, result)
      result = [ :OCTAL_CONSTANT, val[0] ] 
@@ -1314,5 +1422,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 66)
+module_eval(<<'.,.,', 'C_parser.y.rb', 71)
   def _reduce_6(val, _values, result)
      result = [ :HEX_CONSTANT, val[0] ] 
@@ -1321,5 +1429,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 68)
+module_eval(<<'.,.,', 'C_parser.y.rb', 73)
   def _reduce_7(val, _values, result)
      result = [ :CHARACTER_LITERAL, val[0] ] 
@@ -1328,5 +1436,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 70)
+module_eval(<<'.,.,', 'C_parser.y.rb', 75)
   def _reduce_8(val, _values, result)
      result = [ :STRING_LITERAL_LIST, val[0] ] 
@@ -1335,5 +1443,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 72)
+module_eval(<<'.,.,', 'C_parser.y.rb', 77)
   def _reduce_9(val, _values, result)
      result = [ :PARENTHESES, val[1].get_elements ] 
@@ -1342,5 +1450,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 76)
+module_eval(<<'.,.,', 'C_parser.y.rb', 81)
   def _reduce_10(val, _values, result)
      result = [val[0]] 
@@ -1349,5 +1457,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 78)
+module_eval(<<'.,.,', 'C_parser.y.rb', 83)
   def _reduce_11(val, _values, result)
      result << val[1] 
@@ -1358,17 +1466,19 @@
 # reduce 12 omitted
 
-# reduce 13 omitted
+module_eval(<<'.,.,', 'C_parser.y.rb', 89)
+  def _reduce_13(val, _values, result)
+     result = [ :OP_SUBSC, val[0], val[2] ] 
+    result
+  end
+.,.,
 
 # reduce 14 omitted
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 86)
-  def _reduce_15(val, _values, result)
-     result = [ :OP_SUBSC, val[0], val[2] ] 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 88)
-  def _reduce_16(val, _values, result)
+# reduce 15 omitted
+
+# reduce 16 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 94)
+  def _reduce_17(val, _values, result)
      result = [ :OP_DOT, val[0], val[2] ] 
     result
@@ -1376,6 +1486,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 90)
-  def _reduce_17(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 96)
+  def _reduce_18(val, _values, result)
      result = [ :OP_REF, val[0], val[2] ] 
     result
@@ -1383,12 +1493,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 91)
-  def _reduce_18(val, _values, result)
-     result = val[0] 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 92)
+module_eval(<<'.,.,', 'C_parser.y.rb', 97)
   def _reduce_19(val, _values, result)
      result = val[0] 
@@ -1397,5 +1500,10 @@
 .,.,
 
-# reduce 20 omitted
+module_eval(<<'.,.,', 'C_parser.y.rb', 98)
+  def _reduce_20(val, _values, result)
+     result = val[0] 
+    result
+  end
+.,.,
 
 # reduce 21 omitted
@@ -1405,6 +1513,10 @@
 # reduce 23 omitted
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 104)
-  def _reduce_24(val, _values, result)
+# reduce 24 omitted
+
+# reduce 25 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 111)
+  def _reduce_26(val, _values, result)
      result = [ val[0], val[1] ] 
     result
@@ -1412,6 +1524,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 106)
-  def _reduce_25(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 113)
+  def _reduce_27(val, _values, result)
      result = [ :OP_SIZEOF_EXPR, val[1] ] 
     result
@@ -1419,6 +1531,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 108)
-  def _reduce_26(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 115)
+  def _reduce_28(val, _values, result)
      result = [ :OP_SIZEOF_TYPE, val[1] ] 
     result
@@ -1426,6 +1538,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 109)
-  def _reduce_27(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 116)
+  def _reduce_29(val, _values, result)
      result = val[1] 
     result
@@ -1433,6 +1545,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 110)
-  def _reduce_28(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 117)
+  def _reduce_30(val, _values, result)
      result = val[1] 
     result
@@ -1440,6 +1552,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 113)
-  def _reduce_29(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 120)
+  def _reduce_31(val, _values, result)
      result = :OP_U_AMP 
     result
@@ -1447,6 +1559,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 114)
-  def _reduce_30(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 121)
+  def _reduce_32(val, _values, result)
      result = :OP_U_ASTER 
     result
@@ -1454,6 +1566,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 115)
-  def _reduce_31(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 122)
+  def _reduce_33(val, _values, result)
      result = :OP_U_PLUS 
     result
@@ -1461,6 +1573,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 116)
-  def _reduce_32(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 123)
+  def _reduce_34(val, _values, result)
      result = :OP_U_MINUS 
     result
@@ -1468,6 +1580,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 117)
-  def _reduce_33(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 124)
+  def _reduce_35(val, _values, result)
      result = :OP_U_TILDE 
     result
@@ -1475,6 +1587,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 118)
-  def _reduce_34(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 125)
+  def _reduce_36(val, _values, result)
      result = :OP_U_EXCLAM 
     result
@@ -1482,8 +1594,8 @@
 .,.,
 
-# reduce 35 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 123)
-  def _reduce_36(val, _values, result)
+# reduce 37 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 130)
+  def _reduce_38(val, _values, result)
       result = [ :CAST, val[1], val[3] ] 
     result
@@ -1491,8 +1603,8 @@
 .,.,
 
-# reduce 37 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 128)
-  def _reduce_38(val, _values, result)
+# reduce 39 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 135)
+  def _reduce_40(val, _values, result)
      result = [ :OP_MULT, val[0], val[2] ]  
     result
@@ -1500,6 +1612,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 130)
-  def _reduce_39(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 137)
+  def _reduce_41(val, _values, result)
      result = [ :OP_DIV, val[0], val[2] ]  
     result
@@ -1507,6 +1619,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 132)
-  def _reduce_40(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 139)
+  def _reduce_42(val, _values, result)
      result = [ :OP_REMAIN, val[0], val[2] ]  
     result
@@ -1514,8 +1626,8 @@
 .,.,
 
-# reduce 41 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 137)
-  def _reduce_42(val, _values, result)
+# reduce 43 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 144)
+  def _reduce_44(val, _values, result)
      result = [ :OP_ADD, val[0], val[2] ]  
     result
@@ -1523,6 +1635,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 139)
-  def _reduce_43(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 146)
+  def _reduce_45(val, _values, result)
      result = [ :OP_SUB, val[0], val[2] ]  
     result
@@ -1530,8 +1642,8 @@
 .,.,
 
-# reduce 44 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 144)
-  def _reduce_45(val, _values, result)
+# reduce 46 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 151)
+  def _reduce_47(val, _values, result)
      result = [ :OP_LSFT, val[0], val[2] ]  
     result
@@ -1539,6 +1651,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 146)
-  def _reduce_46(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 153)
+  def _reduce_48(val, _values, result)
      result = [ :OP_RSFT, val[0], val[2] ]  
     result
@@ -1546,8 +1658,8 @@
 .,.,
 
-# reduce 47 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 151)
-  def _reduce_48(val, _values, result)
+# reduce 49 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 158)
+  def _reduce_50(val, _values, result)
      result = [ :OP_LT, val[0], val[2] ]  
     result
@@ -1555,6 +1667,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 153)
-  def _reduce_49(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 160)
+  def _reduce_51(val, _values, result)
      result = [ :OP_GT, val[0], val[2] ]  
     result
@@ -1562,6 +1674,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 155)
-  def _reduce_50(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 162)
+  def _reduce_52(val, _values, result)
      result = [ :OP_LE, val[0], val[2] ]  
     result
@@ -1569,6 +1681,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 157)
-  def _reduce_51(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 164)
+  def _reduce_53(val, _values, result)
      result = [ :OP_GE, val[0], val[2] ]  
     result
@@ -1576,8 +1688,8 @@
 .,.,
 
-# reduce 52 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 162)
-  def _reduce_53(val, _values, result)
+# reduce 54 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 169)
+  def _reduce_55(val, _values, result)
      result = [ :OP_EQ, val[0], val[2] ]  
     result
@@ -1585,6 +1697,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 164)
-  def _reduce_54(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 171)
+  def _reduce_56(val, _values, result)
      result = [ :OP_NE, val[0], val[2] ]  
     result
@@ -1592,8 +1704,8 @@
 .,.,
 
-# reduce 55 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 169)
-  def _reduce_56(val, _values, result)
+# reduce 57 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 176)
+  def _reduce_58(val, _values, result)
      result = [ :OP_AND, val[0], val[2] ]  
     result
@@ -1601,8 +1713,8 @@
 .,.,
 
-# reduce 57 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 174)
-  def _reduce_58(val, _values, result)
+# reduce 59 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 181)
+  def _reduce_60(val, _values, result)
      result = [ :OP_EOR, val[0], val[2] ]  
     result
@@ -1610,8 +1722,8 @@
 .,.,
 
-# reduce 59 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 179)
-  def _reduce_60(val, _values, result)
+# reduce 61 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 186)
+  def _reduce_62(val, _values, result)
      result = [ :OP_OR, val[0], val[2] ]  
     result
@@ -1619,8 +1731,8 @@
 .,.,
 
-# reduce 61 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 184)
-  def _reduce_62(val, _values, result)
+# reduce 63 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 191)
+  def _reduce_64(val, _values, result)
      result = [ :OP_LAND, val[0], val[2] ]  
     result
@@ -1628,8 +1740,8 @@
 .,.,
 
-# reduce 63 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 189)
-  def _reduce_64(val, _values, result)
+# reduce 65 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 196)
+  def _reduce_66(val, _values, result)
      result = [ :OP_LOR, val[0], val[2] ]  
     result
@@ -1637,8 +1749,8 @@
 .,.,
 
-# reduce 65 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 194)
-  def _reduce_66(val, _values, result)
+# reduce 67 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 201)
+  def _reduce_68(val, _values, result)
      result = [ :OP_CEX, val[0], val[2].get_elements, val[4] ]  
     result
@@ -1646,6 +1758,32 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 201)
-  def _reduce_67(val, _values, result)
+# reduce 69 omitted
+
+# reduce 70 omitted
+
+# reduce 71 omitted
+
+# reduce 72 omitted
+
+# reduce 73 omitted
+
+# reduce 74 omitted
+
+# reduce 75 omitted
+
+# reduce 76 omitted
+
+# reduce 77 omitted
+
+# reduce 78 omitted
+
+# reduce 79 omitted
+
+# reduce 80 omitted
+
+# reduce 81 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 223)
+  def _reduce_82(val, _values, result)
     			result = Expression.new( val[0] )
 			# result.print
@@ -1655,6 +1793,14 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 208)
-  def _reduce_68(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 228)
+  def _reduce_83(val, _values, result)
+    			result = Expression.new( val[2] )    # ',' の後ろを採用
+		
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 234)
+  def _reduce_84(val, _values, result)
     			result = Expression.new( val[0] )
 			# result.print
@@ -1671,8 +1817,8 @@
 .,.,
 
-# reduce 69 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 237)
-  def _reduce_70(val, _values, result)
+# reduce 85 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 261)
+  def _reduce_86(val, _values, result)
     			result = CIntType.new( -3 )    # storage class は無視
 		
@@ -1681,8 +1827,24 @@
 .,.,
 
-# reduce 71 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 242)
-  def _reduce_72(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 265)
+  def _reduce_87(val, _values, result)
+    			result = val[1]                # storage class は無視
+		
+    result
+  end
+.,.,
+
+# reduce 88 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 270)
+  def _reduce_89(val, _values, result)
+    			result = val[1].merge val[0]
+		
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 274)
+  def _reduce_90(val, _values, result)
     			result = CIntType.new( -3 )
 			result.set_qualifier val[0]
@@ -1692,31 +1854,19 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 247)
-  def _reduce_73(val, _values, result)
-    			result = val[1]                # storage class は無視
-		
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 251)
-  def _reduce_74(val, _values, result)
-    			result = val[1].merge val[0]
-		
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 255)
-  def _reduce_75(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 279)
+  def _reduce_91(val, _values, result)
     			val[1].set_qualifier val[0]
-                        result = val[1]
-		
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 262)
-  def _reduce_76(val, _values, result)
+						result = val[1]
+		
+    result
+  end
+.,.,
+
+# reduce 92 omitted
+
+# reduce 93 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 287)
+  def _reduce_94(val, _values, result)
      result = [val[0]] 
     result
@@ -1724,6 +1874,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 264)
-  def _reduce_77(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 289)
+  def _reduce_95(val, _values, result)
      result << val[2] 
     result
@@ -1731,8 +1881,8 @@
 .,.,
 
-# reduce 78 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 269)
-  def _reduce_79(val, _values, result)
+# reduce 96 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 294)
+  def _reduce_97(val, _values, result)
      val[0].set_initializer( val[2] ) 
     result
@@ -1740,6 +1890,14 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 272)
-  def _reduce_80(val, _values, result)
+# reduce 98 omitted
+
+# reduce 99 omitted
+
+# reduce 100 omitted
+
+# reduce 101 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 304)
+  def _reduce_102(val, _values, result)
      set_no_type_name true; result = CVoidType.new 
     result
@@ -1747,6 +1905,34 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 273)
-  def _reduce_81(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 306)
+  def _reduce_103(val, _values, result)
+     set_no_type_name true; result = CIntType.new(-11 ) 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 308)
+  def _reduce_104(val, _values, result)
+     set_no_type_name true; result = CIntType.new( -2 ) 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 310)
+  def _reduce_105(val, _values, result)
+     set_no_type_name true; result = CIntType.new( -3 ) 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 312)
+  def _reduce_106(val, _values, result)
+     set_no_type_name true; result = CIntType.new( -4 ) 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 314)
+  def _reduce_107(val, _values, result)
      set_no_type_name true; result = CFloatType.new(-32) 
     result
@@ -1754,6 +1940,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 274)
-  def _reduce_82(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 316)
+  def _reduce_108(val, _values, result)
      set_no_type_name true; result = CFloatType.new(-64) 
     result
@@ -1761,69 +1947,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 275)
-  def _reduce_83(val, _values, result)
-     set_no_type_name true; result = CBoolType.new 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 276)
-  def _reduce_84(val, _values, result)
-     set_no_type_name true; result = val[0] 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 277)
-  def _reduce_85(val, _values, result)
-     set_no_type_name true; result = CVoidType.new 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 278)
-  def _reduce_86(val, _values, result)
-     set_no_type_name true; result = CVoidType.new 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 279)
-  def _reduce_87(val, _values, result)
-     set_no_type_name true; result = CDefinedType.new( val[0].val ) 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 281)
-  def _reduce_88(val, _values, result)
-     set_no_type_name true; result = CIntType.new(-11 ) 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 282)
-  def _reduce_89(val, _values, result)
-     set_no_type_name true; result = CIntType.new( -2 ) 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 283)
-  def _reduce_90(val, _values, result)
-     set_no_type_name true; result = CIntType.new( -3 ) 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 284)
-  def _reduce_91(val, _values, result)
-     set_no_type_name true; result = CIntType.new( -4 ) 
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 287)
-  def _reduce_92(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 319)
+  def _reduce_109(val, _values, result)
     			set_no_type_name true
 			result = CIntType.new( -3 )
@@ -1834,6 +1957,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 293)
-  def _reduce_93(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 325)
+  def _reduce_110(val, _values, result)
     			set_no_type_name true
 			result = CIntType.new( -3 )
@@ -1844,6 +1967,41 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 301)
-  def _reduce_94(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 330)
+  def _reduce_111(val, _values, result)
+     set_no_type_name true; result = CBoolType.new 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 332)
+  def _reduce_112(val, _values, result)
+     set_no_type_name true; result = val[0] 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 334)
+  def _reduce_113(val, _values, result)
+     set_no_type_name true; result = CVoidType.new 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 336)
+  def _reduce_114(val, _values, result)
+     set_no_type_name true; result = CVoidType.new 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 338)
+  def _reduce_115(val, _values, result)
+     set_no_type_name true; result = CDefinedType.new( val[0].val ) 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 344)
+  def _reduce_116(val, _values, result)
      StructType.set_define( true )  
     result
@@ -1851,6 +2009,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 304)
-  def _reduce_95(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 347)
+  def _reduce_117(val, _values, result)
     			StructType.end_of_parse
 			result = val[1]
@@ -1860,6 +2018,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 309)
-  def _reduce_96(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 353)
+  def _reduce_118(val, _values, result)
     			result = CStructType.new()
 			StructType.set_define( true )
@@ -1869,6 +2027,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 314)
-  def _reduce_97(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 358)
+  def _reduce_119(val, _values, result)
     			StructType.end_of_parse
 			result = val[1]
@@ -1878,6 +2036,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 319)
-  def _reduce_98(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 364)
+  def _reduce_120(val, _values, result)
     			StructType.set_define( false )
 			StructType.end_of_parse
@@ -1888,10 +2046,17 @@
 .,.,
 
-# reduce 99 omitted
-
-# reduce 100 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 331)
-  def _reduce_101(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 370)
+  def _reduce_121(val, _values, result)
+     set_no_type_name true 
+    result
+  end
+.,.,
+
+# reduce 122 omitted
+
+# reduce 123 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 379)
+  def _reduce_124(val, _values, result)
     			result = CStructType.new( val[0].val )
 			set_no_type_name true
@@ -1901,6 +2066,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 340)
-  def _reduce_102(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 388)
+  def _reduce_125(val, _values, result)
     			val[1].each { |i|	# i: Decl
 				i.set_type( val[0] )
@@ -1915,12 +2080,24 @@
 .,.,
 
-# reduce 103 omitted
-
-# reduce 104 omitted
-
-# reduce 105 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 359)
-  def _reduce_106(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 399)
+  def _reduce_126(val, _values, result)
+    			val[1].each { |i|	# i: Decl
+				i.set_type( val[0] )
+				i.set_kind( :MEMBER )
+				i.check
+				CStructType.new_member( i )
+			}
+			result = val[1]
+		
+    result
+  end
+.,.,
+
+# reduce 127 omitted
+
+# reduce 128 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 417)
+  def _reduce_129(val, _values, result)
     			result = val[1].merge val[0]
 		
@@ -1929,6 +2106,17 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 363)
-  def _reduce_107(val, _values, result)
+# reduce 130 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 422)
+  def _reduce_131(val, _values, result)
+    			val[1].set_qualifier val[0]
+						result = val[1]
+		
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 427)
+  def _reduce_132(val, _values, result)
     			result = CIntType.new( -3 )
 			result.set_qualifier val[0]
@@ -1938,15 +2126,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 368)
-  def _reduce_108(val, _values, result)
-    			val[1].set_qualifier val[0]
-                        result = val[1]
-		
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 374)
-  def _reduce_109(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 433)
+  def _reduce_133(val, _values, result)
      result = [ val[0] ] 
     result
@@ -1954,6 +2133,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 376)
-  def _reduce_110(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 435)
+  def _reduce_134(val, _values, result)
      result << val[2] 
     result
@@ -1961,53 +2140,67 @@
 .,.,
 
-# reduce 111 omitted
-
-# reduce 112 omitted
-
-# reduce 113 omitted
-
-# reduce 114 omitted
-
-# reduce 115 omitted
-
-# reduce 116 omitted
-
-# reduce 117 omitted
-
-# reduce 118 omitted
-
-# reduce 119 omitted
-
-# reduce 120 omitted
-
-# reduce 121 omitted
-
-# reduce 122 omitted
-
-# reduce 123 omitted
-
-# reduce 124 omitted
-
-# reduce 125 omitted
-
-# reduce 126 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 418)
-  def _reduce_127(val, _values, result)
-     result = CEnumType.new( -1 ) 
-    result
-  end
-.,.,
-
-# reduce 128 omitted
-
-# reduce 129 omitted
-
-# reduce 130 omitted
-
-# reduce 131 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 434)
-  def _reduce_132(val, _values, result)
+# reduce 135 omitted
+
+# reduce 136 omitted
+
+# reduce 137 omitted
+
+# reduce 138 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 452)
+  def _reduce_139(val, _values, result)
+     set_no_type_name true 
+    result
+  end
+.,.,
+
+# reduce 140 omitted
+
+# reduce 141 omitted
+
+# reduce 142 omitted
+
+# reduce 143 omitted
+
+# reduce 144 omitted
+
+# reduce 145 omitted
+
+# reduce 146 omitted
+
+# reduce 147 omitted
+
+# reduce 148 omitted
+
+# reduce 149 omitted
+
+# reduce 150 omitted
+
+# reduce 151 omitted
+
+# reduce 152 omitted
+
+# reduce 153 omitted
+
+# reduce 154 omitted
+
+# reduce 155 omitted
+
+# reduce 156 omitted
+
+# reduce 157 omitted
+
+# reduce 158 omitted
+
+# reduce 159 omitted
+
+# reduce 160 omitted
+
+# reduce 161 omitted
+
+# reduce 162 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 495)
+  def _reduce_163(val, _values, result)
      result = :CONST 
     result
@@ -2015,6 +2208,8 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 435)
-  def _reduce_133(val, _values, result)
+# reduce 164 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 498)
+  def _reduce_165(val, _values, result)
      result = :VOLATILE 
     result
@@ -2022,6 +2217,14 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 440)
-  def _reduce_134(val, _values, result)
+# reduce 166 omitted
+
+# reduce 167 omitted
+
+# reduce 168 omitted
+
+# reduce 169 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 509)
+  def _reduce_170(val, _values, result)
     			val[1].set_type( val[0] )
 			result = val[1]
@@ -2031,8 +2234,8 @@
 .,.,
 
-# reduce 135 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 446)
-  def _reduce_136(val, _values, result)
+# reduce 171 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 515)
+  def _reduce_172(val, _values, result)
     			result = Decl.new( val[1].val )
 			result.set_type( val[0] )
@@ -2042,6 +2245,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 452)
-  def _reduce_137(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 521)
+  def _reduce_173(val, _values, result)
      result = Decl.new( val[0].val ) 
     result
@@ -2049,6 +2252,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 454)
-  def _reduce_138(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 523)
+  def _reduce_174(val, _values, result)
      result = val[1] 
     result
@@ -2056,6 +2259,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 457)
-  def _reduce_139(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 526)
+  def _reduce_175(val, _values, result)
     			val[0].set_type( CArrayType.new( val[2] ) )
 			result = val[0]
@@ -2065,6 +2268,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 462)
-  def _reduce_140(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 531)
+  def _reduce_176(val, _values, result)
     			val[0].set_type( CArrayType.new )
 			result = val[0]
@@ -2074,6 +2277,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 467)
-  def _reduce_141(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 536)
+  def _reduce_177(val, _values, result)
     		# 	Generator.warning( "W6001 need 'void' for no parameter"  )
 			val[0].set_type( CFuncType.new )
@@ -2084,6 +2287,8 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 475)
-  def _reduce_142(val, _values, result)
+# reduce 178 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 543)
+  def _reduce_179(val, _values, result)
     		# 	Generator.warning( "W6002 need 'void' for no parameter"  )
 			val[0].set_type( CFuncType.new )
@@ -2094,6 +2299,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 482)
-  def _reduce_143(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 550)
+  def _reduce_180(val, _values, result)
      result = CPtrType.new 
     result
@@ -2101,6 +2306,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 485)
-  def _reduce_144(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 553)
+  def _reduce_181(val, _values, result)
     			result = CPtrType.new
 			result.set_qualifier( val[1] )
@@ -2110,6 +2315,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 490)
-  def _reduce_145(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 558)
+  def _reduce_182(val, _values, result)
     			val[1].set_type(CPtrType.new)
 			result = val[1]
@@ -2119,6 +2324,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 495)
-  def _reduce_146(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 563)
+  def _reduce_183(val, _values, result)
     			ptrtype = CPtrType.new
 			ptrtype.set_qualifier( val[1] )
@@ -2130,40 +2335,48 @@
 .,.,
 
-# reduce 147 omitted
-
-# reduce 148 omitted
-
-# reduce 149 omitted
-
-# reduce 150 omitted
-
-# reduce 151 omitted
-
-# reduce 152 omitted
-
-# reduce 153 omitted
-
-# reduce 154 omitted
-
-# reduce 155 omitted
-
-# reduce 156 omitted
-
-# reduce 157 omitted
-
-# reduce 158 omitted
-
-# reduce 159 omitted
-
-# reduce 160 omitted
-
-# reduce 161 omitted
-
-# reduce 162 omitted
-
-# reduce 163 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 559)
-  def _reduce_164(val, _values, result)
+# reduce 184 omitted
+
+# reduce 185 omitted
+
+# reduce 186 omitted
+
+# reduce 187 omitted
+
+# reduce 188 omitted
+
+# reduce 189 omitted
+
+# reduce 190 omitted
+
+# reduce 191 omitted
+
+# reduce 192 omitted
+
+# reduce 193 omitted
+
+# reduce 194 omitted
+
+# reduce 195 omitted
+
+# reduce 196 omitted
+
+# reduce 197 omitted
+
+# reduce 198 omitted
+
+# reduce 199 omitted
+
+# reduce 200 omitted
+
+# reduce 201 omitted
+
+# reduce 202 omitted
+
+# reduce 203 omitted
+
+# reduce 204 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 630)
+  def _reduce_205(val, _values, result)
     			Generator.warning( "W6003 need 'void' for no parameter"  )
 		
@@ -2172,8 +2385,8 @@
 .,.,
 
-# reduce 165 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 564)
-  def _reduce_166(val, _values, result)
+# reduce 206 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 635)
+  def _reduce_207(val, _values, result)
     			Generator.warning( "W6004 need 'void' for no parameter"  )
 		
@@ -2182,8 +2395,8 @@
 .,.,
 
-# reduce 167 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 571)
-  def _reduce_168(val, _values, result)
+# reduce 208 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 642)
+  def _reduce_209(val, _values, result)
      result = val[0] 
     result
@@ -2191,6 +2404,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 573)
-  def _reduce_169(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 644)
+  def _reduce_210(val, _values, result)
      result = val[1] 
     result
@@ -2198,6 +2411,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 575)
-  def _reduce_170(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 646)
+  def _reduce_211(val, _values, result)
      result = val[1] 
     result
@@ -2205,6 +2418,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 577)
-  def _reduce_171(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 648)
+  def _reduce_212(val, _values, result)
      result = C_EXP.new( val[2] ) 
     result
@@ -2212,6 +2425,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 582)
-  def _reduce_172(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 653)
+  def _reduce_213(val, _values, result)
     			result = [ val[0] ]
 		
@@ -2220,6 +2433,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 586)
-  def _reduce_173(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 657)
+  def _reduce_214(val, _values, result)
     			val[0] << val[2]
 			result = val[0]
@@ -2229,28 +2442,28 @@
 .,.,
 
-# reduce 174 omitted
-
-# reduce 175 omitted
-
-# reduce 176 omitted
-
-# reduce 177 omitted
-
-# reduce 178 omitted
-
-# reduce 179 omitted
-
-# reduce 180 omitted
-
-# reduce 181 omitted
-
-# reduce 182 omitted
-
-# reduce 183 omitted
-
-# reduce 184 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 614)
-  def _reduce_185(val, _values, result)
+# reduce 215 omitted
+
+# reduce 216 omitted
+
+# reduce 217 omitted
+
+# reduce 218 omitted
+
+# reduce 219 omitted
+
+# reduce 220 omitted
+
+# reduce 221 omitted
+
+# reduce 222 omitted
+
+# reduce 223 omitted
+
+# reduce 224 omitted
+
+# reduce 225 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 685)
+  def _reduce_226(val, _values, result)
     			val[2].each{ |i|
 			   i.set_kind( :TYPEDEF )
@@ -2263,6 +2476,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 623)
-  def _reduce_186(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 694)
+  def _reduce_227(val, _values, result)
      result = [ val[0] ] 
     result
@@ -2270,6 +2483,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 625)
-  def _reduce_187(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 696)
+  def _reduce_228(val, _values, result)
      result << val[2] 
     result
@@ -2277,86 +2490,4 @@
 .,.,
 
-# reduce 188 omitted
-
-# reduce 189 omitted
-
-# reduce 190 omitted
-
-# reduce 191 omitted
-
-# reduce 192 omitted
-
-# reduce 193 omitted
-
-# reduce 194 omitted
-
-# reduce 195 omitted
-
-# reduce 196 omitted
-
-# reduce 197 omitted
-
-# reduce 198 omitted
-
-# reduce 199 omitted
-
-# reduce 200 omitted
-
-# reduce 201 omitted
-
-# reduce 202 omitted
-
-# reduce 203 omitted
-
-# reduce 204 omitted
-
-# reduce 205 omitted
-
-# reduce 206 omitted
-
-# reduce 207 omitted
-
-# reduce 208 omitted
-
-# reduce 209 omitted
-
-# reduce 210 omitted
-
-# reduce 211 omitted
-
-# reduce 212 omitted
-
-# reduce 213 omitted
-
-# reduce 214 omitted
-
-# reduce 215 omitted
-
-# reduce 216 omitted
-
-# reduce 217 omitted
-
-# reduce 218 omitted
-
-# reduce 219 omitted
-
-# reduce 220 omitted
-
-# reduce 221 omitted
-
-# reduce 222 omitted
-
-# reduce 223 omitted
-
-# reduce 224 omitted
-
-# reduce 225 omitted
-
-# reduce 226 omitted
-
-# reduce 227 omitted
-
-# reduce 228 omitted
-
 # reduce 229 omitted
 
@@ -2377,6 +2508,60 @@
 # reduce 237 omitted
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 706)
-  def _reduce_238(val, _values, result)
+# reduce 238 omitted
+
+# reduce 239 omitted
+
+# reduce 240 omitted
+
+# reduce 241 omitted
+
+# reduce 242 omitted
+
+# reduce 243 omitted
+
+# reduce 244 omitted
+
+# reduce 245 omitted
+
+# reduce 246 omitted
+
+# reduce 247 omitted
+
+# reduce 248 omitted
+
+# reduce 249 omitted
+
+# reduce 250 omitted
+
+# reduce 251 omitted
+
+# reduce 252 omitted
+
+# reduce 253 omitted
+
+# reduce 254 omitted
+
+# reduce 255 omitted
+
+# reduce 256 omitted
+
+# reduce 257 omitted
+
+# reduce 258 omitted
+
+# reduce 259 omitted
+
+# reduce 260 omitted
+
+# reduce 261 omitted
+
+# reduce 262 omitted
+
+# reduce 263 omitted
+
+# reduce 264 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 761)
+  def _reduce_265(val, _values, result)
      result = NamespacePath.new( val[0].val, false ) 
     result
@@ -2384,6 +2569,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 707)
-  def _reduce_239(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 762)
+  def _reduce_266(val, _values, result)
      result = NamespacePath.new( val[1].val, true ) 
     result
@@ -2391,7 +2576,24 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 709)
-  def _reduce_240(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 764)
+  def _reduce_267(val, _values, result)
      result = val[0].append!( val[2].val ) 
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 768)
+  def _reduce_268(val, _values, result)
+    		while true
+			# ';' が表れるまで、トークンを読み飛ばす。
+			# gcc の構文拡張に対応すべきだが、単純な実装として、';' まで読み飛ばす。
+			# トークン単位で読み飛ばしているので、文字列やコメント内の ';' は対象にならない。
+			token = next_token
+			if token[1].val == ";"
+				break
+			end
+			# p "skip: #{token[1].val}" 
+		end
+		
     result
   end
