Index: asp3_tinet_ecnl_arm/trunk/asp3_dcre/tecsgen/tecslib/core/C_parser.tab.rb
===================================================================
--- asp3_tinet_ecnl_arm/trunk/asp3_dcre/tecsgen/tecslib/core/C_parser.tab.rb	(revision 352)
+++ asp3_tinet_ecnl_arm/trunk/asp3_dcre/tecsgen/tecslib/core/C_parser.tab.rb	(revision 374)
@@ -1,5 +1,5 @@
 #
 # DO NOT MODIFY!!!!
-# This file is automatically generated by Racc 1.4.14
+# This file is automatically generated by Racc 1.4.9
 # from Racc grammer file "".
 #
@@ -8,293 +8,300 @@
 class C_parser < Racc::Parser
 
-module_eval(<<'...end C_parser.y.rb/module_eval...', 'C_parser.y.rb', 727)
-
-  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
-          locale = @@current_locale[@@generator_nest]
+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 "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.info( msg )
-    @@n_info += 1
-    locale = @@current_locale[ @@generator_nest ]
-    Console.puts "info: #{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
-    locale = @@current_locale[ @@generator_nest ]
+				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 "warning: #{locale[0]}: line #{locale[1]} #{msg}"
+	end
+
+	# このメソッドは構文解析、意味解析からのみ呼出し可
+	def self.info( msg )
+		@@n_info += 1
+		locale = @@current_locale[ @@generator_nest ]
+		Console.puts "info: #{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
+		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
+		@b_no_type_name = b_no_type_name
+	end
 
 ...end C_parser.y.rb/module_eval...
