# # DO NOT MODIFY!!!! # This file is automatically generated by Racc 1.4.14 # from Racc grammer file "". # require 'racc/parser.rb' class Generator < Racc::Parser module_eval(<<'...end bnf.y.rb/module_eval...', 'bnf.y.rb', 1534) RESERVED = { # keyword 'namespace' => :NAMESPACE, 'signature' => :SIGNATURE, 'celltype' => :CELLTYPE, 'cell' => :CELL, 'attr' => :ATTRIBUTE, 'var' => :VAR, 'call' => :CALL, 'entry' => :ENTRY, 'composite' => :COMPOSITE, 'require' => :REQUIRE, 'factory' => :FACTORY, 'FACTORY' => :CTFACTORY, 'typedef' => :TYPEDEF, 'struct' => :STRUCT, 'region' => :REGION, 'import' => :IMPORT, 'import_C' => :IMPORT_C, 'generate' => :GENERATE, '__tool_info__' => :TOOL_INFO, # types 'void' => :VOID, 'volatile'=> :VOLATILE, 'const' => :CONST, 'signed' => :SIGNED, 'unsigned'=> :UNSIGNED, 'int8_t' => :INT8_T, 'int16_t' => :INT16_T, 'int32_t' => :INT32_T, 'int64_t' => :INT64_T, 'int128_t' => :INT128_T, 'uint8_t' => :UINT8_T, 'uint16_t' => :UINT16_T, 'uint32_t' => :UINT32_T, 'uint64_t' => :UINT64_T, 'uint128_t' => :UINT128_T, 'float32_t' => :FLOAT32_T, 'double64_t' => :DOUBLE64_T, 'bool_t' => :BOOL_T, 'char_t' => :CHAR_T, 'schar_t' => :SCHAR_T, 'uchar_t' => :UCHAR_T, # unrecommened types 'int' => :INT, # 'intptr' => :INTPTR, 'short' => :SHORT, 'long' => :LONG, # obsolete types 'char' => :CHAR, # 'int8' => :INT8, # 'int16' => :INT16, # 'int32' => :INT32, # 'int64' => :INT64, # 'int128' => :INT128, # 'float' => :FLOAT, # 'double' => :DOUBLE, # 'bool' => :BOOL, 'enum' => :ENUM, 'enum8' => :ENUM8, 'enum16' => :ENUM16, 'enum32' => :ENUM32, 'enum64' => :ENUM64, 'true' => :TRUE, 'false' => :FALSE, 'C_EXP' => :C_EXP, 'Descriptor' => :DESCRIPTOR, # location information for TECSCDE '__location_information__' => :__LOCATION_INFORMATION__, '__cell__' => :__CELL__, '__join__' => :__JOIN__, } # 指定子 '[]' 内でのみ使用できるキーワード RESERVED2 = { # specifier 'id' => :ID, # signature 'callback' => :CALLBACK, 'context' => :CONTEXT, 'deviate' => :DEVIATE, # celltype 'singleton' => :SINGLETON, 'idx_is_id' => :IDX_IS_ID, 'active' => :ACTIVE, # port (entry) 'inline' => :INLINE, 'ref_desc' => :REF_DESC, # call も可 # port (call) 'optional' => :OPTIONAL, 'dynamic' => :DYNAMIC, # port (call), attribute 'omit' => :OMIT, # attribute 'choice' => :CHOICE, # cell 'allocator' => :ALLOCATOR, 'prototype' => :PROTOTYPE, 'restrict' => :RESTRICT, # FuncType 'oneway' => :ONEWAY, # parameter (basic) 'in' => :IN, 'out' => :OUT, 'inout' => :INOUT, 'send' => :SEND, 'receive' => :RECEIVE, # parameter 'size_is' => :SIZE_IS, 'count_is' => :COUNT_IS, 'string' => :STRING, 'nullable' => :NULLABLE, 'through' => :THROUGH, 'in_through' => :IN_THROUGH, 'out_through' => :OUT_THROUGH, 'to_through' => :TO_THROUGH, 'node' => :NODE, 'linkunit' => :LINKUNIT , 'domain' => :DOMAIN, 'class' => :CLASS, } # 再帰的なパーサのためのスタック @@generator_nest = -1 @@generator_stack = [] @@current_locale = [] # import_C 中である @@import_C = false # すべての構文解析が完了した @@b_end_all_parse = false # tag なし struct @@no_struct_tag_num = 0 def self.parse( file_name, plugin = nil, b_reuse = false ) # パーサインスタンスを生成(別パーサで読み込む) parser = Generator.new # plugin から import されている場合の plugin 設定 parser.set_plugin plugin # reuse フラグを設定 parser.set_reuse b_reuse # cdl をパース parser.parse( [file_name] ) # 終期化 パーサスタックを戻す parser.finalize end def finalize # mikan Namespace.pop Namespace.pop Signature.pop Celltype.pop Cell.pop CompositeCelltype.pop end def set_plugin( plugin ) @plugin = plugin end def self.get_plugin if @@generator_stack[@@generator_nest] then # tecsgen 引数の cdl が import される場合は nil return @@generator_stack[@@generator_nest].get_plugin else return nil end end def get_plugin @plugin end def set_reuse( b_reuse ) @b_reuse = b_reuse end def self.is_reuse? if @@generator_stack[@@generator_nest] then # tecsgen 引数の cdl が import される場合は nil return @@generator_stack[@@generator_nest].is_reuse? else return false end end def is_reuse? @b_reuse end def parse(files) # mikan Namespace.push Namespace.push Signature.push Celltype.push Cell.push CompositeCelltype.push @@generator_nest += 1 @@generator_stack[@@generator_nest] = self @in_specifier = false begin @q = [] b_in_comment = false b_in_string = false # euc のコメントを utf8 として扱うと、コメントの終わりを誤る問題の対策 TECS_LANG::set_kcode_binary files.each {|file| lineno = 1 begin string = "" #2.0 IO.foreach(file) {|line| TECSIO.foreach(file) {|line| col = 1 # line.rstrip! 改行含む文字列を扱うようになったので、ここで空白を取り除けなくなった until line.empty? if b_in_comment case line # コメント終了 when /\A\*\// b_in_comment = false when /\A./ ; when /\s+/ # line.rstrip! を止めたため \n などの空白文字とまっちするルールが必要になった ; end elsif b_in_string if line =~ /\A(?:[^"\\]|\\.)*"/ string = "#{string}#{$&}" @q << [:STRING_LITERAL, Token.new(string, file, lineno, col)] b_in_string = false elsif line =~ /\A.*\\\n/ # 改行 \n は '.' にマッチしない string += $& elsif line =~ /\A.*\n/ # 改行 \n は '.' にマッチしない string += line # この位置では error メソッドは使えない (token 読出し前) puts "#{file}:#{lineno}:#{col}: error: string literal has newline without escape" @@n_error += 1 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]+/ @q << [:HEX_CONSTANT, Token.new($&, file, lineno, col)] # 8 進数定数 when /\A0[0-7]+/ @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+/ @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"(?:[^"\\]|\\.)*\\\n$/ string = $& b_in_string = true # 文字列 (改行あり, escape なし) when /\A("(?:[^"\\]|\e\.)*)\n$/ string = $1 + "\\\n" b_in_string = true # この位置では error メソッドは使えない (token 読出し前) # mikan cdl_error ではない puts "#{file}:#{lineno}:#{col}: error: string literal has newline without escape" @@n_error += 1 # 山括弧で囲まれた文字列 # when /\A<[0-9A-Za-z_\. \/]+>/ # AB: angle bracke when /\A<(?:[^>\\]|\\.)*>/ # これはうまく行くようだ @q << [:AB_STRING_LITERAL, Token.new($&, file, lineno, col)] # 行コメント when /\A\/\/.*$/ # 読み飛ばすだけ # コメント開始 when /\A\/\*/ b_in_comment = true # '>>', '<<' など when /\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( "G1014 while open or reading \'$1\'" , file ) if $debug then p puts( evar ) pp $@ end 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 if token[0] == :IDENTIFIER then # TYPE_NAME トークンへ置換え if Namespace.is_typename?( token[1].val ) then token[0] = :TYPE_NAME elsif @in_specifier && RESERVED2[ token[1].val.to_s ] then # 指定子キーワード( '[', ']' 内でのみ有効) token[0] = RESERVED2[ token[1].val.to_s ] 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 else token = [ false, false ] end token end def on_error(t, v, vstack) # p t, token_to_str(t), vstack if token_to_str(t) == "$end" then Generator.error( "G1015 Unexpected EOF" ) else Generator.error( "G1016 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, *arg ) locale = nil self.error2( locale, msg, *arg ) end def self.error2( locale, msg, *arg ) @@n_error += 1 msg = TECSMsg.get_error_message( msg ) # $1, $2, ... を arg で置換 count = 1 arg.each{ |a| str = TECSIO.str_code_convert( msg, a.to_s ) msg.sub!( /\$#{count}/, str ) count += 1 } # import_C の中でのエラー? if @@import_C then C_parser.error( msg ) else # Node の記憶する 位置 (locale) を使用した場合、変更以前に比べ、 # 問題発生箇所と異なる位置にエラーが出るため、構文解析中のエラー # は、解析中の位置を出力する.(new_XXX で owner が子要素のチェッ # クをすると owner の行番号が出てしまう点で、ずれが生じている) if @@b_end_all_parse == false || locale == nil then locale = @@current_locale[ @@generator_nest ] end if locale then Console.puts "#{locale[0]}:#{locale[1]}:#{locale[2]}: error: #{msg}" else Console.puts "error: #{msg}" end end end # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でウォーニング発生は不適切) def self.warning( msg, *arg ) locale = nil self.warning2( locale, msg, *arg ) end def self.warning2( locale, msg, *arg ) @@n_warning += 1 msg = TECSMsg.get_warning_message( msg ) # $1, $2, ... を arg で置換 count = 1 arg.each{ |a| str = TECSIO.str_code_convert( msg, a.to_s ) msg.sub!( /\$#{count}/, str ) count += 1 } # import_C の中でのウォーニング? if @@import_C then C_parser.warning( msg ) else if @@b_end_all_parse == false || locale == nil then locale = @@current_locale[ @@generator_nest ] end if locale then Console.puts "#{locale[0]}:#{locale[1]}:#{locale[2]}: warning: #{msg}" else Console.puts "warning: #{msg}" end end end # このメソッドは構文解析、意味解析からのみ呼出し可 def self.info( msg, *arg ) locale = nil self.info2( locale, msg, *arg ) end def self.info2( locale, msg, *arg ) @@n_info += 1 msg = TECSMsg.get_info_message( msg ) # $1, $2, ... を arg で置換 count = 1 arg.each{ |a| str = TECSIO.str_code_convert( msg, a.to_s ) msg.sub!( /\$#{count}/, str ) count += 1 } # import_C の中でのウォーニング? if @@import_C then C_parser.info( msg ) else if @@b_end_all_parse == false || locale == nil then locale = @@current_locale[ @@generator_nest ] end if locale then Console.puts "#{locale[0]}:#{locale[1]}:#{locale[2]}: info: #{msg}" else Console.puts "info: #{msg}" end end end def self.get_n_error @@n_error end def self.get_n_warning @@n_warning end def self.get_n_info @@n_info end def self.get_nest @@generator_nest end def self.parsing_C? @@import_C end #=== '[' specifier 始め def set_in_specifier # p "set_in_specifier" @in_specifier = true end #=== ']' specifier 終わり def unset_in_specifier # p "unset_in_specifier" @in_specifier = false end # statement_specifier は構文解釈途中で参照したいため @@statement_specifier_stack = [] def self.add_statement_specifier( ss ) if( @@statement_specifier_stack[ @@generator_nest ] == nil )then @@statement_specifier_stack[ @@generator_nest ] = [ ss ] else @@statement_specifier_stack[ @@generator_nest ] << ss end end def self.get_statement_specifier spec_list = @@statement_specifier_stack[ @@generator_nest ] @@statement_specifier_stack[ @@generator_nest ] = nil return spec_list end #=== すべての構文解析が完了したことを報告 def self.end_all_parse @@b_end_all_parse = true end ...end bnf.y.rb/module_eval... ##### State transition tables begin ### clist = [ '66,575,328,559,538,815,78,330,869,328,78,78,78,409,199,200,201,202,203', '204,205,207,846,208,678,135,897,135,647,212,213,214,215,216,217,218', '249,679,177,872,870,408,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24', '25,26,27,28,29,30,31,32,33,34,35,38,465,189,693,333,334,42,43,44,45', '46,47,48,49,896,88,644,406,666,761,711,87,135,871,135,135,135,135,189', '66,189,189,70,68,69,135,71,72,328,73,78,74,304,305,324,860,901,189,407', '136,325,136,327,189,75,75,75,76,77,77,77,135,874,178,189,189,189,79', '875,101,80,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28', '29,30,31,32,33,34,35,38,78,364,365,256,899,42,43,44,45,46,47,48,49,189', '189,189,136,66,136,136,136,136,878,135,135,89,100,78,78,136,328,70,68', '69,399,71,72,135,73,877,74,304,305,324,135,446,135,478,868,325,479,327', '867,879,75,136,76,89,77,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24', '25,26,27,28,29,30,31,32,33,34,35,38,450,48,49,314,838,42,43,44,45,46', '47,48,49,135,135,839,135,66,304,305,306,135,307,308,310,311,691,838', '78,136,136,70,68,69,313,71,72,275,73,880,74,78,180,136,816,304,305,324', '78,881,136,136,136,325,75,327,76,690,77,5,6,7,10,13,14,15,16,17,18,19', '20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,835,426,403,282,697', '42,43,44,45,46,47,48,49,163,817,163,620,288,277,136,136,432,136,180', '504,78,150,136,654,149,720,70,68,69,283,71,72,403,73,402,74,520,636', '162,199,200,201,202,203,204,205,207,328,208,75,503,76,135,77,212,213', '214,215,216,217,218,304,305,306,859,307,308,310,311,199,200,201,202', '203,204,205,207,889,208,635,648,883,135,637,212,213,214,215,216,217', '218,884,858,681,199,200,201,202,203,204,205,207,341,208,342,888,343', '135,234,212,213,214,215,216,217,218,199,200,201,202,203,204,205,207', '682,208,885,668,235,135,661,212,213,214,215,216,217,218,88,789,790,691', '256,400,87,136,150,890,89,149,199,200,201,202,203,204,205,207,667,208', '891,660,163,135,776,212,213,214,215,216,217,218,794,255,401,136,199', '200,201,202,203,204,205,207,892,208,719,415,850,135,162,212,213,214', '215,216,217,218,887,898,136,902,886,582,721,903,581,833,199,200,201', '202,203,204,205,207,720,208,414,851,904,135,136,212,213,214,215,216', '217,218,199,200,201,202,203,204,205,207,832,208,722,698,826,135,906', '212,213,214,215,216,217,218,163,163,88,478,136,907,479,582,87,908,581', '607,89,163,3,163,88,910,827,699,699,81,87,352,353,234,89,797,170,770', '136,199,200,201,202,203,204,205,207,796,208,547,587,564,135,235,212', '213,214,215,216,217,218,90,199,200,201,202,203,204,205,207,136,208,394', '395,396,135,91,212,213,214,215,216,217,218,199,200,201,202,203,204,205', '207,136,208,394,395,396,135,92,212,213,214,215,216,217,218,199,200,201', '202,203,204,205,207,163,208,350,351,96,135,124,212,213,214,215,216,217', '218,594,336,125,199,200,201,202,203,204,205,207,126,208,130,510,132', '135,136,212,213,214,215,216,217,218,134,199,200,201,202,203,204,205', '207,140,208,352,353,142,135,136,212,213,214,215,216,217,218,199,200', '201,202,203,204,205,207,143,208,404,336,144,135,136,212,213,214,215', '216,217,218,199,200,201,202,203,204,205,207,147,208,358,359,155,135', '136,212,213,214,215,216,217,218,350,351,156,199,200,201,202,203,204', '205,207,159,208,350,351,160,135,136,212,213,214,215,216,217,218,164', '199,200,201,202,203,204,205,207,165,208,358,359,166,135,136,212,213', '214,215,216,217,218,199,200,201,202,203,204,205,207,167,208,630,437', '168,135,136,212,213,214,215,216,217,218,352,353,234,747,518,171,631', '287,288,436,438,439,440,441,136,347,629,172,347,173,348,349,235,348', '349,199,200,201,202,203,204,205,207,174,208,352,353,175,135,136,212', '213,214,215,216,217,218,176,199,200,201,202,203,204,205,207,180,208', '184,772,185,135,136,212,213,214,215,216,217,218,199,200,201,202,203', '204,205,207,454,208,145,146,186,135,136,212,213,214,215,216,217,218', '347,187,234,517,518,348,349,456,457,458,455,199,200,201,202,203,204', '205,207,454,208,188,235,189,135,191,212,213,214,215,216,217,218,354', '355,356,357,787,788,136,456,457,458,455,354,355,356,357,199,200,201', '202,203,204,205,207,437,208,382,383,384,135,136,212,213,214,215,216', '217,218,377,378,379,380,381,385,436,438,439,440,441,304,305,306,136', '307,308,310,311,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27', '28,29,30,31,32,33,34,35,38,136,354,355,356,357,42,43,44,45,46,47,48', '49,199,200,201,202,203,204,205,207,192,208,352,353,193,135,196,212,213', '214,215,216,217,218,247,89,136,199,200,201,202,203,204,205,207,257,208', '159,264,208,135,270,212,213,214,215,216,217,218,199,200,201,202,203', '204,205,207,180,208,272,279,280,135,281,212,213,214,215,216,217,218', '234,284,285,286,289,290,199,200,201,202,203,204,205,207,312,208,335', '189,336,135,235,212,213,214,215,216,217,218,360,199,200,201,202,203', '204,205,207,136,208,361,670,362,135,363,212,213,214,215,216,217,218', '199,200,201,202,203,204,205,207,368,208,369,136,371,135,372,212,213', '214,215,216,217,218,159,199,200,201,202,203,204,205,207,405,208,136', '587,410,135,142,212,213,214,215,216,217,218,412,413,199,200,201,202', '203,204,205,207,416,208,417,418,419,135,136,212,213,214,215,216,217', '218,420,199,200,201,202,203,204,205,207,421,208,444,445,448,135,136', '212,213,214,215,216,217,218,199,200,201,202,203,204,205,207,459,208', '462,772,463,135,136,212,213,214,215,216,217,218,470,88,234,88,382,383', '384,87,472,87,473,89,474,89,481,136,377,378,379,380,381,385,235,482', '208,199,200,201,202,203,204,205,207,511,208,512,513,514,135,136,212', '213,214,215,216,217,218,515,199,200,201,202,203,204,205,207,521,208', '522,523,264,135,136,212,213,214,215,216,217,218,199,200,201,202,203', '204,205,207,525,208,270,528,529,135,136,212,213,214,215,216,217,218', '199,200,201,202,203,204,205,207,208,208,532,208,208,135,180,212,213', '214,215,216,217,218,536,537,540,199,200,201,202,203,204,205,207,541', '208,542,544,545,135,136,212,213,214,215,216,217,218,737,738,740,741', '548,189,270,558,562,196,739,737,738,740,741,136,565,189,743,742,196', '739,234,592,569,88,88,571,88,743,742,87,87,88,87,89,89,136,89,87,328', '574,235,89,196,199,200,201,202,203,204,205,207,589,208,590,700,360,135', '136,212,213,214,215,216,217,218,361,362,472,199,200,201,202,203,204', '205,207,363,208,472,591,607,135,136,212,213,214,215,216,217,218,199', '200,201,202,203,204,205,207,608,208,611,336,612,135,614,212,213,214', '215,216,217,218,199,200,201,202,203,204,205,207,615,208,616,617,618', '135,208,212,213,214,215,216,217,218,621,737,738,740,741,163,625,88,88', '641,196,739,785,87,87,136,643,89,89,743,742,625,662,663,669,674,199', '200,201,202,203,204,205,207,675,208,676,680,683,135,136,212,213,214', '215,216,217,218,199,200,201,202,203,204,205,207,685,208,686,687,688', '135,136,212,213,214,215,216,217,218,472,104,105,106,107,108,109,110', '111,112,113,114,689,189,136,692,208,695,704,5,6,7,10,13,14,15,16,17', '18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,163,706,707', '708,163,42,43,44,45,46,47,48,49,710,712,136,117,118,119,120,121,122', '123,199,200,201,202,203,204,205,207,713,208,714,715,718,135,136,212', '213,214,215,216,217,218,199,200,201,202,203,204,205,207,723,208,726', '571,75,135,729,212,213,214,215,216,217,218,199,200,201,202,203,204,205', '207,730,208,196,744,745,135,748,212,213,214,215,216,217,218,199,200', '201,202,203,204,205,207,749,208,752,753,754,135,756,212,213,214,215', '216,217,218,625,759,760,764,199,200,201,202,203,204,205,207,767,208', '771,779,780,135,136,212,213,214,215,216,217,218,199,200,201,202,203', '204,205,207,782,208,783,791,793,135,136,212,213,214,215,216,217,218', '199,200,201,202,203,204,205,207,189,208,795,798,799,135,136,212,213', '214,215,216,217,218,199,200,201,202,203,204,205,207,800,208,803,804', '805,135,136,212,213,214,215,216,217,218,806,654,718,180,199,200,201', '202,203,204,205,207,811,208,812,813,814,135,136,212,213,214,215,216', '217,218,199,200,201,202,203,204,205,207,726,208,823,828,831,135,136', '212,213,214,215,216,217,218,199,200,201,202,203,204,205,207,836,208', '840,841,-386,135,136,212,213,214,215,216,217,218,199,200,201,202,203', '204,205,207,842,208,843,237,844,135,136,212,213,214,215,216,217,218', '848,803,208,854,199,200,201,202,203,204,205,207,857,208,862,863,865', '135,136,212,213,214,215,216,217,218,199,200,201,202,203,204,205,207', ',208,,,,135,136,212,213,214,215,216,217,218,199,200,201,202,203,204', '205,207,,208,,,,135,136,212,213,214,215,216,217,218,199,200,201,202', '203,204,205,207,,208,,,,135,136,212,213,214,215,216,217,218,88,,,,,', '87,,,88,89,737,738,740,741,87,,,136,89,196,739,,,,234,,,,743,742,117', '118,119,120,121,122,123,,,136,,,,,235,,,199,200,201,202,203,204,205', '207,,208,,,,135,136,212,213,214,215,216,217,218,199,200,201,202,203', '204,205,207,,208,472,,,135,136,212,213,214,215,216,217,218,199,200,201', '202,203,204,205,345,,208,,,,135,,212,213,214,215,216,217,218,199,200', '201,202,203,204,205,207,,208,,,,135,,212,213,214,215,216,217,218,,,', '104,105,106,107,108,109,110,111,112,113,114,,,,,136,,,,,,,104,105,106', '107,108,109,110,111,112,113,114,,,,,136,117,118,119,120,121,122,123', ',,,478,585,,584,,,,,,,89,136,117,118,119,120,121,122,123,20,21,22,23', '24,25,26,27,28,29,30,31,32,33,136,5,6,7,10,13,14,15,16,17,18,19,20,21', '22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,672,,78,,,42,43,44,45,46', '47,48,49,,,,,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22', '23,24,25,26,27,28,29,30,31,32,33,34,35,38,241,,78,,,42,43,44,45,46,47', '48,49,,,,,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23', '24,25,26,27,28,29,30,31,32,33,34,35,38,78,,,,,42,43,44,45,46,47,48,49', ',,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26', '27,28,29,30,31,32,33,34,35,38,78,,,,,42,43,44,45,46,47,48,49,506,,,', ',,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27', '28,29,30,31,32,33,34,35,38,78,428,,,,42,43,44,45,46,47,48,49,,,,,,,', ',,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28', '29,30,31,32,33,34,35,38,78,,,,,42,43,44,45,46,47,48,49,,,,,,,,,,,,,', ',,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30', '31,32,33,34,35,38,78,,,,,42,43,44,45,46,47,48,49,,,,,,,,,,,,,,,,,,,5', '6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33', '34,35,38,78,632,,,,42,43,44,45,46,47,48,49,,,,,,,,,,,,,,,,,,,5,6,7,10', '13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35', '38,78,638,,,,42,43,44,45,46,47,48,49,,,,,,,,,,,,,,,,,,,5,6,7,10,13,14', '15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,128', '658,,,,42,43,44,45,46,47,48,49,,,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16', '17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,78,,,,,42', '43,44,45,46,47,48,49,,,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19', '20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,78,516,,,,42,43,44', '45,46,47,48,49,,,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21', '22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,78,,,,,42,43,44,45,46,47', '48,49,,,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24', '25,26,27,28,29,30,31,32,33,34,35,38,78,387,,,,42,43,44,45,46,47,48,49', ',,,,,,,,,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26', '27,28,29,30,31,32,33,34,35,38,78,,,,,42,43,44,45,46,47,48,49,,,,,,,', ',,,,,,,,,,,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28', '29,30,31,32,33,34,35,38,,,,,,42,43,44,45,46,47,48,49,5,6,7,10,13,14', '15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,,', ',,,42,43,44,45,46,47,48,49,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23', '24,25,26,27,28,29,30,31,32,33,34,35,38,,,,,,42,43,44,45,46,47,48,49', '5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32', '33,34,35,38,,,,,,42,43,44,45,46,47,48,49,5,6,7,10,13,14,15,16,17,18', '19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38,,,,,,42,43,44', '45,46,47,48,49,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27', '28,29,30,31,32,33,34,35,38,,,,,,42,43,44,45,46,47,48,49,5,6,7,10,13', '14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,38', ',,,,,42,43,44,45,46,47,48,49,5,6,7,10,13,14,15,16,17,18,19,20,21,22', '23,24,25,26,27,28,29,30,31,32,33,34,35,38,,,,,,42,43,44,45,46,47,48', '49,5,6,7,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31', '32,33,34,35,38,,,,,,42,43,44,45,46,47' ] racc_action_table = arr = ::Array.new(3593, nil) idx = 0 clist.each do |str| str.split(',', -1).each do |i| arr[idx] = i.to_i unless i.empty? idx += 1 end end clist = [ '2,469,843,447,422,777,192,194,852,192,329,2,613,269,515,515,515,515', '515,515,515,515,824,515,596,325,893,515,560,515,515,515,515,515,515', '515,154,597,125,856,853,269,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2', '2,2,2,2,2,2,2,2,329,422,613,194,194,2,2,2,2,2,2,2,2,893,85,560,267,576', '703,642,85,721,855,631,558,528,511,447,161,777,469,2,2,2,92,2,2,563', '2,161,2,192,192,192,843,895,824,267,325,192,515,192,596,329,2,613,2', '329,2,613,75,860,125,856,154,597,2,861,41,2,161,161,161,161,161,161', '161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161', '161,161,161,161,161,187,230,230,258,895,161,161,161,161,161,161,161', '161,576,703,642,721,185,631,558,528,511,866,691,303,89,41,315,185,92', '315,161,161,161,258,161,161,333,161,863,161,563,563,563,286,308,782', '340,851,563,340,563,851,866,161,75,161,340,161,185,185,185,185,185,185', '185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185', '185,185,185,185,185,315,89,89,190,869,185,185,185,185,185,185,185,185', '839,470,812,692,291,187,187,187,512,187,187,187,187,609,812,291,691', '303,185,185,185,190,185,185,171,185,872,185,778,171,333,778,315,315', '315,294,873,286,308,782,315,185,315,185,609,185,291,291,291,291,291', '291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291', '291,291,291,291,291,291,808,291,625,176,625,291,291,291,291,291,291', '291,291,392,778,573,539,539,172,839,470,294,692,172,366,561,86,512,561', '86,808,291,291,291,176,291,291,264,291,264,291,392,553,573,720,720,720', '720,720,720,720,720,874,720,291,366,291,720,291,720,720,720,720,720', '720,720,294,294,294,841,294,294,294,294,902,902,902,902,902,902,902', '902,880,902,553,561,876,902,553,902,902,902,902,902,902,902,877,841', '599,889,889,889,889,889,889,889,889,210,889,210,880,210,889,720,889', '889,889,889,889,889,889,521,521,521,521,521,521,521,521,599,521,878', '577,720,521,568,521,521,521,521,521,521,521,430,743,743,751,157,262', '430,720,148,881,430,148,522,522,522,522,522,522,522,522,577,522,882', '568,102,522,720,522,522,522,522,522,522,522,751,157,262,902,523,523', '523,523,523,523,523,523,883,523,653,278,834,523,102,523,523,523,523', '523,523,523,879,894,889,897,879,580,653,898,580,801,234,234,234,234', '234,234,234,234,653,234,278,834,901,234,521,234,234,234,234,234,234', '234,166,166,166,166,166,166,166,166,801,166,657,626,784,166,904,166', '166,166,166,166,166,166,115,716,518,476,522,905,476,477,518,906,477', '756,518,434,1,452,127,909,784,657,626,3,127,494,494,234,127,756,115', '716,523,479,479,479,479,479,479,479,479,756,479,434,479,452,479,234', '479,479,479,479,479,479,479,8,358,358,358,358,358,358,358,358,234,358', '520,520,520,358,9,358,358,358,358,358,358,358,363,363,363,363,363,363', '363,363,166,363,254,254,254,363,16,363,363,363,363,363,363,363,360,360', '360,360,360,360,360,360,375,360,222,222,38,360,68,360,360,360,360,360', '360,360,505,505,69,361,361,361,361,361,361,361,361,70,361,72,375,73', '361,479,361,361,361,361,361,361,361,74,682,682,682,682,682,682,682,682', '76,682,223,223,77,682,358,682,682,682,682,682,682,682,862,862,862,862', '862,862,862,862,79,862,265,265,80,862,363,862,862,862,862,862,862,862', '362,362,362,362,362,362,362,362,84,362,225,225,94,362,360,362,362,362', '362,362,362,362,489,489,95,797,797,797,797,797,797,797,797,100,797,490', '490,101,797,361,797,797,797,797,797,797,797,104,811,811,811,811,811', '811,811,811,106,811,497,497,108,811,682,811,811,811,811,811,811,811', '838,838,838,838,838,838,838,838,110,838,549,297,114,838,862,838,838', '838,838,838,838,838,491,491,797,684,684,117,549,181,181,297,297,297', '297,297,362,487,549,118,221,119,487,487,797,221,221,796,796,796,796', '796,796,796,796,122,796,492,492,123,796,797,796,796,796,796,796,796', '796,124,835,835,835,835,835,835,835,835,126,835,128,835,129,835,811', '835,835,835,835,835,835,835,514,514,514,514,514,514,514,514,318,514', '82,82,131,514,838,514,514,514,514,514,514,514,488,133,796,389,389,488', '488,318,318,318,318,823,823,823,823,823,823,823,823,564,823,136,796', '137,823,138,823,823,823,823,823,823,823,495,495,495,495,742,742,796', '564,564,564,564,224,224,224,224,207,207,207,207,207,207,207,207,547', '207,510,510,510,207,835,207,207,207,207,207,207,207,510,510,510,510', '510,510,547,547,547,547,547,546,546,546,514,546,546,546,546,207,207', '207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207', '207,207,207,207,207,207,207,207,207,823,496,496,496,496,207,207,207', '207,207,207,207,207,748,748,748,748,748,748,748,748,139,748,493,493', '141,748,144,748,748,748,748,748,748,748,151,152,207,859,859,859,859', '859,859,859,859,159,859,160,164,165,859,167,859,859,859,859,859,859', '859,575,575,575,575,575,575,575,575,168,575,169,173,174,575,175,575', '575,575,575,575,575,575,748,177,178,179,183,184,257,257,257,257,257', '257,257,257,189,257,195,198,206,257,748,257,257,257,257,257,257,257', '226,581,581,581,581,581,581,581,581,748,581,227,581,228,581,229,581', '581,581,581,581,581,581,729,729,729,729,729,729,729,729,235,729,236', '859,240,729,242,729,729,729,729,729,729,729,256,584,584,584,584,584', '584,584,584,266,584,575,584,271,584,272,584,584,584,584,584,584,584', '274,276,147,147,147,147,147,147,147,147,280,147,281,282,283,147,257', '147,147,147,147,147,147,147,284,591,591,591,591,591,591,591,591,285', '591,306,307,309,591,581,591,591,591,591,591,591,591,719,719,719,719', '719,719,719,719,324,719,326,719,327,719,729,719,719,719,719,719,719', '719,334,288,147,602,246,246,246,288,335,602,337,288,338,602,342,584', '246,246,246,246,246,246,147,343,368,714,714,714,714,714,714,714,714', '380,714,381,382,383,714,147,714,714,714,714,714,714,714,384,710,710', '710,710,710,710,710,710,394,710,395,396,401,710,591,710,710,710,710', '710,710,710,706,706,706,706,706,706,706,706,402,706,407,408,409,706', '719,706,706,706,706,706,706,706,504,504,504,504,504,504,504,504,410', '504,411,412,413,504,414,504,504,504,504,504,504,504,416,419,425,365', '365,365,365,365,365,365,365,426,365,428,431,432,365,714,365,365,365', '365,365,365,365,827,827,827,827,437,442,443,446,450,827,827,783,783', '783,783,710,454,460,827,827,783,783,504,504,461,4,696,462,373,783,783', '4,696,146,373,4,696,706,373,146,463,465,504,146,472,630,630,630,630', '630,630,630,630,480,630,483,630,498,630,504,630,630,630,630,630,630', '630,499,500,827,364,364,364,364,364,364,364,364,501,364,783,502,525', '364,365,364,364,364,364,364,364,364,908,908,908,908,908,908,908,908', '526,908,529,530,531,908,533,908,908,908,908,908,908,908,341,341,341', '341,341,341,341,341,534,341,535,536,537,341,538,341,341,341,341,341', '341,341,543,739,739,739,739,544,548,88,424,557,739,739,739,88,424,630', '559,88,424,739,739,565,570,572,578,583,347,347,347,347,347,347,347,347', '586,347,588,598,600,347,364,347,347,347,347,347,347,347,345,345,345', '345,345,345,345,345,604,345,605,606,607,345,908,345,345,345,345,345', '345,345,739,162,162,162,162,162,162,162,162,162,162,162,608,610,341', '611,616,619,632,345,345,345,345,345,345,345,345,345,345,345,345,345', '345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,634,636', '637,638,640,345,345,345,345,345,345,345,345,641,643,347,260,260,260', '260,260,260,260,348,348,348,348,348,348,348,348,644,348,646,648,651', '348,345,348,348,348,348,348,348,348,349,349,349,349,349,349,349,349', '658,349,662,663,664,349,665,349,349,349,349,349,349,349,350,350,350', '350,350,350,350,350,666,350,668,671,673,350,688,350,350,350,350,350', '350,350,351,351,351,351,351,351,351,351,689,351,693,694,695,351,697', '351,351,351,351,351,351,351,699,700,701,707,352,352,352,352,352,352', '352,352,711,352,718,725,727,352,348,352,352,352,352,352,352,352,353', '353,353,353,353,353,353,353,730,353,731,746,749,353,349,353,353,353', '353,353,353,353,354,354,354,354,354,354,354,354,750,354,755,760,761', '354,350,354,354,354,354,354,354,354,355,355,355,355,355,355,355,355', '763,355,764,766,767,355,351,355,355,355,355,355,355,355,768,769,770', '771,356,356,356,356,356,356,356,356,772,356,773,775,776,356,352,356', '356,356,356,356,356,356,357,357,357,357,357,357,357,357,780,357,781', '793,799,357,353,357,357,357,357,357,357,357,359,359,359,359,359,359', '359,359,810,359,814,815,816,359,354,359,359,359,359,359,359,359,149', '149,149,149,149,149,149,149,817,149,821,149,822,149,355,149,149,149', '149,149,149,149,828,833,836,837,474,474,474,474,474,474,474,474,840', '474,845,846,850,474,356,474,474,474,474,474,474,474,290,290,290,290', '290,290,290,290,,290,,,,290,357,290,290,290,290,290,290,290,848,848', '848,848,848,848,848,848,,848,,,,848,359,848,848,848,848,848,848,848', '806,806,806,806,806,806,806,806,,806,,,,806,149,806,806,806,806,806', '806,806,245,,,,,,245,,,253,245,669,669,669,669,253,,,474,253,669,669', ',,,848,,,,669,669,170,170,170,170,170,170,170,,,290,,,,,848,,,403,403', '403,403,403,403,403,403,,403,,,,403,848,403,403,403,403,403,403,403', '513,513,513,513,513,513,513,513,,513,669,,,513,806,513,513,513,513,513', '513,513,212,212,212,212,212,212,212,212,,212,,,,212,,212,212,212,212', '212,212,212,211,211,211,211,211,211,211,211,,211,,,,211,,211,211,211', '211,211,211,211,,,,464,464,464,464,464,464,464,464,464,464,464,,,,,403', ',,,,,,54,54,54,54,54,54,54,54,54,54,54,,,,,513,464,464,464,464,464,464', '464,,,,478,478,,478,,,,,,,478,212,54,54,54,54,54,54,54,36,36,36,36,36', '36,36,36,36,36,36,36,36,36,211,478,478,478,478,478,478,478,478,478,478', '478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478', '478,582,,582,,,478,478,478,478,478,478,478,478,,,,,,,,,,,,,,,,,,,,,582', '582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582', '582,582,582,582,582,582,582,582,582,582,150,,150,,,582,582,582,582,582', '582,582,582,,,,,,,,,,,,,,,,,,,,,150,150,150,150,150,150,150,150,150', '150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150', '150,150,372,,,,,150,150,150,150,150,150,150,150,,,,,,,,,,,,,,,,,,,372', '372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372', '372,372,372,372,372,372,372,372,372,372,293,,,,,372,372,372,372,372', '372,372,372,372,,,,,,,,,,,,,,,,,,293,293,293,293,293,293,293,293,293', '293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293', '293,293,444,293,,,,293,293,293,293,293,293,293,293,,,,,,,,,,,,,,,,,', ',444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444', '444,444,444,444,444,444,444,444,444,444,444,445,,,,,444,444,444,444', '444,444,444,444,,,,,,,,,,,,,,,,,,,445,445,445,445,445,445,445,445,445', '445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445', '445,445,550,,,,,445,445,445,445,445,445,445,445,,,,,,,,,,,,,,,,,,,550', '550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550', '550,550,550,550,550,550,550,550,550,550,554,550,,,,550,550,550,550,550', '550,550,550,,,,,,,,,,,,,,,,,,,554,554,554,554,554,554,554,554,554,554', '554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554', '554,566,554,,,,554,554,554,554,554,554,554,554,,,,,,,,,,,,,,,,,,,566', '566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566', '566,566,566,566,566,566,566,566,566,566,71,566,,,,566,566,566,566,566', '566,566,566,,,,,,,,,,,,,,,,,,,71,71,71,71,71,71,71,71,71,71,71,71,71', '71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,386,,,,,71,71,71,71,71', '71,71,71,,,,,,,,,,,,,,,,,,,386,386,386,386,386,386,386,386,386,386,386', '386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386', '459,386,,,,386,386,386,386,386,386,386,386,,,,,,,,,,,,,,,,,,,459,459', '459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459', '459,459,459,459,459,459,459,459,459,251,,,,,459,459,459,459,459,459', '459,459,,,,,,,,,,,,,,,,,,,251,251,251,251,251,251,251,251,251,251,251', '251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251', '250,251,,,,251,251,251,251,251,251,251,251,,,,,,,,,,,,,,,,,,,250,250', '250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250', '250,250,250,250,250,250,250,250,250,156,,,,,250,250,250,250,250,250', '250,250,,,,,,,,,,,,,,,,,,,156,156,156,156,156,156,156,156,156,156,156', '156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156', ',,,,,156,156,156,156,156,156,156,156,622,622,622,622,622,622,622,622', '622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622', '622,622,622,,,,,,622,622,622,622,622,622,622,622,40,40,40,40,40,40,40', '40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,,,,,', '40,40,40,40,40,40,40,40,705,705,705,705,705,705,705,705,705,705,705', '705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705', ',,,,,705,705,705,705,705,705,705,705,244,244,244,244,244,244,244,244', '244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244', '244,244,244,,,,,,244,244,244,244,244,244,244,244,519,519,519,519,519', '519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519', '519,519,519,519,519,519,,,,,,519,519,519,519,519,519,519,519,709,709', '709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709', '709,709,709,709,709,709,709,709,709,,,,,,709,709,709,709,709,709,709', '709,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289', '289,289,289,289,289,289,289,289,289,289,289,289,,,,,,289,289,289,289', '289,289,289,289,239,239,239,239,239,239,239,239,239,239,239,239,239', '239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,,,,,,239', '239,239,239,239,239' ] racc_action_check = arr = ::Array.new(3593, nil) idx = 0 clist.each do |str| str.split(',', -1).each do |i| arr[idx] = i.to_i unless i.empty? idx += 1 end end racc_action_pointer = [ nil, 613, -1, 620, 1492, nil, nil, nil, 612, 627, nil, nil, nil, nil, nil, nil, 680, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 2268, nil, 694, nil, 3265, 123, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 2185, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 702, 712, 721, 2888, 717, 719, 729, 115, 738, 742, nil, 704, 770, nil, 921, nil, 755, 75, 359, nil, 1610, 174, nil, nil, 89, nil, 730, 742, nil, nil, nil, nil, 807, 755, 496, nil, 827, nil, 836, nil, 840, nil, 858, nil, nil, nil, 862, 586, nil, 877, 889, 891, nil, nil, 905, 909, 917, 27, 922, 606, 866, 870, nil, 892, nil, 903, nil, nil, 979, 888, 983, 1040, nil, 1044, nil, nil, 1106, nil, 1500, 1268, 484, 2000, 2416, 1115, 1107, nil, 26, nil, 3183, 448, nil, 1094, 1123, 97, 1591, nil, 1124, 1129, 575, 1127, 1143, 1031, 2017, 282, 350, 1146, 1147, 1149, 335, 1163, 1164, 1134, nil, 848, nil, 1163, 1168, 184, nil, 156, nil, 1171, 218, nil, -6, nil, -65, 1178, nil, nil, 1081, nil, nil, nil, nil, nil, nil, nil, 1179, 1019, nil, nil, 437, 2228, 2206, nil, nil, nil, nil, nil, nil, nil, nil, 880, 687, 729, 989, 767, 1182, 1177, 1178, 1179, 132, nil, nil, nil, 553, 1222, 1220, nil, nil, 3511, 1225, nil, 1196, nil, 3347, 2107, 1268, nil, nil, nil, 3124, 3065, nil, 2116, 612, nil, 1230, 1176, 130, nil, 1615, nil, 480, nil, 367, 767, 1244, 76, nil, -1, nil, 1217, 1245, nil, 1227, nil, 1228, nil, 524, nil, 1237, 1270, 1241, 1271, 1252, 1261, 197, nil, 1329, 3470, 2048, 271, nil, 2534, 291, nil, nil, 778, nil, nil, nil, nil, nil, 177, nil, nil, 1232, 1233, 198, 1234, nil, nil, nil, nil, nil, 183, nil, nil, 867, nil, nil, nil, nil, nil, 1252, 10, 1197, 1313, nil, -2, nil, nil, nil, 190, 1328, 1274, nil, 1337, 1339, nil, 206, 1588, 1336, 1345, nil, 1658, nil, 1636, 1750, 1772, 1794, 1816, 1842, 1864, 1886, 1908, 1934, 1956, 651, 1978, 695, 720, 787, 673, 1544, 1452, 325, nil, 1350, nil, nil, nil, 2475, 1495, nil, 692, nil, nil, nil, nil, 1361, 1363, 1364, 1365, 1375, nil, 2947, nil, nil, 936, nil, nil, 342, nil, 1384, 1386, 1387, nil, nil, nil, nil, 1382, 1400, 2162, nil, nil, nil, 1402, 1347, 1404, 1426, 1368, 1429, 1430, 1428, nil, 1440, nil, nil, 1442, nil, nil, -37, nil, 1611, 1443, 1422, nil, 1424, nil, 476, 1355, 1426, nil, 599, nil, nil, 1471, nil, nil, nil, nil, 1373, 1467, 2593, 2652, 1441, -11, nil, nil, 1444, nil, 601, nil, 1483, nil, nil, nil, nil, 3006, 1385, 1485, 1488, 1501, 2163, 1477, nil, nil, nil, -8, 254, nil, 1509, nil, 2026, nil, 593, 597, 2294, 628, 1516, nil, nil, 1521, nil, nil, nil, 877, 954, 791, 804, 855, 890, 1087, 596, 978, 1063, 815, 1515, 1509, 1509, 1518, 1518, nil, 1427, 709, nil, nil, nil, nil, 958, 81, 261, 2184, 949, 12, nil, nil, 592, 3388, 590, 461, 495, 521, nil, 1544, 1563, nil, 80, 1536, 1568, 1570, nil, 1572, 1588, 1559, 1591, 1562, 1593, 318, nil, nil, nil, 1572, 1604, nil, 937, 937, 1603, 857, 2711, nil, nil, 310, 2770, nil, nil, 1547, 79, 1613, 13, 355, nil, 92, 900, 1618, 2829, nil, 437, nil, 1620, nil, 1507, 344, nil, 1148, 73, 433, 1597, nil, 541, 1199, 2355, 1627, 1244, nil, 1636, nil, 1635, nil, nil, 1291, nil, nil, nil, nil, 14, 27, 1639, 430, 1640, nil, 1331, nil, 1658, 1660, 1661, 1657, 1680, 240, 1587, 1626, nil, 0, nil, nil, 1687, nil, nil, 1689, nil, nil, 3224, nil, nil, 332, 578, nil, nil, nil, 1519, 78, 1660, nil, 1716, nil, 1721, 1689, 1692, nil, 1720, 1733, 75, 1703, 1720, nil, 1753, nil, 1723, nil, nil, 1638, nil, 521, nil, nil, nil, 577, 1742, nil, nil, nil, 1769, 1770, 1661, 1747, 1789, nil, 1795, 2125, nil, 1794, nil, 1798, nil, nil, nil, nil, nil, nil, nil, nil, 743, nil, 844, nil, nil, nil, 1768, 1811, nil, 176, 256, 1788, 1819, 1790, 1493, 1817, nil, 1825, 1801, 1829, nil, 74, nil, 3306, 1405, 1772, nil, 3429, 1383, 1837, nil, nil, 1360, nil, 587, nil, 1845, 1313, 384, 76, nil, nil, nil, 1815, nil, 1842, nil, 1221, 1746, 1837, nil, nil, nil, nil, nil, nil, nil, 1611, nil, nil, 1006, 482, nil, nil, 1867, nil, 1101, 1864, 1788, 447, nil, nil, nil, 1858, 596, nil, nil, nil, 1859, 1885, nil, 1908, 1909, nil, 1911, 1882, 1891, 1918, 1808, 1920, 1902, 1933, nil, 1907, 1934, -9, 284, nil, 1951, 1927, 199, 1485, 576, nil, nil, nil, nil, nil, nil, nil, nil, 1954, nil, nil, 904, 812, nil, 1930, nil, 513, nil, nil, nil, nil, 2092, nil, 330, nil, 1947, 835, 240, nil, 1975, 1976, 1864, 1970, nil, nil, nil, 1884, 1974, 982, 8, nil, nil, 1474, 1982, nil, nil, nil, nil, 2014, 525, 927, 2015, 1987, 857, 253, 1996, 399, nil, -13, nil, 1997, 2024, nil, 2070, nil, 2000, 205, -5, 30, nil, 52, 25, nil, nil, 1126, 117, 97, 765, 197, nil, nil, 180, nil, nil, 217, nil, nil, 279, 291, 379, nil, 418, 367, 433, 534, 412, 454, 467, 460, nil, nil, nil, nil, nil, 439, nil, nil, nil, 11, 533, 100, nil, 539, 512, nil, nil, 558, 414, nil, 576, 594, 567, nil, 1566, 606, nil ] racc_action_default = [ -195, -442, -1, -442, -442, -69, -70, -71, -72, -73, -74, -75, -76, -77, -78, -79, -442, -81, -82, -83, -84, -85, -86, -87, -88, -89, -90, -91, -92, -93, -94, -95, -96, -97, -98, -99, -442, -101, -104, -118, -442, -442, -126, -127, -128, -129, -130, -131, -136, -137, -192, -193, -194, -196, -442, -198, -199, -200, -201, -202, -203, -204, -207, -208, -209, -210, -211, -235, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -408, -442, -442, 911, -442, -65, -67, -442, -139, -140, -442, -146, -206, -205, -442, -100, -106, -442, -109, -72, -73, -119, -442, -125, -442, -212, -442, -215, -442, -217, -442, -219, -442, -221, -222, -223, -442, -442, -389, -442, -442, -442, -397, -398, -442, -442, -442, -442, -442, -442, -442, -442, -248, -442, -255, -442, -261, -251, -442, -328, -442, -442, -351, -442, -401, -413, -442, -62, -442, -442, -138, -442, -442, -442, -147, -148, -442, -102, -442, -442, -132, -134, -442, -442, -442, -409, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -338, -442, -245, -442, -243, -442, -256, -442, -252, -442, -442, -329, -442, -402, -442, -442, -435, -66, -2, -3, -4, -5, -6, -7, -8, -9, -10, -442, -12, -14, -18, -442, -442, -22, -23, -24, -25, -26, -27, -28, -30, -34, -37, -40, -45, -48, -50, -52, -54, -56, -58, -61, -68, -186, -442, -442, -442, -143, -63, -442, -442, -145, -150, -152, -442, -156, -442, -141, -149, -80, -442, -442, -107, -442, -442, -123, -442, -442, -442, -197, -442, -213, -442, -225, -442, -442, -442, -442, -229, -442, -292, -442, -442, -390, -442, -392, -442, -394, -442, -407, -442, -442, -442, -442, -442, -442, -442, -241, -442, -442, -442, -442, -249, -442, -442, -262, -264, -442, -266, -267, -268, -269, -270, -442, -289, -290, -442, -442, -442, -442, -314, -315, -253, -325, -327, -442, -352, -354, -442, -356, -357, -358, -359, -367, -442, -442, -442, -442, -384, -442, -410, -411, -412, -442, -442, -442, -13, -442, -442, -60, -172, -442, -442, -442, -19, -442, -20, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, -190, -442, -142, -64, -144, -442, -157, -155, -442, -159, -161, -162, -163, -442, -442, -166, -442, -442, -171, -442, -105, -108, -442, -120, -122, -442, -112, -114, -442, -442, -133, -135, -124, -214, -442, -442, -442, -216, -218, -220, -442, -442, -442, -442, -442, -442, -442, -442, -396, -442, -400, -236, -442, -238, -239, -442, -246, -442, -442, -442, -250, -442, -257, -442, -442, -442, -263, -442, -271, -273, -442, -275, -276, -277, -278, -291, -442, -442, -442, -251, -442, -316, -330, -442, -353, -442, -360, -442, -363, -364, -365, -366, -442, -374, -442, -442, -442, -442, -442, -403, -404, -405, -442, -442, -421, -442, -11, -442, -173, -174, -175, -442, -442, -442, -16, -17, -442, -31, -32, -33, -35, -36, -38, -39, -41, -42, -43, -44, -46, -47, -49, -51, -53, -55, -57, -442, -187, -442, -442, -151, -153, -154, -158, -442, -442, -442, -442, -442, -442, -103, -110, -442, -442, -442, -442, -442, -442, -226, -442, -442, -230, -442, -442, -339, -442, -402, -442, -442, -442, -442, -442, -442, -442, -244, -247, -254, -442, -442, -260, -442, -442, -442, -442, -442, -295, -297, -442, -442, -306, -308, -442, -442, -442, -442, -442, -350, -442, -442, -442, -442, -369, -442, -375, -442, -385, -442, -442, -388, -442, -442, -442, -442, -29, -176, -442, -442, -442, -408, -182, -442, -178, -442, -15, -21, -442, -188, -191, -189, -160, -442, -442, -442, -442, -442, -121, -442, -113, -442, -442, -442, -442, -442, -442, -233, -442, -224, -442, -391, -393, -442, -399, -237, -442, -242, -258, -442, -265, -272, -442, -442, -279, -280, -285, -442, -442, -442, -296, -442, -299, -442, -442, -442, -307, -442, -442, -442, -442, -442, -317, -442, -320, -442, -331, -332, -442, -334, -442, -344, -355, -361, -442, -442, -370, -371, -373, -442, -442, -442, -442, -442, -422, -442, -442, -180, -442, -184, -442, -177, -183, -179, -59, -164, -165, -167, -168, -442, -170, -442, -115, -116, -117, -442, -442, -231, -442, -442, -442, -442, -442, -442, -442, -274, -442, -442, -442, -293, -442, -294, -442, -442, -442, -305, -442, -442, -442, -311, -313, -442, -326, -442, -336, -442, -442, -442, -442, -362, -368, -376, -442, -386, -442, -406, -442, -442, -442, -423, -425, -426, -427, -428, -429, -430, -442, -436, -437, -442, -442, -181, -185, -442, -111, -442, -442, -234, -442, -387, -395, -240, -442, -442, -281, -282, -286, -442, -442, -298, -442, -442, -309, -442, -442, -442, -442, -442, -442, -442, -442, -349, -442, -442, -442, -442, -382, -442, -442, -442, -442, -442, -432, -433, -438, -439, -440, -441, -169, -227, -442, -232, -259, -442, -442, -287, -442, -300, -442, -303, -304, -310, -312, -442, -333, -442, -335, -442, -442, -442, -342, -442, -442, -344, -442, -377, -378, -379, -442, -442, -442, -442, -424, -431, -442, -442, -283, -284, -288, -301, -442, -442, -442, -442, -442, -442, -442, -442, -442, -372, -442, -383, -442, -442, -434, -442, -302, -442, -442, -442, -442, -340, -442, -442, -343, -345, -442, -442, -442, -442, -442, -228, -318, -442, -321, -323, -442, -337, -341, -442, -442, -442, -381, -442, -442, -442, -442, -442, -442, -442, -442, -420, -319, -322, -324, -347, -442, -346, -380, -416, -442, -442, -442, -418, -442, -442, -414, -415, -442, -442, -348, -442, -442, -442, -419, -442, -442, -417 ] racc_goto_table = [ 54, 137, 232, 84, 236, 265, 263, 161, 179, 195, 339, 152, 240, 572, 238, 102, 153, 99, 154, 323, 169, 266, 389, 329, 531, 468, 533, 534, 467, 393, 9, 181, 425, 435, 50, 376, 453, 344, 268, 570, 8, 552, 556, 649, 650, 609, 141, 732, 127, 83, 271, 388, 251, 274, 276, 338, 552, 475, 316, 717, 773, 725, 295, 555, 157, 551, 802, 626, 491, 492, 493, 494, 239, 487, 488, 495, 496, 489, 490, 248, 567, 452, 566, 480, 657, 461, 568, 151, 778, 367, 724, 819, 273, 339, 278, 194, 331, 332, 895, 900, 893, 471, 577, 370, 1, 784, 2, 502, 238, 346, 497, 498, 398, 499, 500, 501, 82, 786, 373, 93, 94, 250, 95, 392, 258, 601, 182, 397, 148, 507, 375, 580, 366, 253, 51, 849, 52, 259, 261, 262, 267, 549, 323, 183, 339, 84, 386, 552, 339, 129, 291, 556, 619, 131, 254, 293, 429, 133, 294, 260, 623, 825, 434, 552, 757, 443, 239, 701, 339, 433, 550, 633, 639, 484, 485, 486, 852, 821, 809, 822, 634, 451, 801, 54, 340, 297, 388, 659, 554, 9, 318, 197, 640, 483, 560, 583, 645, 646, 866, 8, 138, 190, 561, 449, 716, 847, 807, 808, 505, 751, 139, 315, 422, 9, 655, nil, nil, 292, nil, nil, nil, nil, nil, 8, nil, nil, nil, 253, 253, 442, 694, nil, nil, nil, 447, nil, 238, nil, nil, nil, 727, 411, nil, 524, 374, nil, nil, nil, 254, 254, 530, 460, 530, 530, nil, 598, 599, 600, 526, 469, 818, 820, nil, 604, 605, 606, 424, 476, nil, nil, 430, nil, nil, nil, nil, nil, nil, nil, 527, nil, 509, nil, 656, 624, nil, nil, nil, 423, nil, 54, nil, 431, 297, nil, 239, 603, 535, 519, nil, 595, 579, nil, 762, nil, nil, nil, 765, nil, nil, 468, nil, nil, 467, 318, nil, nil, 339, 339, 339, 9, nil, nil, 340, 427, 339, 339, 339, 464, 539, 8, nil, nil, nil, nil, 588, nil, nil, 578, nil, 546, 586, nil, 238, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 563, nil, 593, 728, nil, 613, 253, nil, nil, nil, nil, nil, nil, nil, 684, 508, nil, nil, nil, nil, nil, 530, nil, nil, nil, nil, nil, 254, nil, nil, nil, nil, nil, 323, nil, nil, 861, 677, nil, 576, nil, nil, nil, 239, nil, nil, nil, nil, 476, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 182, 882, 573, nil, nil, nil, 543, 665, nil, nil, nil, nil, nil, 671, 596, 597, 588, nil, nil, 553, 557, 673, nil, 238, nil, 763, 622, 853, nil, 766, nil, 610, nil, 530, 553, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 664, nil, nil, nil, nil, nil, 642, 702, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 602, nil, nil, nil, nil, nil, nil, nil, 239, nil, nil, nil, nil, 339, nil, nil, nil, 339, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 731, nil, nil, nil, 746, nil, 705, nil, 758, nil, nil, nil, 709, nil, nil, 553, nil, nil, nil, 557, 837, nil, nil, nil, 703, nil, 651, nil, nil, nil, nil, 553, nil, nil, nil, nil, 768, nil, nil, nil, nil, 774, 775, nil, nil, nil, nil, 855, nil, nil, nil, 781, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 696, nil, 873, nil, 792, nil, nil, nil, nil, nil, nil, nil, 464, nil, nil, 339, nil, nil, 750, 610, nil, nil, 769, nil, nil, nil, nil, nil, nil, nil, nil, nil, 894, nil, nil, nil, nil, nil, nil, nil, nil, nil, 339, nil, nil, nil, nil, nil, 777, nil, nil, nil, 829, 830, 810, nil, nil, nil, nil, nil, nil, nil, 834, 339, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 530, nil, 845, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 774, nil, 339, nil, nil, 755, nil, nil, nil, nil, nil, nil, nil, 864, nil, nil, nil, nil, 824, nil, nil, nil, nil, nil, nil, nil, nil, 876, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 905, nil, nil, nil, nil, nil, 909, nil, 856, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 651 ] racc_goto_check = [ 45, 4, 32, 31, 23, 5, 85, 47, 83, 167, 22, 29, 55, 153, 28, 68, 53, 25, 4, 101, 47, 23, 44, 157, 84, 74, 84, 84, 76, 48, 34, 89, 6, 106, 64, 60, 145, 10, 86, 154, 33, 24, 24, 129, 130, 88, 156, 170, 25, 30, 83, 43, 40, 83, 83, 11, 24, 61, 138, 133, 135, 152, 98, 118, 51, 113, 116, 107, 14, 14, 14, 14, 29, 12, 12, 15, 15, 13, 13, 53, 113, 140, 146, 6, 107, 147, 148, 31, 149, 32, 150, 151, 158, 22, 159, 161, 162, 163, 164, 165, 166, 168, 169, 28, 1, 173, 2, 6, 28, 8, 16, 17, 23, 18, 19, 20, 26, 170, 27, 37, 39, 41, 42, 46, 51, 49, 31, 52, 54, 57, 59, 62, 63, 25, 65, 116, 66, 67, 80, 81, 82, 87, 101, 90, 22, 31, 40, 24, 22, 91, 92, 24, 84, 93, 45, 94, 95, 96, 97, 45, 99, 170, 100, 24, 108, 110, 29, 111, 22, 98, 112, 113, 118, 10, 10, 10, 135, 152, 133, 152, 114, 138, 115, 45, 25, 45, 43, 113, 117, 34, 45, 30, 119, 11, 121, 61, 122, 123, 124, 33, 125, 126, 127, 128, 131, 170, 132, 134, 5, 88, 136, 137, 4, 34, 139, nil, nil, 64, nil, nil, nil, nil, nil, 33, nil, nil, nil, 25, 25, 4, 84, nil, nil, nil, 4, nil, 28, nil, nil, nil, 154, 156, nil, 85, 31, nil, nil, nil, 45, 45, 5, 4, 5, 5, nil, 6, 6, 6, 23, 4, 129, 130, nil, 6, 6, 6, 25, 53, nil, nil, 25, nil, nil, nil, nil, nil, nil, nil, 86, nil, 47, nil, 145, 106, nil, nil, nil, 31, nil, 45, nil, 45, 45, nil, 29, 48, 83, 47, nil, 60, 10, nil, 24, nil, nil, nil, 24, nil, nil, 74, nil, nil, 76, 45, nil, nil, 22, 22, 22, 34, nil, nil, 25, 64, 22, 22, 22, 45, 89, 33, nil, nil, nil, nil, 23, nil, nil, 167, nil, 47, 55, nil, 28, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 47, nil, 32, 74, nil, 157, 25, nil, nil, nil, nil, nil, nil, nil, 44, 31, nil, nil, nil, nil, nil, 5, nil, nil, nil, nil, nil, 45, nil, nil, nil, nil, nil, 101, nil, nil, 153, 22, nil, 4, nil, nil, nil, 29, nil, nil, nil, nil, 53, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 31, 153, 68, nil, nil, nil, 31, 23, nil, nil, nil, nil, nil, 23, 4, 4, 23, nil, nil, 45, 45, 55, nil, 28, nil, 6, 47, 84, nil, 6, nil, 4, nil, 5, 45, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 47, nil, nil, nil, nil, nil, 4, 23, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 25, nil, nil, nil, nil, nil, nil, nil, 29, nil, nil, nil, nil, 22, nil, nil, nil, 22, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 167, nil, nil, nil, 23, nil, 47, nil, 85, nil, nil, nil, 47, nil, nil, 45, nil, nil, nil, 45, 6, nil, nil, nil, 4, nil, 45, nil, nil, nil, nil, 45, nil, nil, nil, nil, 23, nil, nil, nil, nil, 23, 32, nil, nil, nil, nil, 6, nil, nil, nil, 23, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 25, nil, 6, nil, 32, nil, nil, nil, nil, nil, nil, nil, 45, nil, nil, 22, nil, nil, 4, 4, nil, nil, 47, nil, nil, nil, nil, nil, nil, nil, nil, nil, 6, nil, nil, nil, nil, nil, nil, nil, nil, nil, 22, nil, nil, nil, nil, nil, 4, nil, nil, nil, 32, 32, 83, nil, nil, nil, nil, nil, nil, nil, 23, 22, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 5, nil, 23, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 23, nil, 22, nil, nil, 31, nil, nil, nil, nil, nil, nil, nil, 32, nil, nil, nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, 23, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 23, nil, nil, nil, nil, nil, 23, nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 45 ] racc_goto_pointer = [ nil, 104, 106, nil, -74, -160, -258, nil, -103, nil, -174, -152, -277, -275, -286, -283, -250, -250, -249, -249, -249, nil, -197, -145, -403, -23, 112, -126, -136, -78, 45, -1, -145, 38, 28, nil, nil, 83, nil, 82, -104, -34, 84, -200, -231, -2, -131, -95, -225, -393, nil, -36, -129, -73, 43, -138, nil, -243, nil, -116, -211, -283, -345, -102, 32, 132, 134, -24, -39, nil, nil, nil, nil, nil, -304, nil, -301, nil, nil, nil, -24, -25, -27, -118, -386, -158, -129, -302, -483, -96, 15, 77, -35, 80, -31, -137, 83, -29, -125, -386, -135, -173, nil, nil, nil, nil, -264, -481, -535, nil, -138, -463, -274, -379, -373, -582, -698, -257, -382, -365, nil, -254, -364, -363, -653, 125, 63, -247, -110, -518, -517, -447, -563, -592, -562, -659, 134, 19, -134, -349, -237, nil, nil, nil, nil, -282, -377, -240, -375, -636, -570, -687, -601, -450, -423, nil, -31, -170, -78, -79, nil, -48, -98, -97, -794, -796, -784, -135, -234, -370, -622, nil, nil, -634 ] racc_goto_default = [ nil, nil, nil, 209, 198, 206, 337, 210, 219, 211, 220, nil, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 233, 67, 4, nil, 245, 39, 40, nil, 391, nil, 97, 98, 11, 12, 37, 36, nil, nil, nil, nil, 252, nil, 246, nil, nil, nil, 390, 41, nil, 158, 85, 86, nil, 242, 243, 244, nil, nil, nil, 477, nil, nil, nil, nil, 53, nil, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 103, nil, nil, nil, nil, 628, nil, 269, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 296, nil, 298, 299, 300, 301, 302, nil, nil, 627, 303, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 309, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 652, nil, 653, nil, nil, nil, nil, 317, nil, 319, 320, 321, 322, nil, nil, nil, nil, nil, nil, nil, nil, 326, nil, 115, nil, nil, 116, nil, 466, nil, nil, nil, nil, nil, nil, 733, 735, nil, nil, 734, 736, nil ] racc_reduce_table = [ 0, 0, :racc_error, 1, 142, :_reduce_none, 1, 144, :_reduce_2, 1, 144, :_reduce_3, 1, 144, :_reduce_4, 1, 144, :_reduce_5, 1, 144, :_reduce_6, 1, 144, :_reduce_7, 1, 144, :_reduce_8, 1, 144, :_reduce_9, 1, 144, :_reduce_10, 3, 144, :_reduce_11, 1, 146, :_reduce_none, 2, 146, :_reduce_13, 1, 148, :_reduce_none, 4, 148, :_reduce_15, 3, 148, :_reduce_16, 3, 148, :_reduce_17, 1, 149, :_reduce_none, 2, 149, :_reduce_19, 2, 149, :_reduce_20, 4, 149, :_reduce_21, 1, 150, :_reduce_22, 1, 150, :_reduce_23, 1, 150, :_reduce_24, 1, 150, :_reduce_25, 1, 150, :_reduce_26, 1, 150, :_reduce_27, 1, 151, :_reduce_none, 4, 151, :_reduce_29, 1, 153, :_reduce_none, 3, 153, :_reduce_31, 3, 153, :_reduce_32, 3, 153, :_reduce_33, 1, 154, :_reduce_none, 3, 154, :_reduce_35, 3, 154, :_reduce_36, 1, 155, :_reduce_none, 3, 155, :_reduce_38, 3, 155, :_reduce_39, 1, 156, :_reduce_none, 3, 156, :_reduce_41, 3, 156, :_reduce_42, 3, 156, :_reduce_43, 3, 156, :_reduce_44, 1, 157, :_reduce_none, 3, 157, :_reduce_46, 3, 157, :_reduce_47, 1, 158, :_reduce_none, 3, 158, :_reduce_49, 1, 159, :_reduce_none, 3, 159, :_reduce_51, 1, 160, :_reduce_none, 3, 160, :_reduce_53, 1, 161, :_reduce_none, 3, 161, :_reduce_55, 1, 162, :_reduce_none, 3, 162, :_reduce_57, 1, 163, :_reduce_none, 5, 163, :_reduce_59, 1, 147, :_reduce_60, 1, 164, :_reduce_61, 3, 165, :_reduce_62, 1, 168, :_reduce_none, 2, 168, :_reduce_64, 1, 167, :_reduce_65, 3, 167, :_reduce_66, 1, 171, :_reduce_none, 3, 171, :_reduce_68, 1, 169, :_reduce_69, 1, 169, :_reduce_70, 1, 169, :_reduce_71, 1, 169, :_reduce_none, 1, 169, :_reduce_none, 1, 169, :_reduce_74, 1, 169, :_reduce_none, 1, 169, :_reduce_none, 1, 169, :_reduce_77, 1, 169, :_reduce_78, 1, 169, :_reduce_79, 4, 169, :_reduce_80, 1, 177, :_reduce_81, 1, 177, :_reduce_82, 1, 177, :_reduce_83, 1, 178, :_reduce_84, 1, 178, :_reduce_85, 1, 178, :_reduce_86, 1, 178, :_reduce_87, 1, 178, :_reduce_88, 1, 178, :_reduce_89, 1, 178, :_reduce_90, 1, 178, :_reduce_91, 1, 178, :_reduce_92, 1, 178, :_reduce_93, 1, 178, :_reduce_94, 1, 178, :_reduce_95, 1, 178, :_reduce_96, 1, 178, :_reduce_97, 1, 179, :_reduce_98, 1, 179, :_reduce_99, 2, 176, :_reduce_100, 1, 176, :_reduce_none, 0, 182, :_reduce_102, 6, 174, :_reduce_103, 0, 183, :_reduce_104, 5, 174, :_reduce_105, 2, 174, :_reduce_106, 1, 181, :_reduce_none, 2, 181, :_reduce_none, 1, 180, :_reduce_109, 3, 184, :_reduce_110, 6, 184, :_reduce_111, 1, 187, :_reduce_112, 3, 187, :_reduce_113, 1, 189, :_reduce_114, 4, 189, :_reduce_115, 4, 189, :_reduce_116, 4, 189, :_reduce_117, 1, 166, :_reduce_none, 2, 166, :_reduce_119, 1, 185, :_reduce_120, 3, 185, :_reduce_121, 1, 190, :_reduce_none, 4, 175, :_reduce_none, 5, 175, :_reduce_none, 2, 175, :_reduce_none, 1, 191, :_reduce_126, 1, 191, :_reduce_127, 1, 191, :_reduce_128, 1, 191, :_reduce_129, 1, 191, :_reduce_130, 1, 191, :_reduce_131, 1, 192, :_reduce_none, 3, 192, :_reduce_none, 1, 193, :_reduce_none, 3, 193, :_reduce_none, 1, 170, :_reduce_136, 1, 170, :_reduce_137, 2, 172, :_reduce_138, 1, 172, :_reduce_none, 1, 195, :_reduce_140, 3, 195, :_reduce_141, 4, 195, :_reduce_142, 3, 195, :_reduce_143, 4, 195, :_reduce_144, 3, 195, :_reduce_145, 1, 194, :_reduce_146, 2, 194, :_reduce_147, 2, 194, :_reduce_148, 3, 194, :_reduce_149, 1, 196, :_reduce_none, 3, 196, :_reduce_none, 1, 197, :_reduce_152, 3, 197, :_reduce_153, 3, 198, :_reduce_154, 2, 198, :_reduce_155, 1, 198, :_reduce_156, 2, 198, :_reduce_157, 3, 199, :_reduce_158, 1, 200, :_reduce_159, 3, 200, :_reduce_160, 1, 201, :_reduce_161, 1, 201, :_reduce_162, 1, 201, :_reduce_163, 4, 201, :_reduce_164, 4, 201, :_reduce_165, 1, 201, :_reduce_166, 4, 201, :_reduce_167, 4, 201, :_reduce_168, 6, 201, :_reduce_169, 4, 201, :_reduce_170, 1, 201, :_reduce_171, 1, 152, :_reduce_none, 2, 152, :_reduce_173, 1, 202, :_reduce_none, 1, 202, :_reduce_none, 2, 202, :_reduce_none, 3, 203, :_reduce_177, 2, 203, :_reduce_178, 3, 203, :_reduce_179, 3, 203, :_reduce_180, 4, 203, :_reduce_181, 2, 203, :_reduce_182, 3, 203, :_reduce_none, 3, 203, :_reduce_184, 4, 203, :_reduce_185, 1, 173, :_reduce_186, 3, 173, :_reduce_187, 4, 173, :_reduce_188, 4, 173, :_reduce_189, 1, 204, :_reduce_190, 3, 204, :_reduce_191, 2, 143, :_reduce_none, 2, 143, :_reduce_none, 2, 143, :_reduce_none, 0, 143, :_reduce_none, 1, 205, :_reduce_none, 4, 205, :_reduce_197, 1, 208, :_reduce_none, 1, 208, :_reduce_none, 1, 208, :_reduce_none, 1, 208, :_reduce_none, 1, 208, :_reduce_none, 1, 208, :_reduce_none, 1, 208, :_reduce_none, 2, 208, :_reduce_none, 2, 208, :_reduce_none, 1, 208, :_reduce_none, 1, 208, :_reduce_none, 1, 208, :_reduce_none, 1, 208, :_reduce_none, 1, 208, :_reduce_none, 1, 209, :_reduce_212, 3, 209, :_reduce_213, 4, 221, :_reduce_214, 1, 221, :_reduce_215, 4, 221, :_reduce_216, 1, 221, :_reduce_217, 4, 221, :_reduce_218, 1, 221, :_reduce_219, 4, 221, :_reduce_220, 1, 221, :_reduce_221, 1, 221, :_reduce_222, 1, 221, :_reduce_223, 6, 221, :_reduce_224, 1, 222, :_reduce_225, 3, 222, :_reduce_226, 7, 226, :_reduce_227, 10, 226, :_reduce_228, 1, 223, :_reduce_229, 3, 223, :_reduce_230, 5, 227, :_reduce_231, 7, 227, :_reduce_232, 1, 229, :_reduce_233, 3, 229, :_reduce_234, 1, 211, :_reduce_235, 5, 219, :_reduce_236, 7, 219, :_reduce_237, 5, 218, :_reduce_238, 5, 218, :_reduce_239, 9, 220, :_reduce_240, 4, 210, :_reduce_241, 7, 210, :_reduce_242, 1, 231, :_reduce_none, 4, 231, :_reduce_none, 1, 230, :_reduce_245, 3, 230, :_reduce_246, 6, 212, :_reduce_247, 1, 232, :_reduce_248, 1, 233, :_reduce_none, 2, 233, :_reduce_none, 1, 145, :_reduce_251, 2, 145, :_reduce_252, 3, 145, :_reduce_253, 6, 213, :_reduce_254, 1, 234, :_reduce_255, 0, 235, :_reduce_256, 2, 235, :_reduce_257, 3, 236, :_reduce_258, 6, 236, :_reduce_259, 6, 214, :_reduce_260, 1, 237, :_reduce_261, 1, 238, :_reduce_none, 2, 238, :_reduce_none, 1, 239, :_reduce_264, 4, 239, :_reduce_265, 1, 240, :_reduce_none, 1, 240, :_reduce_none, 1, 240, :_reduce_none, 1, 240, :_reduce_none, 1, 240, :_reduce_none, 1, 241, :_reduce_271, 3, 241, :_reduce_272, 1, 247, :_reduce_273, 4, 247, :_reduce_274, 1, 247, :_reduce_275, 1, 247, :_reduce_276, 1, 247, :_reduce_277, 1, 247, :_reduce_278, 1, 248, :_reduce_279, 1, 248, :_reduce_280, 3, 248, :_reduce_281, 3, 248, :_reduce_282, 5, 249, :_reduce_283, 5, 249, :_reduce_284, 4, 242, :_reduce_285, 6, 242, :_reduce_286, 7, 242, :_reduce_287, 8, 242, :_reduce_288, 1, 250, :_reduce_289, 1, 250, :_reduce_290, 1, 251, :_reduce_291, 1, 228, :_reduce_none, 1, 252, :_reduce_none, 5, 243, :_reduce_294, 1, 253, :_reduce_295, 2, 253, :_reduce_296, 1, 254, :_reduce_297, 4, 254, :_reduce_298, 1, 255, :_reduce_299, 4, 255, :_reduce_300, 5, 255, :_reduce_301, 3, 256, :_reduce_302, 1, 256, :_reduce_303, 1, 257, :_reduce_none, 5, 244, :_reduce_305, 1, 258, :_reduce_306, 2, 258, :_reduce_307, 1, 259, :_reduce_308, 4, 259, :_reduce_309, 4, 260, :_reduce_310, 5, 245, :_reduce_311, 7, 245, :_reduce_312, 5, 246, :_reduce_none, 1, 261, :_reduce_314, 1, 261, :_reduce_315, 0, 262, :_reduce_none, 2, 262, :_reduce_none, 7, 263, :_reduce_318, 9, 263, :_reduce_319, 1, 264, :_reduce_none, 1, 265, :_reduce_321, 3, 265, :_reduce_322, 1, 265, :_reduce_323, 3, 265, :_reduce_324, 0, 269, :_reduce_325, 8, 215, :_reduce_326, 4, 215, :_reduce_327, 1, 266, :_reduce_328, 1, 267, :_reduce_329, 0, 268, :_reduce_none, 2, 268, :_reduce_none, 2, 268, :_reduce_none, 4, 270, :_reduce_333, 1, 270, :_reduce_334, 3, 272, :_reduce_335, 1, 272, :_reduce_336, 6, 274, :_reduce_337, 1, 224, :_reduce_338, 1, 225, :_reduce_none, 6, 273, :_reduce_340, 7, 273, :_reduce_341, 4, 273, :_reduce_342, 6, 273, :_reduce_343, 1, 275, :_reduce_none, 6, 271, :_reduce_345, 9, 271, :_reduce_346, 9, 271, :_reduce_347, 12, 271, :_reduce_348, 1, 276, :_reduce_none, 6, 216, :_reduce_350, 1, 277, :_reduce_351, 1, 278, :_reduce_none, 2, 278, :_reduce_none, 1, 279, :_reduce_354, 4, 279, :_reduce_355, 1, 280, :_reduce_none, 1, 280, :_reduce_none, 1, 280, :_reduce_none, 1, 280, :_reduce_none, 1, 281, :_reduce_360, 3, 281, :_reduce_361, 4, 286, :_reduce_362, 1, 286, :_reduce_363, 1, 286, :_reduce_364, 1, 286, :_reduce_365, 1, 286, :_reduce_366, 1, 282, :_reduce_367, 5, 283, :_reduce_368, 1, 287, :_reduce_369, 2, 287, :_reduce_370, 0, 291, :_reduce_371, 8, 284, :_reduce_372, 4, 284, :_reduce_373, 1, 288, :_reduce_374, 1, 289, :_reduce_375, 0, 290, :_reduce_none, 2, 290, :_reduce_none, 2, 290, :_reduce_none, 2, 290, :_reduce_none, 6, 292, :_reduce_380, 4, 292, :_reduce_381, 6, 285, :_reduce_382, 8, 285, :_reduce_383, 1, 294, :_reduce_none, 1, 295, :_reduce_none, 1, 293, :_reduce_none, 9, 217, :_reduce_387, 6, 217, :_reduce_388, 1, 296, :_reduce_none, 3, 296, :_reduce_none, 6, 299, :_reduce_391, 3, 299, :_reduce_392, 6, 299, :_reduce_393, 3, 299, :_reduce_394, 8, 299, :_reduce_395, 4, 299, :_reduce_396, 1, 299, :_reduce_397, 1, 299, :_reduce_398, 6, 299, :_reduce_399, 4, 299, :_reduce_400, 1, 297, :_reduce_401, 0, 298, :_reduce_none, 2, 298, :_reduce_none, 2, 298, :_reduce_none, 1, 301, :_reduce_none, 4, 301, :_reduce_406, 1, 300, :_reduce_407, 1, 186, :_reduce_408, 1, 188, :_reduce_409, 4, 206, :_reduce_none, 2, 302, :_reduce_none, 2, 302, :_reduce_none, 0, 302, :_reduce_none, 14, 303, :_reduce_414, 2, 305, :_reduce_415, 0, 305, :_reduce_416, 6, 306, :_reduce_417, 13, 304, :_reduce_418, 5, 307, :_reduce_419, 0, 307, :_reduce_420, 5, 207, :_reduce_421, 3, 309, :_reduce_422, 3, 310, :_reduce_423, 5, 310, :_reduce_424, 1, 311, :_reduce_none, 1, 311, :_reduce_none, 1, 311, :_reduce_none, 1, 311, :_reduce_none, 1, 311, :_reduce_429, 1, 311, :_reduce_430, 3, 313, :_reduce_431, 2, 313, :_reduce_432, 1, 314, :_reduce_433, 3, 314, :_reduce_434, 1, 308, :_reduce_435, 1, 312, :_reduce_436, 1, 312, :_reduce_437, 2, 312, :_reduce_438, 2, 312, :_reduce_439, 2, 312, :_reduce_440, 2, 312, :_reduce_441 ] racc_reduce_n = 442 racc_shift_n = 911 racc_token_table = { false => 0, :error => 1, :TRUE => 2, :FALSE => 3, :INTEGER_CONSTANT => 4, :FLOATING_CONSTANT => 5, :OCTAL_CONSTANT => 6, :HEX_CONSTANT => 7, :CHARACTER_LITERAL => 8, "(" => 9, ")" => 10, :STRING_LITERAL => 11, "[" => 12, "]" => 13, "." => 14, :IDENTIFIER => 15, "->" => 16, :SIZEOF => 17, "&" => 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, :FLOAT32_T => 44, :DOUBLE64_T => 45, :TYPE_NAME => 46, :BOOL_T => 47, :FLOAT => 48, :DOUBLE => 49, :DESCRIPTOR => 50, :CHAR_T => 51, :SCHAR_T => 52, :UCHAR_T => 53, :CHAR => 54, :SHORT => 55, :INT => 56, :LONG => 57, :INT8_T => 58, :INT16_T => 59, :INT32_T => 60, :INT64_T => 61, :INT128_T => 62, :UINT8_T => 63, :UINT16_T => 64, :UINT32_T => 65, :UINT64_T => 66, :UINT128_T => 67, :SIGNED => 68, :UNSIGNED => 69, :STRUCT => 70, "{" => 71, "}" => 72, :STRING => 73, :SIZE_IS => 74, :COUNT_IS => 75, :ENUM => 76, :ENUM8 => 77, :ENUM16 => 78, :ENUM32 => 79, :ENUM64 => 80, :ENUM128 => 81, :CONST => 82, :VOLATILE => 83, "..." => 84, :IN => 85, :OUT => 86, :INOUT => 87, :SEND => 88, :RECEIVE => 89, :NULLABLE => 90, :C_EXP => 91, :ALLOCATOR => 92, :CALLBACK => 93, :CONTEXT => 94, :DEVIATE => 95, :ID => 96, :PROTOTYPE => 97, :RESTRICT => 98, :SINGLETON => 99, :IDX_IS_ID => 100, :ACTIVE => 101, :GENERATE => 102, :IMPORT_C => 103, :IMPORT => 104, :AB_STRING_LITERAL => 105, :TYPEDEF => 106, :NAMESPACE => 107, "::" => 108, :SIGNATURE => 109, :ONEWAY => 110, :CELLTYPE => 111, :INLINE => 112, :OPTIONAL => 113, :REF_DESC => 114, :DYNAMIC => 115, :OMIT => 116, :CALL => 117, :ENTRY => 118, :ATTRIBUTE => 119, :CHOICE => 120, :VAR => 121, :REQUIRE => 122, :FACTORY => 123, :CTFACTORY => 124, :CELL => 125, :THROUGH => 126, :COMPOSITE => 127, "=>" => 128, :REGION => 129, :IN_THROUGH => 130, :OUT_THROUGH => 131, :TO_THROUGH => 132, :NODE => 133, :LINKUNIT => 134, :DOMAIN => 135, :CLASS => 136, :__LOCATION_INFORMATION__ => 137, :__CELL__ => 138, :__JOIN__ => 139, :TOOL_INFO => 140 } racc_nt_base = 141 racc_use_result_var = true Racc_arg = [ racc_action_table, racc_action_check, racc_action_default, racc_action_pointer, racc_goto_table, racc_goto_check, racc_goto_default, racc_goto_pointer, racc_nt_base, racc_reduce_table, racc_token_table, racc_shift_n, racc_reduce_n, racc_use_result_var ] Racc_token_to_s_table = [ "$end", "error", "TRUE", "FALSE", "INTEGER_CONSTANT", "FLOATING_CONSTANT", "OCTAL_CONSTANT", "HEX_CONSTANT", "CHARACTER_LITERAL", "\"(\"", "\")\"", "STRING_LITERAL", "\"[\"", "\"]\"", "\".\"", "IDENTIFIER", "\"->\"", "SIZEOF", "\"&\"", "\"*\"", "\"+\"", "\"-\"", "\"~\"", "\"!\"", "\"/\"", "\"%\"", "\"<<\"", "\">>\"", "\"<\"", "\">\"", "\"<=\"", "\">=\"", "\"==\"", "\"!=\"", "\"^\"", "\"|\"", "\"&&\"", "\"||\"", "\"?\"", "\":\"", "\";\"", "\",\"", "\"=\"", "VOID", "FLOAT32_T", "DOUBLE64_T", "TYPE_NAME", "BOOL_T", "FLOAT", "DOUBLE", "DESCRIPTOR", "CHAR_T", "SCHAR_T", "UCHAR_T", "CHAR", "SHORT", "INT", "LONG", "INT8_T", "INT16_T", "INT32_T", "INT64_T", "INT128_T", "UINT8_T", "UINT16_T", "UINT32_T", "UINT64_T", "UINT128_T", "SIGNED", "UNSIGNED", "STRUCT", "\"{\"", "\"}\"", "STRING", "SIZE_IS", "COUNT_IS", "ENUM", "ENUM8", "ENUM16", "ENUM32", "ENUM64", "ENUM128", "CONST", "VOLATILE", "\"...\"", "IN", "OUT", "INOUT", "SEND", "RECEIVE", "NULLABLE", "C_EXP", "ALLOCATOR", "CALLBACK", "CONTEXT", "DEVIATE", "ID", "PROTOTYPE", "RESTRICT", "SINGLETON", "IDX_IS_ID", "ACTIVE", "GENERATE", "IMPORT_C", "IMPORT", "AB_STRING_LITERAL", "TYPEDEF", "NAMESPACE", "\"::\"", "SIGNATURE", "ONEWAY", "CELLTYPE", "INLINE", "OPTIONAL", "REF_DESC", "DYNAMIC", "OMIT", "CALL", "ENTRY", "ATTRIBUTE", "CHOICE", "VAR", "REQUIRE", "FACTORY", "CTFACTORY", "CELL", "THROUGH", "COMPOSITE", "\"=>\"", "REGION", "IN_THROUGH", "OUT_THROUGH", "TO_THROUGH", "NODE", "LINKUNIT", "DOMAIN", "CLASS", "__LOCATION_INFORMATION__", "__CELL__", "__JOIN__", "TOOL_INFO", "$start", "all", "component_description", "primary_expression", "namespace_identifier", "string_literal_list", "expression", "postfix_expression", "unary_expression", "unary_operator", "cast_expression", "type_name", "multiplicative_expression", "additive_expression", "shift_expression", "relational_expression", "equality_expression", "and_expression", "exclusive_or_expression", "inclusive_or_expression", "logical_and_expression", "logical_or_expression", "conditional_expression", "constant_expression", "declaration", "type_specifier_qualifier_list", "init_declarator_list", "declaration_specifiers", "type_specifier", "type_qualifier", "init_declarator", "declarator", "initializer", "struct_specifier", "enum_specifier", "sign_int_type", "char_type", "int_type", "sign", "struct_tag", "struct_declaration_list", "@1", "@2", "struct_declaration", "struct_declarator_list", "spec_L", "pointer_specifier_list", "spec_R", "pointer_specifier", "struct_declarator", "enum_type", "enumerator_list", "enumerator", "pointer", "direct_declarator", "parameter_type_list", "parameter_list", "parameter_declaration", "parameter_specifier_list_bracket", "parameter_specifier_list", "parameter_specifier", "abstract_declarator", "direct_abstract_declarator", "initializer_list", "specified_statement", "location_information", "tool_info", "statement", "statement_specifier_list", "typedef", "const_statement", "namespace", "signature", "celltype", "cell", "composite_celltype", "region", "import", "import_C", "generate_statement", "statement_specifier", "alloc_list", "restrict_list", "plugin_name", "plugin_arg", "alloc", "restrict", "port_name", "region_name_list", "declarator_list", "typedef_specifier", "namespace_name", "statement_list", "signature_name", "function_head_list", "function_head", "celltype_name", "celltype_statement_list", "specified_celltype_statement", "celltype_statement", "celltype_statement_specifier_list", "port", "attribute", "var", "require", "factory", "celltype_statement_specifier", "alloc_list2", "alloc2", "port_type", "namespace_signature_name", "array_size", "attribute_declaration_list", "attribute_declaration", "attribute_specifier", "choice_list", "choice_element", "var_declaration_list", "var_declaration", "var_specifier", "factory_head", "factory_function_list", "factory_function", "factory_function_name", "arg_list", "namespace_celltype_name", "cell_name", "join_list", "@3", "specified_join", "reverse_join", "join_specifier_list", "join", "join_specifier", "cae_name", "array_index", "composite_celltype_name", "composite_celltype_statement_list", "specified_composite_celltype_statement", "composite_celltype_statement", "composite_celltype_statement_specifier_list", "composite_port", "composite_attribute", "internal_cell", "export_join", "composite_celltype_statement_specifier", "composite_attribute_declaration_list", "internal_namespace_celltype_name", "internal_cell_name", "internal_join_list", "@4", "external_join", "internal_cell_elem_name", "export_name", "internal_ref_cell_name", "region_specifier_list", "region_name", "region_statement", "region_specifier", "namespace_region_name", "region_cell", "cell_location_join_location_list", "cell_location", "join_location", "port_location_list", "port_location", "bar_list", "JSON_string", "JSON_object", "JSON_property_list", "JSON_value", "JSON_number", "JSON_array", "JSON_array_list" ] Racc_debug_parser = false ##### State transition tables end ##### # reduce 0 omitted # reduce 1 omitted module_eval(<<'.,.,', 'bnf.y.rb', 52) def _reduce_2(val, _values, result) result = [ :IDENTIFIER, val[0] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 54) def _reduce_3(val, _values, result) result = [ :BOOL_CONSTANT, true ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 56) def _reduce_4(val, _values, result) result = [ :BOOL_CONSTANT, false ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 58) def _reduce_5(val, _values, result) result = [ :INTEGER_CONSTANT, val[0] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 60) def _reduce_6(val, _values, result) result = [ :FLOATING_CONSTANT, val[0] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 62) def _reduce_7(val, _values, result) result = [ :OCTAL_CONSTANT, val[0] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 64) def _reduce_8(val, _values, result) result = [ :HEX_CONSTANT, val[0] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 66) def _reduce_9(val, _values, result) result = [ :CHARACTER_LITERAL, val[0] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 68) def _reduce_10(val, _values, result) result = [ :STRING_LITERAL_LIST, val[0] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 70) def _reduce_11(val, _values, result) result = [ :PARENTHESES, val[1].get_elements ] result end .,., # reduce 12 omitted module_eval(<<'.,.,', 'bnf.y.rb', 76) def _reduce_13(val, _values, result) # 連接した文字列を1つの文字列にまとめる str = "\"" + val[0].val.gsub( /\"(.*)\"/, "\\1" ) + val[1].val.gsub( /\"(.*)\"/, "\\1" ) + "\"" result = Token.new( str, val[0].file, val[0].lineno, val[0].col ) result end .,., # reduce 14 omitted module_eval(<<'.,.,', 'bnf.y.rb', 85) def _reduce_15(val, _values, result) result = [ :OP_SUBSC, val[0], val[2] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 87) def _reduce_16(val, _values, result) result = [ :OP_DOT, val[0], val[2] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 89) def _reduce_17(val, _values, result) result = [ :OP_REF, val[0], val[2] ] result end .,., # reduce 18 omitted module_eval(<<'.,.,', 'bnf.y.rb', 95) def _reduce_19(val, _values, result) result = [ val[0], val[1] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 97) def _reduce_20(val, _values, result) result = [ :OP_SIZEOF_EXPR, val[1] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 99) def _reduce_21(val, _values, result) result = [ :OP_SIZEOF_TYPE, val[1] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 102) def _reduce_22(val, _values, result) result = :OP_U_AMP result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 103) def _reduce_23(val, _values, result) result = :OP_U_ASTER result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 104) def _reduce_24(val, _values, result) result = :OP_U_PLUS result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 105) def _reduce_25(val, _values, result) result = :OP_U_MINUS result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 106) def _reduce_26(val, _values, result) result = :OP_U_TILDE result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 107) def _reduce_27(val, _values, result) result = :OP_U_EXCLAM result end .,., # reduce 28 omitted module_eval(<<'.,.,', 'bnf.y.rb', 112) def _reduce_29(val, _values, result) result = [ :CAST, val[1], val[3] ] result end .,., # reduce 30 omitted module_eval(<<'.,.,', 'bnf.y.rb', 117) def _reduce_31(val, _values, result) result = [ :OP_MULT, val[0], val[2] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 119) def _reduce_32(val, _values, result) result = [ :OP_DIV, val[0], val[2] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 121) def _reduce_33(val, _values, result) result = [ :OP_REMAIN, val[0], val[2] ] result end .,., # reduce 34 omitted module_eval(<<'.,.,', 'bnf.y.rb', 126) def _reduce_35(val, _values, result) result = [ :OP_ADD, val[0], val[2] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 128) def _reduce_36(val, _values, result) result = [ :OP_SUB, val[0], val[2] ] result end .,., # reduce 37 omitted module_eval(<<'.,.,', 'bnf.y.rb', 133) def _reduce_38(val, _values, result) result = [ :OP_LSFT, val[0], val[2] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 135) def _reduce_39(val, _values, result) result = [ :OP_RSFT, val[0], val[2] ] result end .,., # reduce 40 omitted module_eval(<<'.,.,', 'bnf.y.rb', 140) def _reduce_41(val, _values, result) result = [ :OP_LT, val[0], val[2] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 142) def _reduce_42(val, _values, result) result = [ :OP_GT, val[0], val[2] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 144) def _reduce_43(val, _values, result) result = [ :OP_LE, val[0], val[2] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 146) def _reduce_44(val, _values, result) result = [ :OP_GE, val[0], val[2] ] result end .,., # reduce 45 omitted module_eval(<<'.,.,', 'bnf.y.rb', 151) def _reduce_46(val, _values, result) result = [ :OP_EQ, val[0], val[2] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 153) def _reduce_47(val, _values, result) result = [ :OP_NE, val[0], val[2] ] result end .,., # reduce 48 omitted module_eval(<<'.,.,', 'bnf.y.rb', 158) def _reduce_49(val, _values, result) result = [ :OP_AND, val[0], val[2] ] result end .,., # reduce 50 omitted module_eval(<<'.,.,', 'bnf.y.rb', 163) def _reduce_51(val, _values, result) result = [ :OP_EOR, val[0], val[2] ] result end .,., # reduce 52 omitted module_eval(<<'.,.,', 'bnf.y.rb', 168) def _reduce_53(val, _values, result) result = [ :OP_OR, val[0], val[2] ] result end .,., # reduce 54 omitted module_eval(<<'.,.,', 'bnf.y.rb', 173) def _reduce_55(val, _values, result) result = [ :OP_LAND, val[0], val[2] ] result end .,., # reduce 56 omitted module_eval(<<'.,.,', 'bnf.y.rb', 178) def _reduce_57(val, _values, result) result = [ :OP_LOR, val[0], val[2] ] result end .,., # reduce 58 omitted module_eval(<<'.,.,', 'bnf.y.rb', 183) def _reduce_59(val, _values, result) result = [ :OP_CEX, val[0], val[2].get_elements, val[4] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 190) def _reduce_60(val, _values, result) result = Expression.new( val[0] ) # result.print result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 197) def _reduce_61(val, _values, result) result = Expression.new( val[0] ) # result.print # res = result.eval_const( nil ) # if res then # puts "val: #{res}" # else # puts "val: nil" # end result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 219) def _reduce_62(val, _values, result) val[1].each { |i| # i: Decl i.set_type( val[0] ) } result = val[1] result end .,., # reduce 63 omitted module_eval(<<'.,.,', 'bnf.y.rb', 235) def _reduce_64(val, _values, result) val[1].set_qualifier( val[0] ) result = val[1] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 241) def _reduce_65(val, _values, result) result = [val[0]] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 243) def _reduce_66(val, _values, result) result << val[2] result end .,., # reduce 67 omitted module_eval(<<'.,.,', 'bnf.y.rb', 248) def _reduce_68(val, _values, result) val[0].set_initializer( val[2] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 254) def _reduce_69(val, _values, result) result = VoidType.new result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 255) def _reduce_70(val, _values, result) result = FloatType.new(32) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 256) def _reduce_71(val, _values, result) result = FloatType.new(64) result end .,., # reduce 72 omitted # reduce 73 omitted module_eval(<<'.,.,', 'bnf.y.rb', 259) def _reduce_74(val, _values, result) result = DefinedType.new( val[0].val ) result end .,., # reduce 75 omitted # reduce 76 omitted module_eval(<<'.,.,', 'bnf.y.rb', 263) def _reduce_77(val, _values, result) result = BoolType.new result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 269) def _reduce_78(val, _values, result) Generator.warning( "W5002 float: obsolete type. use float32_t" ) result = FloatType.new(32) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 273) def _reduce_79(val, _values, result) Generator.warning( "W5003 double: obsolete type. use double64_t" ) result = FloatType.new(64) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 276) def _reduce_80(val, _values, result) # namespace_identifier: signature name result = DescriptorType.new( val[2] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 281) def _reduce_81(val, _values, result) result = IntType.new( -1 ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 284) def _reduce_82(val, _values, result) result = IntType.new( -1 ) result.set_sign( :SIGNED, true ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 289) def _reduce_83(val, _values, result) result = IntType.new( -1 ) result.set_sign( :UNSIGNED, true ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 295) def _reduce_84(val, _values, result) # Generator.warning( "W5004 char: obsolete type. use char_t" ) result = IntType.new( -11 ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 298) def _reduce_85(val, _values, result) result = IntType.new( -2 ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 299) def _reduce_86(val, _values, result) result = IntType.new( -3 ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 300) def _reduce_87(val, _values, result) result = IntType.new( -4 ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 324) def _reduce_88(val, _values, result) result = IntType.new( 8 ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 325) def _reduce_89(val, _values, result) result = IntType.new( 16 ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 326) def _reduce_90(val, _values, result) result = IntType.new( 32 ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 327) def _reduce_91(val, _values, result) result = IntType.new( 64 ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 328) def _reduce_92(val, _values, result) result = IntType.new( 128 ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 331) def _reduce_93(val, _values, result) result = IntType.new( 8 ) result.set_sign( :UNSIGNED, true ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 336) def _reduce_94(val, _values, result) result = IntType.new( 16 ) result.set_sign( :UNSIGNED, true ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 341) def _reduce_95(val, _values, result) result = IntType.new( 32 ) result.set_sign( :UNSIGNED, true ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 346) def _reduce_96(val, _values, result) result = IntType.new( 64 ) result.set_sign( :UNSIGNED, true ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 351) def _reduce_97(val, _values, result) result = IntType.new( 128 ) result.set_sign( :UNSIGNED, true ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 356) def _reduce_98(val, _values, result) result = :SIGNED result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 357) def _reduce_99(val, _values, result) result = :UNSIGNED result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 363) def _reduce_100(val, _values, result) val[1].set_sign( val[0] ) result = val[1] result end .,., # reduce 101 omitted module_eval(<<'.,.,', 'bnf.y.rb', 371) def _reduce_102(val, _values, result) StructType.set_define( true ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 374) def _reduce_103(val, _values, result) StructType.end_of_parse result = val[1] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 379) def _reduce_104(val, _values, result) # tag が無い場合、内部名を与える result = StructType.new( :"TAG__#{@@no_struct_tag_num}__" ) @@no_struct_tag_num += 1 StructType.set_define( true ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 386) def _reduce_105(val, _values, result) StructType.end_of_parse result = val[1] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 391) def _reduce_106(val, _values, result) StructType.set_define( false ) StructType.end_of_parse result = val[1] result end .,., # reduce 107 omitted # reduce 108 omitted module_eval(<<'.,.,', 'bnf.y.rb', 402) def _reduce_109(val, _values, result) result = StructType.new( val[0].val ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 408) def _reduce_110(val, _values, result) val[1].each { |i| # i: Decl i.set_type( val[0] ) i.set_kind( :MEMBER ) i.check StructType.new_member( i ) } result = val[1] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 418) def _reduce_111(val, _values, result) val[4].each { |i| # i: Decl i.set_type( val[3] ) i.set_kind( :MEMBER ) i.set_specifier_list val[1] i.check StructType.new_member( i ) } result = val[4] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 429) def _reduce_112(val, _values, result) result = [ val[0] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 430) def _reduce_113(val, _values, result) result << val[2] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 433) def _reduce_114(val, _values, result) result = [:STRING,-1] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 434) def _reduce_115(val, _values, result) result = [:STRING,val[2]] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 435) def _reduce_116(val, _values, result) result = [:SIZE_IS,val[2]] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 436) def _reduce_117(val, _values, result) result = [:COUNT_IS,val[2]] result end .,., # reduce 118 omitted module_eval(<<'.,.,', 'bnf.y.rb', 447) def _reduce_119(val, _values, result) val[1].set_qualifier( val[0] ) result = val[1] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 456) def _reduce_120(val, _values, result) result = [ val[0] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 458) def _reduce_121(val, _values, result) result << val[2] result end .,., # reduce 122 omitted # reduce 123 omitted # reduce 124 omitted # reduce 125 omitted module_eval(<<'.,.,', 'bnf.y.rb', 471) def _reduce_126(val, _values, result) result = EnumType.new( -1 ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 472) def _reduce_127(val, _values, result) result = EnumType.new( 8 ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 473) def _reduce_128(val, _values, result) result = EnumType.new( 16 ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 474) def _reduce_129(val, _values, result) result = EnumType.new( 32 ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 475) def _reduce_130(val, _values, result) result = EnumType.new( 64 ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 476) def _reduce_131(val, _values, result) result = EnumType.new( 128 ) result end .,., # reduce 132 omitted # reduce 133 omitted # reduce 134 omitted # reduce 135 omitted module_eval(<<'.,.,', 'bnf.y.rb', 487) def _reduce_136(val, _values, result) result = :CONST result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 488) def _reduce_137(val, _values, result) result = :VOLATILE result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 493) def _reduce_138(val, _values, result) val[1].set_type( val[0] ) result = val[1] result end .,., # reduce 139 omitted module_eval(<<'.,.,', 'bnf.y.rb', 500) def _reduce_140(val, _values, result) result = Decl.new( val[0].val ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 502) def _reduce_141(val, _values, result) result = val[1] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 505) def _reduce_142(val, _values, result) val[0].set_type( ArrayType.new( val[2] ) ) result = val[0] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 510) def _reduce_143(val, _values, result) val[0].set_type( ArrayType.new ) result = val[0] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 515) def _reduce_144(val, _values, result) val[0].set_type( FuncType.new( val[2] ) ) result = val[0] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 521) def _reduce_145(val, _values, result) Generator.warning( "W5010 need 'void' for no parameter" ) val[0].set_type( FuncType.new ) result = val[0] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 528) def _reduce_146(val, _values, result) result = PtrType.new result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 531) def _reduce_147(val, _values, result) result = PtrType.new result.set_qualifier( val[1] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 536) def _reduce_148(val, _values, result) val[1].set_type(PtrType.new) result = val[1] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 541) def _reduce_149(val, _values, result) ptrtype = PtrType.new ptrtype.set_qualifier( val[1] ) val[2].set_type( ptrtype ) result = val[2] result end .,., # reduce 150 omitted # reduce 151 omitted module_eval(<<'.,.,', 'bnf.y.rb', 555) def _reduce_152(val, _values, result) result = ParamList.new( val[0] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 558) def _reduce_153(val, _values, result) val[0].add_param( val[2] ) # result = val[0] 不要 result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 568) def _reduce_154(val, _values, result) val[2].set_kind( :PARAMETER ) paramdecl = ParamDecl.new( val[2], val[1], val[0] ) val[2].check result = paramdecl result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 577) def _reduce_155(val, _values, result) Generator.error( "G1001 need specifier for \'$1\'" , val[1].get_name ) result = nil result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 582) def _reduce_156(val, _values, result) unless val[0].instance_of?( VoidType ) then Generator.error( "G1002 need parameter name" ) end result = nil result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 590) def _reduce_157(val, _values, result) unless val[1].instance_of?( VoidType ) then Generator.error( "G1003 need parameter name" ) end result = nil result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 597) def _reduce_158(val, _values, result) result = val[1] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 601) def _reduce_159(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 603) def _reduce_160(val, _values, result) result = result + val[2] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 606) def _reduce_161(val, _values, result) result = [ [:IN] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 607) def _reduce_162(val, _values, result) result = [ [:OUT] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 608) def _reduce_163(val, _values, result) result = [ [:INOUT] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 609) def _reduce_164(val, _values, result) result = [ [:SEND, val[2]] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 610) def _reduce_165(val, _values, result) result = [ [:RECEIVE,val[2]] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 611) def _reduce_166(val, _values, result) result = [ [:STRING,nil] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 612) def _reduce_167(val, _values, result) result = [ [:STRING, val[2]] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 613) def _reduce_168(val, _values, result) result = [ [:SIZE_IS, val[2]] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 616) def _reduce_169(val, _values, result) result = [ [:SIZE_IS,val[2]], [:MAX_IS, val[4]] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 618) def _reduce_170(val, _values, result) result = [ [:COUNT_IS,val[2]] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 619) def _reduce_171(val, _values, result) result = [ [:NULLABLE] ] result end .,., # reduce 172 omitted module_eval(<<'.,.,', 'bnf.y.rb', 625) def _reduce_173(val, _values, result) if val[1] then val[1].set_type( val[0] ) result = val[1] else # エラー:仮で val[0] を返す result = val[0] end result end .,., # reduce 174 omitted # reduce 175 omitted # reduce 176 omitted module_eval(<<'.,.,', 'bnf.y.rb', 642) def _reduce_177(val, _values, result) result = val[1] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 645) def _reduce_178(val, _values, result) Generator.error( "G1004 impossible array type" ) result = nil result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 650) def _reduce_179(val, _values, result) Generator.error( "G1005 impossible array type" ) result = nil result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 655) def _reduce_180(val, _values, result) Generator.error( "G1006 impossible array type" ) result = nil result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 660) def _reduce_181(val, _values, result) Generator.error( "G1007 impossible array type" ) result = nil result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 665) def _reduce_182(val, _values, result) Generator.error( "G1008 impossible function type" ) result = nil result end .,., # reduce 183 omitted module_eval(<<'.,.,', 'bnf.y.rb', 671) def _reduce_184(val, _values, result) Generator.warning( "W5011 need 'void' for no parameter" ) val[0].set_type( FuncType.new ) result = val[0] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 677) def _reduce_185(val, _values, result) val[0].set_type( FuncType.new( val[2] ) ) result = val[0] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 684) def _reduce_186(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 686) def _reduce_187(val, _values, result) result = val[1] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 688) def _reduce_188(val, _values, result) result = val[1] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 691) def _reduce_189(val, _values, result) result = C_EXP.new( val[2] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 696) def _reduce_190(val, _values, result) result = [ val[0] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 700) def _reduce_191(val, _values, result) val[0] << val[2] result = val[0] result end .,., # reduce 192 omitted # reduce 193 omitted # reduce 194 omitted # reduce 195 omitted # reduce 196 omitted module_eval(<<'.,.,', 'bnf.y.rb', 719) def _reduce_197(val, _values, result) obj = val[3] if obj.kind_of?( Cell ) || obj.kind_of?( Signature ) || obj.kind_of?( Celltype ) || obj.kind_of?( CompositeCelltype )then # cell, signature 以外は、指定子を置けない else Generator.get_statement_specifier # クリア Generator.error( "G1009 unexpected specifier" ) end result end .,., # 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 module_eval(<<'.,.,', 'bnf.y.rb', 748) def _reduce_212(val, _values, result) Generator.add_statement_specifier val[0] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 750) def _reduce_213(val, _values, result) Generator.add_statement_specifier val[2] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 754) def _reduce_214(val, _values, result) result = [ :ALLOCATOR, val[2] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 756) def _reduce_215(val, _values, result) result = [ :CALLBACK ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 758) def _reduce_216(val, _values, result) result = [ :CONTEXT, val[2].val ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 760) def _reduce_217(val, _values, result) result = [ :DEVIATE ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 762) def _reduce_218(val, _values, result) result = [ :ID, val[2] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 764) def _reduce_219(val, _values, result) result = [ :PROTOTYPE ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 766) def _reduce_220(val, _values, result) result = [ :RESTRICT, val[2] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 767) def _reduce_221(val, _values, result) result = [:SINGLETON] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 768) def _reduce_222(val, _values, result) result = [:IDX_IS_ID] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 769) def _reduce_223(val, _values, result) result = [:ACTIVE] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 771) def _reduce_224(val, _values, result) result = [:GENERATE, val[2].val, val[4].val] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 774) def _reduce_225(val, _values, result) result = [ val[0] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 775) def _reduce_226(val, _values, result) result << val[2] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 779) def _reduce_227(val, _values, result) result = [ :NORMAL_ALLOC, val[0], nil, val[2], val[4], val[6] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 781) def _reduce_228(val, _values, result) result = [ :NORMAL_ALLOC, val[0], val[2], val[5], val[7], val[9] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 790) def _reduce_229(val, _values, result) result = [val[0]] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 792) def _reduce_230(val, _values, result) result << val[2] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 796) def _reduce_231(val, _values, result) result = [ val[0].val, nil, val[3] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 798) def _reduce_232(val, _values, result) result = [ val[0].val, val[2].val, val[5] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 802) def _reduce_233(val, _values, result) result = [val[0]] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 804) def _reduce_234(val, _values, result) result << val[2] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 809) def _reduce_235(val, _values, result) val[0].each { |decl| decl.set_kind( :CONSTANT ) Namespace.new_const_decl( decl ) decl.check } result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 819) def _reduce_236(val, _values, result) @@import_C = true Import_C.new( val[2] ) @@import_C = false result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 825) def _reduce_237(val, _values, result) @@import_C = true Import_C.new( val[2], val[4] ) @@import_C = false result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 832) def _reduce_238(val, _values, result) Import.new( val[2] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 834) def _reduce_239(val, _values, result) Import.new( val[2], true ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 839) def _reduce_240(val, _values, result) Generate.new( val[2].val, val[4], val[6] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 844) def _reduce_241(val, _values, result) val[2].each{ |i| # i:Decl i.set_kind( :TYPEDEF ) } Typedef.new_decl_list( val[1], val[2] ) val[2].each{ |i| # i:Decl i.check } result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 854) def _reduce_242(val, _values, result) val[5].each{ |i| # i:Decl i.set_kind( :TYPEDEF ) } Typedef.new_decl_list( val[4], val[5] ) val[5].each{ |i| # i:Decl i.check } result end .,., # reduce 243 omitted # reduce 244 omitted module_eval(<<'.,.,', 'bnf.y.rb', 871) def _reduce_245(val, _values, result) result = [ val[0] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 873) def _reduce_246(val, _values, result) result << val[2] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 877) def _reduce_247(val, _values, result) val[1].end_of_parse result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 881) def _reduce_248(val, _values, result) result = Namespace.new(val[0].val) result end .,., # reduce 249 omitted # reduce 250 omitted module_eval(<<'.,.,', 'bnf.y.rb', 889) def _reduce_251(val, _values, result) result = NamespacePath.new( val[0].val, false ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 890) def _reduce_252(val, _values, result) result = NamespacePath.new( val[1].val, true ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 892) def _reduce_253(val, _values, result) result = val[0].append!( val[2].val ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 897) def _reduce_254(val, _values, result) result = val[1].end_of_parse( val[3] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 901) def _reduce_255(val, _values, result) result = Signature.new( val[0].val ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 907) def _reduce_256(val, _values, result) result = NamedList.new( nil, "function" ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 909) def _reduce_257(val, _values, result) result = val[0].add_item( val[1] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 914) def _reduce_258(val, _values, result) # val[1]: Decl if val[1].is_function? then result = FuncHead.new( val[1], val[0], false ) val[1].set_kind :FUNCHEAD val[1].check else # mikan 関数の配列も以下のメッセージになる Generator.error( "G1010 Not function" ) result = nil end result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 927) def _reduce_259(val, _values, result) if val[4].is_function? then result = FuncHead.new( val[4], val[3], true ) else Generator.error( "G1011 Not function" ) result = nil end result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 940) def _reduce_260(val, _values, result) val[1].end_of_parse result = val[1] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 946) def _reduce_261(val, _values, result) result = Celltype.new(val[0].val) result end .,., # reduce 262 omitted # reduce 263 omitted module_eval(<<'.,.,', 'bnf.y.rb', 955) def _reduce_264(val, _values, result) if val[0].kind_of? Port then Celltype.new_port( val[0] ) end result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 961) def _reduce_265(val, _values, result) if val[3].kind_of? Port then val[3].set_specifier val[1] # 設定順序あり Celltype.new_port( val[3] ) else # Port 以外では指定子はエラー Generator.error( "G1012 $1 : cannot put specifier here" , val[1] ) end result end .,., # reduce 266 omitted # reduce 267 omitted # reduce 268 omitted # reduce 269 omitted # reduce 270 omitted module_eval(<<'.,.,', 'bnf.y.rb', 980) def _reduce_271(val, _values, result) result = [ val[0] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 982) def _reduce_272(val, _values, result) result << val[2] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 985) def _reduce_273(val, _values, result) result = [ :INLINE ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 986) def _reduce_274(val, _values, result) result = [ :ALLOCATOR, val[2] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 987) def _reduce_275(val, _values, result) result = [ :OPTIONAL ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 988) def _reduce_276(val, _values, result) result = [ :REF_DESC ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 989) def _reduce_277(val, _values, result) result = [ :DYNAMIC ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 990) def _reduce_278(val, _values, result) result = [ :OMIT ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 993) def _reduce_279(val, _values, result) result = [ val[0] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 994) def _reduce_280(val, _values, result) result = [ val[0] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 995) def _reduce_281(val, _values, result) result << val[2] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 996) def _reduce_282(val, _values, result) result << val[2] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1000) def _reduce_283(val, _values, result) result = [ :INTERNAL_ALLOC, val[0].val, val[2].val, val[4] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1002) def _reduce_284(val, _values, result) result = [ :RELAY_ALLOC, val[0].val, val[2].val, val[4] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1008) def _reduce_285(val, _values, result) result = Port.new( val[2].val, val[1], val[0] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1010) def _reduce_286(val, _values, result) result = Port.new( val[2].val, val[1], val[0], "[]" ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1012) def _reduce_287(val, _values, result) result = Port.new(val[2].val, val[1], val[0], val[4]) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1014) def _reduce_288(val, _values, result) result = Port.new( val[2].val, val[1], val[0], nil, val[4], val[ 6 ].val ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1017) def _reduce_289(val, _values, result) result = :CALL result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1018) def _reduce_290(val, _values, result) result = :ENTRY result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1022) def _reduce_291(val, _values, result) result = val[0] result end .,., # reduce 292 omitted # reduce 293 omitted module_eval(<<'.,.,', 'bnf.y.rb', 1034) def _reduce_294(val, _values, result) result = nil result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1038) def _reduce_295(val, _values, result) Celltype.new_attribute( val[0] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1040) def _reduce_296(val, _values, result) Celltype.new_attribute( val[1] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1046) def _reduce_297(val, _values, result) val[0].each{ |i| # i:Decl i.set_kind( :ATTRIBUTE ) i.check } result = val[0] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1054) def _reduce_298(val, _values, result) val[3].each{ |i| # i:Decl i.set_kind( :ATTRIBUTE ) # 設定順序あり i.set_specifier_list( [val[1]] ) i.check } result = val[3] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1063) def _reduce_299(val, _values, result) result = [:OMIT] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1064) def _reduce_300(val, _values, result) result = [:SIZE_IS,val[2]] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1065) def _reduce_301(val, _values, result) result = [:CHOICE,val[3]] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1068) def _reduce_302(val, _values, result) result << val[2] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1069) def _reduce_303(val, _values, result) result = [ val[0] ] result end .,., # reduce 304 omitted module_eval(<<'.,.,', 'bnf.y.rb', 1077) def _reduce_305(val, _values, result) result = nil result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1081) def _reduce_306(val, _values, result) Celltype.new_var( val[0] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1083) def _reduce_307(val, _values, result) Celltype.new_var( val[1] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1088) def _reduce_308(val, _values, result) val[0].each{ |i| # i:Decl i.set_kind( :VAR ) i.check } result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1095) def _reduce_309(val, _values, result) val[3].each{ |i| # i:Decl i.set_kind( :VAR ) # 設定順序あり i.set_specifier_list( [val[1]] ) i.check } result = val[3] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1104) def _reduce_310(val, _values, result) result = [:SIZE_IS,val[2]] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1110) def _reduce_311(val, _values, result) Celltype.new_require( val[1], val[3] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1114) def _reduce_312(val, _values, result) Celltype.new_require( val[3], val[5], val[1].val ) result end .,., # reduce 313 omitted module_eval(<<'.,.,', 'bnf.y.rb', 1122) def _reduce_314(val, _values, result) Factory.set_f_celltype( false ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1123) def _reduce_315(val, _values, result) Factory.set_f_celltype( true ) result end .,., # reduce 316 omitted # reduce 317 omitted module_eval(<<'.,.,', 'bnf.y.rb', 1131) def _reduce_318(val, _values, result) Factory.new( val[0].val, val[2], val[4], nil ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1133) def _reduce_319(val, _values, result) Factory.new( val[0].val, val[2], val[4], val[6] ) result end .,., # reduce 320 omitted module_eval(<<'.,.,', 'bnf.y.rb', 1140) def _reduce_321(val, _values, result) result = [ [ :IDENTIFIER, val[0].val ] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1142) def _reduce_322(val, _values, result) result << [ :IDENTIFIER, val[2].val ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1144) def _reduce_323(val, _values, result) result = [ [ :STRING_LITERAL, val[0].val ] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1146) def _reduce_324(val, _values, result) result << [ :STRING_LITERAL, val[2].val ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1151) def _reduce_325(val, _values, result) Cell.new_def result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1153) def _reduce_326(val, _values, result) result = Cell.end_of_parse true result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1155) def _reduce_327(val, _values, result) result = Cell.end_of_parse false result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1159) def _reduce_328(val, _values, result) result = Cell.new(val[0]) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1163) def _reduce_329(val, _values, result) result = Cell.set_name(val[0].val) result end .,., # reduce 330 omitted # reduce 331 omitted # reduce 332 omitted module_eval(<<'.,.,', 'bnf.y.rb', 1172) def _reduce_333(val, _values, result) val[3].set_specifier_list( val[1] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1174) def _reduce_334(val, _values, result) val[0].set_specifier_list( [] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1178) def _reduce_335(val, _values, result) result << val[2] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1180) def _reduce_336(val, _values, result) result = [val[0]] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1184) def _reduce_337(val, _values, result) result = [ :THROUGH, val[2], val[4] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1187) def _reduce_338(val, _values, result) result = val[0] result end .,., # reduce 339 omitted module_eval(<<'.,.,', 'bnf.y.rb', 1201) def _reduce_340(val, _values, result) result = Join.new( val[0].val, -1, val[4] ) Cell.new_join( result, true ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1206) def _reduce_341(val, _values, result) result = Join.new( val[0].val, val[2], val[5] ) Cell.new_join( result, true ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1211) def _reduce_342(val, _values, result) result = Join.new( val[0].val, nil, val[2] ) Cell.new_join( result, true ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1216) def _reduce_343(val, _values, result) result = Join.new( val[0].val, nil, [ :COMPOSITE, val[4] ] ) Cell.new_join( result, true ) result end .,., # reduce 344 omitted module_eval(<<'.,.,', 'bnf.y.rb', 1227) def _reduce_345(val, _values, result) rj = ReverseJoin.new( val[0].val, nil, val[2], val[4].val ) Cell.new_reverse_join( rj ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1233) def _reduce_346(val, _values, result) rj = ReverseJoin.new( val[0].val, nil, val[2], val[4].val, val[6] ) Cell.new_reverse_join( rj ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1239) def _reduce_347(val, _values, result) rj = ReverseJoin.new( val[0].val, val[2], val[5], val[7].val ) Cell.new_reverse_join( rj ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1245) def _reduce_348(val, _values, result) rj = ReverseJoin.new( val[0].val, val[2], val[5], val[7].val, val[9] ) Cell.new_reverse_join( rj ) result end .,., # reduce 349 omitted module_eval(<<'.,.,', 'bnf.y.rb', 1257) def _reduce_350(val, _values, result) CompositeCelltype.end_of_parse result = val[1] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1263) def _reduce_351(val, _values, result) result = CompositeCelltype.new(val[0].val) result end .,., # reduce 352 omitted # reduce 353 omitted module_eval(<<'.,.,', 'bnf.y.rb', 1272) def _reduce_354(val, _values, result) if val[0].kind_of?( Port ) then CompositeCelltype.new_port( val[0] ) # 遅延して登録 end result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1278) def _reduce_355(val, _values, result) if val[3].kind_of?( Port ) then # port 以外 val[3] に有効な値が入っていないので、以下のメソッドを適用できない # 現状 port, cell 以外は指定子を受け付けない # (しかし将来他の文も指定子を受け付ける可能性があるので、この位置に記述する) val[3].set_specifier( Generator.get_statement_specifier ) CompositeCelltype.new_port( val[3] ) # 遅延して登録 (set_specifier 後) elsif val[3].kind_of?( Cell ) then # Cell.end_of_parse にて設定 else Generator.get_statement_specifier # クリア Generator.error( "G1013 unexpected specifier" ) end result end .,., # reduce 356 omitted # reduce 357 omitted # reduce 358 omitted # reduce 359 omitted module_eval(<<'.,.,', 'bnf.y.rb', 1302) def _reduce_360(val, _values, result) Generator.add_statement_specifier val[0] result = [ val[0] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1307) def _reduce_361(val, _values, result) Generator.add_statement_specifier val[2] result = val[0] << val[2] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1312) def _reduce_362(val, _values, result) result = [ :ALLOCATOR, val[2] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1313) def _reduce_363(val, _values, result) result = [ :OMIT ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1314) def _reduce_364(val, _values, result) result = [ :OPTIONAL ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1315) def _reduce_365(val, _values, result) result = [ :REF_DESC ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1316) def _reduce_366(val, _values, result) result = [ :DYNAMIC ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1321) def _reduce_367(val, _values, result) # CompositeCelltype.new_port( val[0] ) result = val[0] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1328) def _reduce_368(val, _values, result) result = nil result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1332) def _reduce_369(val, _values, result) CompositeCelltype.new_attribute( val[0] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1334) def _reduce_370(val, _values, result) CompositeCelltype.new_attribute( val[1] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1339) def _reduce_371(val, _values, result) Cell.new_def result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1341) def _reduce_372(val, _values, result) result = Cell.end_of_parse true result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1343) def _reduce_373(val, _values, result) result = Cell.end_of_parse false result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1348) def _reduce_374(val, _values, result) Cell.new(val[0],true) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1352) def _reduce_375(val, _values, result) Cell.set_name(val[0].val) result end .,., # reduce 376 omitted # reduce 377 omitted # reduce 378 omitted # reduce 379 omitted module_eval(<<'.,.,', 'bnf.y.rb', 1363) def _reduce_380(val, _values, result) Cell.external_join( val[0].val, val[4].val, true ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1365) def _reduce_381(val, _values, result) Cell.external_join( val[0].val, val[2].val, false ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1372) def _reduce_382(val, _values, result) CompositeCelltype.new_join( val[0].val, val[2].val, val[4].val, :ENTRY ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1377) def _reduce_383(val, _values, result) CompositeCelltype.new_join( val[2].val, val[4].val, val[6].val, :ENTRY ) result end .,., # reduce 384 omitted # reduce 385 omitted # reduce 386 omitted module_eval(<<'.,.,', 'bnf.y.rb', 1393) def _reduce_387(val, _values, result) Region.end_of_parse result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1395) def _reduce_388(val, _values, result) Region.end_of_parse result end .,., # reduce 389 omitted # reduce 390 omitted module_eval(<<'.,.,', 'bnf.y.rb', 1404) def _reduce_391(val, _values, result) Region.new_in_through( val[2].val, val[4].val ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1406) def _reduce_392(val, _values, result) Region.new_in_through result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1408) def _reduce_393(val, _values, result) Region.new_out_through( val[2].val, val[4].val ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1410) def _reduce_394(val, _values, result) Region.new_out_through() result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1412) def _reduce_395(val, _values, result) Region.new_to_through( val[2], val[4].val, val[6].val ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1414) def _reduce_396(val, _values, result) Region.new_to_through( val[2], nil, nil ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1416) def _reduce_397(val, _values, result) Region.set_type( :NODE ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1418) def _reduce_398(val, _values, result) Region.set_type( :LINKUNIT ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1420) def _reduce_399(val, _values, result) Region.set_domain( val[2].val, val[4] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1422) def _reduce_400(val, _values, result) Region.set_type( :CLASS, val[2].val ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1426) def _reduce_401(val, _values, result) result = Region.new( val[0].val ) result end .,., # reduce 402 omitted # reduce 403 omitted # reduce 404 omitted # reduce 405 omitted module_eval(<<'.,.,', 'bnf.y.rb', 1437) def _reduce_406(val, _values, result) obj = val[3] if obj.kind_of?( Cell ) then else Generator.get_statement_specifier # クリア Generator.error( "G9999 unexpected specifier" ) end result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1459) def _reduce_407(val, _values, result) result = [ val[0].val ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1464) def _reduce_408(val, _values, result) set_in_specifier result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1466) def _reduce_409(val, _values, result) unset_in_specifier result end .,., # reduce 410 omitted # reduce 411 omitted # reduce 412 omitted # reduce 413 omitted module_eval(<<'.,.,', 'bnf.y.rb', 1480) def _reduce_414(val, _values, result) TECSGEN::Cell_location.new( val[1], val[3], val[5], val[7], val[9], val[12] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1486) def _reduce_415(val, _values, result) result = val[0] << val[1] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1489) def _reduce_416(val, _values, result) result = [] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1493) def _reduce_417(val, _values, result) result = [ val[0], val[2], val[3] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1498) def _reduce_418(val, _values, result) TECSGEN::Join_location.new( val[2], val[4], val[6], val[8], val[11] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1504) def _reduce_419(val, _values, result) result = val[0] << [ val[1], val[3] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1506) def _reduce_420(val, _values, result) result = [] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1510) def _reduce_421(val, _values, result) TOOL_INFO.new( val[2].to_sym, val[4] ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1511) def _reduce_422(val, _values, result) result = val[1] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1512) def _reduce_423(val, _values, result) result = { val[0].to_sym => val[2] } result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1514) def _reduce_424(val, _values, result) val[0][ val[2].to_sym ] = val[4] result end .,., # reduce 425 omitted # reduce 426 omitted # reduce 427 omitted # reduce 428 omitted module_eval(<<'.,.,', 'bnf.y.rb', 1516) def _reduce_429(val, _values, result) result=val[0].val result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1516) def _reduce_430(val, _values, result) result=val[0].val result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1517) def _reduce_431(val, _values, result) result = val[1] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1518) def _reduce_432(val, _values, result) result = [] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1519) def _reduce_433(val, _values, result) result = [ val[0] ] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1520) def _reduce_434(val, _values, result) val[0] << val[2] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1521) def _reduce_435(val, _values, result) result = val[0].val.gsub!( /\"(.*)\"/, "\\1" ) result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1522) def _reduce_436(val, _values, result) result = val[0].val.to_i result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1523) def _reduce_437(val, _values, result) result = val[0].val.to_f result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1524) def _reduce_438(val, _values, result) result = - val[0].val.to_i result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1525) def _reduce_439(val, _values, result) result = - val[0].val.to_f result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1526) def _reduce_440(val, _values, result) result = val[0].val.to_i result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 1527) def _reduce_441(val, _values, result) result = val[0].val.to_f result end .,., def _reduce_none(val, _values, result) val[0] end end # class Generator # ファイル => INCLUDE("header")の配列 Include = Hash.new {|hash, key| hash[key] = []} class Token attr_accessor :val, :file, :lineno, :col def initialize(val, file, lineno, col) @val = val @file = file @lineno = lineno @col = col end def to_s @val.to_s end def to_sym @val.to_sym end def get_name @val end def locale [@file, @lineno, @col] end def eql?(other) if other.is_a? Symbol @val == other elsif other.is_a? Token @val == other.val elsif other.is_a? String @val.to_s == other else raise ArgumentError end end alias == eql? def show_tree( indent ) indent.times { print " " } print "#{@val}\n" end end #= TECSIO # Ruby2.0(1.9) 対応に伴い導入したクラス # SJIS 以外では、ASCII-8BIT として入力する class TECSIO def self.foreach(file) # ブロック引数 { |line| } pr = Proc.new # このメソッドのブロック引数を pr に代入 if $b_no_kcode then msg = "E".encode $Ruby19_File_Encode if( $Ruby19_File_Encode == "Shift_JIS" ) # Shift JIS は、いったん Windows-31J として読み込ませ、Shift_JIS に変換させる. # コメント等に含まれる SJIS に不適切な文字コードは '?' または REPLACEMENT CHARACTER に変換される. # EUC や UTF-8 で記述された CDL が混在していても、Ruby 例外が発生することなく処理を進めることができる. # 文字コード指定が SJIS であって、文字列リテラルの中に、文字コードがSJIS 以外の非 ASCII が含まれている場合、 # Ruby 1.8 の tecsgen では文字コード指定に影響なく処理されたものが、Ruby 1.9 以降では '?' に置き換わる可能性がある. mode = "r:Windows-31J" else mode = "r:#{$Ruby19_File_Encode}" end # mode = "r" else msg = "E" mode = "r" end f = File.open( file, mode ) begin f.each{ |line| # dbgPrint line line = str_code_convert( msg, line ) pr.call( line ) } ensure f.close end end #=== 文字コードが相違する場合一致させる # msg と str の文字コードが相違する場合、str を msg の文字コードに変換する # 変換不可の文字コードは '?' (utf-8 の場合 U+FFFD (REPLACEMENT CHARACTER )) に変換 # # このメソッドは、エラーメッセージ出力でも使用されていることに注意. # #msg_enc::Encode | String def self.str_code_convert( msg, str ) if $b_no_kcode == false then return str # Ruby V1.8 まで end if msg.encoding != str.encoding then option = { :invalid => :replace, :undef => :replace } # 例外を発生させず、'?' に変換する(utf-8 は 0xfffd) # return str.encode( msg.encoding, option ) str = str.encode( "utf-8", option ) return str.encode( msg.encoding, option ) else return str end end end