# # 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 "error: #{file} line #{lineno}: 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 "error: #{file} line #{lineno}: string literal has newline without escape" @@n_error += 1 # 山括弧で囲まれた文字列 when /\A<[0-9A-Za-z_\. \/]+>/ # AB: angle bracke @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 "error: #{locale[0]}: line #{locale[1]} #{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 "warning: #{locale[0]}: line #{locale[1]} #{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 "info: #{locale[0]}: line #{locale[1]} #{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,666,538,872,78,330,562,328,78,78,78,163,199,200,201,202,203', '204,205,207,846,208,678,700,897,135,647,212,213,214,215,216,217,218', '679,249,761,711,565,547,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,180,644,256,559,177,815,163,135,189,135,135,135,135', '189,66,189,189,70,68,69,135,71,72,328,73,78,74,304,305,324,860,901,189', '255,162,325,136,327,189,75,75,75,76,77,77,77,135,88,189,189,189,189', '79,87,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,426,569,668,899,42,43,44,45,46,47,48,49,189', '178,189,136,66,136,136,136,136,256,135,446,89,100,78,78,136,328,70,68', '69,667,71,72,135,73,571,74,304,305,324,135,135,135,478,868,325,479,327', '867,399,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,400,839,42,43,44,45,46', '47,48,49,135,135,328,838,66,304,305,306,607,307,308,310,311,406,208', '78,136,136,70,68,69,401,71,72,797,73,150,74,78,149,136,654,304,305,324', '78,796,136,136,136,325,75,327,76,407,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,163,403,661,402', '42,43,44,45,46,47,48,49,163,648,826,403,88,697,136,136,432,78,87,681', '816,574,89,208,520,720,70,68,69,660,71,72,532,73,196,74,510,636,827', '199,200,201,202,203,204,205,207,208,208,75,682,76,135,77,212,213,214', '215,216,217,218,304,305,306,889,307,308,310,311,199,200,201,202,203', '204,205,207,817,208,635,747,518,135,637,212,213,214,215,216,217,218', '529,888,415,199,200,201,202,203,204,205,207,341,208,342,528,343,135', '234,212,213,214,215,216,217,218,199,200,201,202,203,204,205,207,414', '208,270,878,235,135,719,212,213,214,215,216,217,218,525,277,589,504', '691,314,180,136,582,590,721,581,199,200,201,202,203,204,205,207,879', '208,720,587,163,135,776,212,213,214,215,216,217,218,503,690,313,136', '199,200,201,202,203,204,205,207,264,208,523,698,282,135,770,212,213', '214,215,216,217,218,347,582,136,275,581,348,349,898,180,850,199,200', '201,202,203,204,205,207,163,208,699,283,91,135,136,212,213,214,215,216', '217,218,199,200,201,202,203,204,205,207,851,208,722,833,691,135,162', '212,213,214,215,216,217,218,630,163,88,887,136,902,478,886,87,479,347', '859,89,163,409,348,349,88,631,699,832,794,903,87,904,234,592,89,629', '170,136,199,200,201,202,203,204,205,207,858,208,564,408,90,135,235,212', '213,214,215,216,217,218,522,199,200,201,202,203,204,205,207,136,208', '521,150,906,135,149,212,213,214,215,216,217,218,199,200,201,202,203', '204,205,207,136,208,394,395,396,135,360,212,213,214,215,216,217,218', '199,200,201,202,203,204,205,207,361,208,394,395,396,135,362,212,213', '214,215,216,217,218,145,146,363,199,200,201,202,203,204,205,207,437', '208,287,288,454,135,136,212,213,214,215,216,217,218,234,354,355,356', '357,591,436,438,439,440,441,456,457,458,455,136,347,350,351,515,235', '348,349,199,200,201,202,203,204,205,207,907,208,352,353,514,135,136', '212,213,214,215,216,217,218,199,200,201,202,203,204,205,207,513,208', '358,359,512,135,136,212,213,214,215,216,217,218,364,365,511,199,200', '201,202,203,204,205,207,208,208,404,336,482,135,136,212,213,214,215', '216,217,218,199,200,201,202,203,204,205,207,481,208,517,518,474,135', '473,212,213,214,215,216,217,218,472,199,200,201,202,203,204,205,207', '470,208,350,351,463,135,136,212,213,214,215,216,217,218,350,351,234', '354,355,356,357,607,454,737,738,740,741,437,136,88,352,353,196,739,785', '87,235,608,234,89,610,743,742,456,457,458,455,436,438,439,440,441,611', '136,354,355,356,357,235,352,353,199,200,201,202,203,204,205,207,336', '208,352,353,612,135,136,212,213,214,215,216,217,218,614,199,200,201', '202,203,204,205,207,472,208,352,353,615,135,136,212,213,214,215,216', '217,218,199,200,201,202,203,204,205,207,616,208,358,359,617,135,618', '212,213,214,215,216,217,218,199,200,201,202,203,204,205,207,208,208', '594,336,908,135,621,212,213,214,215,216,217,218,620,288,163,199,200', '201,202,203,204,205,207,462,208,787,788,459,135,136,212,213,214,215', '216,217,218,625,199,200,201,202,203,204,205,207,448,208,789,790,445', '135,136,212,213,214,215,216,217,218,199,200,201,202,203,204,205,207', '444,208,421,772,641,135,136,212,213,214,215,216,217,218,88,88,234,382', '383,384,87,87,420,643,89,89,419,418,136,377,378,379,380,381,385,417', '235,416,625,199,200,201,202,203,204,205,207,413,208,412,662,663,135', '136,212,213,214,215,216,217,218,142,199,200,201,202,203,204,205,207', '410,208,405,159,669,135,136,212,213,214,215,216,217,218,199,200,201', '202,203,204,205,207,372,208,371,369,674,135,136,212,213,214,215,216', '217,218,199,200,201,202,203,204,205,207,368,208,675,237,676,135,363', '212,213,214,215,216,217,218,304,305,306,234,307,308,310,311,362,199', '200,201,202,203,204,205,207,136,208,361,680,360,135,235,212,213,214', '215,216,217,218,683,199,200,201,202,203,204,205,207,136,208,336,685', '686,135,687,212,213,214,215,216,217,218,199,200,201,202,203,204,205', '207,136,208,688,689,189,135,692,212,213,214,215,216,217,218,199,200', '201,202,203,204,205,207,136,208,335,208,695,135,312,212,213,214,215', '216,217,218,290,289,286,199,200,201,202,203,204,205,207,285,208,704', '163,706,135,136,212,213,214,215,216,217,218,737,738,740,741,707,708', '88,88,163,196,739,710,87,87,284,136,89,89,743,742,712,713,714,199,200', '201,202,203,204,205,207,715,208,718,281,280,135,136,212,213,214,215', '216,217,218,199,200,201,202,203,204,205,207,723,208,726,571,75,135,136', '212,213,214,215,216,217,218,729,730,472,20,21,22,23,24,25,26,27,28,29', '30,31,32,33,136,196,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,279,744,745,272,3,42,43,44,45,46,47', '48,49,748,749,136,117,118,119,120,121,122,123,199,200,201,202,203,204', '205,207,750,208,610,752,753,135,136,212,213,214,215,216,217,218,199', '200,201,202,203,204,205,207,754,208,180,756,625,135,759,212,213,214', '215,216,217,218,199,200,201,202,203,204,205,207,760,208,270,208,264', '135,764,212,213,214,215,216,217,218,199,200,201,202,203,204,205,207', '159,208,257,767,89,135,247,212,213,214,215,216,217,218,771,196,193,192', '199,200,201,202,203,204,205,207,779,208,780,191,782,135,136,212,213', '214,215,216,217,218,199,200,201,202,203,204,205,207,783,208,189,81,910', '135,136,212,213,214,215,216,217,218,199,200,201,202,203,204,205,207', '791,208,188,793,187,135,136,212,213,214,215,216,217,218,199,200,201', '202,203,204,205,207,795,208,186,670,798,135,136,212,213,214,215,216', '217,218,799,800,803,804,199,200,201,202,203,204,205,207,805,208,806', '654,718,135,136,212,213,214,215,216,217,218,737,738,740,741,180,88,88', '88,811,196,739,87,87,87,136,89,89,89,743,742,812,813,199,200,201,202', '203,204,205,207,814,208,185,184,726,135,136,212,213,214,215,216,217', '218,199,200,201,202,203,204,205,207,823,208,180,176,175,135,136,212', '213,214,215,216,217,218,382,383,384,472,117,118,119,120,121,122,123', '828,377,378,379,380,381,385,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,174,173,831,172,171,42', '43,44,45,46,47,48,49,168,836,136,167,166,840,841,-386,842,843,199,200', '201,202,203,204,205,207,844,208,165,164,160,135,136,212,213,214,215', '216,217,218,199,200,201,202,203,204,205,345,848,208,803,159,156,135', '208,212,213,214,215,216,217,218,199,200,201,202,203,204,205,207,854', '208,155,147,857,135,144,212,213,214,215,216,217,218,199,200,201,202', '203,204,205,207,143,208,862,863,142,135,865,212,213,214,215,216,217', '218,140,869,870,871,199,200,201,202,203,204,205,207,134,208,132,874', '875,135,136,212,213,214,215,216,217,218,199,200,201,202,203,204,205', '207,130,208,877,126,838,135,136,212,213,214,215,216,217,218,199,200', '201,202,203,204,205,207,880,208,881,587,328,135,136,212,213,214,215', '216,217,218,199,200,201,202,203,204,205,207,883,208,884,885,125,135', '136,212,213,214,215,216,217,218,124,890,891,234,104,105,106,107,108', '109,110,111,112,113,114,88,892,96,136,92,544,87,545,235,542,89,199,200', '201,202,203,204,205,207,548,208,189,270,541,135,136,212,213,214,215', '216,217,218,199,200,201,202,203,204,205,207,540,208,558,537,536,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,,212,213,214,215,216,217,218,,,,,199,200,201,202,203,204', '205,207,,208,,772,,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,,,,,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,737,738,740,741,,88,,,,196,739,87,,,136', '89,,,743,742,,,,,,,,,,,,,,,,,136,104,105,106,107,108,109,110,111,112', '113,114,,,,478,585,,584,,,,,,,89,136,,,,,,,472,,,,,,117,118,119,120', '121,122,123,,,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,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,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,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,,,,,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,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,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,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,128,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,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,,658,,,,42,43,44,45,46,47,48,49,104,105,106,107,108', '109,110,111,112,113,114,,,,,,,,,,,,,,,,,,,,,,,,,,,,117,118,119,120,121', '122,123,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(3623, 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,576,422,856,192,194,450,192,329,2,613,434,630,630,630,630', '630,630,630,630,824,630,596,630,893,630,560,630,630,630,630,630,630', '630,597,154,703,642,454,434,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,414,560,157', '447,125,777,573,721,460,558,631,303,470,576,291,856,469,2,2,2,839,2', '2,563,2,291,2,192,192,192,843,895,824,157,573,192,630,192,596,329,2', '613,2,329,2,613,782,85,703,642,597,154,2,85,41,2,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,187,291,461,577,895,291,291,291,291,291,291', '291,291,447,125,777,721,185,558,631,303,470,258,286,308,89,41,315,185', '839,315,291,291,291,577,291,291,92,291,462,291,563,563,563,512,75,325', '340,851,563,340,563,851,258,291,782,291,340,291,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,262,812,185,185,185,185,185,185,185', '185,511,333,463,812,161,187,187,187,756,187,187,187,187,267,413,161', '286,308,185,185,185,262,185,185,756,185,148,185,561,148,92,561,315,315', '315,294,756,512,75,325,315,185,315,185,267,185,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,808,392,264,568,264,161,161,161,161,161,161,161', '161,375,561,784,625,127,625,511,333,294,778,127,599,778,465,127,412', '392,808,161,161,161,568,161,161,411,161,472,161,375,553,784,720,720', '720,720,720,720,720,720,410,720,161,599,161,720,161,720,720,720,720', '720,720,720,294,294,294,880,294,294,294,294,257,257,257,257,257,257', '257,257,778,257,553,684,684,257,553,257,257,257,257,257,257,257,409', '880,278,474,474,474,474,474,474,474,474,210,474,210,408,210,474,720', '474,474,474,474,474,474,474,403,403,403,403,403,403,403,403,278,403', '407,866,720,403,653,403,403,403,403,403,403,403,402,172,480,366,609', '190,172,720,580,483,653,580,479,479,479,479,479,479,479,479,866,479', '653,479,716,479,720,479,479,479,479,479,479,479,366,609,190,257,889', '889,889,889,889,889,889,889,401,889,396,626,176,889,716,889,889,889', '889,889,889,889,488,477,474,171,477,488,488,894,171,834,504,504,504', '504,504,504,504,504,102,504,626,176,9,504,403,504,504,504,504,504,504', '504,862,862,862,862,862,862,862,862,834,862,657,801,751,862,102,862', '862,862,862,862,862,862,549,115,253,879,479,897,476,879,253,476,221', '841,253,452,269,221,221,88,549,657,801,751,898,88,901,504,504,88,549', '115,889,859,859,859,859,859,859,859,859,841,859,452,269,8,859,504,859', '859,859,859,859,859,859,395,513,513,513,513,513,513,513,513,504,513', '394,86,904,513,86,513,513,513,513,513,513,513,848,848,848,848,848,848', '848,848,862,848,254,254,254,848,498,848,848,848,848,848,848,848,359', '359,359,359,359,359,359,359,499,359,520,520,520,359,500,359,359,359', '359,359,359,359,82,82,501,358,358,358,358,358,358,358,358,547,358,181', '181,564,358,859,358,358,358,358,358,358,358,848,496,496,496,496,502', '547,547,547,547,547,564,564,564,564,513,487,222,222,384,848,487,487', '806,806,806,806,806,806,806,806,905,806,223,223,383,806,848,806,806', '806,806,806,806,806,357,357,357,357,357,357,357,357,382,357,225,225', '381,357,359,357,357,357,357,357,357,357,230,230,380,797,797,797,797', '797,797,797,797,368,797,265,265,343,797,358,797,797,797,797,797,797', '797,796,796,796,796,796,796,796,796,342,796,389,389,338,796,337,796', '796,796,796,796,796,796,335,356,356,356,356,356,356,356,356,334,356', '489,489,327,356,806,356,356,356,356,356,356,356,490,490,797,495,495', '495,495,525,318,739,739,739,739,297,357,696,491,491,739,739,739,696', '797,526,796,696,528,739,739,318,318,318,318,297,297,297,297,297,529', '797,224,224,224,224,796,492,492,355,355,355,355,355,355,355,355,530', '355,493,493,531,355,796,355,355,355,355,355,355,355,533,354,354,354', '354,354,354,354,354,739,354,494,494,534,354,356,354,354,354,354,354', '354,354,353,353,353,353,353,353,353,353,535,353,497,497,536,353,537', '353,353,353,353,353,353,353,352,352,352,352,352,352,352,352,538,352', '505,505,906,352,543,352,352,352,352,352,352,352,539,539,544,748,748', '748,748,748,748,748,748,326,748,742,742,324,748,355,748,748,748,748', '748,748,748,548,729,729,729,729,729,729,729,729,309,729,743,743,307', '729,354,729,729,729,729,729,729,729,719,719,719,719,719,719,719,719', '306,719,285,719,557,719,353,719,719,719,719,719,719,719,430,602,748', '246,246,246,430,602,284,559,430,602,283,282,352,246,246,246,246,246', '246,281,748,280,565,351,351,351,351,351,351,351,351,276,351,274,570', '572,351,748,351,351,351,351,351,351,351,272,147,147,147,147,147,147', '147,147,271,147,266,256,578,147,729,147,147,147,147,147,147,147,350', '350,350,350,350,350,350,350,242,350,240,236,583,350,719,350,350,350', '350,350,350,350,149,149,149,149,149,149,149,149,235,149,586,149,588', '149,229,149,149,149,149,149,149,149,546,546,546,147,546,546,546,546', '228,349,349,349,349,349,349,349,349,351,349,227,598,226,349,147,349', '349,349,349,349,349,349,600,714,714,714,714,714,714,714,714,147,714', '206,604,605,714,606,714,714,714,714,714,714,714,348,348,348,348,348', '348,348,348,350,348,607,608,198,348,611,348,348,348,348,348,348,348', '710,710,710,710,710,710,710,710,149,710,195,616,619,710,189,710,710', '710,710,710,710,710,184,183,179,347,347,347,347,347,347,347,347,178', '347,632,634,636,347,349,347,347,347,347,347,347,347,827,827,827,827', '637,638,373,288,640,827,827,641,373,288,177,714,373,288,827,827,643', '644,646,706,706,706,706,706,706,706,706,648,706,651,175,174,706,348', '706,706,706,706,706,706,706,345,345,345,345,345,345,345,345,658,345', '662,663,664,345,710,345,345,345,345,345,345,345,665,666,827,36,36,36', '36,36,36,36,36,36,36,36,36,36,36,347,668,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,173,671,673,169,1,345,345,345,345,345,345,345,345,688', '689,706,260,260,260,260,260,260,260,515,515,515,515,515,515,515,515', '691,515,692,693,694,515,345,515,515,515,515,515,515,515,166,166,166', '166,166,166,166,166,695,166,168,697,699,166,700,166,166,166,166,166', '166,166,341,341,341,341,341,341,341,341,701,341,167,165,164,341,707', '341,341,341,341,341,341,341,682,682,682,682,682,682,682,682,160,682', '159,711,152,682,151,682,682,682,682,682,682,682,718,144,141,139,521', '521,521,521,521,521,521,521,725,521,727,138,730,521,515,521,521,521', '521,521,521,521,522,522,522,522,522,522,522,522,731,522,137,3,909,522', '166,522,522,522,522,522,522,522,523,523,523,523,523,523,523,523,746', '523,136,749,133,523,341,523,523,523,523,523,523,523,581,581,581,581', '581,581,581,581,755,581,131,581,760,581,682,581,581,581,581,581,581', '581,761,763,764,766,908,908,908,908,908,908,908,908,767,908,768,769', '770,908,521,908,908,908,908,908,908,908,783,783,783,783,771,146,518', '245,772,783,783,146,518,245,522,146,518,245,783,783,773,775,290,290', '290,290,290,290,290,290,776,290,129,128,780,290,523,290,290,290,290', '290,290,290,207,207,207,207,207,207,207,207,781,207,126,124,123,207', '581,207,207,207,207,207,207,207,510,510,510,783,170,170,170,170,170', '170,170,793,510,510,510,510,510,510,908,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,122,119,799,118,117,207,207,207,207,207,207,207,207', '114,810,290,110,108,814,815,816,817,821,211,211,211,211,211,211,211', '211,822,211,106,104,101,211,207,211,211,211,211,211,211,211,212,212', '212,212,212,212,212,212,828,212,833,100,95,212,836,212,212,212,212,212', '212,212,902,902,902,902,902,902,902,902,837,902,94,84,840,902,80,902', '902,902,902,902,902,902,591,591,591,591,591,591,591,591,79,591,845,846', '77,591,850,591,591,591,591,591,591,591,76,852,853,855,575,575,575,575', '575,575,575,575,74,575,73,860,861,575,211,575,575,575,575,575,575,575', '234,234,234,234,234,234,234,234,72,234,863,70,869,234,212,234,234,234', '234,234,234,234,584,584,584,584,584,584,584,584,872,584,873,584,874', '584,902,584,584,584,584,584,584,584,514,514,514,514,514,514,514,514', '876,514,877,878,69,514,591,514,514,514,514,514,514,514,68,881,882,234', '162,162,162,162,162,162,162,162,162,162,162,4,883,38,575,16,431,4,432', '234,428,4,365,365,365,365,365,365,365,365,437,365,442,443,426,365,234', '365,365,365,365,365,365,365,364,364,364,364,364,364,364,364,425,364', '446,419,416,364,584,364,364,364,364,364,364,364,363,363,363,363,363', '363,363,363,,363,,,,363,514,363,363,363,363,363,363,363,838,838,838', '838,838,838,838,838,,838,,,,838,,838,838,838,838,838,838,838,,,,,835', '835,835,835,835,835,835,835,,835,,835,,835,365,835,835,835,835,835,835', '835,362,362,362,362,362,362,362,362,,362,,,,362,364,362,362,362,362', '362,362,362,361,361,361,361,361,361,361,361,,361,,,,361,363,361,361', '361,361,361,361,361,823,823,823,823,823,823,823,823,,823,,,,823,838', '823,823,823,823,823,823,823,,,,,360,360,360,360,360,360,360,360,,360', ',,,360,835,360,360,360,360,360,360,360,811,811,811,811,811,811,811,811', ',811,,,,811,362,811,811,811,811,811,811,811,669,669,669,669,,424,,,', '669,669,424,,,361,424,,,669,669,,,,,,,,,,,,,,,,,823,54,54,54,54,54,54', '54,54,54,54,54,,,,478,478,,478,,,,,,,478,360,,,,,,,669,,,,,,54,54,54', '54,54,54,54,,,811,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,150,,150', ',,478,478,478,478,478,478,478,478,,,,,,,,,,,,,,,,,,,,,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,582,,582,,,150,150,150,150,150,150,150,150', ',,,,,,,,,,,,,,,,,,,,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,372', ',,,,582,582,582,582,582,582,582,582,,,,,,,,,,,,,,,,,,,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,459,,,,,372,372,372,372,372,372,372,372', '372,,,,,,,,,,,,,,,,,,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,250', ',,,,459,459,459,459,459,459,459,459,,,,,,,,,,,,,,,,,,,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,293,,,,,250,250,250,250,250,250,250,250', ',,,,,,,,,,,,,,,,,,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,445,293', ',,,293,293,293,293,293,293,293,293,,,,,,,,,,,,,,,,,,,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,251,,,,,445,445,445,445,445,445,445,445', ',,,,,,,,,,,,,,,,,,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,444,251', ',,,251,251,251,251,251,251,251,251,,,,,,,,,,,,,,,,,,,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,156,,,,,444,444,444,444,444,444,444,444', ',,,,,,,,,,,,,,,,,,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,386,,,,', '156,156,156,156,156,156,156,156,,,,,,,,,,,,,,,,,,,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,71,386,,,,386,386,386,386,386,386,386,386,,', ',,,,,,,,,,,,,,,,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,550,,,,,71,71,71,71,71,71,71,71,,,,,,', ',,,,,,,,,,,,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,,566,,,,566', '566,566,566,566,566,566,566,464,464,464,464,464,464,464,464,464,464', '464,,,,,,,,,,,,,,,,,,,,,,,,,,,,464,464,464,464,464,464,464,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', '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,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,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', '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,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,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,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(3623, 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, 1442, -1, 1586, 1989, nil, nil, nil, 602, 527, nil, nil, nil, nil, nil, nil, 1993, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 1340, nil, 1985, nil, 3295, 123, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 2182, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 1974, 1964, 1919, 2991, 1910, 1890, 1888, 198, 1876, 1866, nil, 1806, 1852, nil, 679, nil, 1816, 122, 655, nil, 607, 174, nil, nil, 190, nil, 1786, 1766, nil, nil, nil, nil, 1821, 1744, 550, nil, 1805, nil, 1804, nil, 1788, nil, 1787, nil, nil, nil, 1784, 587, nil, 1775, 1774, 1772, nil, nil, 1771, 1714, 1711, 77, 1706, 350, 1627, 1628, nil, 1558, nil, 1538, nil, nil, 1592, 1477, 1549, 1481, nil, 1480, nil, nil, 1539, nil, 1663, 1133, 285, 1177, 2340, 1531, 1520, nil, 27, nil, 2873, 45, nil, 1495, 1520, 271, 1895, nil, 1502, 1505, 1481, 1500, 1478, 1312, 1607, 538, 476, 1423, 1344, 1343, 525, 1328, 1300, 1260, nil, 692, nil, 1287, 1290, 184, nil, 156, nil, 1276, 450, nil, -6, nil, -65, 1277, nil, nil, 1159, nil, nil, nil, nil, nil, nil, nil, 1232, 1709, nil, nil, 437, 1801, 1823, nil, nil, nil, nil, nil, nil, nil, nil, 590, 741, 751, 893, 767, 1204, 1186, 1174, 1157, 774, nil, nil, nil, 1915, 1178, 1155, nil, nil, 3541, 1157, nil, 1124, nil, 3254, 1665, 1017, nil, nil, nil, 2578, 2755, nil, 592, 612, nil, 1131, 414, 149, nil, 1324, nil, 248, nil, 332, 814, 1135, 271, nil, 599, nil, 1102, 1119, nil, 1081, nil, 1079, nil, 430, nil, 1069, 1098, 1060, 1088, 1055, 1035, 176, nil, 1322, 3336, 1687, 97, nil, 2637, 291, nil, nil, 802, nil, nil, nil, nil, nil, 80, nil, nil, 1002, 984, 177, 980, nil, nil, nil, nil, nil, 183, nil, nil, 797, nil, nil, nil, nil, nil, 961, 199, 900, 857, nil, -2, nil, nil, nil, 254, 858, 787, nil, 840, 838, nil, 206, 1503, 829, 811, nil, 1367, nil, 1300, 1253, 1208, 1155, 1110, 993, 971, 949, 926, 857, 787, 720, 695, 2191, 2143, 2121, 2051, 2029, 2007, 447, nil, 811, nil, nil, nil, 2460, 1321, nil, 342, nil, nil, nil, nil, 804, 792, 788, 770, 754, nil, 2932, nil, nil, 806, nil, nil, 330, nil, 654, 643, 524, nil, nil, nil, nil, 516, 470, 461, nil, nil, nil, 458, 381, 423, 383, 308, 359, 271, 69, nil, 2032, nil, nil, 2032, nil, nil, -37, nil, 2233, 2029, 1981, nil, 1967, nil, 1078, 1893, 1965, nil, 0, nil, nil, 2008, nil, nil, nil, nil, 1911, 2005, 2814, 2696, 1999, 73, nil, nil, -32, nil, 599, nil, 31, nil, nil, nil, nil, 2519, -16, 155, 192, 255, 3160, 328, nil, nil, nil, -8, 81, nil, 370, nil, 439, nil, 596, 537, 2279, 495, 474, nil, nil, 484, nil, nil, nil, 741, 526, 849, 861, 871, 900, 912, 935, 856, 717, 951, 671, 671, 676, 685, 710, nil, 553, 995, nil, nil, nil, nil, 1660, 253, 197, 651, 1959, 1459, nil, nil, 1664, 3418, 634, 1551, 1573, 1595, nil, 874, 891, nil, 892, 877, 925, 930, nil, 940, 953, 940, 975, 947, 992, 977, nil, nil, nil, 969, 1006, nil, 1084, 638, 1027, 587, 3050, nil, nil, 310, 3109, nil, nil, 1003, 78, 1081, 13, 284, nil, 92, 642, 1096, 3168, nil, 305, nil, 1109, nil, 996, 77, nil, 1893, -11, 130, 1108, nil, 484, 1617, 2401, 1159, 1937, nil, 1179, nil, 1178, nil, nil, 1867, nil, nil, nil, nil, 14, 26, 1211, 356, 1222, nil, 1079, nil, 1234, 1235, 1237, 1250, 1252, 448, nil, 1198, nil, 0, nil, nil, 1277, nil, nil, 1279, nil, nil, 3459, nil, nil, 346, 524, nil, nil, nil, 12, 79, 1272, nil, 1300, nil, 1305, 1286, 1289, nil, 1319, 1326, 25, 1304, 1305, nil, 1337, nil, 1315, nil, nil, 1231, nil, 465, nil, nil, nil, 577, 1337, nil, nil, nil, 1364, 1365, 1256, 1350, 1377, nil, 1398, 2235, nil, 1426, nil, 1430, nil, nil, nil, nil, nil, nil, nil, nil, 1525, nil, 387, nil, nil, nil, 1409, 1437, nil, 1454, 1456, 1432, 1463, 1451, 887, 1479, nil, 1480, 1457, 1500, nil, 24, nil, 3500, 1345, 1448, nil, 3377, 1275, 1523, nil, nil, 1231, nil, 496, nil, 1540, 1063, 384, 76, nil, nil, nil, 1521, nil, 1549, nil, 1041, 1437, 1544, nil, nil, nil, nil, nil, nil, nil, 888, nil, nil, 1026, 1049, nil, nil, 1595, nil, 1018, 1594, nil, 548, nil, nil, nil, 1587, 262, nil, nil, nil, 1591, 1626, nil, 1632, 1632, nil, 1634, 1613, 1614, 1641, 1531, 1656, 1633, 1674, nil, 1648, 1683, 75, 352, nil, 1686, 1678, 115, 1665, 344, nil, nil, nil, nil, nil, nil, nil, nil, 1729, nil, nil, 834, 812, nil, 1742, nil, 547, nil, nil, nil, nil, 765, nil, 330, nil, 1753, 2213, 229, nil, 1783, 1784, 1672, 1761, nil, nil, nil, 1674, 1771, 2165, 8, nil, nil, 1322, 1791, nil, nil, nil, nil, 1824, 544, 2099, 1828, 1815, 2073, 89, 1819, 598, nil, -13, nil, 1838, 1865, nil, 673, nil, 1843, 205, 1879, 1883, nil, 1854, -9, nil, nil, 628, 1892, 1867, 575, 1917, nil, nil, 464, nil, nil, 1887, nil, nil, 1932, 1936, 1936, nil, 1959, 1900, 1932, 591, 399, 1944, 1945, 1928, nil, nil, nil, nil, nil, 521, nil, nil, nil, 11, 539, 100, nil, 595, 581, nil, nil, 614, 1845, nil, 650, 765, 966, nil, 1643, 1577, 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, nil, 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, nil, nil, 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, nil, 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, nil, nil, 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].val] result end .,., module_eval(<<'.,.,', 'bnf.y.rb', 804) def _reduce_234(val, _values, result) result << val[2].val 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