@@ -302,127 +309,145 @@
 
 clist = [
-'106,107,108,109,110,112,70,113,68,181,302,143,55,118,119,208,117,120',
-'121,122,123,124,125,106,107,108,109,110,112,337,113,209,336,210,143',
-'76,118,119,170,117,120,121,122,123,124,125,305,69,301,67,350,28,29,106',
-'107,108,109,110,112,75,113,28,29,162,143,77,118,119,170,117,120,121',
-'122,123,124,125,169,79,205,206,353,306,307,308,309,310,311,312,313,314',
-'315,264,55,144,8,9,10,11,15,16,17,18,19,20,21,174,267,23,25,27,28,29',
-'197,198,375,263,144,106,107,108,109,110,112,346,113,342,197,198,143',
-'173,118,119,153,117,120,121,122,123,124,125,106,107,108,109,110,112',
-'144,113,357,341,3,143,274,118,119,253,117,120,121,122,123,124,125,106',
-'107,108,109,110,112,54,113,199,200,361,143,53,118,119,98,117,120,121',
-'122,123,124,125,106,107,108,109,110,112,345,113,363,83,364,143,82,118',
-'119,346,117,120,121,122,123,124,125,81,144,249,83,274,253,82,253,53',
-'106,107,108,109,110,112,337,113,55,336,365,236,366,118,119,144,117,120',
-'121,122,123,124,125,54,249,367,194,253,97,53,53,195,196,81,199,200,55',
-'55,144,230,89,8,9,10,11,15,16,17,18,19,20,21,79,372,23,25,27,28,29,199',
-'200,144,231,88,232,233,234,235,87,237,238,240,241,242,243,194,377,194',
-'199,200,195,196,195,196,378,39,40,41,42,43,44,45,46,144,106,107,108',
-'109,110,112,379,113,205,206,380,143,381,118,119,382,117,120,121,122',
-'123,124,125,106,107,108,109,110,112,384,113,197,198,385,143,386,118',
-'119,65,117,120,121,122,123,124,125,106,107,108,109,110,112,62,113,391',
-'37,392,143,393,118,119,394,117,120,121,122,123,124,125,106,107,108,109',
-'110,112,61,113,211,212,396,143,398,118,119,280,117,120,121,122,123,124',
-'125,47,144,279,36,277,8,9,10,11,15,16,17,18,19,20,21,271,37,23,25,27',
-'28,29,270,144,38,8,9,10,11,15,16,17,18,19,20,21,199,200,23,25,27,28',
-'29,269,97,256,144,255,39,40,41,42,43,44,45,46,36,247,8,9,10,11,15,16',
-'17,18,19,20,21,144,246,23,25,27,28,29,245,32,38,106,107,108,109,110',
-'112,216,113,215,210,209,143,208,118,119,207,117,120,121,122,123,124',
-'125,39,40,41,42,43,44,45,46,303,106,107,108,109,110,112,316,113,317',
-'319,320,236,321,118,119,323,117,120,121,122,123,124,125,54,54,54,324',
-'54,325,53,53,53,326,53,329,176,55,55,55,230,55,8,9,10,11,15,16,17,18',
-'19,20,21,79,175,23,25,27,28,29,77,97,144,231,171,232,233,234,235,163',
-'237,238,240,241,242,243,183,348,184,349,185,186,187,207,,,39,40,41,42',
-'43,44,45,46,144,106,107,108,109,110,112,,113,,,,143,,118,119,,117,120',
-'121,122,123,124,125,,,106,107,108,109,110,112,,113,,,,236,,118,119,',
-'117,120,121,122,123,124,125,54,54,54,,54,,53,53,53,,53,,,55,55,55,230',
-'55,8,9,10,11,15,16,17,18,19,20,21,79,,23,25,27,28,29,,,,231,,232,233',
-'234,235,144,237,238,240,241,242,243,201,202,203,204,201,202,203,204',
-',,39,40,41,42,43,44,45,46,144,106,107,108,109,110,112,,113,,,,236,,118',
-'119,,117,120,121,122,123,124,125,54,201,202,203,204,,53,,,,,,,55,,,230',
-',8,9,10,11,15,16,17,18,19,20,21,79,,23,25,27,28,29,,,,231,,232,233,234',
-'235,,237,238,240,241,242,243,,,,,,,,,,,39,40,41,42,43,44,45,46,144,106',
-'107,108,109,110,112,,113,,,,143,,118,119,,117,120,121,122,123,124,125',
-'106,107,108,109,110,112,,113,,,,143,,118,119,,117,120,121,122,123,124',
-'125,106,107,108,109,110,112,,113,,,,143,,118,119,,117,120,121,122,123',
-'124,125,106,107,108,109,110,112,,113,,,,143,,118,119,,117,120,121,122',
-'123,124,125,,144,,,,,,,,106,107,108,109,110,112,,113,,,,143,,118,119',
-'144,117,120,121,122,123,124,125,106,107,108,109,110,112,,113,,368,,143',
-',118,119,144,117,120,121,122,123,124,125,,,,,,,,106,107,108,109,110',
-'112,,113,144,,,236,,118,119,,117,120,121,122,123,124,125,,,,,,,,,,,',
-',,,,,230,144,8,9,10,11,15,16,17,18,19,20,21,79,,23,25,27,28,29,,,,231',
-'144,232,233,234,235,,237,238,240,241,242,243,,,,,,,,,,,39,40,41,42,43',
-'44,45,46,144,106,107,108,109,110,112,,113,,,,236,,118,119,,117,120,121',
-'122,123,124,125,,,,,,,,,,,,,,,,,230,,8,9,10,11,15,16,17,18,19,20,21',
-'79,,23,25,27,28,29,,,,231,,232,233,234,235,,237,238,240,241,242,243',
-',,,,,,,,,,39,40,41,42,43,44,45,46,144,106,107,108,109,110,112,,113,',
-',,236,,118,119,,117,120,121,122,123,124,125,,,,,,,,,,,,,,,,,230,,8,9',
-'10,11,15,16,17,18,19,20,21,79,,23,25,27,28,29,,,,231,,232,233,234,235',
-',237,238,240,241,242,243,,,,,,,,,,,39,40,41,42,43,44,45,46,144,106,107',
-'108,109,110,112,,113,,,,143,,118,119,,117,120,121,122,123,124,125,106',
-'107,108,109,110,112,,113,,,,143,,118,119,,117,120,121,122,123,124,125',
-'106,107,108,109,110,112,,113,,,,143,,118,119,,117,120,121,122,123,124',
-'125,106,107,108,109,110,112,,113,,,,143,,118,119,,117,120,121,122,123',
-'124,125,,144,,,,,141,,,,,,,142,106,107,108,109,110,112,,113,,147,144',
-'143,,118,119,,117,120,121,122,123,124,125,106,107,108,109,110,112,,113',
-',,144,143,,118,119,,117,120,121,122,123,124,125,106,107,108,109,110',
-'112,,113,,,144,143,,118,119,,117,120,121,122,123,124,125,106,107,108',
-'109,110,112,,113,,,,143,,118,119,,117,120,121,122,123,124,125,,144,',
-',,,,,,106,107,108,109,110,112,,113,,,,143,,118,119,144,117,120,121,122',
-'123,124,125,106,107,108,109,110,112,,113,,,,143,,118,119,144,117,120',
-'121,122,123,124,125,106,107,108,109,110,112,,113,,,,143,,118,119,144',
-'117,120,121,122,123,124,125,106,107,108,109,110,112,,113,,,,143,,118',
-'119,,117,120,121,122,123,124,125,,144,,,,,141,351,,,,,,142,106,107,108',
-'109,110,112,,113,,,144,143,,118,119,,117,120,121,122,123,124,125,106',
-'107,108,109,110,112,,113,,,144,143,,118,119,,117,120,121,122,123,124',
-'125,106,107,108,109,110,112,,113,,,144,143,,118,119,,117,120,121,122',
-'123,124,125,106,107,108,109,110,112,,113,,,,143,,118,119,,117,120,121',
-'122,123,124,125,,144,,,,,,,,106,107,108,109,110,112,,113,,,,143,,118',
-'119,144,117,120,121,122,123,124,125,106,107,108,109,110,112,,113,,,',
-'143,,118,119,144,117,120,121,122,123,124,125,106,107,108,109,110,112',
-',113,,,,143,,118,119,144,117,120,121,122,123,124,125,,,,,,,,,,106,107',
-'108,109,110,112,,113,,,,236,,118,119,144,117,120,121,122,123,124,125',
-',,,,,,,,,,,,,,,144,230,,8,9,10,11,15,16,17,18,19,20,21,79,239,23,25',
-'27,28,29,,,144,231,,232,233,234,235,,237,238,240,241,242,243,,,,,,,',
-',,,39,40,41,42,43,44,45,46,144,106,107,108,109,110,112,,113,,338,,143',
-',118,119,,117,120,121,122,123,124,125,106,107,108,109,110,112,,113,',
-',,143,,118,119,,117,120,121,122,123,124,125,8,9,10,11,15,16,17,18,19',
-'20,21,,,23,25,27,28,29,8,9,10,11,15,16,17,18,19,20,21,,,23,25,27,28',
-'29,,106,107,108,109,110,112,,113,,,144,143,,118,119,,117,120,121,122',
-'123,124,125,106,107,108,109,110,112,,113,,,144,143,,118,119,,117,120',
-'121,122,123,124,125,106,107,108,109,110,112,,113,,,,143,,118,119,,117',
-'120,121,122,123,124,125,106,107,108,109,110,189,,113,,,,143,,118,119',
-',117,120,121,122,123,124,125,,144,,,,,,,,106,107,108,109,110,191,,113',
-',,,143,,118,119,144,117,120,121,122,123,124,125,106,107,108,109,110',
-'191,,113,,,,143,,118,119,144,117,120,121,122,123,124,125,106,107,108',
-'109,110,112,,113,,,,143,,118,119,144,117,120,121,122,123,124,125,106',
-'107,108,109,110,112,,113,,,,143,,118,119,,117,120,121,122,123,124,125',
-',144,,,,,141,,,,,,,142,,,328,,106,107,108,109,110,112,144,113,,,,143',
-',118,119,,117,120,121,122,123,124,125,,,,,,,144,,,,,,,,,,,106,107,108',
-'109,110,112,,113,,,,236,144,118,119,,117,120,121,122,123,124,125,,,',
-',,,,,,,,,,,,,230,,8,9,10,11,15,16,17,18,19,20,21,79,144,23,25,27,28',
-'29,,,,231,,232,233,234,235,,237,238,240,241,242,243,,,,,,,274,334,,253',
-'39,40,41,42,43,44,45,46,144,55,,,,,249,334,,253,,,53,,,,,,,55,,,,,8',
-'9,10,11,15,16,17,18,19,20,21,,,23,25,27,28,29,8,9,10,11,15,16,17,18',
-'19,20,21,,,23,25,27,28,29,370,,,,,,,,39,40,41,42,43,44,45,46,,,149,',
-',,,,,,39,40,41,42,43,44,45,46,,8,9,10,11,15,16,17,18,19,20,21,,,23,25',
-'27,28,29,8,9,10,11,15,16,17,18,19,20,21,,,23,25,27,28,29,,,,330,,,,',
-'39,40,41,42,43,44,45,46,,,,,,,,,,,39,40,41,42,43,44,45,46,8,9,10,11',
-'15,16,17,18,19,20,21,,,23,25,27,28,29,8,9,10,11,15,16,17,18,19,20,21',
-',,23,25,27,28,29,,,,,,,,,39,40,41,42,43,44,45,46,,,,,,,,,,,39,40,41',
-'42,43,44,45,46,8,9,10,11,15,16,17,18,19,20,21,,340,23,25,27,28,29,8',
-'9,10,11,15,16,17,18,19,20,21,,164,23,25,27,28,29,,,,,,,,,39,40,41,42',
-'43,44,45,46,,,,,,,,,,,39,40,41,42,43,44,45,46,8,9,10,11,15,16,17,18',
-'19,20,21,,,23,25,27,28,29,8,9,10,11,15,16,17,18,19,20,21,,,23,25,27',
-'28,29,,,,,,,,,39,40,41,42,43,44,45,46,,,,,,,,,,,39,40,41,42,43,44,45',
-'46,8,9,10,11,15,16,17,18,19,20,21,,,23,25,27,28,29,8,9,10,11,15,16,17',
-'18,19,20,21,,257,23,25,27,28,29,,,,,,,,,39,40,41,42,43,44,45,46,,,,',
-',,,,,,39,40,41,42,43,44,45,46,8,9,10,11,15,16,17,18,19,20,21,,,23,25',
-'27,28,29,8,9,10,11,15,16,17,18,19,20,21,,262,23,25,27,28,29,,,,,,,,',
-'39,40,41,42,43,44,45,46,,,,,,,,,,,39,40,41,42,43,44,45,46,8,9,10,11',
-'15,16,17,18,19,20,21,,,23,25,27,28,29,8,9,10,11,15,16,17,18,19,20,21',
-',,23,25,27,28,29,,,,,,,,,39,40,41,42,43,44,45,46,,,,,,,,,,,39,40,41',
-'42,43,44,45,46,8,9,10,11,15,16,17,18,19,20,21,,,23,25,27,28,29' ]
-        racc_action_table = arr = ::Array.new(2875, 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|
@@ -434,133 +459,147 @@
 
 clist = [
-'210,210,210,210,210,210,26,210,24,114,213,210,55,210,210,297,210,210',
-'210,210,210,210,210,211,211,211,211,211,211,332,211,298,332,299,211',
-'48,211,211,95,211,211,211,211,211,211,211,217,26,213,24,300,55,55,189',
-'189,189,189,189,189,48,189,114,114,90,189,50,189,189,172,189,189,189',
-'189,189,189,189,95,50,132,132,303,217,217,217,217,217,217,217,217,217',
-'217,166,85,210,189,189,189,189,189,189,189,189,189,189,189,101,172,189',
-'189,189,189,189,287,287,347,166,211,394,394,394,394,394,394,347,394',
-'259,288,288,394,101,394,394,84,394,394,394,394,394,394,394,181,181,181',
-'181,181,181,189,181,318,259,1,181,273,181,181,273,181,181,181,181,181',
-'181,181,194,194,194,194,194,194,51,194,289,289,322,194,51,194,194,70',
-'194,194,194,194,194,194,194,195,195,195,195,195,195,275,195,324,52,327',
-'195,52,195,195,275,195,195,195,195,195,195,195,51,394,248,80,180,248',
-'80,180,248,392,392,392,392,392,392,252,392,180,252,330,392,333,392,392',
-'181,392,392,392,392,392,392,392,342,152,335,286,152,69,342,152,286,286',
-'248,290,290,342,152,194,392,66,392,392,392,392,392,392,392,392,392,392',
-'392,392,339,392,392,392,392,392,291,291,195,392,64,392,392,392,392,63',
-'392,392,392,392,392,392,285,354,128,292,292,285,285,128,128,355,392',
-'392,392,392,392,392,392,392,392,381,381,381,381,381,381,356,381,295',
-'295,357,381,358,381,381,359,381,381,381,381,381,381,381,380,380,380',
-'380,380,380,365,380,129,129,369,380,371,380,380,22,380,380,380,380,380',
-'380,380,196,196,196,196,196,196,14,196,382,32,387,196,389,196,196,390',
-'196,196,196,196,196,196,196,197,197,197,197,197,197,12,197,137,137,393',
-'197,397,197,197,185,197,197,197,197,197,197,197,3,381,184,32,182,32',
-'32,32,32,32,32,32,32,32,32,32,178,2,32,32,32,32,32,177,380,32,72,72',
-'72,72,72,72,72,72,72,72,72,130,130,72,72,72,72,72,175,170,157,196,156',
-'32,32,32,32,32,32,32,32,2,150,2,2,2,2,2,2,2,2,2,2,2,197,148,2,2,2,2',
-'2,146,2,2,198,198,198,198,198,198,144,198,142,136,135,198,134,198,198',
-'133,198,198,198,198,198,198,198,2,2,2,2,2,2,2,2,215,379,379,379,379',
-'379,379,231,379,232,234,235,379,236,379,379,238,379,379,379,379,379',
-'379,379,160,94,54,240,264,241,160,94,54,242,264,244,111,160,94,54,379',
-'264,379,379,379,379,379,379,379,379,379,379,379,379,105,379,379,379',
-'379,379,104,98,198,379,97,379,379,379,379,91,379,379,379,379,379,379',
-'115,278,115,281,115,115,115,296,,,379,379,379,379,379,379,379,379,379',
-'171,171,171,171,171,171,,171,,,,171,,171,171,,171,171,171,171,171,171',
-'171,,,378,378,378,378,378,378,,378,,,,378,,378,378,,378,378,378,378',
-'378,378,378,76,4,74,,174,,76,4,74,,174,,,76,4,74,378,174,378,378,378',
-'378,378,378,378,378,378,378,378,378,,378,378,378,378,378,,,,378,,378',
-'378,378,378,171,378,378,378,378,378,378,294,294,294,294,131,131,131',
-'131,,,378,378,378,378,378,378,378,378,378,361,361,361,361,361,361,,361',
-',,,361,,361,361,,361,361,361,361,361,361,361,218,293,293,293,293,,218',
-',,,,,,218,,,361,,361,361,361,361,361,361,361,361,361,361,361,361,,361',
-'361,361,361,361,,,,361,,361,361,361,361,,361,361,361,361,361,361,,,',
-',,,,,,,361,361,361,361,361,361,361,361,361,199,199,199,199,199,199,',
-'199,,,,199,,199,199,,199,199,199,199,199,199,199,350,350,350,350,350',
-'350,,350,,,,350,,350,350,,350,350,350,350,350,350,350,346,346,346,346',
-'346,346,,346,,,,346,,346,346,,346,346,346,346,346,346,346,191,191,191',
-'191,191,191,,191,,,,191,,191,191,,191,191,191,191,191,191,191,,199,',
-',,,,,,200,200,200,200,200,200,,200,,,,200,,200,200,350,200,200,200,200',
-'200,200,200,336,336,336,336,336,336,,336,,336,,336,,336,336,346,336',
-'336,336,336,336,336,336,,,,,,,,323,323,323,323,323,323,,323,191,,,323',
-',323,323,,323,323,323,323,323,323,323,,,,,,,,,,,,,,,,,323,200,323,323',
-'323,323,323,323,323,323,323,323,323,323,,323,323,323,323,323,,,,323',
-'336,323,323,323,323,,323,323,323,323,323,323,,,,,,,,,,,323,323,323,323',
-'323,323,323,323,323,321,321,321,321,321,321,,321,,,,321,,321,321,,321',
-'321,321,321,321,321,321,,,,,,,,,,,,,,,,,321,,321,321,321,321,321,321',
-'321,321,321,321,321,321,,321,321,321,321,321,,,,321,,321,321,321,321',
-',321,321,321,321,321,321,,,,,,,,,,,321,321,321,321,321,321,321,321,321',
-'398,398,398,398,398,398,,398,,,,398,,398,398,,398,398,398,398,398,398',
-'398,,,,,,,,,,,,,,,,,398,,398,398,398,398,398,398,398,398,398,398,398',
-'398,,398,398,398,398,398,,,,398,,398,398,398,398,,398,398,398,398,398',
-'398,,,,,,,,,,,398,398,398,398,398,398,398,398,398,320,320,320,320,320',
-'320,,320,,,,320,,320,320,,320,320,320,320,320,320,320,319,319,319,319',
-'319,319,,319,,,,319,,319,319,,319,319,319,319,319,319,319,77,77,77,77',
-'77,77,,77,,,,77,,77,77,,77,77,77,77,77,77,77,317,317,317,317,317,317',
-',317,,,,317,,317,317,,317,317,317,317,317,317,317,,320,,,,,77,,,,,,',
-'77,82,82,82,82,82,82,,82,,82,319,82,,82,82,,82,82,82,82,82,82,82,183',
-'183,183,183,183,183,,183,,,77,183,,183,183,,183,183,183,183,183,183',
-'183,316,316,316,316,316,316,,316,,,317,316,,316,316,,316,316,316,316',
-'316,316,316,304,304,304,304,304,304,,304,,,,304,,304,304,,304,304,304',
-'304,304,304,304,,82,,,,,,,,201,201,201,201,201,201,,201,,,,201,,201',
-'201,183,201,201,201,201,201,201,201,202,202,202,202,202,202,,202,,,',
-'202,,202,202,316,202,202,202,202,202,202,202,302,302,302,302,302,302',
-',302,,,,302,,302,302,304,302,302,302,302,302,302,302,277,277,277,277',
-'277,277,,277,,,,277,,277,277,,277,277,277,277,277,277,277,,201,,,,,302',
-'302,,,,,,302,203,203,203,203,203,203,,203,,,202,203,,203,203,,203,203',
-'203,203,203,203,203,209,209,209,209,209,209,,209,,,302,209,,209,209',
-',209,209,209,209,209,209,209,212,212,212,212,212,212,,212,,,277,212',
-',212,212,,212,212,212,212,212,212,212,204,204,204,204,204,204,,204,',
-',,204,,204,204,,204,204,204,204,204,204,204,,203,,,,,,,,271,271,271',
-'271,271,271,,271,,,,271,,271,271,209,271,271,271,271,271,271,271,205',
-'205,205,205,205,205,,205,,,,205,,205,205,212,205,205,205,205,205,205',
-'205,206,206,206,206,206,206,,206,,,,206,,206,206,204,206,206,206,206',
-'206,206,206,,,,,,,,,,145,145,145,145,145,145,,145,,,,145,,145,145,271',
-'145,145,145,145,145,145,145,,,,,,,,,,,,,,,,205,145,,145,145,145,145',
-'145,145,145,145,145,145,145,145,145,145,145,145,145,145,,,206,145,,145',
-'145,145,145,,145,145,145,145,145,145,,,,,,,,,,,145,145,145,145,145,145',
-'145,145,145,253,253,253,253,253,253,,253,,253,,253,,253,253,,253,253',
-'253,253,253,253,253,112,112,112,112,112,112,,112,,,,112,,112,112,,112',
-'112,112,112,112,112,112,38,38,38,38,38,38,38,38,38,38,38,,,38,38,38',
-'38,38,112,112,112,112,112,112,112,112,112,112,112,,,112,112,112,112',
-'112,,207,207,207,207,207,207,,207,,,253,207,,207,207,,207,207,207,207',
-'207,207,207,208,208,208,208,208,208,,208,,,112,208,,208,208,,208,208',
-'208,208,208,208,208,116,116,116,116,116,116,,116,,,,116,,116,116,,116',
-'116,116,116,116,116,116,117,117,117,117,117,117,,117,,,,117,,117,117',
-',117,117,117,117,117,117,117,,207,,,,,,,,118,118,118,118,118,118,,118',
-',,,118,,118,118,208,118,118,118,118,118,118,118,119,119,119,119,119',
-'119,,119,,,,119,,119,119,116,119,119,119,119,119,119,119,141,141,141',
-'141,141,141,,141,,,,141,,141,141,117,141,141,141,141,141,141,141,243',
-'243,243,243,243,243,,243,,,,243,,243,243,,243,243,243,243,243,243,243',
-',118,,,,,141,,,,,,,141,,,243,,237,237,237,237,237,237,119,237,,,,237',
-',237,237,,237,237,237,237,237,237,237,,,,,,,141,,,,,,,,,,,233,233,233',
-'233,233,233,,233,,,,233,243,233,233,,233,233,233,233,233,233,233,,,',
-',,,,,,,,,,,,,233,,233,233,233,233,233,233,233,233,233,233,233,233,237',
-'233,233,233,233,233,,,,233,,233,233,233,233,,233,233,233,233,233,233',
-',,,,,,274,274,,274,233,233,233,233,233,233,233,233,233,274,,,,,249,249',
-',249,,,249,,,,,,,249,,,,,274,274,274,274,274,274,274,274,274,274,274',
-',,274,274,274,274,274,249,249,249,249,249,249,249,249,249,249,249,,',
-'249,249,249,249,249,337,,,,,,,,274,274,274,274,274,274,274,274,,,83',
-',,,,,,,249,249,249,249,249,249,249,249,,337,337,337,337,337,337,337',
-'337,337,337,337,,,337,337,337,337,337,83,83,83,83,83,83,83,83,83,83',
-'83,,,83,83,83,83,83,,,,247,,,,,337,337,337,337,337,337,337,337,,,,,',
-',,,,,83,83,83,83,83,83,83,83,247,247,247,247,247,247,247,247,247,247',
-'247,,,247,247,247,247,247,5,5,5,5,5,5,5,5,5,5,5,,,5,5,5,5,5,,,,,,,,',
-'247,247,247,247,247,247,247,247,,,,,,,,,,,5,5,5,5,5,5,5,5,254,254,254',
-'254,254,254,254,254,254,254,254,,254,254,254,254,254,254,92,92,92,92',
-'92,92,92,92,92,92,92,,92,92,92,92,92,92,,,,,,,,,254,254,254,254,254',
-'254,254,254,,,,,,,,,,,92,92,92,92,92,92,92,92,155,155,155,155,155,155',
-'155,155,155,155,155,,,155,155,155,155,155,89,89,89,89,89,89,89,89,89',
-'89,89,,,89,89,89,89,89,,,,,,,,,155,155,155,155,155,155,155,155,,,,,',
-',,,,,89,89,89,89,89,89,89,89,88,88,88,88,88,88,88,88,88,88,88,,,88,88',
-'88,88,88,158,158,158,158,158,158,158,158,158,158,158,,158,158,158,158',
-'158,158,,,,,,,,,88,88,88,88,88,88,88,88,,,,,,,,,,,158,158,158,158,158',
-'158,158,158,67,67,67,67,67,67,67,67,67,67,67,,,67,67,67,67,67,161,161',
-'161,161,161,161,161,161,161,161,161,,161,161,161,161,161,161,,,,,,,',
-',67,67,67,67,67,67,67,67,,,,,,,,,,,161,161,161,161,161,161,161,161,7',
-'7,7,7,7,7,7,7,7,7,7,,,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,,,6,6,6,6,6,,',
-',,,,,,7,7,7,7,7,7,7,7,,,,,,,,,,,6,6,6,6,6,6,6,6,73,73,73,73,73,73,73',
-'73,73,73,73,,,73,73,73,73,73' ]
-        racc_action_check = arr = ::Array.new(2875, 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|
@@ -572,427 +611,475 @@
 
 racc_action_pointer = [
-   nil,   150,   420,   404,   652,  2412,  2762,  2744,   nil,   nil,
-   nil,   nil,   346,   nil,   323,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   337,   nil,    -5,   nil,    -7,   nil,   nil,   nil,
-   nil,   nil,   366,   nil,   nil,   nil,   nil,   nil,  1848,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    18,   nil,
-    23,   162,   188,   nil,   534,    -8,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   232,   227,   nil,   204,  2674,   nil,   233,
-   124,   nil,   387,  2814,   653,   nil,   651,  1303,   nil,   nil,
-   205,   nil,  1363,  2342,   124,    72,   nil,   nil,  2604,  2552,
-    22,   543,  2482,   nil,   533,    21,   nil,   537,   563,   nil,
-   nil,    88,   nil,   nil,   533,   474,   nil,   nil,   nil,   nil,
-   nil,   542,  1866,   nil,     2,   581,  1972,  1995,  2027,  2050,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   275,   322,
-   414,   685,    45,   480,   461,   458,   456,   351,   nil,   nil,
-   nil,  2073,   485,   nil,   477,  1749,   470,   nil,   467,   nil,
-   445,   nil,   235,   nil,   nil,  2534,   411,   409,  2622,   nil,
-   532,  2692,   nil,   nil,   nil,   nil,    74,   nil,   nil,   nil,
-   436,   608,    51,   nil,   655,   435,   nil,   419,   412,   nil,
-   206,   138,   401,  1386,   393,   383,   nil,   nil,   nil,    51,
-   nil,   890,   nil,   nil,   161,   184,   356,   379,   482,   821,
-   922,  1464,  1487,  1570,  1639,  1694,  1717,  1926,  1949,  1593,
-    -2,    21,  1616,    -7,   nil,   506,   nil,     4,   745,   nil,
+   nil,   732,  2528,   716,   182,  3068,  3043,  2752,  2993,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   515,   517,  2177,   518,   519,   488,  2137,   491,   nil,
-   529,   503,   507,  2096,   509,   nil,   nil,  2394,   204,  2271,
-   nil,   nil,   217,  1843,  2464,   nil,   nil,   nil,   nil,   108,
-   nil,   nil,   nil,   nil,   536,   nil,   nil,   nil,   nil,   nil,
-   nil,  1671,   nil,   145,  2253,   184,   nil,  1533,   581,   nil,
-   nil,   586,   nil,   nil,   nil,   273,   224,    91,   105,   144,
-   225,   250,   269,   724,   681,   287,   579,   -20,    -5,    -4,
-    10,   nil,  1510,    72,  1432,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,  1409,  1326,    82,  1280,
-  1257,  1069,   133,   975,   153,   nil,   nil,   155,   nil,   nil,
-   216,   nil,    22,   222,   nil,   235,   945,  2324,   nil,   260,
-   nil,   nil,   234,   nil,   nil,   nil,   867,   106,   nil,   nil,
-   844,   nil,   nil,   nil,   253,   294,   310,   315,   283,   319,
-   nil,   727,   nil,   nil,   nil,   329,   nil,   nil,   nil,   334,
-   nil,   339,   nil,   nil,   nil,   nil,   nil,   nil,   633,   514,
-   333,   310,   296,   nil,   nil,   nil,   nil,   303,   nil,   362,
-   332,   nil,   216,   350,   115,   nil,   nil,   385,  1163,   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 = [
-  -176,  -243,    -1,  -243,  -243,   -70,   -71,   -72,   -80,   -81,
-   -82,   -83,   -84,   -85,   -86,   -87,   -88,   -89,   -90,   -91,
-   -92,   -93,   -96,   -99,  -243,  -116,  -243,  -129,  -134,  -135,
-  -177,  -178,  -243,  -180,  -181,  -184,  -185,  -186,  -243,  -232,
-  -233,  -234,  -235,  -236,  -237,  -238,  -239,   400,  -243,   -76,
-   -78,  -243,  -137,  -139,  -243,  -145,   -73,   -84,   -86,   -74,
-   -75,  -183,  -182,   -98,  -243,  -102,  -115,  -243,  -119,  -243,
-  -128,  -179,  -106,  -108,  -243,   -69,  -243,  -243,  -190,  -191,
-  -136,  -138,  -243,  -243,  -243,  -146,  -147,   -94,  -243,  -243,
-   -84,   -85,  -243,  -117,  -243,  -243,  -130,  -132,  -243,  -107,
-  -109,  -243,  -188,   -77,   -78,    -2,    -3,    -4,    -5,    -6,
-    -7,    -8,  -243,   -10,   -12,   -23,  -243,  -243,  -243,  -243,
-   -29,   -30,   -31,   -32,   -33,   -34,   -35,   -37,   -41,   -44,
-   -47,   -52,   -55,   -57,   -59,   -61,   -63,   -65,   -68,   -79,
-  -170,  -243,  -243,  -240,  -243,  -243,  -243,  -142,  -243,  -144,
-  -149,  -151,  -155,  -140,  -148,  -243,   -84,   -85,  -243,  -100,
-  -243,  -243,  -122,  -121,  -114,  -118,  -243,  -123,  -125,  -126,
-  -243,  -243,  -243,  -187,  -243,  -243,   -11,  -243,  -243,   -67,
-  -156,   -20,  -243,  -243,  -243,  -243,   -18,   -19,   -24,  -243,
-   -25,  -243,   -27,   -28,  -243,  -243,  -243,  -243,  -243,  -243,
-  -243,  -243,  -243,  -243,  -243,  -243,  -243,  -243,  -243,  -243,
-  -243,  -243,  -243,  -243,  -174,  -243,  -241,   -35,  -243,  -192,
-  -193,  -194,  -195,  -196,  -197,  -198,  -199,  -200,  -201,  -202,
-  -203,  -243,  -243,  -243,  -243,  -243,  -240,  -243,  -243,  -213,
-  -243,  -243,  -243,  -243,  -243,  -141,  -143,  -243,  -158,  -243,
-  -153,  -154,  -159,  -243,  -243,  -105,  -104,   -97,  -101,  -243,
-  -110,  -112,  -113,  -120,  -243,  -131,  -133,  -127,  -189,  -242,
-    -9,  -243,  -157,  -158,  -243,  -243,   -21,   -20,  -243,   -16,
-   -17,  -243,   -38,   -39,   -40,   -42,   -43,   -45,   -46,   -48,
-   -49,   -50,   -51,   -53,   -54,   -56,   -58,   -60,   -62,   -64,
-  -243,  -171,  -243,  -243,  -243,  -221,  -222,  -223,  -224,  -225,
-  -226,  -227,  -228,  -229,  -230,  -231,  -243,  -243,  -243,  -243,
-  -243,  -243,  -243,  -243,  -243,  -215,  -216,  -243,  -218,  -219,
-  -243,  -152,  -160,  -243,  -166,  -243,  -243,  -243,  -162,  -243,
-   -95,  -103,  -243,  -124,   -36,   -13,  -243,  -243,   -15,   -26,
-  -243,  -172,  -175,  -173,  -243,  -243,  -243,  -243,  -243,  -243,
-  -210,  -243,  -212,  -214,  -217,  -243,  -161,  -167,  -164,  -243,
-  -168,  -243,  -163,  -111,   -22,   -14,   -66,  -220,  -243,  -243,
-  -243,  -243,  -243,  -211,  -150,  -165,  -169,  -204,  -206,  -243,
-  -243,  -209,  -243,  -243,  -243,  -205,  -207,  -243,  -243,  -208 ]
+  -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 = [
-    50,     4,   177,   146,    56,    59,    60,   190,   192,   193,
-   148,    86,   139,   138,   260,    80,   167,   188,   138,   158,
-   275,   258,   178,    35,    31,   165,   332,    73,    12,    74,
-    14,     4,   287,   288,    91,   217,    95,   293,   294,   251,
-   304,   154,   219,     2,    85,   295,    92,   285,   286,   296,
-    72,   332,   297,    35,    71,   157,    91,   298,    12,    91,
-    14,    73,    73,    99,   100,   172,    94,   272,   161,   299,
-   102,   276,   104,   278,   103,    63,   214,   138,   155,   177,
-    64,   177,   152,   259,    72,    72,   254,   160,    94,    66,
-   168,    94,   266,    90,   165,   282,   283,   284,   166,   281,
-   265,    73,   300,   182,   331,   213,    30,   138,   248,   289,
-   290,   291,   292,   101,   156,    90,   347,   258,    90,    78,
-   145,     1,   157,   217,    72,   157,   nil,   nil,    91,   nil,
-   318,   nil,   nil,   327,   nil,   nil,   273,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   250,   nil,
-   nil,   nil,   nil,   nil,   160,   nil,   261,   160,   322,   nil,
-    94,   nil,   nil,   nil,   nil,   nil,   nil,   276,   nil,   nil,
-   268,   nil,   344,   138,   339,   nil,   nil,   nil,    73,   nil,
-   nil,   156,   nil,   nil,   156,   nil,   343,    90,   nil,   138,
-   nil,   nil,   nil,   nil,   354,   nil,   373,   nil,   nil,   nil,
-   nil,    72,   nil,   nil,   nil,   248,   355,   356,   nil,   358,
-   359,   217,    80,   217,   104,   nil,   nil,   nil,   360,   nil,
-   362,   157,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   273,   nil,   nil,   nil,   nil,   nil,   374,   352,   138,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   152,   nil,   152,   nil,
-   nil,   217,   nil,   160,   nil,   nil,   nil,   369,   383,   nil,
-   168,   nil,   nil,   nil,   371,   nil,   nil,   nil,   217,   217,
-   389,   390,   138,   152,   nil,   387,   388,   nil,   nil,   nil,
-   156,   nil,   217,   nil,   397,   nil,   376,   nil,   217,   395,
-   nil,   nil,   nil,   nil,   nil,   399,   nil,   nil,   nil,   nil,
+    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,   nil,   nil,   152,   nil,   261 ]
-
-racc_goto_check = [
-    32,    27,     6,    25,    27,    27,    27,    10,    10,    10,
-    57,    55,    33,    24,    45,    56,    51,    12,    24,    39,
-     8,    42,    13,    26,    64,    49,    61,     9,    34,    44,
-    36,    27,    15,    15,    35,    10,    53,    17,    17,    60,
-    79,    55,    70,     2,     9,    18,    48,    14,    14,    19,
-    30,    61,    20,    26,    64,    35,    35,    21,    34,    35,
-    36,     9,     9,    44,    44,    53,    27,    60,    48,    22,
-    32,     6,    32,     6,    31,    38,    33,    24,    40,     6,
-    41,     6,    27,    43,    30,    30,    39,    27,    27,    47,
-    32,    27,    25,    34,    49,    12,    12,    12,    50,    13,
-    54,     9,     6,     9,    59,    62,    63,    24,    55,    16,
-    16,    16,    16,    67,    34,    34,     8,    42,    34,    68,
-    69,     1,    35,    10,    30,    35,   nil,   nil,    35,   nil,
-    70,   nil,   nil,     6,   nil,   nil,    55,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    32,   nil,
-   nil,   nil,   nil,   nil,    27,   nil,    32,    27,    25,   nil,
-    27,   nil,   nil,   nil,   nil,   nil,   nil,     6,   nil,   nil,
-    32,   nil,    12,    24,    25,   nil,   nil,   nil,     9,   nil,
-   nil,    34,   nil,   nil,    34,   nil,    51,    34,   nil,    24,
-   nil,   nil,   nil,   nil,     6,   nil,    45,   nil,   nil,   nil,
-   nil,    30,   nil,   nil,   nil,    55,     6,     6,   nil,     6,
-     6,    10,    56,    10,    32,   nil,   nil,   nil,    70,   nil,
-    70,    35,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-    55,   nil,   nil,   nil,   nil,   nil,     6,    33,    24,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    27,   nil,    27,   nil,
-   nil,    10,   nil,    27,   nil,   nil,   nil,    25,    70,   nil,
-    32,   nil,   nil,   nil,    57,   nil,   nil,   nil,    10,    10,
-     6,     6,    24,    27,   nil,    70,    70,   nil,   nil,   nil,
-    34,   nil,    10,   nil,     6,   nil,    24,   nil,    10,    70,
-   nil,   nil,   nil,   nil,   nil,    70,   nil,   nil,   nil,   nil,
+   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,   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,   121,    43,   nil,   nil,   nil,  -110,   nil,  -161,   -11,
-  -110,   nil,   -99,   -90,  -150,  -167,   -92,  -168,  -162,  -159,
-  -157,  -153,  -142,   nil,   -64,   -79,    21,    -1,   nil,   nil,
-    12,    -2,    -4,   -65,    26,   -33,    28,   nil,    53,   -69,
-    -9,    58,  -137,   -77,    -9,  -146,   nil,    65,   -21,   -67,
-     4,   -78,   nil,   -33,   -70,   -44,   -36,   -73,   nil,  -143,
-  -113,  -222,   -36,   104,    22,   nil,   nil,    39,    69,    41,
-  -103,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -177 ]
+   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,   114,   105,   111,   244,   115,   nil,     7,
-   126,   116,   127,   nil,   128,   129,   130,   131,   132,   133,
-   134,   135,   136,   137,   179,   140,   220,   218,    48,     5,
-     6,    49,    84,   nil,    57,    13,    58,    22,   nil,   nil,
-   nil,   nil,   159,   nil,   180,   nil,    24,   nil,   nil,    93,
-   nil,   nil,    26,   nil,    96,    51,    52,   335,   150,   151,
-   333,   252,   nil,   nil,   nil,    33,    34,   nil,   227,   nil,
-   nil,   221,   222,   223,   224,   225,   226,   228,   229,   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, 136, :_reduce_94,
-  6, 130, :_reduce_95,
-  0, 137, :_reduce_96,
-  5, 130, :_reduce_97,
-  2, 130, :_reduce_98,
-  1, 133, :_reduce_99,
-  1, 135, :_reduce_none,
-  2, 135, :_reduce_none,
-  1, 134, :_reduce_102,
-  3, 138, :_reduce_103,
-  2, 138, :_reduce_none,
-  2, 138, :_reduce_none,
+  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,
-  2, 140, :_reduce_107,
-  1, 140, :_reduce_108,
-  2, 140, :_reduce_109,
-  1, 139, :_reduce_110,
-  3, 139, :_reduce_111,
-  1, 141, :_reduce_none,
-  5, 131, :_reduce_none,
-  4, 131, :_reduce_none,
-  2, 131, :_reduce_none,
-  1, 142, :_reduce_116,
-  1, 144, :_reduce_none,
-  2, 144, :_reduce_none,
-  1, 143, :_reduce_none,
-  3, 145, :_reduce_none,
-  2, 145, :_reduce_none,
-  2, 145, :_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,
+  2, 145, :_reduce_129,
+  1, 145, :_reduce_none,
+  2, 145, :_reduce_131,
+  1, 145, :_reduce_132,
+  1, 144, :_reduce_133,
+  3, 144, :_reduce_134,
   1, 146, :_reduce_none,
-  3, 146, :_reduce_none,
-  1, 147, :_reduce_none,
-  4, 132, :_reduce_none,
-  5, 132, :_reduce_none,
-  2, 132, :_reduce_none,
-  1, 148, :_reduce_129,
+  5, 136, :_reduce_none,
+  4, 136, :_reduce_none,
+  2, 136, :_reduce_none,
+  1, 147, :_reduce_139,
   1, 149, :_reduce_none,
-  3, 149, :_reduce_none,
-  1, 150, :_reduce_none,
+  2, 149, :_reduce_none,
+  1, 148, :_reduce_none,
   3, 150, :_reduce_none,
-  1, 105, :_reduce_134,
-  1, 105, :_reduce_135,
-  2, 128, :_reduce_136,
-  1, 128, :_reduce_none,
-  2, 128, :_reduce_138,
-  1, 152, :_reduce_139,
-  3, 152, :_reduce_140,
-  4, 152, :_reduce_141,
-  3, 152, :_reduce_142,
-  4, 152, :_reduce_143,
-  3, 152, :_reduce_144,
-  1, 151, :_reduce_145,
-  2, 151, :_reduce_146,
-  2, 151, :_reduce_147,
-  3, 151, :_reduce_148,
+  2, 150, :_reduce_none,
+  2, 150, :_reduce_none,
+  1, 151, :_reduce_none,
+  3, 151, :_reduce_none,
+  1, 152, :_reduce_none,
+  2, 152, :_reduce_none,
+  3, 152, :_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,
-  5, 153, :_reduce_none,
+  3, 153, :_reduce_none,
   1, 154, :_reduce_none,
   3, 154, :_reduce_none,
-  2, 155, :_reduce_none,
-  2, 155, :_reduce_none,
-  1, 155, :_reduce_none,
-  1, 109, :_reduce_none,
-  2, 109, :_reduce_none,
-  1, 156, :_reduce_none,
-  1, 156, :_reduce_none,
-  2, 156, :_reduce_none,
-  3, 157, :_reduce_none,
-  2, 157, :_reduce_none,
-  3, 157, :_reduce_none,
-  3, 157, :_reduce_none,
-  4, 157, :_reduce_none,
-  2, 157, :_reduce_166,
-  3, 157, :_reduce_none,
-  3, 157, :_reduce_168,
-  4, 157, :_reduce_none,
-  1, 129, :_reduce_170,
-  3, 129, :_reduce_171,
-  4, 129, :_reduce_172,
-  4, 129, :_reduce_173,
-  1, 158, :_reduce_174,
-  3, 158, :_reduce_175,
-  0, 98, :_reduce_none,
-  2, 98, :_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,
+  5, 157, :_reduce_none,
   1, 160, :_reduce_none,
-  1, 160, :_reduce_none,
-  2, 160, :_reduce_none,
-  2, 160, :_reduce_none,
-  1, 160, :_reduce_none,
-  1, 160, :_reduce_none,
-  1, 160, :_reduce_none,
-  4, 161, :_reduce_187,
-  1, 163, :_reduce_188,
-  3, 163, :_reduce_189,
-  3, 162, :_reduce_none,
-  0, 165, :_reduce_none,
+  3, 160, :_reduce_none,
+  2, 161, :_reduce_none,
+  2, 161, :_reduce_none,
+  1, 161, :_reduce_none,
+  1, 158, :_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,
+  2, 164, :_reduce_none,
+  1, 165, :_reduce_none,
+  1, 165, :_reduce_none,
   2, 165, :_reduce_none,
-  1, 166, :_reduce_none,
-  1, 166, :_reduce_none,
-  1, 166, :_reduce_none,
-  1, 166, :_reduce_none,
-  1, 166, :_reduce_none,
-  1, 166, :_reduce_none,
-  1, 166, :_reduce_none,
-  1, 166, :_reduce_none,
-  1, 166, :_reduce_none,
-  1, 166, :_reduce_none,
-  1, 166, :_reduce_none,
-  5, 167, :_reduce_none,
-  7, 167, :_reduce_none,
-  5, 168, :_reduce_none,
-  7, 169, :_reduce_none,
-  9, 170, :_reduce_none,
-  5, 171, :_reduce_none,
-  3, 172, :_reduce_none,
-  4, 172, :_reduce_none,
-  3, 172, :_reduce_none,
-  3, 164, :_reduce_none,
-  3, 173, :_reduce_none,
-  2, 173, :_reduce_none,
-  2, 173, :_reduce_none,
-  3, 173, :_reduce_none,
-  2, 173, :_reduce_none,
-  2, 174, :_reduce_none,
-  4, 174, :_reduce_none,
-  1, 175, :_reduce_none,
-  1, 175, :_reduce_none,
-  1, 175, :_reduce_none,
-  1, 175, :_reduce_none,
-  1, 175, :_reduce_none,
-  1, 175, :_reduce_none,
-  1, 175, :_reduce_none,
-  1, 175, :_reduce_none,
-  1, 175, :_reduce_none,
-  1, 175, :_reduce_none,
-  1, 175, :_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_240,
-  2, 100, :_reduce_241,
-  3, 100, :_reduce_242 ]
-
-racc_reduce_n = 243
-
-racc_shift_n = 400
+  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,
+  4, 171, :_reduce_none,
+  3, 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,
+  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 = {
@@ -1014,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,
-  "{" => 54,
-  "}" => 55,
-  :STRUCT => 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
@@ -1132,4 +1220,6 @@
   "\"++\"",
   "\"--\"",
+  "\"{\"",
+  "\"}\"",
   "\",\"",
   "SIZEOF",
@@ -1156,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",
   "\"+=\"",
   "\"-=\"",
@@ -1202,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",
@@ -1219,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",
@@ -1236,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",
@@ -1255,5 +1348,5 @@
   "struct_declaration",
   "struct_declarator_list",
-  "type_specifier_qualifier_list",
+  "specifier_qualifier_list",
   "struct_declarator",
   "union_term",
@@ -1263,5 +1356,4 @@
   "union_declarator_list",
   "union_declarator",
-  "enum_type",
   "enumerator_list",
   "enumerator",
@@ -1269,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",
@@ -1287,8 +1381,8 @@
   "forstatement",
   "switchstatement",
-  "labelstatement",
-  "gotostatement",
-  "expressionstatement",
-  "assignment_operator" ]
+  "jump_statement",
+  "asm_statement",
+  "block_item_list",
+  "block_item" ]
 
 Racc_debug_parser = false
@@ -1300,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] ] 
@@ -1307,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] ] 
@@ -1314,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] ] 
@@ -1321,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] ] 
@@ -1328,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] ] 
@@ -1335,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] ] 
@@ -1342,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] ] 
@@ -1349,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 ] 
@@ -1356,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]] 
@@ -1363,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] 
@@ -1372,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
@@ -1390,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
@@ -1397,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] 
@@ -1411,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
@@ -1419,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
@@ -1426,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
@@ -1433,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
@@ -1440,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
@@ -1447,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
@@ -1454,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
@@ -1461,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
@@ -1468,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
@@ -1475,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
@@ -1482,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
@@ -1489,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
@@ -1496,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
@@ -1505,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
@@ -1514,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
@@ -1521,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
@@ -1528,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
@@ -1537,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
@@ -1544,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
@@ -1553,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
@@ -1560,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
@@ -1569,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
@@ -1576,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
@@ -1583,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
@@ -1590,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
@@ -1599,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
@@ -1606,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
@@ -1615,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
@@ -1624,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
@@ -1633,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
@@ -1642,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
@@ -1651,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
@@ -1660,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
@@ -1669,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
@@ -1685,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 は無視
 		
@@ -1695,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]
@@ -1706,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
@@ -1738,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
@@ -1745,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
@@ -1754,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
@@ -1761,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
@@ -1768,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
@@ -1775,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 )
@@ -1848,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 )
@@ -1858,6 +1967,41 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 302)
-  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
@@ -1865,6 +2009,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 305)
-  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]
@@ -1874,6 +2018,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 311)
-  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 )
@@ -1883,6 +2027,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 316)
-  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]
@@ -1892,6 +2036,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 322)
-  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
@@ -1902,6 +2046,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 328)
-  def _reduce_99(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 370)
+  def _reduce_121(val, _values, result)
      set_no_type_name true 
     result
@@ -1909,10 +2053,10 @@
 .,.,
 
-# reduce 100 omitted
-
-# reduce 101 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 337)
-  def _reduce_102(val, _values, result)
+# 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
@@ -1922,6 +2066,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 346)
-  def _reduce_103(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] )
@@ -1936,12 +2080,24 @@
 .,.,
 
-# reduce 104 omitted
-
-# reduce 105 omitted
-
-# reduce 106 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 365)
-  def _reduce_107(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]
 		
@@ -1950,6 +2106,17 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 369)
-  def _reduce_108(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]
@@ -1959,15 +2126,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 374)
-  def _reduce_109(val, _values, result)
-    			val[1].set_qualifier val[0]
-                        result = val[1]
-		
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 380)
-  def _reduce_110(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 433)
+  def _reduce_133(val, _values, result)
      result = [ val[0] ] 
     result
@@ -1975,6 +2133,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 382)
-  def _reduce_111(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 435)
+  def _reduce_134(val, _values, result)
      result << val[2] 
     result
@@ -1982,14 +2140,14 @@
 .,.,
 
-# reduce 112 omitted
-
-# reduce 113 omitted
-
-# reduce 114 omitted
-
-# reduce 115 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 399)
-  def _reduce_116(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
@@ -1997,45 +2155,52 @@
 .,.,
 
-# 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
-
-# reduce 127 omitted
-
-# reduce 128 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 430)
-  def _reduce_129(val, _values, result)
-     result = CEnumType.new( -1 ) 
-    result
-  end
-.,.,
-
-# reduce 130 omitted
-
-# reduce 131 omitted
-
-# reduce 132 omitted
-
-# reduce 133 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 446)
-  def _reduce_134(val, _values, result)
+# 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
@@ -2043,6 +2208,8 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 447)
-  def _reduce_135(val, _values, result)
+# reduce 164 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 498)
+  def _reduce_165(val, _values, result)
      result = :VOLATILE 
     result
@@ -2050,6 +2217,14 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 452)
-  def _reduce_136(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]
@@ -2059,8 +2234,8 @@
 .,.,
 
-# reduce 137 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 458)
-  def _reduce_138(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] )
@@ -2070,6 +2245,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 464)
-  def _reduce_139(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 521)
+  def _reduce_173(val, _values, result)
      result = Decl.new( val[0].val ) 
     result
@@ -2077,6 +2252,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 466)
-  def _reduce_140(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 523)
+  def _reduce_174(val, _values, result)
      result = val[1] 
     result
@@ -2084,6 +2259,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 469)
-  def _reduce_141(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]
@@ -2093,6 +2268,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 474)
-  def _reduce_142(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]
@@ -2102,6 +2277,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 479)
-  def _reduce_143(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 )
@@ -2112,6 +2287,8 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 487)
-  def _reduce_144(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 )
@@ -2122,6 +2299,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 494)
-  def _reduce_145(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 550)
+  def _reduce_180(val, _values, result)
      result = CPtrType.new 
     result
@@ -2129,6 +2306,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 497)
-  def _reduce_146(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 553)
+  def _reduce_181(val, _values, result)
     			result = CPtrType.new
 			result.set_qualifier( val[1] )
@@ -2138,6 +2315,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 502)
-  def _reduce_147(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]
@@ -2147,6 +2324,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 507)
-  def _reduce_148(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 563)
+  def _reduce_183(val, _values, result)
     			ptrtype = CPtrType.new
 			ptrtype.set_qualifier( val[1] )
@@ -2158,40 +2335,48 @@
 .,.,
 
-# 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
-
-# reduce 164 omitted
-
-# reduce 165 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 571)
-  def _reduce_166(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"  )
 		
@@ -2200,8 +2385,8 @@
 .,.,
 
-# reduce 167 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 576)
-  def _reduce_168(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"  )
 		
@@ -2210,8 +2395,8 @@
 .,.,
 
-# reduce 169 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 583)
-  def _reduce_170(val, _values, result)
+# reduce 208 omitted
+
+module_eval(<<'.,.,', 'C_parser.y.rb', 642)
+  def _reduce_209(val, _values, result)
      result = val[0] 
     result
@@ -2219,6 +2404,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 585)
-  def _reduce_171(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 644)
+  def _reduce_210(val, _values, result)
      result = val[1] 
     result
@@ -2226,6 +2411,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 587)
-  def _reduce_172(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 646)
+  def _reduce_211(val, _values, result)
      result = val[1] 
     result
@@ -2233,6 +2418,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 589)
-  def _reduce_173(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 648)
+  def _reduce_212(val, _values, result)
      result = C_EXP.new( val[2] ) 
     result
@@ -2240,6 +2425,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 594)
-  def _reduce_174(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 653)
+  def _reduce_213(val, _values, result)
     			result = [ val[0] ]
 		
@@ -2248,6 +2433,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 598)
-  def _reduce_175(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 657)
+  def _reduce_214(val, _values, result)
     			val[0] << val[2]
 			result = val[0]
@@ -2257,28 +2442,28 @@
 .,.,
 
-# 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
-
-# reduce 185 omitted
-
-# reduce 186 omitted
-
-module_eval(<<'.,.,', 'C_parser.y.rb', 626)
-  def _reduce_187(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 )
@@ -2291,6 +2476,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 635)
-  def _reduce_188(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 694)
+  def _reduce_227(val, _values, result)
      result = [ val[0] ] 
     result
@@ -2298,6 +2483,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 637)
-  def _reduce_189(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 696)
+  def _reduce_228(val, _values, result)
      result << val[2] 
     result
@@ -2305,82 +2490,4 @@
 .,.,
 
-# 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
 
@@ -2405,6 +2512,56 @@
 # reduce 239 omitted
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 718)
-  def _reduce_240(val, _values, result)
+# 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
@@ -2412,6 +2569,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 719)
-  def _reduce_241(val, _values, result)
+module_eval(<<'.,.,', 'C_parser.y.rb', 762)
+  def _reduce_266(val, _values, result)
      result = NamespacePath.new( val[1].val, true ) 
     result
@@ -2419,7 +2576,24 @@
 .,.,
 
-module_eval(<<'.,.,', 'C_parser.y.rb', 721)
-  def _reduce_242(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
