diff options
Diffstat (limited to 'test/racc')
88 files changed, 0 insertions, 70038 deletions
diff --git a/test/racc/assets/cadenza.y b/test/racc/assets/cadenza.y deleted file mode 100644 index 1940ead225..0000000000 --- a/test/racc/assets/cadenza.y +++ /dev/null @@ -1,170 +0,0 @@ -# This grammar is released under an MIT license -# Author: William Howard (http://github.com/whoward) -# Source: https://github.com/whoward/cadenza/blob/master/src/cadenza.y - -class Cadenza::RaccParser - -/* expect this many shift/reduce conflicts */ -expect 37 - -rule - target - : document - | /* none */ { result = nil } - ; - - parameter_list - : logical_expression { result = [val[0]] } - | parameter_list ',' logical_expression { result = val[0].push(val[2]) } - ; - - /* this has a shift/reduce conflict but since Racc will shift in this case it is the correct behavior */ - primary_expression - : IDENTIFIER { result = VariableNode.new(val[0].value) } - | IDENTIFIER parameter_list { result = VariableNode.new(val[0].value, val[1]) } - | INTEGER { result = ConstantNode.new(val[0].value) } - | REAL { result = ConstantNode.new(val[0].value) } - | STRING { result = ConstantNode.new(val[0].value) } - | '(' filtered_expression ')' { result = val[1] } - ; - - multiplicative_expression - : primary_expression - | multiplicative_expression '*' primary_expression { result = OperationNode.new(val[0], "*", val[2]) } - | multiplicative_expression '/' primary_expression { result = OperationNode.new(val[0], "/", val[2]) } - ; - - additive_expression - : multiplicative_expression - | additive_expression '+' multiplicative_expression { result = OperationNode.new(val[0], "+", val[2]) } - | additive_expression '-' multiplicative_expression { result = OperationNode.new(val[0], "-", val[2]) } - ; - - boolean_expression - : additive_expression - | boolean_expression OP_EQ additive_expression { result = OperationNode.new(val[0], "==", val[2]) } - | boolean_expression OP_NEQ additive_expression { result = OperationNode.new(val[0], "!=", val[2]) } - | boolean_expression OP_LEQ additive_expression { result = OperationNode.new(val[0], "<=", val[2]) } - | boolean_expression OP_GEQ additive_expression { result = OperationNode.new(val[0], ">=", val[2]) } - | boolean_expression '>' additive_expression { result = OperationNode.new(val[0], ">", val[2]) } - | boolean_expression '<' additive_expression { result = OperationNode.new(val[0], "<", val[2]) } - ; - - inverse_expression - : boolean_expression - | NOT boolean_expression { result = BooleanInverseNode.new(val[1]) } - ; - - logical_expression - : inverse_expression - | logical_expression AND inverse_expression { result = OperationNode.new(val[0], "and", val[2]) } - | logical_expression OR inverse_expression { result = OperationNode.new(val[0], "or", val[2]) } - ; - - filter - : IDENTIFIER { result = FilterNode.new(val[0].value) } - | IDENTIFIER ':' parameter_list { result = FilterNode.new(val[0].value, val[2]) } - ; - - filter_list - : filter { result = [val[0]] } - | filter_list '|' filter { result = val[0].push(val[2]) } - ; - - filtered_expression - : logical_expression - | logical_expression '|' filter_list { result = FilteredValueNode.new(val[0], val[2]) } - ; - - inject_statement - : VAR_OPEN filtered_expression VAR_CLOSE { result = val[1] } - ; - - if_tag - : STMT_OPEN IF logical_expression STMT_CLOSE { open_scope!; result = val[2] } - | STMT_OPEN UNLESS logical_expression STMT_CLOSE { open_scope!; result = BooleanInverseNode.new(val[2]) } - ; - - else_tag - : STMT_OPEN ELSE STMT_CLOSE { result = close_scope!; open_scope! } - ; - - end_if_tag - : STMT_OPEN ENDIF STMT_CLOSE { result = close_scope! } - | STMT_OPEN ENDUNLESS STMT_CLOSE { result = close_scope! } - ; - - if_block - : if_tag end_if_tag { result = IfNode.new(val[0], val[1]) } - | if_tag document end_if_tag { result = IfNode.new(val[0], val[2]) } - | if_tag else_tag document end_if_tag { result = IfNode.new(val[0], val[1], val[3]) } - | if_tag document else_tag end_if_tag { result = IfNode.new(val[0], val[2], val[3]) } - | if_tag document else_tag document end_if_tag { result = IfNode.new(val[0], val[2], val[4]) } - ; - - for_tag - : STMT_OPEN FOR IDENTIFIER IN filtered_expression STMT_CLOSE { open_scope!; result = [val[2].value, val[4]] } - ; - - end_for_tag - : STMT_OPEN ENDFOR STMT_CLOSE { result = close_scope! } - ; - - /* this has a shift/reduce conflict but since Racc will shift in this case it is the correct behavior */ - for_block - : for_tag end_for_tag { result = ForNode.new(VariableNode.new(val[0].first), val[0].last, val[1]) } - | for_tag document end_for_tag { result = ForNode.new(VariableNode.new(val[0].first), val[0].last, val[2]) } - ; - - block_tag - : STMT_OPEN BLOCK IDENTIFIER STMT_CLOSE { result = open_block_scope!(val[2].value) } - ; - - end_block_tag - : STMT_OPEN ENDBLOCK STMT_CLOSE { result = close_block_scope! } - ; - - /* this has a shift/reduce conflict but since Racc will shift in this case it is the correct behavior */ - block_block - : block_tag end_block_tag { result = BlockNode.new(val[0], val[1]) } - | block_tag document end_block_tag { result = BlockNode.new(val[0], val[2]) } - ; - - generic_block_tag - : STMT_OPEN IDENTIFIER STMT_CLOSE { open_scope!; result = [val[1].value, []] } - | STMT_OPEN IDENTIFIER parameter_list STMT_CLOSE { open_scope!; result = [val[1].value, val[2]] } - ; - - end_generic_block_tag - : STMT_OPEN END STMT_CLOSE { result = close_scope! } - ; - - generic_block - : generic_block_tag document end_generic_block_tag { result = GenericBlockNode.new(val[0].first, val[2], val[0].last) } - ; - - extends_statement - : STMT_OPEN EXTENDS STRING STMT_CLOSE { result = val[2].value } - | STMT_OPEN EXTENDS IDENTIFIER STMT_CLOSE { result = VariableNode.new(val[2].value) } - ; - - document_component - : TEXT_BLOCK { result = TextNode.new(val[0].value) } - | inject_statement - | if_block - | for_block - | generic_block - | block_block - ; - - document - : document_component { push val[0] } - | document document_component { push val[1] } - | extends_statement { document.extends = val[0] } - | document extends_statement { document.extends = val[1] } - ; - ----- header ---- -# racc_parser.rb : generated by racc - ----- inner ---- diff --git a/test/racc/assets/cast.y b/test/racc/assets/cast.y deleted file mode 100644 index d180c09e14..0000000000 --- a/test/racc/assets/cast.y +++ /dev/null @@ -1,926 +0,0 @@ -# The MIT License -# -# Copyright (c) George Ogata -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class C::Parser -# shift/reduce conflict on "if (c) if (c) ; else ; else ;" -expect 1 -rule - -# A.2.4 External definitions - -# Returns TranslationUnit -translation_unit - : external_declaration {result = TranslationUnit.new_at(val[0].pos, NodeChain[val[0]])} - | translation_unit external_declaration {result = val[0]; result.entities << val[1]} - -# Returns Declaration|FunctionDef -external_declaration - : function_definition {result = val[0]} - | declaration {result = val[0]} - -# Returns FunctionDef -function_definition - : declaration_specifiers declarator declaration_list compound_statement {result = make_function_def(val[0][0], val[0][1], val[1], val[2], val[3])} - | declaration_specifiers declarator compound_statement {result = make_function_def(val[0][0], val[0][1], val[1], nil , val[2])} - -# Returns [Declaration] -declaration_list - : declaration {result = [val[0]]} - | declaration_list declaration {result = val[0] << val[1]} - -# A.2.3 Statements - -# Returns Statement -statement - : labeled_statement {result = val[0]} - | compound_statement {result = val[0]} - | expression_statement {result = val[0]} - | selection_statement {result = val[0]} - | iteration_statement {result = val[0]} - | jump_statement {result = val[0]} - -# Returns Statement -labeled_statement - : identifier COLON statement {val[2].labels.unshift(PlainLabel.new_at(val[0].pos, val[0].val)); result = val[2]} - | CASE constant_expression COLON statement {val[3].labels.unshift(Case .new_at(val[0].pos, val[1] )); result = val[3]} - | DEFAULT COLON statement {val[2].labels.unshift(Default .new_at(val[0].pos )); result = val[2]} - # type names can also be used as labels - | typedef_name COLON statement {val[2].labels.unshift(PlainLabel.new_at(val[0].pos, val[0].name)); result = val[2]} - -# Returns Block -compound_statement - : LBRACE block_item_list RBRACE {result = Block.new_at(val[0].pos, val[1])} - | LBRACE RBRACE {result = Block.new_at(val[0].pos )} - -# Returns NodeChain[Declaration|Statement] -block_item_list - : block_item {result = NodeChain[val[0]]} - | block_item_list block_item {result = val[0] << val[1]} - -# Returns Declaration|Statement -block_item - : declaration {result = val[0]} - | statement {result = val[0]} - -# Returns ExpressionStatement -expression_statement - : expression SEMICOLON {result = ExpressionStatement.new_at(val[0].pos, val[0])} - | SEMICOLON {result = ExpressionStatement.new_at(val[0].pos )} - -# Returns Statement -selection_statement - : IF LPAREN expression RPAREN statement {result = If .new_at(val[0].pos, val[2], val[4] )} - | IF LPAREN expression RPAREN statement ELSE statement {result = If .new_at(val[0].pos, val[2], val[4], val[6])} - | SWITCH LPAREN expression RPAREN statement {result = Switch.new_at(val[0].pos, val[2], val[4] )} - -# Returns Statement -iteration_statement - : WHILE LPAREN expression RPAREN statement {result = While.new_at(val[0].pos, val[2], val[4] )} - | DO statement WHILE LPAREN expression RPAREN SEMICOLON {result = While.new_at(val[0].pos, val[4], val[1], :do => true )} - | FOR LPAREN expression SEMICOLON expression SEMICOLON expression RPAREN statement {result = For.new_at(val[0].pos, val[2], val[4], val[6], val[8])} - | FOR LPAREN expression SEMICOLON expression SEMICOLON RPAREN statement {result = For.new_at(val[0].pos, val[2], val[4], nil , val[7])} - | FOR LPAREN expression SEMICOLON SEMICOLON expression RPAREN statement {result = For.new_at(val[0].pos, val[2], nil , val[5], val[7])} - | FOR LPAREN expression SEMICOLON SEMICOLON RPAREN statement {result = For.new_at(val[0].pos, val[2], nil , nil , val[6])} - | FOR LPAREN SEMICOLON expression SEMICOLON expression RPAREN statement {result = For.new_at(val[0].pos, nil , val[3], val[5], val[7])} - | FOR LPAREN SEMICOLON expression SEMICOLON RPAREN statement {result = For.new_at(val[0].pos, nil , val[3], nil , val[6])} - | FOR LPAREN SEMICOLON SEMICOLON expression RPAREN statement {result = For.new_at(val[0].pos, nil , nil , val[4], val[6])} - | FOR LPAREN SEMICOLON SEMICOLON RPAREN statement {result = For.new_at(val[0].pos, nil , nil , nil , val[5])} - | FOR LPAREN declaration expression SEMICOLON expression RPAREN statement {result = For.new_at(val[0].pos, val[2], val[3], val[5], val[7])} - | FOR LPAREN declaration expression SEMICOLON RPAREN statement {result = For.new_at(val[0].pos, val[2], val[3], nil , val[6])} - | FOR LPAREN declaration SEMICOLON expression RPAREN statement {result = For.new_at(val[0].pos, val[2], nil , val[4], val[6])} - | FOR LPAREN declaration SEMICOLON RPAREN statement {result = For.new_at(val[0].pos, val[2], nil , nil , val[5])} - -# Returns Statement -jump_statement - : GOTO identifier SEMICOLON {result = Goto .new_at(val[0].pos, val[1].val)} - | CONTINUE SEMICOLON {result = Continue.new_at(val[0].pos )} - | BREAK SEMICOLON {result = Break .new_at(val[0].pos )} - | RETURN expression SEMICOLON {result = Return .new_at(val[0].pos, val[1] )} - | RETURN SEMICOLON {result = Return .new_at(val[0].pos )} - # type names can also be used as labels - | GOTO typedef_name SEMICOLON {result = Goto .new_at(val[0].pos, val[1].name)} - -# A.2.2 Declarations - -# Returns Declaration -declaration - : declaration_specifiers init_declarator_list SEMICOLON {result = make_declaration(val[0][0], val[0][1], val[1])} - | declaration_specifiers SEMICOLON {result = make_declaration(val[0][0], val[0][1], NodeArray[])} - -# Returns {Pos, [Symbol]} -declaration_specifiers - : storage_class_specifier declaration_specifiers {val[1][1] << val[0][1]; result = val[1]} - | storage_class_specifier {result = [val[0][0], [val[0][1]]]} - | type_specifier declaration_specifiers {val[1][1] << val[0][1]; result = val[1]} - | type_specifier {result = [val[0][0], [val[0][1]]]} - | type_qualifier declaration_specifiers {val[1][1] << val[0][1]; result = val[1]} - | type_qualifier {result = [val[0][0], [val[0][1]]]} - | function_specifier declaration_specifiers {val[1][1] << val[0][1]; result = val[1]} - | function_specifier {result = [val[0][0], [val[0][1]]]} - -# Returns NodeArray[Declarator] -init_declarator_list - : init_declarator {result = NodeArray[val[0]]} - | init_declarator_list COMMA init_declarator {result = val[0] << val[2]} - -# Returns Declarator -init_declarator - : declarator {result = val[0]} - | declarator EQ initializer {val[0].init = val[2]; result = val[0]} - -# Returns [Pos, Symbol] -storage_class_specifier - : TYPEDEF {result = [val[0].pos, :typedef ]} - | EXTERN {result = [val[0].pos, :extern ]} - | STATIC {result = [val[0].pos, :static ]} - | AUTO {result = [val[0].pos, :auto ]} - | REGISTER {result = [val[0].pos, :register]} - -# Returns [Pos, Type|Symbol] -type_specifier - : VOID {result = [val[0].pos, :void ]} - | CHAR {result = [val[0].pos, :char ]} - | SHORT {result = [val[0].pos, :short ]} - | INT {result = [val[0].pos, :int ]} - | LONG {result = [val[0].pos, :long ]} - | FLOAT {result = [val[0].pos, :float ]} - | DOUBLE {result = [val[0].pos, :double ]} - | SIGNED {result = [val[0].pos, :signed ]} - | UNSIGNED {result = [val[0].pos, :unsigned ]} - | BOOL {result = [val[0].pos, :_Bool ]} - | COMPLEX {result = [val[0].pos, :_Complex ]} - | IMAGINARY {result = [val[0].pos, :_Imaginary]} - | struct_or_union_specifier {result = [val[0].pos, val[0] ]} - | enum_specifier {result = [val[0].pos, val[0] ]} - | typedef_name {result = [val[0].pos, val[0] ]} - -# Returns Struct|Union -struct_or_union_specifier - : struct_or_union identifier LBRACE struct_declaration_list RBRACE {result = val[0][1].new_at(val[0][0], val[1].val, val[3])} - | struct_or_union LBRACE struct_declaration_list RBRACE {result = val[0][1].new_at(val[0][0], nil , val[2])} - | struct_or_union identifier {result = val[0][1].new_at(val[0][0], val[1].val, nil )} - # type names can also be used as struct identifiers - | struct_or_union typedef_name LBRACE struct_declaration_list RBRACE {result = val[0][1].new_at(val[0][0], val[1].name, val[3])} - | struct_or_union typedef_name {result = val[0][1].new_at(val[0][0], val[1].name, nil )} - -# Returns [Pos, Class] -struct_or_union - : STRUCT {result = [val[0].pos, Struct]} - | UNION {result = [val[0].pos, Union ]} - -# Returns NodeArray[Declaration] -struct_declaration_list - : struct_declaration {result = NodeArray[val[0]]} - | struct_declaration_list struct_declaration {val[0] << val[1]; result = val[0]} - -# Returns Declaration -struct_declaration - : specifier_qualifier_list struct_declarator_list SEMICOLON {result = make_declaration(val[0][0], val[0][1], val[1])} - -# Returns {Pos, [Symbol]} -specifier_qualifier_list - : type_specifier specifier_qualifier_list {val[1][1] << val[0][1]; result = val[1]} - | type_specifier {result = [val[0][0], [val[0][1]]]} - | type_qualifier specifier_qualifier_list {val[1][1] << val[0][1]; result = val[1]} - | type_qualifier {result = [val[0][0], [val[0][1]]]} - -# Returns NodeArray[Declarator] -struct_declarator_list - : struct_declarator {result = NodeArray[val[0]]} - | struct_declarator_list COMMA struct_declarator {result = val[0] << val[2]} - -# Returns Declarator -struct_declarator - : declarator {result = val[0]} - | declarator COLON constant_expression {result = val[0]; val[0].num_bits = val[2]} - | COLON constant_expression {result = Declarator.new_at(val[0].pos, :num_bits => val[1])} - -# Returns Enum -enum_specifier - : ENUM identifier LBRACE enumerator_list RBRACE {result = Enum.new_at(val[0].pos, val[1].val, val[3])} - | ENUM LBRACE enumerator_list RBRACE {result = Enum.new_at(val[0].pos, nil , val[2])} - | ENUM identifier LBRACE enumerator_list COMMA RBRACE {result = Enum.new_at(val[0].pos, val[1].val, val[3])} - | ENUM LBRACE enumerator_list COMMA RBRACE {result = Enum.new_at(val[0].pos, nil , val[2])} - | ENUM identifier {result = Enum.new_at(val[0].pos, val[1].val, nil )} - # type names can also be used as enum names - | ENUM typedef_name LBRACE enumerator_list RBRACE {result = Enum.new_at(val[0].pos, val[1].name, val[3])} - | ENUM typedef_name LBRACE enumerator_list COMMA RBRACE {result = Enum.new_at(val[0].pos, val[1].name, val[3])} - | ENUM typedef_name {result = Enum.new_at(val[0].pos, val[1].name, nil )} - -# Returns NodeArray[Enumerator] -enumerator_list - : enumerator {result = NodeArray[val[0]]} - | enumerator_list COMMA enumerator {result = val[0] << val[2]} - -# Returns Enumerator -enumerator - : enumeration_constant {result = Enumerator.new_at(val[0].pos, val[0].val, nil )} - | enumeration_constant EQ constant_expression {result = Enumerator.new_at(val[0].pos, val[0].val, val[2])} - -# Returns [Pos, Symbol] -type_qualifier - : CONST {result = [val[0].pos, :const ]} - | RESTRICT {result = [val[0].pos, :restrict]} - | VOLATILE {result = [val[0].pos, :volatile]} - -# Returns [Pos, Symbol] -function_specifier - : INLINE {result = [val[0].pos, :inline]} - -# Returns Declarator -declarator - : pointer direct_declarator {result = add_decl_type(val[1], val[0])} - | direct_declarator {result = val[0]} - -# Returns Declarator -direct_declarator - : identifier {result = Declarator.new_at(val[0].pos, nil, val[0].val)} - | LPAREN declarator RPAREN {result = val[1]} - | direct_declarator LBRACKET type_qualifier_list assignment_expression RBRACKET {result = add_decl_type(val[0], Array.new_at(val[0].pos ))} # TODO - | direct_declarator LBRACKET type_qualifier_list RBRACKET {result = add_decl_type(val[0], Array.new_at(val[0].pos ))} # TODO - | direct_declarator LBRACKET assignment_expression RBRACKET {result = add_decl_type(val[0], Array.new_at(val[0].pos, nil, val[2]))} - | direct_declarator LBRACKET RBRACKET {result = add_decl_type(val[0], Array.new_at(val[0].pos ))} - | direct_declarator LBRACKET STATIC type_qualifier_list assignment_expression RBRACKET {result = add_decl_type(val[0], Array.new_at(val[0].pos ))} # TODO - | direct_declarator LBRACKET STATIC assignment_expression RBRACKET {result = add_decl_type(val[0], Array.new_at(val[0].pos ))} # TODO - | direct_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET {result = add_decl_type(val[0], Array.new_at(val[0].pos ))} # TODO - | direct_declarator LBRACKET type_qualifier_list MUL RBRACKET {result = add_decl_type(val[0], Array.new_at(val[0].pos ))} # TODO - | direct_declarator LBRACKET MUL RBRACKET {result = add_decl_type(val[0], Array.new_at(val[0].pos ))} # TODO - | direct_declarator LPAREN parameter_type_list RPAREN {result = add_decl_type(val[0], Function.new_at(val[0].pos, nil, param_list(*val[2]), :var_args => val[2][1]))} - | direct_declarator LPAREN identifier_list RPAREN {result = add_decl_type(val[0], Function.new_at(val[0].pos, nil, val[2]))} - | direct_declarator LPAREN RPAREN {result = add_decl_type(val[0], Function.new_at(val[0].pos ))} - -# Returns Pointer -pointer - : MUL type_qualifier_list {result = add_type_quals(Pointer.new_at(val[0].pos), val[1][1]) } - | MUL {result = Pointer.new_at(val[0].pos) } - | MUL type_qualifier_list pointer {p = add_type_quals(Pointer.new_at(val[0].pos), val[1][1]); val[2].direct_type = p; result = val[2]} - | MUL pointer {p = Pointer.new_at(val[0].pos) ; val[1].direct_type = p; result = val[1]} - -# Returns {Pos, [Symbol]} -type_qualifier_list - : type_qualifier {result = [val[0][0], [val[0][1]]]} - | type_qualifier_list type_qualifier {val[0][1] << val[1][1]; result = val[0]} - -# Returns [NodeArray[Parameter], var_args?] -parameter_type_list - : parameter_list {result = [val[0], false]} - | parameter_list COMMA ELLIPSIS {result = [val[0], true ]} - -# Returns NodeArray[Parameter] -parameter_list - : parameter_declaration {result = NodeArray[val[0]]} - | parameter_list COMMA parameter_declaration {result = val[0] << val[2]} - -# Returns Parameter -parameter_declaration - : declaration_specifiers declarator {ind_type = val[1].indirect_type and ind_type.detach - result = make_parameter(val[0][0], val[0][1], ind_type, val[1].name)} - | declaration_specifiers abstract_declarator {result = make_parameter(val[0][0], val[0][1], val[1] , nil )} - | declaration_specifiers {result = make_parameter(val[0][0], val[0][1], nil , nil )} - -# Returns NodeArray[Parameter] -identifier_list - : identifier {result = NodeArray[Parameter.new_at(val[0].pos, nil, val[0].val)]} - | identifier_list COMMA identifier {result = val[0] << Parameter.new_at(val[2].pos, nil, val[2].val)} - -# Returns Type -type_name - : specifier_qualifier_list abstract_declarator {val[1].direct_type = make_direct_type(val[0][0], val[0][1]); result = val[1]} - | specifier_qualifier_list {result = make_direct_type(val[0][0], val[0][1]) } - -# Returns Type -abstract_declarator - : pointer {result = val[0]} - | pointer direct_abstract_declarator {val[1].direct_type = val[0]; result = val[1]} - | direct_abstract_declarator {result = val[0]} - -# Returns Type -direct_abstract_declarator - : LPAREN abstract_declarator RPAREN {result = val[1]} - | direct_abstract_declarator LBRACKET assignment_expression RBRACKET {val[0].direct_type = Array.new_at(val[0].pos, nil, val[2]); result = val[0]} - | direct_abstract_declarator LBRACKET RBRACKET {val[0].direct_type = Array.new_at(val[0].pos, nil, nil ); result = val[0]} - | LBRACKET assignment_expression RBRACKET {result = Array.new_at(val[0].pos, nil, val[1])} - | LBRACKET RBRACKET {result = Array.new_at(val[0].pos )} - | direct_abstract_declarator LBRACKET MUL RBRACKET {val[0].direct_type = Array.new_at(val[0].pos); result = val[0]} # TODO - | LBRACKET MUL RBRACKET {result = Array.new_at(val[0].pos)} # TODO - | direct_abstract_declarator LPAREN parameter_type_list RPAREN {val[0].direct_type = Function.new_at(val[0].pos, nil, param_list(*val[2]), val[2][1]); result = val[0]} - | direct_abstract_declarator LPAREN RPAREN {val[0].direct_type = Function.new_at(val[0].pos ); result = val[0]} - | LPAREN parameter_type_list RPAREN {result = Function.new_at(val[0].pos, nil, param_list(*val[1]), val[1][1])} - | LPAREN RPAREN {result = Function.new_at(val[0].pos )} - -# Returns CustomType -typedef_name - #: identifier -- insufficient since we must distinguish between type - # names and var names (otherwise we have a conflict) - : TYPENAME {result = CustomType.new_at(val[0].pos, val[0].val)} - -# Returns Expression -initializer - : assignment_expression {result = val[0]} - | LBRACE initializer_list RBRACE {result = CompoundLiteral.new_at(val[0].pos, nil, val[1])} - | LBRACE initializer_list COMMA RBRACE {result = CompoundLiteral.new_at(val[0].pos, nil, val[1])} - -# Returns NodeArray[MemberInit] -initializer_list - : designation initializer {result = NodeArray[MemberInit.new_at(val[0][0] , val[0][1], val[1])]} - | initializer {result = NodeArray[MemberInit.new_at(val[0].pos, nil , val[0])]} - | initializer_list COMMA designation initializer {result = val[0] << MemberInit.new_at(val[2][0] , val[2][1], val[3])} - | initializer_list COMMA initializer {result = val[0] << MemberInit.new_at(val[2].pos, nil , val[2])} - -# Returns {Pos, NodeArray[Expression|Token]} -designation - : designator_list EQ {result = val[0]} - -# Returns {Pos, NodeArray[Expression|Token]} -designator_list - : designator {result = val[0]; val[0][1] = NodeArray[val[0][1]]} - | designator_list designator {result = val[0]; val[0][1] << val[1][1]} - -# Returns {Pos, Expression|Member} -designator - : LBRACKET constant_expression RBRACKET {result = [val[1].pos, val[1] ]} - | DOT identifier {result = [val[1].pos, Member.new_at(val[1].pos, val[1].val)]} - -# A.2.1 Expressions - -# Returns Expression -primary_expression - : identifier {result = Variable.new_at(val[0].pos, val[0].val)} - | constant {result = val[0]} - | string_literal {result = val[0]} - # GCC EXTENSION: allow a compound statement in parentheses as an expression - | LPAREN expression RPAREN {result = val[1]} - | LPAREN compound_statement RPAREN {block_expressions_enabled? or parse_error val[0].pos, "compound statement found where expression expected" - result = BlockExpression.new(val[1]); result.pos = val[0].pos} - -# Returns Expression -postfix_expression - : primary_expression {result = val[0]} - | postfix_expression LBRACKET expression RBRACKET {result = Index .new_at(val[0].pos, val[0], val[2])} - | postfix_expression LPAREN argument_expression_list RPAREN {result = Call .new_at(val[0].pos, val[0], val[2] )} - | postfix_expression LPAREN RPAREN {result = Call .new_at(val[0].pos, val[0], NodeArray[])} - | postfix_expression DOT identifier {result = Dot .new_at(val[0].pos, val[0], Member.new(val[2].val))} - | postfix_expression ARROW identifier {result = Arrow .new_at(val[0].pos, val[0], Member.new(val[2].val))} - | postfix_expression INC {result = PostInc .new_at(val[0].pos, val[0] )} - | postfix_expression DEC {result = PostDec .new_at(val[0].pos, val[0] )} - | LPAREN type_name RPAREN LBRACE initializer_list RBRACE {result = CompoundLiteral.new_at(val[0].pos, val[1], val[4])} - | LPAREN type_name RPAREN LBRACE initializer_list COMMA RBRACE {result = CompoundLiteral.new_at(val[0].pos, val[1], val[4])} - -# Returns [Expression|Type] -argument_expression_list - : argument_expression {result = NodeArray[val[0]]} - | argument_expression_list COMMA argument_expression {result = val[0] << val[2]} - -# Returns Expression|Type -- EXTENSION: allow type names here too, to support some standard library macros (e.g., va_arg [7.15.1.1]) -argument_expression - : assignment_expression {result = val[0]} - | type_name {result = val[0]} - -# Returns Expression -unary_expression - : postfix_expression {result = val[0]} - | INC unary_expression {result = PreInc.new_at(val[0].pos, val[1])} - | DEC unary_expression {result = PreDec.new_at(val[0].pos, val[1])} - | unary_operator cast_expression {result = val[0][0].new_at(val[0][1], val[1])} - | SIZEOF unary_expression {result = Sizeof.new_at(val[0].pos, val[1])} - | SIZEOF LPAREN type_name RPAREN {result = Sizeof.new_at(val[0].pos, val[2])} - -# Returns [Class, Pos] -unary_operator - : AND {result = [Address , val[0].pos]} - | MUL {result = [Dereference, val[0].pos]} - | ADD {result = [Positive , val[0].pos]} - | SUB {result = [Negative , val[0].pos]} - | NOT {result = [BitNot , val[0].pos]} - | BANG {result = [Not , val[0].pos]} - -# Returns Expression -cast_expression - : unary_expression {result = val[0]} - | LPAREN type_name RPAREN cast_expression {result = Cast.new_at(val[0].pos, val[1], val[3])} - -# Returns Expression -multiplicative_expression - : cast_expression {result = val[0]} - | multiplicative_expression MUL cast_expression {result = Multiply.new_at(val[0].pos, val[0], val[2])} - | multiplicative_expression DIV cast_expression {result = Divide .new_at(val[0].pos, val[0], val[2])} - | multiplicative_expression MOD cast_expression {result = Mod .new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -additive_expression - : multiplicative_expression {result = val[0]} - | additive_expression ADD multiplicative_expression {result = Add .new_at(val[0].pos, val[0], val[2])} - | additive_expression SUB multiplicative_expression {result = Subtract.new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -shift_expression - : additive_expression {result = val[0]} - | shift_expression LSHIFT additive_expression {result = ShiftLeft .new_at(val[0].pos, val[0], val[2])} - | shift_expression RSHIFT additive_expression {result = ShiftRight.new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -relational_expression - : shift_expression {result = val[0]} - | relational_expression LT shift_expression {result = Less.new_at(val[0].pos, val[0], val[2])} - | relational_expression GT shift_expression {result = More.new_at(val[0].pos, val[0], val[2])} - | relational_expression LEQ shift_expression {result = LessOrEqual.new_at(val[0].pos, val[0], val[2])} - | relational_expression GEQ shift_expression {result = MoreOrEqual.new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -equality_expression - : relational_expression {result = val[0]} - | equality_expression EQEQ relational_expression {result = Equal .new_at(val[0].pos, val[0], val[2])} - | equality_expression NEQ relational_expression {result = NotEqual.new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -and_expression - : equality_expression {result = val[0]} - | and_expression AND equality_expression {result = BitAnd.new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -exclusive_or_expression - : and_expression {result = val[0]} - | exclusive_or_expression XOR and_expression {result = BitXor.new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -inclusive_or_expression - : exclusive_or_expression {result = val[0]} - | inclusive_or_expression OR exclusive_or_expression {result = BitOr.new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -logical_and_expression - : inclusive_or_expression {result = val[0]} - | logical_and_expression ANDAND inclusive_or_expression {result = And.new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -logical_or_expression - : logical_and_expression {result = val[0]} - | logical_or_expression OROR logical_and_expression {result = Or.new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -conditional_expression - : logical_or_expression {result = val[0]} - | logical_or_expression QUESTION expression COLON conditional_expression {result = Conditional.new_at(val[0].pos, val[0], val[2], val[4])} - -# Returns Expression -assignment_expression - : conditional_expression {result = val[0]} - | unary_expression assignment_operator assignment_expression {result = val[1].new_at(val[0].pos, val[0], val[2])} - -# Returns Class -assignment_operator - : EQ {result = Assign} - | MULEQ {result = MultiplyAssign} - | DIVEQ {result = DivideAssign} - | MODEQ {result = ModAssign} - | ADDEQ {result = AddAssign} - | SUBEQ {result = SubtractAssign} - | LSHIFTEQ {result = ShiftLeftAssign} - | RSHIFTEQ {result = ShiftRightAssign} - | ANDEQ {result = BitAndAssign} - | XOREQ {result = BitXorAssign} - | OREQ {result = BitOrAssign} - -# Returns Expression -expression - : assignment_expression {result = val[0]} - | expression COMMA assignment_expression { - if val[0].is_a? Comma - if val[2].is_a? Comma - val[0].exprs.push(*val[2].exprs) - else - val[0].exprs << val[2] - end - result = val[0] - else - if val[2].is_a? Comma - val[2].exprs.unshift(val[0]) - val[2].pos = val[0].pos - result = val[2] - else - result = Comma.new_at(val[0].pos, NodeArray[val[0], val[2]]) - end - end - } - -# Returns Expression -constant_expression - : conditional_expression {result = val[0]} - -# A.1.1 -- Lexical elements -# -# token -# : keyword (raw string) -# | identifier expanded below -# | constant expanded below -# | string_literal expanded below -# | punctuator (raw string) -# -# preprocessing-token (skip) - -# Returns Token -identifier - : ID {result = val[0]} - -# Returns Literal -constant - : ICON {result = val[0].val; result.pos = val[0].pos} - | FCON {result = val[0].val; result.pos = val[0].pos} - #| enumeration_constant -- these are parsed as identifiers at all - # places the `constant' nonterminal appears - | CCON {result = val[0].val; result.pos = val[0].pos} - -# Returns Token -enumeration_constant - : ID {result = val[0]} - -# Returns StringLiteral -# Also handles string literal concatenation (6.4.5.4) -string_literal - : string_literal SCON {val[0].val << val[1].val.val; result = val[0]} - | SCON { result = val[0].val; result.pos = val[0].pos } - ----- inner - # A.1.9 -- Preprocessing numbers -- skip - # A.1.8 -- Header names -- skip - - # A.1.7 -- Puncuators -- we don't bother with {##,#,%:,%:%:} since - # we don't do preprocessing - @@punctuators = %r'\+\+|-[->]|&&|\|\||\.\.\.|(?:<<|>>|[<>=!*/%+\-&^|])=?|[\[\](){}.~?:;,]' - @@digraphs = %r'<[:%]|[:%]>' - - # A.1.6 -- String Literals -- simple for us because we don't decode - # the string (and indeed accept some illegal strings) - @@string_literal = %r'L?"(?:[^\\]|\\.)*?"'m - - # A.1.5 -- Constants - @@decimal_floating_constant = %r'(?:(?:\d*\.\d+|\d+\.)(?:e[-+]?\d+)?|\d+e[-+]?\d+)[fl]?'i - @@hexadecimal_floating_constant = %r'0x(?:(?:[0-9a-f]*\.[0-9a-f]+|[0-9a-f]+\.)|[0-9a-f]+)p[-+]?\d+[fl]?'i - - @@integer_constant = %r'(?:[1-9][0-9]*|0x[0-9a-f]+|0[0-7]*)(?:ul?l?|ll?u?)?'i - @@floating_constant = %r'#{@@decimal_floating_constant}|#{@@hexadecimal_floating_constant}' - @@enumeration_constant = %r'[a-zA-Z_\\][a-zA-Z_\\0-9]*' - @@character_constant = %r"L?'(?:[^\\]|\\.)+?'" - # (note that as with string-literals, we accept some illegal - # character-constants) - - # A.1.4 -- Universal character names -- skip - - # A.1.3 -- Identifiers -- skip, since an identifier is lexically - # identical to an enumeration constant - - # A.1.2 Keywords - keywords = %w'auto break case char const continue default do -double else enum extern float for goto if inline int long register -restrict return short signed sizeof static struct switch typedef union - unsigned void volatile while _Bool _Complex _Imaginary' - @@keywords = %r"#{keywords.join('|')}" - - def initialize - @type_names = ::Set.new - - @warning_proc = lambda{} - @pos = C::Node::Pos.new(nil, 1, 0) - end - def initialize_copy(x) - @pos = x.pos.dup - @type_names = x.type_names.dup - end - attr_accessor :pos, :type_names - - def parse(str) - if str.respond_to? :read - str = str.read - end - @str = str - begin - prepare_lexer(str) - return do_parse - rescue ParseError => e - e.set_backtrace(caller) - raise - end - end - - # - # Error handler, as used by racc. - # - def on_error(error_token_id, error_value, value_stack) - if error_value == '$' - parse_error @pos, "unexpected EOF" - else - parse_error(error_value.pos, - "parse error on #{token_to_str(error_token_id)} (#{error_value.val})") - end - end - - def self.feature(name) - attr_writer "#{name}_enabled" - class_eval <<-EOS - def enable_#{name} - @#{name}_enabled = true - end - def #{name}_enabled? - @#{name}_enabled - end - EOS - end - private_class_method :feature - - # - # Allow blocks in parentheses as expressions, as per the gcc - # extension. [http://rubyurl.com/iB7] - # - feature :block_expressions - - private # --------------------------------------------------------- - - class Token - attr_accessor :pos, :val - def initialize(pos, val) - @pos = pos - @val = val - end - end - def eat(str) - lines = str.split(/\r\n|[\r\n]/, -1) - if lines.length == 1 - @pos.col_num += lines[0].length - else - @pos.line_num += lines.length - 1 - @pos.col_num = lines[-1].length - end - end - - # - # Make a Declaration from the given specs and declarators. - # - def make_declaration(pos, specs, declarators) - specs.all?{|x| x.is_a?(Symbol) || x.is_a?(Type)} or raise specs.map{|x| x.class}.inspect - decl = Declaration.new_at(pos, nil, declarators) - - # set storage class - storage_classes = specs.find_all do |x| - [:typedef, :extern, :static, :auto, :register].include? x - end - # 6.7.1p2: at most, one storage-class specifier may be given in - # the declaration specifiers in a declaration - storage_classes.length <= 1 or - begin - if declarators.length == 0 - for_name = '' - else - for_name = "for `#{declarators[0].name}'" - end - parse_error pos, "multiple or duplicate storage classes given #{for_name}'" - end - decl.storage = storage_classes[0] - - # set type (specifiers, qualifiers) - decl.type = make_direct_type(pos, specs) - - # set function specifiers - decl.inline = specs.include?(:inline) - - # look for new type names - if decl.typedef? - decl.declarators.each do |d| - if d.name - @type_names << d.name - end - end - end - - return decl - end - - def make_function_def(pos, specs, func_declarator, decl_list, defn) - add_decl_type(func_declarator, make_direct_type(pos, specs)) - - # get types from decl_list if necessary - function = func_declarator.indirect_type - function.is_a? Function or - parse_error pos, "non function type for function `#{func_declarator.name}'" - params = function.params - if decl_list - params.all?{|p| p.type.nil?} or - parse_error pos, "both prototype and declaration list given for `#{func_declarator.name}'" - decl_list.each do |declaration| - declaration.declarators.each do |declarator| - param = params.find{|p| p.name == declarator.name} or - parse_error pos, "no parameter named #{declarator.name}" - if declarator.indirect_type - param.type = declarator.indirect_type - param.type.direct_type = declaration.type.dup - else - param.type = declaration.type.dup - end - end - end - params.all?{|p| p.type} or - begin - s = params.find_all{|p| p.type.nil?}.map{|p| "`#{p.name}'"}.join(' and ') - parse_error pos, "types missing for parameters #{s}" - end - end - - fd = FunctionDef.new_at(pos, - function.detach, - func_declarator.name, - defn, - :no_prototype => !decl_list.nil?) - - # set storage class - # 6.9.1p4: only extern or static allowed - specs.each do |s| - [:typedef, :auto, :register].include?(s) and - "`#{s}' illegal for function" - end - storage_classes = specs.find_all do |s| - s == :extern || s == :static - end - # 6.7.1p2: at most, one storage-class specifier may be given in - # the declaration specifiers in a declaration - storage_classes.length <= 1 or - "multiple or duplicate storage classes given for `#{func_declarator.name}'" - fd.storage = storage_classes[0] if storage_classes[0] - - # set function specifiers - # 6.7.4p5 'inline' can be repeated - fd.inline = specs.include?(:inline) - - return fd - end - - # - # Make a direct type from the list of type specifiers and type - # qualifiers. - # - def make_direct_type(pos, specs) - specs_order = [:signed, :unsigned, :short, :long, :double, :void, - :char, :int, :float, :_Bool, :_Complex, :_Imaginary] - - type_specs = specs.find_all do |x| - specs_order.include?(x) || !x.is_a?(Symbol) - end - type_specs.sort! do |a, b| - (specs_order.index(a)||100) <=> (specs_order.index(b)||100) - end - - # set type specifiers - # 6.7.2p2: the specifier list should be one of these - type = - case type_specs - when [:void] - Void.new - when [:char] - Char.new - when [:signed, :char] - Char.new :signed => true - when [:unsigned, :char] - Char.new :signed => false - when [:short], [:signed, :short], [:short, :int], - [:signed, :short, :int] - Int.new :longness => -1 - when [:unsigned, :short], [:unsigned, :short, :int] - Int.new :unsigned => true, :longness => -1 - when [:int], [:signed], [:signed, :int] - Int.new - when [:unsigned], [:unsigned, :int] - Int.new :unsigned => true - when [:long], [:signed, :long], [:long, :int], - [:signed, :long, :int] - Int.new :longness => 1 - when [:unsigned, :long], [:unsigned, :long, :int] - Int.new :longness => 1, :unsigned => true - when [:long, :long], [:signed, :long, :long], - [:long, :long, :int], [:signed, :long, :long, :int] - Int.new :longness => 2 - when [:unsigned, :long, :long], [:unsigned, :long, :long, :int] - Int.new :longness => 2, :unsigned => true - when [:float] - Float.new - when [:double] - Float.new :longness => 1 - when [:long, :double] - Float.new :longness => 2 - when [:_Bool] - Bool.new - when [:float, :_Complex] - Complex.new - when [:double, :_Complex] - Complex.new :longness => 1 - when [:long, :double, :_Complex] - Complex.new :longness => 2 - when [:float, :_Imaginary] - Imaginary.new - when [:double, :_Imaginary] - Imaginary.new :longness => 1 - when [:long, :double, :_Imaginary] - Imaginary.new :longness => 2 - else - if type_specs.length == 1 && - [CustomType, Struct, Union, Enum].any?{|c| type_specs[0].is_a? c} - type_specs[0] - else - if type_specs == [] - parse_error pos, "no type specifiers given" - else - parse_error pos, "invalid type specifier combination: #{type_specs.join(' ')}" - end - end - end - type.pos ||= pos - - # set type qualifiers - # 6.7.3p4: type qualifiers can be repeated - type.const = specs.any?{|x| x.equal? :const } - type.restrict = specs.any?{|x| x.equal? :restrict} - type.volatile = specs.any?{|x| x.equal? :volatile} - - return type - end - - def make_parameter(pos, specs, indirect_type, name) - type = indirect_type - if type - type.direct_type = make_direct_type(pos, specs) - else - type = make_direct_type(pos, specs) - end - [:typedef, :extern, :static, :auto, :inline].each do |sym| - specs.include? sym and - parse_error pos, "parameter `#{declarator.name}' declared `#{sym}'" - end - return Parameter.new_at(pos, type, name, - :register => specs.include?(:register)) - end - - def add_type_quals(type, quals) - type.const = quals.include?(:const ) - type.restrict = quals.include?(:restrict) - type.volatile = quals.include?(:volatile) - return type - end - - # - # Add te given type as the "most direct" type to the given - # declarator. Return the declarator. - # - def add_decl_type(declarator, type) - if declarator.indirect_type - declarator.indirect_type.direct_type = type - else - declarator.indirect_type = type - end - return declarator - end - - def param_list(params, var_args) - if params.length == 1 && - params[0].type.is_a?(Void) && - params[0].name.nil? - return NodeArray[] - elsif params.empty? - return nil - else - return params - end - end - - def parse_error(pos, str) - raise ParseError, "#{pos}: #{str}" - end - ----- header - -require 'set' - -# Error classes -module C - class ParseError < StandardError; end -end - -# Local variables: -# mode: ruby -# end: diff --git a/test/racc/assets/chk.y b/test/racc/assets/chk.y deleted file mode 100644 index 7e0ee20f1e..0000000000 --- a/test/racc/assets/chk.y +++ /dev/null @@ -1,126 +0,0 @@ -# -# racc tester -# - -class Calcp - - prechigh - left '*' '/' - left '+' '-' - preclow - - convert - NUMBER 'Number' - end - -rule - - target : exp | /* none */ { result = 0 } ; - - exp : exp '+' exp { result += val[2]; @plus = 'plus' } - | exp '-' exp { result -= val[2]; @str = "string test" } - | exp '*' exp { result *= val[2] } - | exp '/' exp { result /= val[2] } - | '(' { $emb = true } exp ')' - { - raise 'must not happen' unless $emb - result = val[2] - } - | '-' NUMBER { result = -val[1] } - | NUMBER - ; - -end - -----header - -class Number; end - -----inner - - def parse( src ) - $emb = false - @plus = nil - @str = nil - @src = src - result = do_parse - if @plus - raise 'string parse failed' unless @plus == 'plus' - end - if @str - raise 'string parse failed' unless @str == 'string test' - end - result - end - - def next_token - @src.shift - end - - def initialize - @yydebug = true - end - -----footer - -$parser = Calcp.new -$test_number = 1 - -def chk( src, ans ) - result = $parser.parse(src) - raise "test #{$test_number} fail" unless result == ans - $test_number += 1 -end - -chk( - [ [Number, 9], - [false, false], - [false, false] ], 9 -) - -chk( - [ [Number, 5], - ['*', nil], - [Number, 1], - ['-', nil], - [Number, 1], - ['*', nil], - [Number, 8], - [false, false], - [false, false] ], -3 -) - -chk( - [ [Number, 5], - ['+', nil], - [Number, 2], - ['-', nil], - [Number, 5], - ['+', nil], - [Number, 2], - ['-', nil], - [Number, 5], - [false, false], - [false, false] ], -1 -) - -chk( - [ ['-', nil], - [Number, 4], - [false, false], - [false, false] ], -4 -) - -chk( - [ [Number, 7], - ['*', nil], - ['(', nil], - [Number, 4], - ['+', nil], - [Number, 3], - [')', nil], - ['-', nil], - [Number, 9], - [false, false], - [false, false] ], 40 -) diff --git a/test/racc/assets/conf.y b/test/racc/assets/conf.y deleted file mode 100644 index de9de71d28..0000000000 --- a/test/racc/assets/conf.y +++ /dev/null @@ -1,16 +0,0 @@ - -class A -rule - -a: A c C expr; - -b: A B; # useless - -c: A; -c: A; - -expr: expr '+' expr -expr: expr '-' expr -expr: NUMBER - -end diff --git a/test/racc/assets/csspool.y b/test/racc/assets/csspool.y deleted file mode 100644 index 3d6af25d85..0000000000 --- a/test/racc/assets/csspool.y +++ /dev/null @@ -1,729 +0,0 @@ -class CSSPool::CSS::Parser - -token CHARSET_SYM IMPORT_SYM STRING SEMI IDENT S COMMA LBRACE RBRACE STAR HASH -token LSQUARE RSQUARE EQUAL INCLUDES DASHMATCH LPAREN RPAREN FUNCTION GREATER PLUS -token SLASH NUMBER MINUS LENGTH PERCENTAGE ANGLE TIME FREQ URI -token IMPORTANT_SYM MEDIA_SYM NOT ONLY AND NTH_PSEUDO_CLASS -token DOCUMENT_QUERY_SYM FUNCTION_NO_QUOTE -token TILDE -token PREFIXMATCH SUFFIXMATCH SUBSTRINGMATCH -token NOT_PSEUDO_CLASS -token KEYFRAMES_SYM -token MATCHES_PSEUDO_CLASS -token NAMESPACE_SYM -token MOZ_PSEUDO_ELEMENT -token RESOLUTION -token COLON -token SUPPORTS_SYM -token OR -token VARIABLE_NAME -token CALC_SYM -token FONTFACE_SYM -token UNICODE_RANGE -token RATIO - -rule - document - : { @handler.start_document } - stylesheet - { @handler.end_document } - ; - stylesheet - : charset stylesheet - | import stylesheet - | namespace stylesheet - | charset - | import - | namespace - | body - | - ; - charset - : CHARSET_SYM STRING SEMI { @handler.charset interpret_string(val[1]), {} } - ; - import - : IMPORT_SYM import_location medium SEMI { - @handler.import_style val[2], val[1] - } - | IMPORT_SYM import_location SEMI { - @handler.import_style [], val[1] - } - ; - import_location - : import_location S - | STRING { result = Terms::String.new interpret_string val.first } - | URI { result = Terms::URI.new interpret_uri val.first } - ; - namespace - : NAMESPACE_SYM ident import_location SEMI { - @handler.namespace val[1], val[2] - } - | NAMESPACE_SYM import_location SEMI { - @handler.namespace nil, val[1] - } - ; - medium - : medium COMMA IDENT { - result = val[0] << MediaType.new(val[2]) - } - | IDENT { - result = [MediaType.new(val[0])] - } - ; - media_query_list - : media_query { result = MediaQueryList.new([ val[0] ]) } - | media_query_list COMMA media_query { result = val[0] << val[2] } - | { result = MediaQueryList.new } - ; - media_query - : optional_only_or_not media_type optional_and_exprs { result = MediaQuery.new(val[0], val[1], val[2]) } - | media_expr optional_and_exprs { result = MediaQuery.new(nil, val[0], val[1]) } - ; - optional_only_or_not - : ONLY { result = :only } - | NOT { result = :not } - | { result = nil } - ; - media_type - : IDENT { result = MediaType.new(val[0]) } - ; - media_expr - : LPAREN optional_space IDENT optional_space RPAREN { result = MediaType.new(val[2]) } - | LPAREN optional_space IDENT optional_space COLON optional_space expr RPAREN { result = MediaFeature.new(val[2], val[6][0]) } - ; - optional_space - : S { result = val[0] } - | { result = nil } - ; - optional_and_exprs - : optional_and_exprs AND media_expr { result = val[0] << val[2] } - | { result = [] } - ; - resolution - : RESOLUTION { - unit = val.first.gsub(/[\s\d.]/, '') - number = numeric(val.first) - result = Terms::Resolution.new(number, unit) - } - ; - body - : ruleset body - | conditional_rule body - | keyframes_rule body - | fontface_rule body - | ruleset - | conditional_rule - | keyframes_rule - | fontface_rule - ; - conditional_rule - : media - | document_query - | supports - ; - body_in_media - : body - | empty_ruleset - ; - media - : start_media body_in_media RBRACE { @handler.end_media val.first } - ; - start_media - : MEDIA_SYM media_query_list LBRACE { - result = val[1] - @handler.start_media result - } - ; - document_query - : start_document_query body RBRACE { @handler.end_document_query(before_pos(val), after_pos(val)) } - | start_document_query RBRACE { @handler.end_document_query(before_pos(val), after_pos(val)) } - ; - start_document_query - : start_document_query_pos url_match_fns LBRACE { - @handler.start_document_query(val[1], after_pos(val)) - } - ; - start_document_query_pos - : DOCUMENT_QUERY_SYM { - @handler.node_start_pos = before_pos(val) - } - ; - url_match_fns - : url_match_fn COMMA url_match_fns { - result = [val[0], val[2]].flatten - } - | url_match_fn { - result = val - } - ; - url_match_fn - : function_no_quote - | function - | uri - ; - supports - : start_supports body RBRACE { @handler.end_supports } - | start_supports RBRACE { @handler.end_supports } - ; - start_supports - : SUPPORTS_SYM supports_condition_root LBRACE { - @handler.start_supports val[1] - } - ; - supports_condition_root - : supports_negation { result = val.join('') } - | supports_conjunction_or_disjunction { result = val.join('') } - | supports_condition_in_parens { result = val.join('') } - ; - supports_condition - : supports_negation { result = val.join('') } - | supports_conjunction_or_disjunction { result = val.join('') } - | supports_condition_in_parens { result = val.join('') } - ; - supports_condition_in_parens - : LPAREN supports_condition RPAREN { result = val.join('') } - | supports_declaration_condition { result = val.join('') } - ; - supports_negation - : NOT supports_condition_in_parens { result = val.join('') } - ; - supports_conjunction_or_disjunction - : supports_conjunction - | supports_disjunction - ; - supports_conjunction - : supports_condition_in_parens AND supports_condition_in_parens { result = val.join('') } - | supports_conjunction_or_disjunction AND supports_condition_in_parens { result = val.join('') } - ; - supports_disjunction - : supports_condition_in_parens OR supports_condition_in_parens { result = val.join('') } - | supports_conjunction_or_disjunction OR supports_condition_in_parens { result = val.join('') } - ; - supports_declaration_condition - : LPAREN declaration_internal RPAREN { result = val.join('') } - | LPAREN S declaration_internal RPAREN { result = val.join('') } - ; - keyframes_rule - : start_keyframes_rule keyframes_blocks RBRACE - | start_keyframes_rule RBRACE - ; - start_keyframes_rule - : KEYFRAMES_SYM IDENT LBRACE { - @handler.start_keyframes_rule val[1] - } - ; - keyframes_blocks - : keyframes_block keyframes_blocks - | keyframes_block - ; - keyframes_block - : start_keyframes_block declarations RBRACE { @handler.end_keyframes_block } - | start_keyframes_block RBRACE { @handler.end_keyframes_block } - ; - start_keyframes_block - : keyframes_selectors LBRACE { - @handler.start_keyframes_block val[0] - } - ; - keyframes_selectors - | keyframes_selector COMMA keyframes_selectors { - result = val[0] + ', ' + val[2] - } - | keyframes_selector - ; - keyframes_selector - : IDENT - | PERCENTAGE { result = val[0].strip } - ; - fontface_rule - : start_fontface_rule declarations RBRACE { @handler.end_fontface_rule } - | start_fontface_rule RBRACE { @handler.end_fontface_rule } - ; - start_fontface_rule - : FONTFACE_SYM LBRACE { - @handler.start_fontface_rule - } - ; - ruleset - : start_selector declarations RBRACE { - @handler.end_selector val.first - } - | start_selector RBRACE { - @handler.end_selector val.first - } - ; - empty_ruleset - : optional_space { - start = @handler.start_selector([]) - @handler.end_selector(start) - } - ; - start_selector - : S start_selector { result = val.last } - | selectors LBRACE { - @handler.start_selector val.first - } - ; - selectors - : selector COMMA selectors - { - sel = Selector.new(val.first, {}) - result = [sel].concat(val[2]) - } - | selector - { - result = [Selector.new(val.first, {})] - } - ; - selector - : simple_selector combinator selector - { - val.flatten! - val[2].combinator = val.delete_at 1 - result = val - } - | simple_selector - ; - combinator - : S { result = :s } - | GREATER { result = :> } - | PLUS { result = :+ } - | TILDE { result = :~ } - ; - simple_selector - : element_name hcap { - selector = val.first - selector.additional_selectors = val.last - result = [selector] - } - | element_name { result = val } - | hcap - { - ss = Selectors::Simple.new nil, nil - ss.additional_selectors = val.flatten - result = [ss] - } - ; - simple_selectors - : simple_selector COMMA simple_selectors { result = [val[0], val[2]].flatten } - | simple_selector - ; - ident_with_namespace - : IDENT { result = [interpret_identifier(val[0]), nil] } - | IDENT '|' IDENT { result = [interpret_identifier(val[2]), interpret_identifier(val[0])] } - | '|' IDENT { result = [interpret_identifier(val[1]), nil] } - | STAR '|' IDENT { result = [interpret_identifier(val[2]), '*'] } - ; - element_name - : ident_with_namespace { result = Selectors::Type.new val.first[0], nil, val.first[1] } - | STAR { result = Selectors::Universal.new val.first } - | '|' STAR { result = Selectors::Universal.new val[1] } - | STAR '|' STAR { result = Selectors::Universal.new val[2], nil, val[0] } - | IDENT '|' STAR { result = Selectors::Universal.new val[2], nil, interpret_identifier(val[0]) } - ; - hcap - : hash { result = val } - | class { result = val } - | attrib { result = val } - | pseudo { result = val } - | hash hcap { result = val.flatten } - | class hcap { result = val.flatten } - | attrib hcap { result = val.flatten } - | pseudo hcap { result = val.flatten } - ; - hash - : HASH { - result = Selectors::Id.new interpret_identifier val.first.sub(/^#/, '') - } - class - : '.' IDENT { - result = Selectors::Class.new interpret_identifier val.last - } - ; - attrib - : LSQUARE ident_with_namespace EQUAL IDENT RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::EQUALS, - val[1][1] - ) - } - | LSQUARE ident_with_namespace EQUAL STRING RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::EQUALS, - val[1][1] - ) - } - | LSQUARE ident_with_namespace INCLUDES STRING RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::INCLUDES, - val[1][1] - ) - } - | LSQUARE ident_with_namespace INCLUDES IDENT RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::INCLUDES, - val[1][1] - ) - } - | LSQUARE ident_with_namespace DASHMATCH IDENT RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::DASHMATCH, - val[1][1] - ) - } - | LSQUARE ident_with_namespace DASHMATCH STRING RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::DASHMATCH, - val[1][1] - ) - } - | LSQUARE ident_with_namespace PREFIXMATCH IDENT RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::PREFIXMATCH, - val[1][1] - ) - } - | LSQUARE ident_with_namespace PREFIXMATCH STRING RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::PREFIXMATCH, - val[1][1] - ) - } - | LSQUARE ident_with_namespace SUFFIXMATCH IDENT RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::SUFFIXMATCH, - val[1][1] - ) - } - | LSQUARE ident_with_namespace SUFFIXMATCH STRING RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::SUFFIXMATCH, - val[1][1] - ) - } - | LSQUARE ident_with_namespace SUBSTRINGMATCH IDENT RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::SUBSTRINGMATCH, - val[1][1] - ) - } - | LSQUARE ident_with_namespace SUBSTRINGMATCH STRING RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::SUBSTRINGMATCH, - val[1][1] - ) - } - | LSQUARE ident_with_namespace RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - nil, - Selectors::Attribute::SET, - val[1][1] - ) - } - ; - pseudo - : COLON IDENT { - result = Selectors::pseudo interpret_identifier(val[1]) - } - | COLON COLON IDENT { - result = Selectors::PseudoElement.new( - interpret_identifier(val[2]) - ) - } - | COLON FUNCTION RPAREN { - result = Selectors::PseudoClass.new( - interpret_identifier(val[1].sub(/\($/, '')), - '' - ) - } - | COLON FUNCTION IDENT RPAREN { - result = Selectors::PseudoClass.new( - interpret_identifier(val[1].sub(/\($/, '')), - interpret_identifier(val[2]) - ) - } - | COLON NOT_PSEUDO_CLASS simple_selector RPAREN { - result = Selectors::PseudoClass.new( - 'not', - val[2].first.to_s - ) - } - | COLON NTH_PSEUDO_CLASS { - result = Selectors::PseudoClass.new( - interpret_identifier(val[1].sub(/\(.*/, '')), - interpret_identifier(val[1].sub(/.*\(/, '').sub(/\).*/, '')) - ) - } - | COLON MATCHES_PSEUDO_CLASS simple_selectors RPAREN { - result = Selectors::PseudoClass.new( - val[1].split('(').first.strip, - val[2].join(', ') - ) - } - | COLON MOZ_PSEUDO_ELEMENT optional_space any_number_of_idents optional_space RPAREN { - result = Selectors::PseudoElement.new( - interpret_identifier(val[1].sub(/\($/, '')) - ) - } - | COLON COLON MOZ_PSEUDO_ELEMENT optional_space any_number_of_idents optional_space RPAREN { - result = Selectors::PseudoElement.new( - interpret_identifier(val[2].sub(/\($/, '')) - ) - } - ; - any_number_of_idents - : - | multiple_idents - ; - multiple_idents - : IDENT - | IDENT COMMA multiple_idents - ; - # declarations can be separated by one *or more* semicolons. semi-colons at the start or end of a ruleset are also allowed - one_or_more_semis - : SEMI - | SEMI one_or_more_semis - ; - declarations - : declaration one_or_more_semis declarations - | one_or_more_semis declarations - | declaration one_or_more_semis - | declaration - | one_or_more_semis - ; - declaration - : declaration_internal { @handler.property val.first } - ; - declaration_internal - : property COLON expr prio - { result = Declaration.new(val.first, val[2], val[3]) } - | property COLON S expr prio - { result = Declaration.new(val.first, val[3], val[4]) } - | property S COLON expr prio - { result = Declaration.new(val.first, val[3], val[4]) } - | property S COLON S expr prio - { result = Declaration.new(val.first, val[4], val[5]) } - ; - prio - : IMPORTANT_SYM { result = true } - | { result = false } - ; - property - : IDENT { result = interpret_identifier val[0] } - | STAR IDENT { result = interpret_identifier val.join } - | VARIABLE_NAME { result = interpret_identifier val[0] } - ; - operator - : COMMA - | SLASH - | EQUAL - ; - expr - : term operator expr { - result = [val.first, val.last].flatten - val.last.first.operator = val[1] - } - | term expr { result = val.flatten } - | term { result = val } - ; - term - : ident - | ratio - | numeric - | string - | uri - | hexcolor - | calc - | function - | resolution - | VARIABLE_NAME - | uranges - ; - function - : function S { result = val.first } - | FUNCTION expr RPAREN { - name = interpret_identifier val.first.sub(/\($/, '') - if name == 'rgb' - result = Terms::Rgb.new(*val[1]) - else - result = Terms::Function.new name, val[1] - end - } - | FUNCTION RPAREN { - name = interpret_identifier val.first.sub(/\($/, '') - result = Terms::Function.new name - } - ; - function_no_quote - : function_no_quote S { result = val.first } - | FUNCTION_NO_QUOTE { - parts = val.first.split('(') - name = interpret_identifier parts.first - result = Terms::Function.new(name, [Terms::String.new(interpret_string_no_quote(parts.last))]) - } - ; - uranges - : UNICODE_RANGE COMMA uranges - | UNICODE_RANGE - ; - calc - : CALC_SYM calc_sum RPAREN optional_space { - result = Terms::Math.new(val.first.split('(').first, val[1]) - } - ; - # plus and minus are supposed to have whitespace around them, per http://dev.w3.org/csswg/css-values/#calc-syntax, but the numbers are eating trailing whitespace, so we inject it back in - calc_sum - : calc_product - | calc_product PLUS calc_sum { val.insert(1, ' '); result = val.join('') } - | calc_product MINUS calc_sum { val.insert(1, ' '); result = val.join('') } - ; - calc_product - : calc_value - | calc_value optional_space STAR calc_value { result = val.join('') } - | calc_value optional_space SLASH calc_value { result = val.join('') } - ; - calc_value - : numeric { result = val.join('') } - | function { result = val.join('') } # for var() variable references - | LPAREN calc_sum RPAREN { result = val.join('') } - ; - hexcolor - : hexcolor S { result = val.first } - | HASH { result = Terms::Hash.new val.first.sub(/^#/, '') } - ; - uri - : uri S { result = val.first } - | URI { result = Terms::URI.new interpret_uri val.first } - ; - string - : string S { result = val.first } - | STRING { result = Terms::String.new interpret_string val.first } - ; - numeric - : unary_operator numeric { - result = val[1] - val[1].unary_operator = val.first - } - | NUMBER { - result = Terms::Number.new numeric val.first - } - | PERCENTAGE { - result = Terms::Number.new numeric(val.first), nil, '%' - } - | LENGTH { - unit = val.first.gsub(/[\s\d.]/, '') - result = Terms::Number.new numeric(val.first), nil, unit - } - | ANGLE { - unit = val.first.gsub(/[\s\d.]/, '') - result = Terms::Number.new numeric(val.first), nil, unit - } - | TIME { - unit = val.first.gsub(/[\s\d.]/, '') - result = Terms::Number.new numeric(val.first), nil, unit - } - | FREQ { - unit = val.first.gsub(/[\s\d.]/, '') - result = Terms::Number.new numeric(val.first), nil, unit - } - ; - ratio - : RATIO { - result = Terms::Ratio.new(val[0], val[1]) - } - ; - unary_operator - : MINUS { result = :minus } - | PLUS { result = :plus } - ; - ident - : ident S { result = val.first } - | IDENT { result = Terms::Ident.new interpret_identifier val.first } - ; - ----- inner - -def numeric thing - thing = thing.gsub(/[^\d.]/, '') - Integer(thing) rescue Float(thing) -end - -def interpret_identifier s - interpret_escapes s -end - -def interpret_uri s - interpret_escapes s.match(/^url\((.*)\)$/mui)[1].strip.match(/^(['"]?)((?:\\.|.)*)\1$/mu)[2] -end - -def interpret_string_no_quote s - interpret_escapes s.match(/^(.*)\)$/mu)[1].strip.match(/^(['"]?)((?:\\.|.)*)\1$/mu)[2] -end - -def interpret_string s - interpret_escapes s.match(/^(['"])((?:\\.|.)*)\1$/mu)[2] -end - -def interpret_escapes s - token_exp = /\\(?:([0-9a-fA-F]{1,6}(?:\r\n|\s)?)|(.))/mu - return s.gsub(token_exp) do |escape_sequence| - if !$1.nil? - code = $1.chomp.to_i 16 - code = 0xFFFD if code > 0x10FFFF - next [code].pack('U') - end - next '' if $2 == "\n" - next $2 - end -end - -# override racc's on_error so we can have context in our error messages -def on_error(t, val, vstack) - errcontext = (@ss.pre_match[-10..-1] || @ss.pre_match) + - @ss.matched + @ss.post_match[0..9] - line_number = @ss.pre_match.lines.count - raise ParseError, sprintf("parse error on value %s (%s) " + - "on line %s around \"%s\"", - val.inspect, token_to_str(t) || '?', - line_number, errcontext) -end - -def before_pos(val) - # don't include leading whitespace - return current_pos - val.last.length + val.last[/\A\s*/].size -end - -def after_pos(val) - # don't include trailing whitespace - return current_pos - val.last[/\s*\z/].size -end - -# charpos will work with multibyte strings but is not available until ruby 2 -def current_pos - @ss.respond_to?('charpos') ? @ss.charpos : @ss.pos -end diff --git a/test/racc/assets/digraph.y b/test/racc/assets/digraph.y deleted file mode 100644 index 17a034ee54..0000000000 --- a/test/racc/assets/digraph.y +++ /dev/null @@ -1,29 +0,0 @@ -# ? detect digraph bug - -class P - token A B C D -rule - target : a b c d - a : A - | - b : B - | - c : C - | - d : D - | -end - ----- inner - - def parse - do_parse - end - - def next_token - [false, '$'] - end - ----- footer - -P.new.parse diff --git a/test/racc/assets/echk.y b/test/racc/assets/echk.y deleted file mode 100644 index 0fda2685aa..0000000000 --- a/test/racc/assets/echk.y +++ /dev/null @@ -1,118 +0,0 @@ -# -# racc tester -# - -class Calcp - - prechigh - left '*' '/' - left '+' '-' - preclow - - convert - NUMBER 'Number' - end - -rule - - target : exp | /* none */ { result = 0 } ; - - exp : exp '+' exp { result += val[2]; a = 'plus' } - | exp '-' exp { result -= val[2]; "string test" } - | exp '*' exp { result *= val[2] } - | exp '/' exp { result /= val[2] } - | '(' { $emb = true } exp ')' - { - raise 'must not happen' unless $emb - result = val[2] - } - | '-' NUMBER { result = -val[1] } - | NUMBER - ; - -end - -----header - -class Number ; end - -----inner - - def parse( src ) - @src = src - do_parse - end - - def next_token - @src.shift - end - - def initialize - @yydebug = true - end - -----footer - -$parser = Calcp.new -$tidx = 1 - -def chk( src, ans ) - ret = $parser.parse( src ) - unless ret == ans then - bug! "test #{$tidx} fail" - end - $tidx += 1 -end - -chk( - [ [Number, 9], - [false, false], - [false, false] ], 9 -) - -chk( - [ [Number, 5], - ['*', nil], - [Number, 1], - ['-', nil], - [Number, 1], - ['*', nil], - [Number, 8], - [false, false], - [false, false] ], -3 -) - -chk( - [ [Number, 5], - ['+', nil], - [Number, 2], - ['-', nil], - [Number, 5], - ['+', nil], - [Number, 2], - ['-', nil], - [Number, 5], - [false, false], - [false, false] ], -1 -) - -chk( - [ ['-', nil], - [Number, 4], - [false, false], - [false, false] ], -4 -) - -chk( - [ [Number, 7], - ['*', nil], - ['(', nil], - [Number, 4], - ['+', nil], - [Number, 3], - [')', nil], - ['-', nil], - [Number, 9], - [false, false], - [false, false] ], 40 -) diff --git a/test/racc/assets/edtf.y b/test/racc/assets/edtf.y deleted file mode 100644 index 4f5f6bb4fd..0000000000 --- a/test/racc/assets/edtf.y +++ /dev/null @@ -1,583 +0,0 @@ -# -*- racc -*- - -# Copyright 2011 Sylvester Keil. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -# EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# The views and conclusions contained in the software and documentation are -# those of the authors and should not be interpreted as representing official -# policies, either expressed or implied, of the copyright holder. - -class EDTF::Parser - -token T Z E X U UNKNOWN OPEN LONGYEAR UNMATCHED DOTS UA PUA - -expect 0 - -rule - - edtf : level_0_expression - | level_1_expression - | level_2_expression - ; - - # ---- Level 0 / ISO 8601 Rules ---- - - # NB: level 0 intervals are covered by the level 1 interval rules - level_0_expression : date - | date_time - ; - - date : positive_date - | negative_date - ; - - positive_date : - year { result = Date.new(val[0]).year_precision! } - | year_month { result = Date.new(*val.flatten).month_precision! } - | year_month_day { result = Date.new(*val.flatten).day_precision! } - ; - - negative_date : '-' positive_date { result = -val[1] } - - - date_time : date T time { - result = DateTime.new(val[0].year, val[0].month, val[0].day, *val[2]) - result.skip_timezone = (val[2].length == 3) - } - - time : base_time - | base_time zone_offset { result = val.flatten } - - base_time : hour ':' minute ':' second { result = val.values_at(0, 2, 4) } - | midnight - - midnight : '2' '4' ':' '0' '0' ':' '0' '0' { result = [24, 0, 0] } - - zone_offset : Z { result = 0 } - | '-' zone_offset_hour { result = -1 * val[1] } - | '+' positive_zone_offset { result = val[1] } - ; - - positive_zone_offset : zone_offset_hour - | '0' '0' ':' '0' '0' { result = 0 } - ; - - - zone_offset_hour : d01_13 ':' minute { result = Rational(val[0] * 60 + val[2], 1440) } - | '1' '4' ':' '0' '0' { result = Rational(840, 1440) } - | '0' '0' ':' d01_59 { result = Rational(val[3], 1440) } - ; - - year : digit digit digit digit { - result = val.zip([1000,100,10,1]).reduce(0) { |s,(a,b)| s += a * b } - } - - month : d01_12 - day : d01_31 - - year_month : year '-' month { result = [val[0], val[2]] } - - # We raise an exception if there are two many days for the month, but - # do not consider leap years, as the EDTF BNF did not either. - # NB: an exception will be raised regardless, because the Ruby Date - # implementation calculates leap years. - year_month_day : year_month '-' day { - result = val[0] << val[2] - if result[2] > 31 || (result[2] > 30 && [2,4,6,9,11].include?(result[1])) || (result[2] > 29 && result[1] == 2) - raise ArgumentError, "invalid date (invalid days #{result[2]} for month #{result[1]})" - end - } - - hour : d00_23 - minute : d00_59 - second : d00_59 - - # Completely covered by level_1_interval - # level_0_interval : date '/' date { result = Interval.new(val[0], val[1]) } - - - # ---- Level 1 Extension Rules ---- - - # NB: Uncertain/approximate Dates are covered by the Level 2 rules - level_1_expression : unspecified | level_1_interval | long_year_simple | season - - # uncertain_or_approximate_date : date UA { result = uoa(val[0], val[1]) } - - unspecified : unspecified_year - { - result = Date.new(val[0][0]).year_precision! - result.unspecified.year[2,2] = val[0][1] - } - | unspecified_month - | unspecified_day - | unspecified_day_and_month - ; - - unspecified_year : - digit digit digit U - { - result = [val[0,3].zip([1000,100,10]).reduce(0) { |s,(a,b)| s += a * b }, [false,true]] - } - | digit digit U U - { - result = [val[0,2].zip([1000,100]).reduce(0) { |s,(a,b)| s += a * b }, [true, true]] - } - - unspecified_month : year '-' U U { - result = Date.new(val[0]).unspecified!(:month) - result.precision = :month - } - - unspecified_day : year_month '-' U U { - result = Date.new(*val[0]).unspecified!(:day) - } - - unspecified_day_and_month : year '-' U U '-' U U { - result = Date.new(val[0]).unspecified!([:day,:month]) - } - - - level_1_interval : level_1_start '/' level_1_end { - result = Interval.new(val[0], val[2]) - } - - level_1_start : date | partial_uncertain_or_approximate | unspecified | partial_unspecified | UNKNOWN - - level_1_end : level_1_start | OPEN - - - long_year_simple : - LONGYEAR long_year - { - result = Date.new(val[1]) - result.precision = :year - } - | LONGYEAR '-' long_year - { - result = Date.new(-1 * val[2]) - result.precision = :year - } - ; - - long_year : - positive_digit digit digit digit digit { - result = val.zip([10000,1000,100,10,1]).reduce(0) { |s,(a,b)| s += a * b } - } - | long_year digit { result = 10 * val[0] + val[1] } - ; - - - season : year '-' season_number ua { - result = Season.new(val[0], val[2]) - val[3].each { |ua| result.send(ua) } - } - - season_number : '2' '1' { result = 21 } - | '2' '2' { result = 22 } - | '2' '3' { result = 23 } - | '2' '4' { result = 24 } - ; - - - # ---- Level 2 Extension Rules ---- - - # NB: Level 2 Intervals are covered by the Level 1 Interval rules. - level_2_expression : season_qualified - | partial_uncertain_or_approximate - | partial_unspecified - | choice_list - | inclusive_list - | masked_precision - | date_and_calendar - | long_year_scientific - ; - - - season_qualified : season '^' { result = val[0]; result.qualifier = val[1] } - - - long_year_scientific : - long_year_simple E integer - { - result = Date.new(val[0].year * 10 ** val[2]).year_precision! - } - | LONGYEAR int1_4 E integer - { - result = Date.new(val[1] * 10 ** val[3]).year_precision! - } - | LONGYEAR '-' int1_4 E integer - { - result = Date.new(-1 * val[2] * 10 ** val[4]).year_precision! - } - ; - - - date_and_calendar : date '^' { result = val[0]; result.calendar = val[1] } - - - masked_precision : - digit digit digit X - { - d = val[0,3].zip([1000,100,10]).reduce(0) { |s,(a,b)| s += a * b } - result = EDTF::Decade.new(d) - } - | digit digit X X - { - d = val[0,2].zip([1000,100]).reduce(0) { |s,(a,b)| s += a * b } - result = EDTF::Century.new(d) - } - ; - - - choice_list : '[' list ']' { result = val[1].choice! } - - inclusive_list : '{' list '}' { result = val[1] } - - list : earlier { result = EDTF::Set.new(val[0]).earlier! } - | earlier ',' list_elements ',' later { result = EDTF::Set.new([val[0]] + val[2] + [val[4]]).earlier!.later! } - | earlier ',' list_elements { result = EDTF::Set.new([val[0]] + val[2]).earlier! } - | earlier ',' later { result = EDTF::Set.new([val[0]] + [val[2]]).earlier!.later! } - | list_elements ',' later { result = EDTF::Set.new(val[0] + [val[2]]).later! } - | list_elements { result = EDTF::Set.new(*val[0]) } - | later { result = EDTF::Set.new(val[0]).later! } - ; - - list_elements : list_element { result = [val[0]].flatten } - | list_elements ',' list_element { result = val[0] + [val[2]].flatten } - ; - - list_element : atomic - | consecutives - ; - - atomic : date - | partial_uncertain_or_approximate - | unspecified - ; - - earlier : DOTS date { result = val[1] } - - later : year_month_day DOTS { result = Date.new(*val[0]).year_precision! } - | year_month DOTS { result = Date.new(*val[0]).month_precision! } - | year DOTS { result = Date.new(val[0]).year_precision! } - ; - - consecutives : year_month_day DOTS year_month_day { result = (Date.new(val[0]).day_precision! .. Date.new(val[2]).day_precision!) } - | year_month DOTS year_month { result = (Date.new(val[0]).month_precision! .. Date.new(val[2]).month_precision!) } - | year DOTS year { result = (Date.new(val[0]).year_precision! .. Date.new(val[2]).year_precision!) } - ; - - partial_unspecified : - unspecified_year '-' month '-' day - { - result = Date.new(val[0][0], val[2], val[4]) - result.unspecified.year[2,2] = val[0][1] - } - | unspecified_year '-' U U '-' day - { - result = Date.new(val[0][0], 1, val[5]) - result.unspecified.year[2,2] = val[0][1] - result.unspecified!(:month) - } - | unspecified_year '-' U U '-' U U - { - result = Date.new(val[0][0], 1, 1) - result.unspecified.year[2,2] = val[0][1] - result.unspecified!([:month, :day]) - } - | unspecified_year '-' month '-' U U - { - result = Date.new(val[0][0], val[2], 1) - result.unspecified.year[2,2] = val[0][1] - result.unspecified!(:day) - } - | year '-' U U '-' day - { - result = Date.new(val[0], 1, val[5]) - result.unspecified!(:month) - } - ; - - - partial_uncertain_or_approximate : pua_base - | '(' pua_base ')' UA { result = uoa(val[1], val[3]) } - - pua_base : - pua_year { result = val[0].year_precision! } - | pua_year_month { result = val[0][0].month_precision! } - | pua_year_month_day { result = val[0].day_precision! } - - pua_year : year UA { result = uoa(Date.new(val[0]), val[1], :year) } - - pua_year_month : - pua_year '-' month ua { - result = [uoa(val[0].change(:month => val[2]), val[3], [:month, :year])] - } - | year '-' month UA { - result = [uoa(Date.new(val[0], val[2]), val[3], [:year, :month])] - } - | year '-(' month ')' UA { - result = [uoa(Date.new(val[0], val[2]), val[4], [:month]), true] - } - | pua_year '-(' month ')' UA { - result = [uoa(val[0].change(:month => val[2]), val[4], [:month]), true] - } - ; - - pua_year_month_day : - pua_year_month '-' day ua { - result = uoa(val[0][0].change(:day => val[2]), val[3], val[0][1] ? [:day] : nil) - } - | pua_year_month '-(' day ')' UA { - result = uoa(val[0][0].change(:day => val[2]), val[4], [:day]) - } - | year '-(' month ')' UA day ua { - result = uoa(uoa(Date.new(val[0], val[2], val[5]), val[4], :month), val[6], :day) - } - | year_month '-' day UA { - result = uoa(Date.new(val[0][0], val[0][1], val[2]), val[3]) - } - | year_month '-(' day ')' UA { - result = uoa(Date.new(val[0][0], val[0][1], val[2]), val[4], [:day]) - } - | year '-(' month '-' day ')' UA { - result = uoa(Date.new(val[0], val[2], val[4]), val[6], [:month, :day]) - } - | year '-(' month '-(' day ')' UA ')' UA { - result = Date.new(val[0], val[2], val[4]) - result = uoa(result, val[6], [:day]) - result = uoa(result, val[8], [:month, :day]) - } - | pua_year '-(' month '-' day ')' UA { - result = val[0].change(:month => val[2], :day => val[4]) - result = uoa(result, val[6], [:month, :day]) - } - | pua_year '-(' month '-(' day ')' UA ')' UA { - result = val[0].change(:month => val[2], :day => val[4]) - result = uoa(result, val[6], [:day]) - result = uoa(result, val[8], [:month, :day]) - } - # | '(' pua_year '-(' month ')' UA ')' UA '-' day ua { - # result = val[1].change(:month => val[3], :day => val[9]) - # result = uoa(result, val[5], [:month]) - # result = [uoa(result, val[7], [:year]), true] - # } - ; - - ua : { result = [] } | UA - - # ---- Auxiliary Rules ---- - - digit : '0' { result = 0 } - | positive_digit - ; - - positive_digit : '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' - - d01_12 : '0' positive_digit { result = val[1] } - | '1' '0' { result = 10 } - | '1' '1' { result = 11 } - | '1' '2' { result = 12 } - ; - - d01_13 : d01_12 - | '1' '3' { result = 13 } - ; - - d01_23 : '0' positive_digit { result = val[1] } - | '1' digit { result = 10 + val[1] } - | '2' '0' { result = 20 } - | '2' '1' { result = 21 } - | '2' '2' { result = 22 } - | '2' '3' { result = 23 } - ; - - d00_23 : '0' '0' - | d01_23 - ; - - d01_29 : d01_23 - | '2' '4' { result = 24 } - | '2' '5' { result = 25 } - | '2' '6' { result = 26 } - | '2' '7' { result = 27 } - | '2' '8' { result = 28 } - | '2' '9' { result = 29 } - ; - - d01_30 : d01_29 - | '3' '0' { result = 30 } - ; - - d01_31 : d01_30 - | '3' '1' { result = 31 } - ; - - d01_59 : d01_29 - | '3' digit { result = 30 + val[1] } - | '4' digit { result = 40 + val[1] } - | '5' digit { result = 50 + val[1] } - ; - - d00_59 : '0' '0' - | d01_59 - ; - - int1_4 : positive_digit { result = val[0] } - | positive_digit digit { result = 10 * val[0] + val[1] } - | positive_digit digit digit - { - result = val.zip([100,10,1]).reduce(0) { |s,(a,b)| s += a * b } - } - | positive_digit digit digit digit - { - result = val.zip([1000,100,10,1]).reduce(0) { |s,(a,b)| s += a * b } - } - ; - - integer : positive_digit { result = val[0] } - | integer digit { result = 10 * val[0] + val[1] } - ; - - - ----- header -require 'strscan' - ----- inner - - @defaults = { - :level => 2, - :debug => false - }.freeze - - class << self; attr_reader :defaults; end - - attr_reader :options - - def initialize(options = {}) - @options = Parser.defaults.merge(options) - end - - def debug? - !!(options[:debug] || ENV['DEBUG']) - end - - def parse(input) - parse!(input) - rescue => e - warn e.message if debug? - nil - end - - def parse!(input) - @yydebug = debug? - @src = StringScanner.new(input) - do_parse - end - - def on_error(tid, value, stack) - raise ArgumentError, - "failed to parse date: unexpected '#{value}' at #{stack.inspect}" - end - - def apply_uncertainty(date, uncertainty, scope = nil) - uncertainty.each do |u| - scope.nil? ? date.send(u) : date.send(u, scope) - end - date - end - - alias uoa apply_uncertainty - - def next_token - case - when @src.eos? - nil - # when @src.scan(/\s+/) - # ignore whitespace - when @src.scan(/\(/) - ['(', @src.matched] - # when @src.scan(/\)\?~-/) - # [:PUA, [:uncertain!, :approximate!]] - # when @src.scan(/\)\?-/) - # [:PUA, [:uncertain!]] - # when @src.scan(/\)~-/) - # [:PUA, [:approximate!]] - when @src.scan(/\)/) - [')', @src.matched] - when @src.scan(/\[/) - ['[', @src.matched] - when @src.scan(/\]/) - [']', @src.matched] - when @src.scan(/\{/) - ['{', @src.matched] - when @src.scan(/\}/) - ['}', @src.matched] - when @src.scan(/T/) - [:T, @src.matched] - when @src.scan(/Z/) - [:Z, @src.matched] - when @src.scan(/\?~/) - [:UA, [:uncertain!, :approximate!]] - when @src.scan(/\?/) - [:UA, [:uncertain!]] - when @src.scan(/~/) - [:UA, [:approximate!]] - when @src.scan(/open/i) - [:OPEN, :open] - when @src.scan(/unkn?own/i) # matches 'unkown' typo too - [:UNKNOWN, :unknown] - when @src.scan(/u/) - [:U, @src.matched] - when @src.scan(/x/i) - [:X, @src.matched] - when @src.scan(/y/) - [:LONGYEAR, @src.matched] - when @src.scan(/e/) - [:E, @src.matched] - when @src.scan(/\+/) - ['+', @src.matched] - when @src.scan(/-\(/) - ['-(', @src.matched] - when @src.scan(/-/) - ['-', @src.matched] - when @src.scan(/:/) - [':', @src.matched] - when @src.scan(/\//) - ['/', @src.matched] - when @src.scan(/\s*\.\.\s*/) - [:DOTS, '..'] - when @src.scan(/\s*,\s*/) - [',', ','] - when @src.scan(/\^\w+/) - ['^', @src.matched[1..-1]] - when @src.scan(/\d/) - [@src.matched, @src.matched.to_i] - else @src.scan(/./) - [:UNMATCHED, @src.rest] - end - end - - -# -*- racc -*- diff --git a/test/racc/assets/err.y b/test/racc/assets/err.y deleted file mode 100644 index ae280957cc..0000000000 --- a/test/racc/assets/err.y +++ /dev/null @@ -1,60 +0,0 @@ - -class ErrTestp - -rule - -target: lines - ; - -lines: line - | lines line - ; - -line: A B C D E - | error E - ; - -end - ----- inner - -def initialize - @yydebug = false - @q = [ - [:A, 'a'], - # [:B, 'b'], - [:C, 'c'], - [:D, 'd'], - [:E, 'e'], - - [:A, 'a'], - [:B, 'b'], - [:C, 'c'], - [:D, 'd'], - [:E, 'e'], - - [:A, 'a'], - [:B, 'b'], - # [:C, 'c'], - [:D, 'd'], - [:E, 'e'], - [false, nil] - ] -end - -def next_token - @q.shift -end - -def on_error( t, val, values ) - $stderr.puts "error on token '#{val}'(#{t})" -end - -def parse - do_parse -end - ----- footer - -p = ErrTestp.new -p.parse diff --git a/test/racc/assets/error_recovery.y b/test/racc/assets/error_recovery.y deleted file mode 100644 index 1fd21ac7d0..0000000000 --- a/test/racc/assets/error_recovery.y +++ /dev/null @@ -1,35 +0,0 @@ -# Regression test case for the bug discussed here: -# https://github.com/whitequark/parser/issues/93 -# In short, a Racc-generated parser could go into an infinite loop when -# attempting error recovery at EOF - -class InfiniteLoop - -rule - - stmts: stmt - | error stmt - - stmt: '%' stmt - -end - ----- inner - - def parse - @errors = [] - do_parse - end - - def next_token - nil - end - - def on_error(error_token, error_value, value_stack) - # oh my, an error - @errors << [error_token, error_value] - end - ----- footer - -InfiniteLoop.new.parse
\ No newline at end of file diff --git a/test/racc/assets/expect.y b/test/racc/assets/expect.y deleted file mode 100644 index 24c27443e2..0000000000 --- a/test/racc/assets/expect.y +++ /dev/null @@ -1,7 +0,0 @@ -class E - expect 1 -rule - list: inlist inlist - inlist: - | A -end diff --git a/test/racc/assets/firstline.y b/test/racc/assets/firstline.y deleted file mode 100644 index ab0692e543..0000000000 --- a/test/racc/assets/firstline.y +++ /dev/null @@ -1,4 +0,0 @@ -class T -rule - a: A B C -end diff --git a/test/racc/assets/huia.y b/test/racc/assets/huia.y deleted file mode 100644 index de9d45150c..0000000000 --- a/test/racc/assets/huia.y +++ /dev/null @@ -1,318 +0,0 @@ -# Copyright (c) 2014 James Harton -# -# MIT License -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class Huia::Parser - - token - IDENTIFIER EQUAL PLUS MINUS ASTERISK FWD_SLASH COLON FLOAT INTEGER STRING - EXPO INDENT OUTDENT OPAREN CPAREN DOT SIGNATURE NL EOF PIPE COMMA NIL TRUE - FALSE EQUALITY CALL SELF CONSTANT CHAR DOUBLE_TICK_STRING - DOUBLE_TICK_STRING_END INTERPOLATE_START INTERPOLATE_END BOX LSQUARE - RSQUARE FACES LFACE RFACE BANG TILDE RETURN NOT_EQUALITY OR AND GT LT - GTE LTE AT - - prechigh - left EXPO - left BANG TILDE - left ASTERISK FWD_SLASH PERCENT - left PLUS MINUS - - right EQUAL - preclow - - rule - statements: statement - | statements statement { return scope } - - statement: expr eol { return scope.append val[0] } - | expr { return scope.append val[0] } - | eol { return scope } - - eol: NL | EOF - nlq: NL | - - expr: literal - | grouped_expr - | binary_op - | unary_op - | method_call - | constant - | variable - | array - | hash - | return - - return: return_expr - | return_nil - return_expr: RETURN expr { return n(:Return, val[1]) } - return_nil: RETURN { return n(:Return, n(:Nil)) } - - array: empty_array - | array_list - - empty_array: BOX { return n :Array } - - array_list: LSQUARE array_items RSQUARE { return val[1] } - array_items: expr { return n :Array, [val[0]] } - | array_items COMMA expr { val[0].append(val[2]); return val[0] } - - hash: empty_hash - | hash_list - empty_hash: FACES { return n :Hash } - hash_list: LFACE hash_items RFACE { return val[1] } - hash_items: hash_item { return n :Hash, val[0] } - | hash_items COMMA hash_item { val[0].append(val[2]); return val[0] } - hash_item: expr COLON expr { return n :HashItem, val[0], val[2] } - - constant: CONSTANT { return constant val[0] } - - indented: indented_w_stmts - | indented_w_expr - | indented_wo_stmts - indented_w_stmts: indent statements outdent { return val[0] } - indented_w_expr: indent expr outdent { return val[0].append(val[1]) } - indented_wo_stmts: indent outdent { return val[0] } - outdent: OUTDENT { return pop_scope } - - - indent_w_args: indent_pipe indent_args PIPE nlq INDENT { return val[0] } - indent_pipe: PIPE { return push_scope } - indent_wo_args: INDENT { return push_scope } - indent: indent_w_args - | indent_wo_args - - indent_args: indent_arg - | indent_args COMMA indent_arg - indent_arg: arg_var { return scope.add_argument val[0] } - | arg_var EQUAL expr { return n :Assignment, val[0], val[2] } - arg_var: IDENTIFIER { return n :Variable, val[0] } - - method_call: method_call_on_object - | method_call_on_self - | method_call_on_closure - method_call_on_object: expr DOT call_signature { return n :MethodCall, val[0], val[2] } - | expr DOT IDENTIFIER { return n :MethodCall, val[0], n(:CallSignature, val[2]) } - method_call_on_self: call_signature { return n :MethodCall, scope_instance, val[0] } - - method_call_on_closure: AT call_signature { return n :MethodCall, this_closure, val[1] } - | AT IDENTIFIER { return n :MethodCall, this_closure, n(:CallSignature, val[1]) } - - call_signature: call_arguments - | call_simple_name - call_simple_name: CALL { return n :CallSignature, val[0] } - call_argument: SIGNATURE call_passed_arg { return n :CallSignature, val[0], [val[1]] } - call_passed_arg: call_passed_simple - | call_passed_indented - call_passed_simple: expr - | expr NL - call_passed_indented: indented - | indented NL - call_arguments: call_argument { return val[0] } - | call_arguments call_argument { return val[0].concat_signature val[1] } - - grouped_expr: OPAREN expr CPAREN { return n :Expression, val[1] } - - variable: IDENTIFIER { return allocate_local val[0] } - - binary_op: assignment - | addition - | subtraction - | multiplication - | division - | exponentiation - | modulo - | equality - | not_equality - | logical_or - | logical_and - | greater_than - | less_than - | greater_or_eq - | less_or_eq - - assignment: IDENTIFIER EQUAL expr { return allocate_local_assignment val[0], val[2] } - addition: expr PLUS expr { return binary val[0], val[2], 'plus:' } - subtraction: expr MINUS expr { return binary val[0], val[2], 'minus:' } - multiplication: expr ASTERISK expr { return binary val[0], val[2], 'multiplyBy:' } - division: expr FWD_SLASH expr { return binary val[0], val[2], 'divideBy:' } - exponentiation: expr EXPO expr { return binary val[0], val[2], 'toThePowerOf:' } - modulo: expr PERCENT expr { return binary val[0], val[2], 'moduloOf:' } - equality: expr EQUALITY expr { return binary val[0], val[2], 'isEqualTo:' } - not_equality: expr NOT_EQUALITY expr { return binary val[0], val[2], 'isNotEqualTo:' } - logical_or: expr OR expr { return binary val[0], val[2], 'logicalOr:' } - logical_and: expr AND expr { return binary val[0], val[2], 'logicalAnd:' } - greater_than: expr GT expr { return binary val[0], val[2], 'isGreaterThan:' } - less_than: expr LT expr { return binary val[0], val[2], 'isLessThan:' } - greater_or_eq: expr GTE expr { return binary val[0], val[2], 'isGreaterOrEqualTo:' } - less_or_eq: expr LTE expr { return binary val[0], val[2], 'isLessOrEqualTo:' } - - unary_op: unary_not - | unary_plus - | unary_minus - | unary_complement - - unary_not: BANG expr { return unary val[1], 'unaryNot' } - unary_plus: PLUS expr { return unary val[1], 'unaryPlus' } - unary_minus: MINUS expr { return unary val[1], 'unaryMinus' } - unary_complement: TILDE expr { return unary val[1], 'unaryComplement' } - - literal: integer - | float - | string - | nil - | true - | false - | self - - float: FLOAT { return n :Float, val[0] } - integer: INTEGER { return n :Integer, val[0] } - nil: NIL { return n :Nil } - true: TRUE { return n :True } - false: FALSE { return n :False } - self: SELF { return n :Self } - - string: STRING { return n :String, val[0] } - | interpolated_string - | empty_string - - interpolated_string: DOUBLE_TICK_STRING interpolated_string_contents DOUBLE_TICK_STRING_END { return val[1] } - interpolation: INTERPOLATE_START expr INTERPOLATE_END { return val[1] } - interpolated_string_contents: interpolated_string_chunk { return n :InterpolatedString, val[0] } - | interpolated_string_contents interpolated_string_chunk { val[0].append(val[1]); return val[0] } - interpolated_string_chunk: chars { return val[0] } - | interpolation { return to_string(val[0]) } - empty_string: DOUBLE_TICK_STRING DOUBLE_TICK_STRING_END { return n :String, '' } - - chars: CHAR { return n :String, val[0] } - | chars CHAR { val[0].append(val[1]); return val[0] } -end - ----- inner - -attr_accessor :lexer, :scopes, :state - -def initialize lexer - @lexer = lexer - @state = [] - @scopes = [] - push_scope -end - -def ast - @ast ||= do_parse - @scopes.first -end - -def on_error t, val, vstack - line = lexer.line - col = lexer.column - message = "Unexpected #{token_to_str t} at #{lexer.filename} line #{line}:#{col}:\n\n" - - start = line - 5 > 0 ? line - 5 : 0 - i_size = line.to_s.size - (start..(start + 5)).each do |i| - message << sprintf("\t%#{i_size}d: %s\n", i, lexer.get_line(i)) - message << "\t#{' ' * i_size} #{'-' * (col - 1)}^\n" if i == line - end - - raise SyntaxError, message -end - -def next_token - nt = lexer.next_computed_token - # just use a state stack for now, we'll have to do something - # more sophisticated soon. - if nt && nt.first == :state - if nt.last - state.push << nt.last - else - state.pop - end - next_token - else - nt - end -end - -def push_scope - new_scope = Huia::AST::Scope.new scope - new_scope.file = lexer.filename - new_scope.line = lexer.line - new_scope.column = lexer.column - scopes.push new_scope - new_scope -end - -def pop_scope - scopes.pop -end - -def scope - scopes.last -end - -def binary left, right, method - node(:MethodCall, left, node(:CallSignature, method, [right])) -end - -def unary left, method - node(:MethodCall, left, node(:CallSignature, method)) -end - -def node type, *args - Huia::AST.const_get(type).new(*args).tap do |n| - n.file = lexer.filename - n.line = lexer.line - n.column = lexer.column - end -end -alias n node - -def allocate_local name - node(:Variable, name).tap do |n| - scope.allocate_local n - end -end - -def allocate_local_assignment name, value - node(:Assignment, name, value).tap do |n| - scope.allocate_local n - end -end - -def this_closure - allocate_local('@') -end - -def scope_instance - node(:ScopeInstance, scope) -end - -def constant name - return scope_instance if name == 'self' - node(:Constant, name) -end - -def to_string expr - node(:MethodCall, expr, node(:CallSignature, 'toString')) -end diff --git a/test/racc/assets/ichk.y b/test/racc/assets/ichk.y deleted file mode 100644 index 1d359df83e..0000000000 --- a/test/racc/assets/ichk.y +++ /dev/null @@ -1,102 +0,0 @@ -class Calculator - - prechigh - left '*' '/' - left '+' '-' - preclow - - convert - NUMBER 'Number' - end - -rule - - target : exp - | /* none */ { result = 0 } - - exp : exp '+' exp { result += val[2]; a = 'plus' } - | exp '-' exp { result -= val[2]; a = "string test" } - | exp '*' exp { result *= val[2] } - | exp '/' exp { result /= val[2] } - | '(' { $emb = true } exp ')' - { - raise 'must not happen' unless $emb - result = val[2] - } - | '-' NUMBER { result = -val[1] } - | NUMBER - -----header - -class Number -end - -----inner - - def initialize - @racc_debug_out = $stdout - @yydebug = false - end - - def validate(expected, src) - result = parse(src) - unless result == expected - raise "test #{@test_number} fail" - end - @test_number += 1 - end - - def parse(src) - @src = src - @test_number = 1 - yyparse self, :scan - end - - def scan(&block) - @src.each(&block) - end - -----footer - -calc = Calculator.new - -calc.validate(9, [[Number, 9], nil]) - -calc.validate(-3, - [[Number, 5], - ['*', '*'], - [Number, 1], - ['-', '*'], - [Number, 1], - ['*', '*'], - [Number, 8], - nil]) - -calc.validate(-1, - [[Number, 5], - ['+', '+'], - [Number, 2], - ['-', '-'], - [Number, 5], - ['+', '+'], - [Number, 2], - ['-', '-'], - [Number, 5], - nil]) - -calc.validate(-4, - [['-', 'UMINUS'], - [Number, 4], - nil]) - -calc.validate(40, - [[Number, 7], - ['*', '*'], - ['(', '('], - [Number, 4], - ['+', '+'], - [Number, 3], - [')', ')'], - ['-', '-'], - [Number, 9], - nil]) diff --git a/test/racc/assets/ifelse.y b/test/racc/assets/ifelse.y deleted file mode 100644 index 18dbe4b1a7..0000000000 --- a/test/racc/assets/ifelse.y +++ /dev/null @@ -1,14 +0,0 @@ -class C::Parser -token tSOMETHING -rule - statement - : tSOMETHING - | 'if' statement 'then' statement - | 'if' statement 'then' statement 'else' statement - ; - - dummy - : tSOMETHING '+' tSOMETHING - | tSOMETHING '-' tSOMETHING - ; - diff --git a/test/racc/assets/intp.y b/test/racc/assets/intp.y deleted file mode 100644 index 39e42afd74..0000000000 --- a/test/racc/assets/intp.y +++ /dev/null @@ -1,546 +0,0 @@ -# -# intp -# - -class Intp::Parser - -prechigh - nonassoc UMINUS - left '*' '/' - left '+' '-' - nonassoc EQ -preclow - -rule - - program : stmt_list - { - result = RootNode.new( val[0] ) - } - - stmt_list : - { - result = [] - } - | stmt_list stmt EOL - { - result.push val[1] - } - | stmt_list EOL - - stmt : expr - | assign - | IDENT realprim - { - result = FuncallNode.new( @fname, val[0][0], - val[0][1], [val[1]] ) - } - | if_stmt - | while_stmt - | defun - - if_stmt : IF stmt THEN EOL stmt_list else_stmt END - { - result = IfNode.new( @fname, val[0][0], - val[1], val[4], val[5] ) - } - - else_stmt : ELSE EOL stmt_list - { - result = val[2] - } - | - { - result = nil - } - - while_stmt: WHILE stmt DO EOL stmt_list END - { - result = WhileNode.new(@fname, val[0][0], - val[1], val[4]) - } - - defun : DEF IDENT param EOL stmt_list END - { - result = DefNode.new(@fname, val[0][0], val[1][1], - Function.new(@fname, val[0][0], val[2], val[4])) - } - - param : '(' name_list ')' - { - result = val[1] - } - | '(' ')' - { - result = [] - } - | - { - result = [] - } - - name_list : IDENT - { - result = [ val[0][1] ] - } - | name_list ',' IDENT - { - result.push val[2][1] - } - - assign : IDENT '=' expr - { - result = AssignNode.new(@fname, val[0][0], val[0][1], val[2]) - } - - expr : expr '+' expr - { - result = FuncallNode.new(@fname, val[0].lineno, '+', [val[0], val[2]]) - } - | expr '-' expr - { - result = FuncallNode.new(@fname, val[0].lineno, '-', [val[0], val[2]]) - } - | expr '*' expr - { - result = FuncallNode.new(@fname, val[0].lineno, '*', [val[0], val[2]]) - } - | expr '/' expr - { - result = FuncallNode.new(@fname, val[0].lineno, - '/', [val[0], val[2]]) - } - | expr EQ expr - { - result = FuncallNode.new(@fname, val[0].lineno, '==', [val[0], val[2]]) - } - | primary - - primary : realprim - | '(' expr ')' - { - result = val[1] - } - | '-' expr =UMINUS - { - result = FuncallNode.new(@fname, val[0][0], '-@', [val[1]]) - } - - realprim : IDENT - { - result = VarRefNode.new(@fname, val[0][0], - val[0][1]) - } - | NUMBER - { - result = LiteralNode.new(@fname, *val[0]) - } - | STRING - { - result = StringNode.new(@fname, *val[0]) - } - | TRUE - { - result = LiteralNode.new(@fname, *val[0]) - } - | FALSE - { - result = LiteralNode.new(@fname, *val[0]) - } - | NIL - { - result = LiteralNode.new(@fname, *val[0]) - } - | funcall - - funcall : IDENT '(' args ')' - { - result = FuncallNode.new(@fname, val[0][0], val[0][1], val[2]) - } - | IDENT '(' ')' - { - result = FuncallNode.new(@fname, val[0][0], val[0][1], []) - } - - args : expr - { - result = val - } - | args ',' expr - { - result.push val[2] - } - -end - ----- header -# -# intp/parser.rb -# - ----- inner - - def initialize - @scope = {} - end - - RESERVED = { - 'if' => :IF, - 'else' => :ELSE, - 'while' => :WHILE, - 'then' => :THEN, - 'do' => :DO, - 'def' => :DEF, - 'true' => :TRUE, - 'false' => :FALSE, - 'nil' => :NIL, - 'end' => :END - } - - RESERVED_V = { - 'true' => true, - 'false' => false, - 'nil' => nil - } - - def parse(f, fname) - @q = [] - @fname = fname - lineno = 1 - f.each do |line| - line.strip! - until line.empty? - case line - when /\A\s+/, /\A\#.*/ - ; - when /\A[a-zA-Z_]\w*/ - word = $& - @q.push [(RESERVED[word] || :IDENT), - [lineno, RESERVED_V.key?(word) ? RESERVED_V[word] : word.intern]] - when /\A\d+/ - @q.push [:NUMBER, [lineno, $&.to_i]] - when /\A"(?:[^"\\]+|\\.)*"/, /\A'(?:[^'\\]+|\\.)*'/ - @q.push [:STRING, [lineno, eval($&)]] - when /\A==/ - @q.push [:EQ, [lineno, '==']] - when /\A./ - @q.push [$&, [lineno, $&]] - else - raise RuntimeError, 'must not happen' - end - line = $' - end - @q.push [:EOL, [lineno, nil]] - lineno += 1 - end - @q.push [false, '$'] - do_parse - end - - def next_token - @q.shift - end - - def on_error(t, v, values) - if v - line = v[0] - v = v[1] - else - line = 'last' - end - raise Racc::ParseError, "#{@fname}:#{line}: syntax error on #{v.inspect}" - end - ----- footer -# intp/node.rb - -module Intp - - class IntpError < StandardError; end - class IntpArgumentError < IntpError; end - - class Core - - def initialize - @ftab = {} - @obj = Object.new - @stack = [] - @stack.push Frame.new '(toplevel)' - end - - def frame - @stack[-1] - end - - def define_function(fname, node) - raise IntpError, "function #{fname} defined twice" if @ftab.key?(fname) - @ftab[fname] = node - end - - def call_function_or(fname, args) - call_intp_function_or(fname, args) { - call_ruby_toplevel_or(fname, args) { - yield - } - } - end - - def call_intp_function_or(fname, args) - if func = @ftab[fname] - frame = Frame.new(fname) - @stack.push frame - func.call self, frame, args - @stack.pop - else - yield - end - end - - def call_ruby_toplevel_or(fname, args) - if @obj.respond_to? fname, true - @obj.send fname, *args - else - yield - end - end - - end - - class Frame - - def initialize(fname) - @fname = fname - @lvars = {} - end - - attr :fname - - def lvar?(name) - @lvars.key? name - end - - def [](key) - @lvars[key] - end - - def []=(key, val) - @lvars[key] = val - end - - end - - - class Node - - def initialize(fname, lineno) - @filename = fname - @lineno = lineno - end - - attr_reader :filename - attr_reader :lineno - - def exec_list(intp, nodes) - v = nil - nodes.each {|i| v = i.evaluate(intp) } - v - end - - def intp_error!(msg) - raise IntpError, "in #{filename}:#{lineno}: #{msg}" - end - - def inspect - "#{self.class.name}/#{lineno}" - end - - end - - - class RootNode < Node - - def initialize(tree) - super nil, nil - @tree = tree - end - - def evaluate - exec_list Core.new, @tree - end - - end - - - class DefNode < Node - - def initialize(file, lineno, fname, func) - super file, lineno - @funcname = fname - @funcobj = func - end - - def evaluate(intp) - intp.define_function @funcname, @funcobj - end - - end - - class FuncallNode < Node - - def initialize(file, lineno, func, args) - super file, lineno - @funcname = func - @args = args - end - - def evaluate(intp) - args = @args.map {|i| i.evaluate intp } - begin - intp.call_intp_function_or(@funcname, args) { - if args.empty? or not args[0].respond_to?(@funcname) - intp.call_ruby_toplevel_or(@funcname, args) { - intp_error! "undefined function #{@funcname.id2name}" - } - else - recv = args.shift - recv.send @funcname, *args - end - } - rescue IntpArgumentError, ArgumentError - intp_error! $!.message - end - end - - end - - class Function < Node - - def initialize(file, lineno, params, body) - super file, lineno - @params = params - @body = body - end - - def call(intp, frame, args) - unless args.size == @params.size - raise IntpArgumentError, - "wrong # of arg for #{frame.fname}() (#{args.size} for #{@params.size})" - end - args.each_with_index do |v,i| - frame[@params[i]] = v - end - exec_list intp, @body - end - - end - - - class IfNode < Node - - def initialize(fname, lineno, cond, tstmt, fstmt) - super fname, lineno - @condition = cond - @tstmt = tstmt - @fstmt = fstmt - end - - def evaluate(intp) - if @condition.evaluate(intp) - exec_list intp, @tstmt - else - exec_list intp, @fstmt if @fstmt - end - end - - end - - class WhileNode < Node - - def initialize(fname, lineno, cond, body) - super fname, lineno - @condition = cond - @body = body - end - - def evaluate(intp) - while @condition.evaluate(intp) - exec_list intp, @body - end - end - - end - - - class AssignNode < Node - - def initialize(fname, lineno, vname, val) - super fname, lineno - @vname = vname - @val = val - end - - def evaluate(intp) - intp.frame[@vname] = @val.evaluate(intp) - end - - end - - class VarRefNode < Node - - def initialize(fname, lineno, vname) - super fname, lineno - @vname = vname - end - - def evaluate(intp) - if intp.frame.lvar?(@vname) - intp.frame[@vname] - else - intp.call_function_or(@vname, []) { - intp_error! "unknown method or local variable #{@vname.id2name}" - } - end - end - - end - - class StringNode < Node - - def initialize(fname, lineno, str) - super fname, lineno - @val = str - end - - def evaluate(intp) - @val.dup - end - - end - - class LiteralNode < Node - - def initialize(fname, lineno, val) - super fname, lineno - @val = val - end - - def evaluate(intp) - @val - end - - end - -end # module Intp - -begin - tree = nil - fname = 'src.intp' - File.open(fname) {|f| - tree = Intp::Parser.new.parse(f, fname) - } - tree.evaluate -rescue Racc::ParseError, Intp::IntpError, Errno::ENOENT - raise #### - $stderr.puts "#{File.basename $0}: #{$!}" - exit 1 -end diff --git a/test/racc/assets/journey.y b/test/racc/assets/journey.y deleted file mode 100644 index c2640f3339..0000000000 --- a/test/racc/assets/journey.y +++ /dev/null @@ -1,47 +0,0 @@ -class Journey::Parser - -token SLASH LITERAL SYMBOL LPAREN RPAREN DOT STAR OR - -rule - expressions - : expressions expression { result = Cat.new(val.first, val.last) } - | expression { result = val.first } - | or - ; - expression - : terminal - | group - | star - ; - group - : LPAREN expressions RPAREN { result = Group.new(val[1]) } - ; - or - : expressions OR expression { result = Or.new([val.first, val.last]) } - ; - star - : STAR { result = Star.new(Symbol.new(val.last)) } - ; - terminal - : symbol - | literal - | slash - | dot - ; - slash - : SLASH { result = Slash.new('/') } - ; - symbol - : SYMBOL { result = Symbol.new(val.first) } - ; - literal - : LITERAL { result = Literal.new(val.first) } - dot - : DOT { result = Dot.new(val.first) } - ; - -end - ----- header - -require 'journey/parser_extras' diff --git a/test/racc/assets/liquor.y b/test/racc/assets/liquor.y deleted file mode 100644 index 8045a072a4..0000000000 --- a/test/racc/assets/liquor.y +++ /dev/null @@ -1,313 +0,0 @@ -# Copyright (c) 2012-2013 Peter Zotov <whitequark@whitequark.org> -# 2012 Yaroslav Markin <yaroslav@markin.net> -# 2012 Nate Gadgibalaev <nat@xnsv.ru> -# -# MIT License -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class Liquor::Parser - token comma dot endtag ident integer keyword lblock lblock2 lbracket - linterp lparen op_div op_eq op_gt op_geq op_lt op_leq op_minus - op_mod op_mul op_neq op_not op_plus pipe plaintext rblock - rbracket rinterp rparen string tag_ident - - prechigh - left dot - nonassoc op_uminus op_not - left op_mul op_div op_mod - left op_plus op_minus - left op_eq op_neq op_lt op_leq op_gt op_geq - left op_and - left op_or - preclow - - expect 15 - - start block - -rule - block: /* empty */ - { result = [] } - | plaintext block - { result = [ val[0], *val[1] ] } - | interp block - { result = [ val[0], *val[1] ] } - | tag block - { result = [ val[0], *val[1] ] } - - interp: - linterp expr rinterp - { result = [ :interp, retag(val), val[1] ] } - | linterp filter_chain rinterp - { result = [ :interp, retag(val), val[1] ] } - - primary_expr: - ident - | lparen expr rparen - { result = [ val[1][0], retag(val), *val[1][2..-1] ] } - - expr: - integer - | string - | tuple - | ident function_args - { result = [ :call, retag(val), val[0], val[1] ] } - | expr lbracket expr rbracket - { result = [ :index, retag(val), val[0], val[2] ] } - | expr dot ident function_args - { result = [ :external, retag(val), val[0], val[2], val[3] ] } - | expr dot ident - { result = [ :external, retag(val), val[0], val[2], nil ] } - | op_minus expr =op_uminus - { result = [ :uminus, retag(val), val[1] ] } - | op_not expr - { result = [ :not, retag(val), val[1] ] } - | expr op_mul expr - { result = [ :mul, retag(val), val[0], val[2] ] } - | expr op_div expr - { result = [ :div, retag(val), val[0], val[2] ] } - | expr op_mod expr - { result = [ :mod, retag(val), val[0], val[2] ] } - | expr op_plus expr - { result = [ :plus, retag(val), val[0], val[2] ] } - | expr op_minus expr - { result = [ :minus, retag(val), val[0], val[2] ] } - | expr op_eq expr - { result = [ :eq, retag(val), val[0], val[2] ] } - | expr op_neq expr - { result = [ :neq, retag(val), val[0], val[2] ] } - | expr op_lt expr - { result = [ :lt, retag(val), val[0], val[2] ] } - | expr op_leq expr - { result = [ :leq, retag(val), val[0], val[2] ] } - | expr op_gt expr - { result = [ :gt, retag(val), val[0], val[2] ] } - | expr op_geq expr - { result = [ :geq, retag(val), val[0], val[2] ] } - | expr op_and expr - { result = [ :and, retag(val), val[0], val[2] ] } - | expr op_or expr - { result = [ :or, retag(val), val[0], val[2] ] } - | primary_expr - - tuple: - lbracket tuple_content rbracket - { result = [ :tuple, retag(val), val[1].compact ] } - - tuple_content: - expr comma tuple_content - { result = [ val[0], *val[2] ] } - | expr - { result = [ val[0] ] } - | /* empty */ - { result = [ ] } - - function_args: - lparen function_args_inside rparen - { result = [ :args, retag(val), *val[1] ] } - - function_args_inside: - expr function_keywords - { result = [ val[0], val[1][2] ] } - | function_keywords - { result = [ nil, val[0][2] ] } - - function_keywords: - keyword expr function_keywords - { name = val[0][2].to_sym - tail = val[2][2] - loc = retag([ val[0], val[1] ]) - - if tail.include? name - @errors << SyntaxError.new("duplicate keyword argument `#{val[0][2]}'", - tail[name][1]) - end - - hash = { - name => [ val[1][0], loc, *val[1][2..-1] ] - }.merge(tail) - - result = [ :keywords, retag([ loc, val[2] ]), hash ] - } - | /* empty */ - { result = [ :keywords, nil, {} ] } - - filter_chain: - expr pipe filter_chain_cont - { result = [ val[0], *val[2] ]. - reduce { |tree, node| node[3][2] = tree; node } - } - - filter_chain_cont: - filter_call pipe filter_chain_cont - { result = [ val[0], *val[2] ] } - | filter_call - { result = [ val[0] ] } - - filter_call: - ident function_keywords - { ident_loc = val[0][1] - empty_args_loc = { line: ident_loc[:line], - start: ident_loc[:end] + 1, - end: ident_loc[:end] + 1, } - result = [ :call, val[0][1], val[0], - [ :args, val[1][1] || empty_args_loc, nil, val[1][2] ] ] - } - - tag: - lblock ident expr tag_first_cont - { result = [ :tag, retag(val), val[1], val[2], *reduce_tag_args(val[3][2]) ] } - | lblock ident tag_first_cont - { result = [ :tag, retag(val), val[1], nil, *reduce_tag_args(val[2][2]) ] } - - # Racc cannot do lookahead across rules. I had to add states - # explicitly to avoid S/R conflicts. You are not expected to - # understand this. - - tag_first_cont: - rblock - { result = [ :cont, retag(val), [] ] } - | keyword tag_first_cont2 - { result = [ :cont, retag(val), [ val[0], *val[1][2] ] ] } - - tag_first_cont2: - rblock block lblock2 tag_next_cont - { result = [ :cont2, val[0][1], [ [:block, val[0][1], val[1] ], *val[3] ] ] } - | expr tag_first_cont - { result = [ :cont2, retag(val), [ val[0], *val[1][2] ] ] } - - tag_next_cont: - endtag rblock - { result = [] } - | keyword tag_next_cont2 - { result = [ val[0], *val[1] ] } - - tag_next_cont2: - rblock block lblock2 tag_next_cont - { result = [ [:block, val[0][1], val[1] ], *val[3] ] } - | expr keyword tag_next_cont3 - { result = [ val[0], val[1], *val[2] ] } - - tag_next_cont3: - rblock block lblock2 tag_next_cont - { result = [ [:block, val[0][1], val[1] ], *val[3] ] } - | expr tag_next_cont - { result = [ val[0], *val[1] ] } - ----- inner - attr_reader :errors, :ast - - def initialize(tags={}) - super() - - @errors = [] - @ast = nil - @tags = tags - end - - def success? - @errors.empty? - end - - def parse(string, name='(code)') - @errors.clear - @name = name - @ast = nil - - begin - @stream = Lexer.lex(string, @name, @tags) - @ast = do_parse - rescue Liquor::SyntaxError => e - @errors << e - end - - success? - end - - def next_token - tok = @stream.shift - [ tok[0], tok ] if tok - end - - TOKEN_NAME_MAP = { - :comma => ',', - :dot => '.', - :lblock => '{%', - :rblock => '%}', - :linterp => '{{', - :rinterp => '}}', - :lbracket => '[', - :rbracket => ']', - :lparen => '(', - :rparen => ')', - :pipe => '|', - :op_not => '!', - :op_mul => '*', - :op_div => '/', - :op_mod => '%', - :op_plus => '+', - :op_minus => '-', - :op_eq => '==', - :op_neq => '!=', - :op_lt => '<', - :op_leq => '<=', - :op_gt => '>', - :op_geq => '>=', - :keyword => 'keyword argument name', - :kwarg => 'keyword argument', - :ident => 'identifier', - } - - def on_error(error_token_id, error_token, value_stack) - if token_to_str(error_token_id) == "$end" - raise Liquor::SyntaxError.new("unexpected end of program", { - file: @name - }) - else - type, (loc, value) = error_token - type = TOKEN_NAME_MAP[type] || type - - raise Liquor::SyntaxError.new("unexpected token `#{type}'", loc) - end - end - - def retag(nodes) - loc = nodes.map { |node| node[1] }.compact - first, *, last = loc - return first if last.nil? - - { - file: first[:file], - line: first[:line], - start: first[:start], - end: last[:end], - } - end - - def reduce_tag_args(list) - list.each_slice(2).reduce([]) { |args, (k, v)| - if v[0] == :block - args << [ :blockarg, retag([ k, v ]), k, v[2] || [] ] - else - args << [ :kwarg, retag([ k, v ]), k, v ] - end - } - end
\ No newline at end of file diff --git a/test/racc/assets/machete.y b/test/racc/assets/machete.y deleted file mode 100644 index ea92d47a69..0000000000 --- a/test/racc/assets/machete.y +++ /dev/null @@ -1,423 +0,0 @@ -# Copyright (c) 2011 SUSE -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. - -class Machete::Parser - -token NIL -token TRUE -token FALSE -token INTEGER -token SYMBOL -token STRING -token REGEXP -token ANY -token EVEN -token ODD -token METHOD_NAME -token CLASS_NAME - -start expression - -rule - -expression : primary - | expression "|" primary { - result = if val[0].is_a?(ChoiceMatcher) - ChoiceMatcher.new(val[0].alternatives << val[2]) - else - ChoiceMatcher.new([val[0], val[2]]) - end - } - -primary : node - | array - | literal - | any - -node : CLASS_NAME { - result = NodeMatcher.new(val[0].to_sym) - } - | CLASS_NAME "<" attrs ">" { - result = NodeMatcher.new(val[0].to_sym, val[2]) - } - -attrs : attr - | attrs "," attr { result = val[0].merge(val[2]) } - -attr : method_name "=" expression { result = { val[0].to_sym => val[2] } } - | method_name "^=" SYMBOL { - result = { - val[0].to_sym => SymbolRegexpMatcher.new( - Regexp.new("^" + Regexp.escape(symbol_value(val[2]).to_s)) - ) - } - } - | method_name "$=" SYMBOL { - result = { - val[0].to_sym => SymbolRegexpMatcher.new( - Regexp.new(Regexp.escape(symbol_value(val[2]).to_s) + "$") - ) - } - } - | method_name "*=" SYMBOL { - result = { - val[0].to_sym => SymbolRegexpMatcher.new( - Regexp.new(Regexp.escape(symbol_value(val[2]).to_s)) - ) - } - } - | method_name "^=" STRING { - result = { - val[0].to_sym => StringRegexpMatcher.new( - Regexp.new("^" + Regexp.escape(string_value(val[2]))) - ) - } - } - | method_name "$=" STRING { - result = { - val[0].to_sym => StringRegexpMatcher.new( - Regexp.new(Regexp.escape(string_value(val[2])) + "$") - ) - } - } - | method_name "*=" STRING { - result = { - val[0].to_sym => StringRegexpMatcher.new( - Regexp.new(Regexp.escape(string_value(val[2]))) - ) - } - } - | method_name "*=" REGEXP { - result = { - val[0].to_sym => IndifferentRegexpMatcher.new( - Regexp.new(regexp_value(val[2])) - ) - } - } - -# Hack to overcome the fact that some tokens will lex as simple tokens, not -# METHOD_NAME tokens, and that "reserved words" will lex as separate kinds of -# tokens. -method_name : METHOD_NAME - | NIL - | TRUE - | FALSE - | ANY - | EVEN - | ODD - | "*" - | "+" - | "<" - | ">" - | "^" - | "|" - -array : "[" items_opt "]" { result = ArrayMatcher.new(val[1]) } - -items_opt : /* empty */ { result = [] } - | items - -items : item { result = [val[0]] } - | items "," item { result = val[0] << val[2] } - -item : expression - | expression quantifier { result = Quantifier.new(val[0], *val[1]) } - -quantifier : "*" { result = [0, nil, 1] } - | "+" { result = [1, nil, 1] } - | "?" { result = [0, 1, 1] } - | "{" INTEGER "}" { - result = [integer_value(val[1]), integer_value(val[1]), 1] - } - | "{" INTEGER "," "}" { - result = [integer_value(val[1]), nil, 1] - } - | "{" "," INTEGER "}" { - result = [0, integer_value(val[2]), 1] - } - | "{" INTEGER "," INTEGER "}" { - result = [integer_value(val[1]), integer_value(val[3]), 1] - } - | "{" EVEN "}" { result = [0, nil, 2] } - | "{" ODD "}" { result = [1, nil, 2] } - -literal : NIL { result = LiteralMatcher.new(nil) } - | TRUE { result = LiteralMatcher.new(true) } - | FALSE { result = LiteralMatcher.new(false) } - | INTEGER { result = LiteralMatcher.new(integer_value(val[0])) } - | SYMBOL { result = LiteralMatcher.new(symbol_value(val[0])) } - | STRING { result = LiteralMatcher.new(string_value(val[0])) } - | REGEXP { result = LiteralMatcher.new(regexp_value(val[0])) } - -any : ANY { result = AnyMatcher.new } - ----- inner - -include Matchers - -class SyntaxError < StandardError; end - -def parse(input) - @input = input - @pos = 0 - - do_parse -end - -private - -def integer_value(value) - if value =~ /^0[bB]/ - value[2..-1].to_i(2) - elsif value =~ /^0[oO]/ - value[2..-1].to_i(8) - elsif value =~ /^0[dD]/ - value[2..-1].to_i(10) - elsif value =~ /^0[xX]/ - value[2..-1].to_i(16) - elsif value =~ /^0/ - value.to_i(8) - else - value.to_i - end -end - -def symbol_value(value) - value[1..-1].to_sym -end - -def string_value(value) - quote = value[0..0] - if quote == "'" - value[1..-2].gsub("\\\\", "\\").gsub("\\'", "'") - elsif quote == '"' - value[1..-2]. - gsub("\\\\", "\\"). - gsub('\\"', '"'). - gsub("\\n", "\n"). - gsub("\\t", "\t"). - gsub("\\r", "\r"). - gsub("\\f", "\f"). - gsub("\\v", "\v"). - gsub("\\a", "\a"). - gsub("\\e", "\e"). - gsub("\\b", "\b"). - gsub("\\s", "\s"). - gsub(/\\([0-7]{1,3})/) { $1.to_i(8).chr }. - gsub(/\\x([0-9a-fA-F]{1,2})/) { $1.to_i(16).chr } - else - raise "Unknown quote: #{quote.inspect}." - end -end - -REGEXP_OPTIONS = { - 'i' => Regexp::IGNORECASE, - 'm' => Regexp::MULTILINE, - 'x' => Regexp::EXTENDED -} - -def regexp_value(value) - /\A\/(.*)\/([imx]*)\z/ =~ value - pattern, options = $1, $2 - - Regexp.new(pattern, options.chars.map { |ch| REGEXP_OPTIONS[ch] }.inject(:|)) -end - -# "^" needs to be here because if it were among operators recognized by -# METHOD_NAME, "^=" would be recognized as two tokens. -SIMPLE_TOKENS = [ - "|", - "<", - ">", - ",", - "=", - "^=", - "^", - "$=", - "[", - "]", - "*=", - "*", - "+", - "?", - "{", - "}" -] - -COMPLEX_TOKENS = [ - [:NIL, /^nil/], - [:TRUE, /^true/], - [:FALSE, /^false/], - # INTEGER needs to be before METHOD_NAME, otherwise e.g. "+1" would be - # recognized as two tokens. - [ - :INTEGER, - /^ - [+-]? # sign - ( - 0[bB][01]+(_[01]+)* # binary (prefixed) - | - 0[oO][0-7]+(_[0-7]+)* # octal (prefixed) - | - 0[dD]\d+(_\d+)* # decimal (prefixed) - | - 0[xX][0-9a-fA-F]+(_[0-9a-fA-F]+)* # hexadecimal (prefixed) - | - 0[0-7]*(_[0-7]+)* # octal (unprefixed) - | - [1-9]\d*(_\d+)* # decimal (unprefixed) - ) - /x - ], - [ - :SYMBOL, - /^ - : - ( - # class name - [A-Z][a-zA-Z0-9_]* - | - # regular method name - [a-z_][a-zA-Z0-9_]*[?!=]? - | - # instance variable name - @[a-zA-Z_][a-zA-Z0-9_]* - | - # class variable name - @@[a-zA-Z_][a-zA-Z0-9_]* - | - # operator (sorted by length, then alphabetically) - (<=>|===|\[\]=|\*\*|\+@|-@|<<|<=|==|=~|>=|>>|\[\]|[%&*+\-\/<>^`|~]) - ) - /x - ], - [ - :STRING, - /^ - ( - ' # sinqle-quoted string - ( - \\[\\'] # escape - | - [^'] # regular character - )* - ' - | - " # double-quoted string - ( - \\ # escape - ( - [\\"ntrfvaebs] # one-character escape - | - [0-7]{1,3} # octal number escape - | - x[0-9a-fA-F]{1,2} # hexadecimal number escape - ) - | - [^"] # regular character - )* - " - ) - /x - ], - [ - :REGEXP, - /^ - \/ - ( - \\ # escape - ( - [\\\/ntrfvaebs\(\)\[\]\{\}\-\.\?\*\+\|\^\$] # one-character escape - | - [0-7]{2,3} # octal number escape - | - x[0-9a-fA-F]{1,2} # hexadecimal number escape - ) - | - [^\/] # regular character - )* - \/ - [imx]* - /x - ], - # ANY, EVEN and ODD need to be before METHOD_NAME, otherwise they would be - # recognized as method names. - [:ANY, /^any/], - [:EVEN, /^even/], - [:ODD, /^odd/], - # We exclude "*", "+", "<", ">", "^" and "|" from method names since they are - # lexed as simple tokens. This is because they have also other meanings in - # Machette patterns beside Ruby method names. - [ - :METHOD_NAME, - /^ - ( - # regular name - [a-z_][a-zA-Z0-9_]*[?!=]? - | - # operator (sorted by length, then alphabetically) - (<=>|===|\[\]=|\*\*|\+@|-@|<<|<=|==|=~|>=|>>|\[\]|[%&\-\/`~]) - ) - /x - ], - [:CLASS_NAME, /^[A-Z][a-zA-Z0-9_]*/] -] - -def next_token - skip_whitespace - - return false if remaining_input.empty? - - # Complex tokens need to be before simple tokens, otherwise e.g. "<<" would be - # recognized as two tokens. - - COMPLEX_TOKENS.each do |type, regexp| - if remaining_input =~ regexp - @pos += $&.length - return [type, $&] - end - end - - SIMPLE_TOKENS.each do |token| - if remaining_input[0...token.length] == token - @pos += token.length - return [token, token] - end - end - - raise SyntaxError, "Unexpected character: #{remaining_input[0..0].inspect}." -end - -def skip_whitespace - if remaining_input =~ /\A^[ \t\r\n]+/ - @pos += $&.length - end -end - -def remaining_input - @input[@pos..-1] -end - -def on_error(error_token_id, error_value, value_stack) - raise SyntaxError, "Unexpected token: #{error_value.inspect}." -end diff --git a/test/racc/assets/macruby.y b/test/racc/assets/macruby.y deleted file mode 100644 index 5ede008308..0000000000 --- a/test/racc/assets/macruby.y +++ /dev/null @@ -1,2197 +0,0 @@ -# Copyright (c) 2013 Peter Zotov <whitequark@whitequark.org> -# -# Parts of the source are derived from ruby_parser: -# Copyright (c) Ryan Davis, seattle.rb -# -# MIT License -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class Parser::MacRuby - -token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS - kTHEN kELSIF kELSE kCASE kWHEN kWHILE kUNTIL kFOR kBREAK kNEXT - kREDO kRETRY kIN kDO kDO_COND kDO_BLOCK kDO_LAMBDA kRETURN kYIELD kSUPER - kSELF kNIL kTRUE kFALSE kAND kOR kNOT kIF_MOD kUNLESS_MOD kWHILE_MOD - kUNTIL_MOD kRESCUE_MOD kALIAS kDEFINED klBEGIN klEND k__LINE__ - k__FILE__ k__ENCODING__ tIDENTIFIER tFID tGVAR tIVAR tCONSTANT - tLABEL tCVAR tNTH_REF tBACK_REF tSTRING_CONTENT tINTEGER tFLOAT - tREGEXP_END tUPLUS tUMINUS tUMINUS_NUM tPOW tCMP tEQ tEQQ tNEQ - tGEQ tLEQ tANDOP tOROP tMATCH tNMATCH tDOT tDOT2 tDOT3 tAREF - tASET tLSHFT tRSHFT tCOLON2 tCOLON3 tOP_ASGN tASSOC tLPAREN - tLPAREN2 tRPAREN tLPAREN_ARG tLBRACK tLBRACK2 tRBRACK tLBRACE - tLBRACE_ARG tSTAR tSTAR2 tAMPER tAMPER2 tTILDE tPERCENT tDIVIDE - tPLUS tMINUS tLT tGT tPIPE tBANG tCARET tLCURLY tRCURLY - tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG tREGEXP_OPT - tWORDS_BEG tQWORDS_BEG tSTRING_DBEG tSTRING_DVAR tSTRING_END - tSTRING tSYMBOL tNL tEH tCOLON tCOMMA tSPACE tSEMI tLAMBDA tLAMBEG - tCHARACTER - -prechigh - right tBANG tTILDE tUPLUS - right tPOW - right tUMINUS_NUM tUMINUS - left tSTAR2 tDIVIDE tPERCENT - left tPLUS tMINUS - left tLSHFT tRSHFT - left tAMPER2 - left tPIPE tCARET - left tGT tGEQ tLT tLEQ - nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH - left tANDOP - left tOROP - nonassoc tDOT2 tDOT3 - right tEH tCOLON - left kRESCUE_MOD - right tEQL tOP_ASGN - nonassoc kDEFINED - right kNOT - left kOR kAND - nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD - nonassoc tLBRACE_ARG - nonassoc tLOWEST -preclow - -rule - - program: top_compstmt - - top_compstmt: top_stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - top_stmts: # nothing - { - result = [] - } - | top_stmt - { - result = [ val[0] ] - } - | top_stmts terms top_stmt - { - result = val[0] << val[2] - } - | error top_stmt - { - result = [ val[1] ] - } - - top_stmt: stmt - | klBEGIN tLCURLY top_compstmt tRCURLY - { - result = @builder.preexe(val[0], val[1], val[2], val[3]) - } - - bodystmt: compstmt opt_rescue opt_else opt_ensure - { - rescue_bodies = val[1] - else_t, else_ = val[2] - ensure_t, ensure_ = val[3] - - if rescue_bodies.empty? && !else_.nil? - diagnostic :warning, :useless_else, nil, else_t - end - - result = @builder.begin_body(val[0], - rescue_bodies, - else_t, else_, - ensure_t, ensure_) - } - - compstmt: stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - stmts: # nothing - { - result = [] - } - | stmt - { - result = [ val[0] ] - } - | stmts terms stmt - { - result = val[0] << val[2] - } - | error stmt - { - result = [ val[1] ] - } - - stmt: kALIAS fitem - { - @lexer.state = :expr_fname - } - fitem - { - result = @builder.alias(val[0], val[1], val[3]) - } - | kALIAS tGVAR tGVAR - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.gvar(val[2])) - } - | kALIAS tGVAR tBACK_REF - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.back_ref(val[2])) - } - | kALIAS tGVAR tNTH_REF - { - diagnostic :error, :nth_ref_alias, nil, val[2] - } - | kUNDEF undef_list - { - result = @builder.undef_method(val[0], val[1]) - } - | stmt kIF_MOD expr_value - { - result = @builder.condition_mod(val[0], nil, - val[1], val[2]) - } - | stmt kUNLESS_MOD expr_value - { - result = @builder.condition_mod(nil, val[0], - val[1], val[2]) - } - | stmt kWHILE_MOD expr_value - { - result = @builder.loop_mod(:while, val[0], val[1], val[2]) - } - | stmt kUNTIL_MOD expr_value - { - result = @builder.loop_mod(:until, val[0], val[1], val[2]) - } - | stmt kRESCUE_MOD stmt - { - rescue_body = @builder.rescue_body(val[1], - nil, nil, nil, - nil, val[2]) - - result = @builder.begin_body(val[0], [ rescue_body ]) - } - | klEND tLCURLY compstmt tRCURLY - { - result = @builder.postexe(val[0], val[1], val[2], val[3]) - } - | lhs tEQL command_call - { - result = @builder.assign(val[0], val[1], val[2]) - } - | mlhs tEQL command_call - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN command_call - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | backref tOP_ASGN command_call - { - @builder.op_assign(val[0], val[1], val[2]) - } - | lhs tEQL mrhs - { - result = @builder.assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | mlhs tEQL arg_value - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | mlhs tEQL mrhs - { - result = @builder.multi_assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | expr - - expr: command_call - | expr kAND expr - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | expr kOR expr - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kNOT opt_nl expr - { - result = @builder.not_op(val[0], nil, val[2], nil) - } - | tBANG command_call - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | arg - - expr_value: expr - - command_call: command - | block_command - - block_command: block_call - | block_call tDOT operation2 command_args - { - result = @builder.call_method(val[0], val[1], val[2], - *val[3]) - } - | block_call tCOLON2 operation2 command_args - { - result = @builder.call_method(val[0], val[1], val[2], - *val[3]) - } - - cmd_brace_block: tLBRACE_ARG - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - command: operation command_args =tLOWEST - { - result = @builder.call_method(nil, nil, val[0], - *val[1]) - } - | operation command_args cmd_brace_block - { - method_call = @builder.call_method(nil, nil, val[0], - *val[1]) - - begin_t, args, body, end_t = val[2] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tDOT operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - *val[3]) - } - | primary_value tDOT operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - *val[3]) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tCOLON2 operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - *val[3]) - } - | primary_value tCOLON2 operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - *val[3]) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | kSUPER command_args - { - result = @builder.keyword_cmd(:super, val[0], - *val[1]) - } - | kYIELD command_args - { - result = @builder.keyword_cmd(:yield, val[0], - *val[1]) - } - | kRETURN call_args - { - result = @builder.keyword_cmd(:return, val[0], - nil, val[1], nil) - } - | kBREAK call_args - { - result = @builder.keyword_cmd(:break, val[0], - nil, val[1], nil) - } - | kNEXT call_args - { - result = @builder.keyword_cmd(:next, val[0], - nil, val[1], nil) - } - - mlhs: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_inner: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - mlhs_basic: mlhs_head - | mlhs_head mlhs_item - { - result = val[0]. - push(val[1]) - } - | mlhs_head tSTAR mlhs_node - { - result = val[0]. - push(@builder.splat(val[1], val[2])) - } - | mlhs_head tSTAR mlhs_node tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1], val[2])). - concat(val[4]) - } - | mlhs_head tSTAR - { - result = val[0]. - push(@builder.splat(val[1])) - } - | mlhs_head tSTAR tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1])). - concat(val[3]) - } - | tSTAR mlhs_node - { - result = [ @builder.splat(val[0], val[1]) ] - } - | tSTAR mlhs_node tCOMMA mlhs_post - { - result = [ @builder.splat(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.splat(val[0]) ] - } - | tSTAR tCOMMA mlhs_post - { - result = [ @builder.splat(val[0]), - *val[2] ] - } - - mlhs_item: mlhs_node - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_head: mlhs_item tCOMMA - { - result = [ val[0] ] - } - | mlhs_head mlhs_item tCOMMA - { - result = val[0] << val[1] - } - - mlhs_post: mlhs_item - { - result = [ val[0] ] - } - | mlhs_post tCOMMA mlhs_item - { - result = val[0] << val[2] - } - - mlhs_node: variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - lhs: variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - cname: tIDENTIFIER - { - diagnostic :error, :module_name_const, nil, val[0] - } - | tCONSTANT - - cpath: tCOLON3 cname - { - result = @builder.const_global(val[0], val[1]) - } - | cname - { - result = @builder.const(val[0]) - } - | primary_value tCOLON2 cname - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - - fname: tIDENTIFIER | tCONSTANT | tFID - | op - | reswords - - fsym: fname - { - result = @builder.symbol(val[0]) - } - | symbol - - fitem: fsym - | dsym - - undef_list: fitem - { - result = [ val[0] ] - } - | undef_list tCOMMA - { - @lexer.state = :expr_fname - } - fitem - { - result = val[0] << val[3] - } - - op: tPIPE | tCARET | tAMPER2 | tCMP | tEQ | tEQQ - | tMATCH | tNMATCH | tGT | tGEQ | tLT | tLEQ - | tNEQ | tLSHFT | tRSHFT | tPLUS | tMINUS | tSTAR2 - | tSTAR | tDIVIDE | tPERCENT | tPOW | tBANG | tTILDE - | tUPLUS | tUMINUS | tAREF | tASET | tBACK_REF2 - - reswords: k__LINE__ | k__FILE__ | k__ENCODING__ | klBEGIN | klEND - | kALIAS | kAND | kBEGIN | kBREAK | kCASE - | kCLASS | kDEF | kDEFINED | kDO | kELSE - | kELSIF | kEND | kENSURE | kFALSE | kFOR - | kIN | kMODULE | kNEXT | kNIL | kNOT - | kOR | kREDO | kRESCUE | kRETRY | kRETURN - | kSELF | kSUPER | kTHEN | kTRUE | kUNDEF - | kWHEN | kYIELD | kIF | kUNLESS | kWHILE - | kUNTIL - - arg: lhs tEQL arg - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.assign(val[0], val[1], rescue_) - } - | var_lhs tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.op_assign(val[0], val[1], rescue_) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN arg - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN arg - { - diagnostic :error, :dynamic_const, nil, val[2], [ val[3] ] - } - | tCOLON3 tCONSTANT tOP_ASGN arg - { - diagnostic :error, :dynamic_const, nil, val[1], [ val[2] ] - } - | backref tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | arg tDOT2 arg - { - result = @builder.range_inclusive(val[0], val[1], val[2]) - } - | arg tDOT3 arg - { - result = @builder.range_exclusive(val[0], val[1], val[2]) - } - | arg tPLUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMINUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tSTAR2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tDIVIDE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPERCENT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPOW arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tUMINUS_NUM tINTEGER tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.integer(val[1]), - val[2], val[3])) - } - | tUMINUS_NUM tFLOAT tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.float(val[1]), - val[2], val[3])) - } - | tUPLUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | tUMINUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tPIPE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCARET arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tAMPER2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCMP arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tNEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMATCH arg - { - result = @builder.match_op(val[0], val[1], val[2]) - } - | arg tNMATCH arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tBANG arg - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | tTILDE arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tLSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tRSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tANDOP arg - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | arg tOROP arg - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kDEFINED opt_nl arg - { - result = @builder.keyword_cmd(:defined?, val[0], nil, [ val[2] ], nil) - } - - | arg tEH arg opt_nl tCOLON arg - { - result = @builder.ternary(val[0], val[1], - val[2], val[4], val[5]) - } - | primary - - arg_value: arg - - aref_args: none - | args trailer - | args tCOMMA assocs trailer - { - result = val[0] << @builder.associate(nil, val[2], nil) - } - | assocs trailer - { - result = [ @builder.associate(nil, val[0], nil) ] - } - - paren_args: tLPAREN2 opt_call_args rparen - { - result = val - } - - opt_paren_args: # nothing - { - result = [ nil, [], nil ] - } - | paren_args - - opt_call_args: # nothing - { - result = [] - } - | call_args - - call_args: command - { - result = [ val[0] ] - } - | args opt_block_arg - { - result = val[0].concat(val[1]) - } - | assocs opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil) ] - result.concat(val[1]) - } - | args tCOMMA assocs opt_block_arg - { - assocs = @builder.associate(nil, val[2], nil) - result = val[0] << assocs - result.concat(val[3]) - } - | args tCOMMA assocs tCOMMA args opt_block_arg - { - val[2][-1] = @builder.objc_varargs(val[2][-1], val[4]) - assocs = @builder.associate(nil, val[2], nil) - result = val[0] << assocs - result.concat(val[5]) - } - | block_arg - { - result = [ val[0] ] - } - - call_args2: arg_value tCOMMA args opt_block_arg - { - result = [ val[0], *val[2].concat(val[3]) ] - } - | arg_value tCOMMA block_arg - { - result = [ val[0], val[2] ] - } - | assocs opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil), - *val[1] ] - } - | arg_value tCOMMA assocs opt_block_arg - { - result = [ val[0], - @builder.associate(nil, val[2], nil), - *val[3] ] - } - | arg_value tCOMMA args tCOMMA assocs opt_block_arg - { - result = [ val[0], - *val[2]. - push(@builder.associate(nil, val[4], nil)). - concat(val[5]) ] - } - | block_arg - { - result = [ val[0] ] - } - - command_args: { - result = @lexer.cmdarg.dup - @lexer.cmdarg.push(true) - } - open_args - { - @lexer.cmdarg = val[0] - - result = val[1] - } - - open_args: call_args - { - result = [ nil, val[0], nil ] - } - | tLPAREN_ARG - { - @lexer.state = :expr_endarg - } - rparen - { - result = [ val[0], [], val[2] ] - } - | tLPAREN_ARG call_args2 - { - @lexer.state = :expr_endarg - } - rparen - { - result = [ val[0], val[1], val[3] ] - } - - block_arg: tAMPER arg_value - { - result = @builder.block_pass(val[0], val[1]) - } - - opt_block_arg: tCOMMA block_arg - { - result = [ val[1] ] - } - | tCOMMA - { - result = [] - } - | # nothing - { - result = [] - } - - args: arg_value - { - result = [ val[0] ] - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - | args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - - mrhs: args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - - primary: literal - | strings - | xstring - | regexp - | words - | qwords - | var_ref - | backref - | tFID - { - result = @builder.call_method(nil, nil, val[0]) - } - | kBEGIN bodystmt kEND - { - result = @builder.begin_keyword(val[0], val[1], val[2]) - } - | tLPAREN_ARG expr - { - @lexer.state = :expr_endarg - } - rparen - { - result = @builder.begin(val[0], val[1], val[3]) - } - | tLPAREN compstmt tRPAREN - { - result = @builder.begin(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - | tCOLON3 tCONSTANT - { - result = @builder.const_global(val[0], val[1]) - } - | tLBRACK aref_args tRBRACK - { - result = @builder.array(val[0], val[1], val[2]) - } - | tLBRACE assoc_list tRCURLY - { - result = @builder.associate(val[0], val[1], val[2]) - } - | kRETURN - { - result = @builder.keyword_cmd(:return, val[0]) - } - | kYIELD tLPAREN2 call_args rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], val[2], val[3]) - } - | kYIELD tLPAREN2 rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], [], val[2]) - } - | kYIELD - { - result = @builder.keyword_cmd(:yield, val[0]) - } - | kDEFINED opt_nl tLPAREN2 expr rparen - { - result = @builder.keyword_cmd(:defined?, val[0], - val[2], [ val[3] ], val[4]) - } - | kNOT tLPAREN2 expr rparen - { - result = @builder.not_op(val[0], val[1], val[2], val[3]) - } - | kNOT tLPAREN2 rparen - { - result = @builder.not_op(val[0], val[1], nil, val[2]) - } - | operation brace_block - { - method_call = @builder.call_method(nil, nil, val[0]) - - begin_t, args, body, end_t = val[1] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | method_call - | method_call brace_block - { - begin_t, args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, args, body, end_t) - } - | tLAMBDA lambda - { - lambda_call = @builder.call_lambda(val[0]) - - args, (begin_t, body, end_t) = val[1] - result = @builder.block(lambda_call, - begin_t, args, body, end_t) - } - | kIF expr_value then compstmt if_tail kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, val[5]) - } - | kUNLESS expr_value then compstmt opt_else kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - else_, else_t, - val[3], val[5]) - } - | kWHILE - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:while, val[0], val[2], val[3], - val[5], val[6]) - } - | kUNTIL - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:until, val[0], val[2], val[3], - val[5], val[6]) - } - | kCASE expr_value opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[3] - - result = @builder.case(val[0], val[1], - when_bodies, else_t, else_body, - val[4]) - } - | kCASE opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[2] - - result = @builder.case(val[0], nil, - when_bodies, else_t, else_body, - val[3]) - } - | kFOR for_var kIN - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.for(val[0], val[1], - val[2], val[4], - val[5], val[7], val[8]) - } - | kCLASS cpath superclass - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :class_in_def, nil, val[0] - end - - lt_t, superclass = val[2] - result = @builder.def_class(val[0], val[1], - lt_t, superclass, - val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kCLASS tLSHFT expr term - { - result = @def_level - @def_level = 0 - - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - result = @builder.def_sclass(val[0], val[1], val[2], - val[5], val[6]) - - @lexer.pop_cmdarg - @static_env.unextend - - @def_level = val[4] - } - | kMODULE cpath - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :module_in_def, nil, val[0] - end - - result = @builder.def_module(val[0], val[1], - val[3], val[4]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kDEF fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_method(val[0], val[1], - val[3], val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kDEF singleton dot_or_colon - { - @lexer.state = :expr_fname - } - fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_singleton(val[0], val[1], val[2], - val[4], val[6], val[7], val[8]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kBREAK - { - result = @builder.keyword_cmd(:break, val[0]) - } - | kNEXT - { - result = @builder.keyword_cmd(:next, val[0]) - } - | kREDO - { - result = @builder.keyword_cmd(:redo, val[0]) - } - | kRETRY - { - result = @builder.keyword_cmd(:retry, val[0]) - } - - primary_value: primary - - then: term - | kTHEN - | term kTHEN - { - result = val[1] - } - - do: term - | kDO_COND - - if_tail: opt_else - | kELSIF expr_value then compstmt if_tail - { - else_t, else_ = val[4] - result = [ val[0], - @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, nil), - ] - } - - opt_else: none - | kELSE compstmt - { - result = val - } - - for_var: lhs - | mlhs - - f_marg: f_norm_arg - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_marg_list: f_marg - { - result = [ val[0] ] - } - | f_marg_list tCOMMA f_marg - { - result = val[0] << val[2] - } - - f_margs: f_marg_list - | f_marg_list tCOMMA tSTAR f_norm_arg - { - result = val[0]. - push(@builder.objc_restarg(val[2], val[3])) - } - | f_marg_list tCOMMA tSTAR f_norm_arg tCOMMA f_marg_list - { - result = val[0]. - push(@builder.objc_restarg(val[2], val[3])). - concat(val[5]) - } - | f_marg_list tCOMMA tSTAR - { - result = val[0]. - push(@builder.objc_restarg(val[2])) - } - | f_marg_list tCOMMA tSTAR tCOMMA f_marg_list - { - result = val[0]. - push(@builder.objc_restarg(val[2])). - concat(val[4]) - } - | tSTAR f_norm_arg - { - result = [ @builder.objc_restarg(val[0], val[1]) ] - } - | tSTAR f_norm_arg tCOMMA f_marg_list - { - result = [ @builder.objc_restarg(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.objc_restarg(val[0]) ] - } - | tSTAR tCOMMA f_marg_list - { - result = [ @builder.objc_restarg(val[0]), - *val[2] ] - } - - block_param: f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_block_optarg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_block_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_block_optarg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_block_optarg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_block_arg - { - result = [ val[0] ] - } - - opt_block_param: # nothing - { - result = @builder.args(nil, [], nil) - } - | block_param_def - { - @lexer.state = :expr_value - } - - block_param_def: tPIPE opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1], val[2]) - } - | tOROP - { - result = @builder.args(val[0], [], val[0]) - } - | tPIPE block_param opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - - opt_bv_decl: # nothing - { - result = [] - } - | tSEMI bv_decls - { - result = val[1] - } - - bv_decls: bvar - { - result = [ val[0] ] - } - | bv_decls tCOMMA bvar - { - result = val[0] << val[2] - } - - bvar: tIDENTIFIER - { - result = @builder.shadowarg(val[0]) - } - | f_bad_arg - - lambda: { - @static_env.extend_dynamic - } - f_larglist lambda_body - { - result = [ val[1], val[2] ] - - @static_env.unextend - } - - f_larglist: tLPAREN2 f_args opt_bv_decl rparen - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - | f_args - { - result = @builder.args(nil, val[0], nil) - } - - lambda_body: tLAMBEG compstmt tRCURLY - { - result = [ val[0], val[1], val[2] ] - } - | kDO_LAMBDA compstmt kEND - { - result = [ val[0], val[1], val[2] ] - } - - do_block: kDO_BLOCK - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - block_call: command do_block - { - begin_t, block_args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, block_args, body, end_t) - } - | block_call tDOT operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | block_call tCOLON2 operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - - method_call: operation paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - } - | primary_value tDOT operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation2 paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation3 - { - result = @builder.call_method(val[0], val[1], val[2]) - } - | primary_value tDOT paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | kSUPER paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - } - | kSUPER - { - result = @builder.keyword_cmd(:zsuper, val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index(val[0], val[1], val[2], val[3]) - } - - brace_block: tLCURLY - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - | kDO - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - case_body: kWHEN args then compstmt cases - { - result = [ @builder.when(val[0], val[1], val[2], val[3]), - *val[4] ] - } - - cases: opt_else - { - result = [ val[0] ] - } - | case_body - - opt_rescue: kRESCUE exc_list exc_var then compstmt opt_rescue - { - assoc_t, exc_var = val[2] - - if val[1] - exc_list = @builder.array(nil, val[1], nil) - end - - result = [ @builder.rescue_body(val[0], - exc_list, assoc_t, exc_var, - val[3], val[4]), - *val[5] ] - } - | - { - result = [] - } - - exc_list: arg_value - { - result = [ val[0] ] - } - | mrhs - | none - - exc_var: tASSOC lhs - { - result = [ val[0], val[1] ] - } - | none - - opt_ensure: kENSURE compstmt - { - result = [ val[0], val[1] ] - } - | none - - literal: numeric - | symbol - | dsym - - strings: string - { - result = @builder.string_compose(nil, val[0], nil) - } - - string: string1 - { - result = [ val[0] ] - } - | string string1 - { - result = val[0] << val[1] - } - - string1: tSTRING_BEG string_contents tSTRING_END - { - result = @builder.string_compose(val[0], val[1], val[2]) - } - | tSTRING - { - result = @builder.string(val[0]) - } - | tCHARACTER - { - result = @builder.character(val[0]) - } - - xstring: tXSTRING_BEG xstring_contents tSTRING_END - { - result = @builder.xstring_compose(val[0], val[1], val[2]) - } - - regexp: tREGEXP_BEG regexp_contents tSTRING_END tREGEXP_OPT - { - opts = @builder.regexp_options(val[3]) - result = @builder.regexp_compose(val[0], val[1], val[2], opts) - } - - words: tWORDS_BEG word_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - word_list: # nothing - { - result = [] - } - | word_list word tSPACE - { - result = val[0] << @builder.word(val[1]) - } - - word: string_content - { - result = [ val[0] ] - } - | word string_content - { - result = val[0] << val[1] - } - - qwords: tQWORDS_BEG qword_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - qword_list: # nothing - { - result = [] - } - | qword_list tSTRING_CONTENT tSPACE - { - result = val[0] << @builder.string_internal(val[1]) - } - - string_contents: # nothing - { - result = [] - } - | string_contents string_content - { - result = val[0] << val[1] - } - -xstring_contents: # nothing - { - result = [] - } - | xstring_contents string_content - { - result = val[0] << val[1] - } - -regexp_contents: # nothing - { - result = [] - } - | regexp_contents string_content - { - result = val[0] << val[1] - } - - string_content: tSTRING_CONTENT - { - result = @builder.string_internal(val[0]) - } - | tSTRING_DVAR string_dvar - { - result = val[1] - } - | tSTRING_DBEG - { - @lexer.cond.push(false) - @lexer.cmdarg.push(false) - } - compstmt tRCURLY - { - @lexer.cond.lexpop - @lexer.cmdarg.lexpop - - result = @builder.begin(val[0], val[2], val[3]) - } - - string_dvar: tGVAR - { - result = @builder.gvar(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - | backref - - - symbol: tSYMBOL - { - result = @builder.symbol(val[0]) - } - - dsym: tSYMBEG xstring_contents tSTRING_END - { - result = @builder.symbol_compose(val[0], val[1], val[2]) - } - - numeric: tINTEGER - { - result = @builder.integer(val[0]) - } - | tFLOAT - { - result = @builder.float(val[0]) - } - | tUMINUS_NUM tINTEGER =tLOWEST - { - result = @builder.negate(val[0], - @builder.integer(val[1])) - } - | tUMINUS_NUM tFLOAT =tLOWEST - { - result = @builder.negate(val[0], - @builder.float(val[1])) - } - - variable: tIDENTIFIER - { - result = @builder.ident(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tGVAR - { - result = @builder.gvar(val[0]) - } - | tCONSTANT - { - result = @builder.const(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - | kNIL - { - result = @builder.nil(val[0]) - } - | kSELF - { - result = @builder.self(val[0]) - } - | kTRUE - { - result = @builder.true(val[0]) - } - | kFALSE - { - result = @builder.false(val[0]) - } - | k__FILE__ - { - result = @builder.__FILE__(val[0]) - } - | k__LINE__ - { - result = @builder.__LINE__(val[0]) - } - | k__ENCODING__ - { - result = @builder.__ENCODING__(val[0]) - } - - var_ref: variable - { - result = @builder.accessible(val[0]) - } - - var_lhs: variable - { - result = @builder.assignable(val[0]) - } - - backref: tNTH_REF - { - result = @builder.nth_ref(val[0]) - } - | tBACK_REF - { - result = @builder.back_ref(val[0]) - } - - superclass: term - { - result = nil - } - | tLT expr_value term - { - result = [ val[0], val[1] ] - } - | error term - { - yyerrok - result = nil - } - - f_arglist: tLPAREN2 f_args rparen - { - result = @builder.args(val[0], val[1], val[2]) - - @lexer.state = :expr_value - } - | f_args term - { - result = @builder.args(nil, val[0], nil) - } - - f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_optarg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_optarg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_optarg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_block_arg - { - result = [ val[0] ] - } - | # nothing - { - result = [] - } - - f_bad_arg: tCONSTANT - { - diagnostic :error, :argument_const, nil, val[0] - } - | tIVAR - { - diagnostic :error, :argument_ivar, nil, val[0] - } - | tGVAR - { - diagnostic :error, :argument_gvar, nil, val[0] - } - | tCVAR - { - diagnostic :error, :argument_cvar, nil, val[0] - } - - f_norm_arg: f_bad_arg - | tIDENTIFIER - { - @static_env.declare val[0][0] - - result = @builder.arg(val[0]) - } - | tIDENTIFIER tASSOC tIDENTIFIER - { - @static_env.declare val[2][0] - - result = @builder.objc_kwarg(val[0], val[1], val[2]) - } - | tLABEL tIDENTIFIER - { - @static_env.declare val[1][0] - - result = @builder.objc_kwarg(val[0], nil, val[1]) - } - - f_arg_item: f_norm_arg - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_arg: f_arg_item - { - result = [ val[0] ] - } - | f_arg tCOMMA f_arg_item - { - result = val[0] << val[2] - } - - f_opt: tIDENTIFIER tEQL arg_value - { - @static_env.declare val[0][0] - - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_opt: tIDENTIFIER tEQL primary_value - { - @static_env.declare val[0][0] - - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_optarg: f_block_opt - { - result = [ val[0] ] - } - | f_block_optarg tCOMMA f_block_opt - { - result = val[0] << val[2] - } - - f_optarg: f_opt - { - result = [ val[0] ] - } - | f_optarg tCOMMA f_opt - { - result = val[0] << val[2] - } - - restarg_mark: tSTAR2 | tSTAR - - f_rest_arg: restarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - } - | restarg_mark - { - result = [ @builder.restarg(val[0]) ] - } - - blkarg_mark: tAMPER2 | tAMPER - - f_block_arg: blkarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = @builder.blockarg(val[0], val[1]) - } - - opt_f_block_arg: tCOMMA f_block_arg - { - result = [ val[1] ] - } - | # nothing - { - result = [] - } - - singleton: var_ref - | tLPAREN2 expr rparen - { - result = val[1] - } - - assoc_list: # nothing - { - result = [] - } - | assocs trailer - - assocs: assoc - { - result = [ val[0] ] - } - | assocs tCOMMA assoc - { - result = val[0] << val[2] - } - - assoc: arg_value tASSOC arg_value - { - result = @builder.pair(val[0], val[1], val[2]) - } - | tLABEL arg_value - { - result = @builder.pair_keyword(val[0], val[1]) - } - - operation: tIDENTIFIER | tCONSTANT | tFID - operation2: tIDENTIFIER | tCONSTANT | tFID | op - operation3: tIDENTIFIER | tFID | op - dot_or_colon: tDOT | tCOLON2 - opt_terms: | terms - opt_nl: | tNL - rparen: opt_nl tRPAREN - { - result = val[1] - } - rbracket: opt_nl tRBRACK - { - result = val[1] - } - trailer: | tNL | tCOMMA - - term: tSEMI - { - yyerrok - } - | tNL - - terms: term - | terms tSEMI - - none: # nothing - { - result = nil - } -end - ----- header - -require 'parser' - -Parser.check_for_encoding_support - ----- inner - - def version - 19 # closest released match: v1_9_0_2 - end - - def default_encoding - Encoding::BINARY - end diff --git a/test/racc/assets/mailp.y b/test/racc/assets/mailp.y deleted file mode 100644 index eb7d4d529d..0000000000 --- a/test/racc/assets/mailp.y +++ /dev/null @@ -1,437 +0,0 @@ -# -# mailp for test -# - -class Testp - -rule - - content : DateH datetime { @field.date = val[1] } - | RecvH received - | RetpathH returnpath - | MaddrH addrs { @field.addrs.replace val[1] } - | SaddrH addr { @field.addr = val[1] } - | MmboxH mboxes { @field.addrs.replace val[1] } - | SmboxH mbox { @field.addr = val[1] } - | MsgidH msgid { @field.msgid = val[1] } - | KeyH keys { @field.keys.replace val[1] } - | EncH enc - | VersionH version - | CTypeH ctype - | CEncodingH cencode - | CDispositionH cdisp - | Mbox mbox - { - mb = val[1] - @field.phrase = mb.phrase - @field.setroute mb.route - @field.local = mb.local - @field.domain = mb.domain - } - | Spec spec - { - mb = val[1] - @field.local = mb.local - @field.domain = mb.domain - } - ; - - datetime : day DIGIT ATOM DIGIT hour zone - # 0 1 2 3 4 5 - # day month year - { - t = Time.gm( val[3].to_i, val[2], val[1].to_i, 0, 0, 0 ) - result = (t + val[4] - val[5]).localtime - } - ; - - day : /* none */ - | ATOM ',' - ; - - hour : DIGIT ':' DIGIT - { - result = (result.to_i * 60 * 60) + (val[2].to_i * 60) - } - | DIGIT ':' DIGIT ':' DIGIT - { - result = (result.to_i * 60 * 60) + - (val[2].to_i * 60) - + val[4].to_i - } - ; - - zone : ATOM - { - result = ::TMail.zonestr2i( val[0] ) * 60 - } - ; - - received : from by via with id for recvdatetime - ; - - from : /* none */ - | FROM domain - { - @field.from = Address.join( val[1] ) - } - | FROM domain '@' domain - { - @field.from = Address.join( val[3] ) - } - | FROM domain DOMLIT - { - @field.from = Address.join( val[1] ) - } - ; - - by : /* none */ - | BY domain - { - @field.by = Address.join( val[1] ) - } - ; - - via : /* none */ - | VIA ATOM - { - @field.via = val[1] - } - ; - - with : /* none */ - | WITH ATOM - { - @field.with.push val[1] - } - ; - - id : /* none */ - | ID msgid - { - @field.msgid = val[1] - } - | ID ATOM - { - @field.msgid = val[1] - } - ; - - for : /* none */ - | FOR addr - { - @field.for_ = val[1].address - } - ; - - recvdatetime - : /* none */ - | ';' datetime - { - @field.date = val[1] - } - ; - - returnpath: '<' '>' - | routeaddr - { - @field.route.replace result.route - @field.addr = result.addr - } - ; - - addrs : addr { result = val } - | addrs ',' addr { result.push val[2] } - ; - - addr : mbox - | group - ; - - mboxes : mbox - { - result = val - } - | mboxes ',' mbox - { - result.push val[2] - } - ; - - mbox : spec - | routeaddr - | phrase routeaddr - { - val[1].phrase = HFdecoder.decode( result ) - result = val[1] - } - ; - - group : phrase ':' mboxes ';' - { - result = AddressGroup.new( result, val[2] ) - } - # | phrase ':' ';' { result = AddressGroup.new( result ) } - ; - - routeaddr : '<' route spec '>' - { - result = val[2] - result.route = val[1] - } - | '<' spec '>' - { - result = val[1] - } - ; - - route : at_domains ':' - ; - - at_domains: '@' domain { result = [ val[1] ] } - | at_domains ',' '@' domain { result.push val[3] } - ; - - spec : local '@' domain { result = Address.new( val[0], val[2] ) } - | local { result = Address.new( result, nil ) } - ; - - local : word { result = val } - | local '.' word { result.push val[2] } - ; - - domain : domword { result = val } - | domain '.' domword { result.push val[2] } - ; - - domword : atom - | DOMLIT - | DIGIT - ; - - msgid : '<' spec '>' - { - val[1] = val[1].addr - result = val.join('') - } - ; - - phrase : word - | phrase word { result << ' ' << val[1] } - ; - - word : atom - | QUOTED - | DIGIT - ; - - keys : phrase - | keys ',' phrase - ; - - enc : word - { - @field.encrypter = val[0] - } - | word word - { - @field.encrypter = val[0] - @field.keyword = val[1] - } - ; - - version : DIGIT '.' DIGIT - { - @field.major = val[0].to_i - @field.minor = val[2].to_i - } - ; - - ctype : TOKEN '/' TOKEN params - { - @field.main = val[0] - @field.sub = val[2] - } - | TOKEN params - { - @field.main = val[0] - @field.sub = '' - } - ; - - params : /* none */ - | params ';' TOKEN '=' value - { - @field.params[ val[2].downcase ] = val[4] - } - ; - - value : TOKEN - | QUOTED - ; - - cencode : TOKEN - { - @field.encoding = val[0] - } - ; - - cdisp : TOKEN disp_params - { - @field.disposition = val[0] - } - ; - - disp_params - : /* none */ - | disp_params ';' disp_param - ; - - disp_param: /* none */ - | TOKEN '=' value - { - @field.params[ val[0].downcase ] = val[2] - } - ; - - atom : ATOM - | FROM - | BY - | VIA - | WITH - | ID - | FOR - ; - -end - - ----- header -# -# mailp for test -# - -require 'tmail/mails' - - -module TMail - ----- inner - - MAILP_DEBUG = false - - def initialize - self.debug = MAILP_DEBUG - end - - def debug=( flag ) - @yydebug = flag && Racc_debug_parser - @scanner_debug = flag - end - - def debug - @yydebug - end - - - def Mailp.parse( str, obj, ident ) - new.parse( str, obj, ident ) - end - - - NATIVE_ROUTINE = { - 'TMail::MsgidH' => :msgid_parse, - 'TMail::RefH' => :refs_parse - } - - def parse( str, obj, ident ) - return if /\A\s*\z/ === str - - @field = obj - - if mid = NATIVE_ROUTINE[ obj.type.name ] then - send mid, str - else - unless ident then - ident = obj.type.name.split('::')[-1].to_s - cmt = [] - obj.comments.replace cmt - else - cmt = nil - end - - @scanner = MailScanner.new( str, ident, cmt ) - @scanner.debug = @scanner_debug - @first = [ ident.intern, ident ] - @pass_array = [nil, nil] - - do_parse - end - end - - - private - - - def next_token - if @first then - ret = @first - @first = nil - ret - else - @scanner.scan @pass_array - end - end - - def on_error( tok, val, vstack ) - raise ParseError, - "\nparse error in '#{@field.name}' header, on token #{val.inspect}" - end - - - - def refs_parse( str ) - arr = [] - - while mdata = ::TMail::MSGID.match( str ) do - str = mdata.post_match - - pre = mdata.pre_match - pre.strip! - proc_phrase pre, arr unless pre.empty? - arr.push mdata.to_s - end - str.strip! - proc_phrase str, arr if not pre or pre.empty? - - @field.refs.replace arr - end - - def proc_phrase( str, arr ) - while mdata = /"([^\\]*(?:\\.[^"\\]*)*)"/.match( str ) do - str = mdata.post_match - - pre = mdata.pre_match - pre.strip! - arr.push pre unless pre.empty? - arr.push mdata[1] - end - str.strip! - arr.push unless str.empty? - end - - - def msgid_parse( str ) - if mdata = ::TMail::MSGID.match( str ) then - @field.msgid = mdata.to_s - else - raise ParseError, "wrong Message-ID format: #{str}" - end - end - ----- footer - -end # module TMail - -mp = TMail::Testp.new -mp.parse diff --git a/test/racc/assets/mediacloth.y b/test/racc/assets/mediacloth.y deleted file mode 100644 index 94cc411ea7..0000000000 --- a/test/racc/assets/mediacloth.y +++ /dev/null @@ -1,599 +0,0 @@ -# Copyright (c) 2006 Pluron Inc. -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -# The parser for the MediaWiki language. -# -# Usage together with a lexer: -# inputFile = File.new("data/input1", "r") -# input = inputFile.read -# parser = MediaWikiParser.new -# parser.lexer = MediaWikiLexer.new -# parser.parse(input) - -class MediaWikiParser - -token TEXT BOLD_START BOLD_END ITALIC_START ITALIC_END LINK_START LINK_END LINKSEP - INTLINK_START INTLINK_END INTLINKSEP RESOURCESEP CHAR_ENT - PRE_START PRE_END PREINDENT_START PREINDENT_END - SECTION_START SECTION_END HLINE SIGNATURE_NAME SIGNATURE_DATE SIGNATURE_FULL - PARA_START PARA_END UL_START UL_END OL_START OL_END LI_START LI_END - DL_START DL_END DT_START DT_END DD_START DD_END TAG_START TAG_END ATTR_NAME ATTR_VALUE - TABLE_START TABLE_END ROW_START ROW_END HEAD_START HEAD_END CELL_START CELL_END - KEYWORD TEMPLATE_START TEMPLATE_END CATEGORY PASTE_START PASTE_END - - -rule - -wiki: - repeated_contents - { - @nodes.push WikiAST.new(0, @wiki_ast_length) - #@nodes.last.children.insert(0, val[0]) - #puts val[0] - @nodes.last.children += val[0] - } - ; - -contents: - text - { - result = val[0] - } - | bulleted_list - { - result = val[0] - } - | numbered_list - { - result = val[0] - } - | dictionary_list - { - list = ListAST.new(@ast_index, @ast_length) - list.list_type = :Dictionary - list.children = val[0] - result = list - } - | preformatted - { - result = val[0] - } - | section - { - result = val[0] - } - | tag - { - result = val[0] - } - | template - { - result = val[0] - } - | KEYWORD - { - k = KeywordAST.new(@ast_index, @ast_length) - k.text = val[0] - result = k - } - | PARA_START para_contents PARA_END - { - p = ParagraphAST.new(@ast_index, @ast_length) - p.children = val[1] - result = p - } - | LINK_START link_contents LINK_END - { - l = LinkAST.new(@ast_index, @ast_length) - l.link_type = val[0] - l.url = val[1][0] - l.children += val[1][1..-1] if val[1].length > 1 - result = l - } - | PASTE_START para_contents PASTE_END - { - p = PasteAST.new(@ast_index, @ast_length) - p.children = val[1] - result = p - } - | INTLINK_START TEXT RESOURCESEP TEXT reslink_repeated_contents INTLINK_END - { - l = ResourceLinkAST.new(@ast_index, @ast_length) - l.prefix = val[1] - l.locator = val[3] - l.children = val[4] unless val[4].nil? or val[4].empty? - result = l - } - | INTLINK_START TEXT intlink_repeated_contents INTLINK_END - { - l = InternalLinkAST.new(@ast_index, @ast_length) - l.locator = val[1] - l.children = val[2] unless val[2].nil? or val[2].empty? - result = l - } - | INTLINK_START CATEGORY TEXT cat_sort_contents INTLINK_END - { - l = CategoryAST.new(@ast_index, @ast_length) - l.locator = val[2] - l.sort_as = val[3] - result = l - } - | INTLINK_START RESOURCESEP CATEGORY TEXT intlink_repeated_contents INTLINK_END - { - l = CategoryLinkAST.new(@ast_index, @ast_length) - l.locator = val[3] - l.children = val[4] unless val[4].nil? or val[4].empty? - result = l - } - | table - ; - -para_contents: - { - result = nil - } - | repeated_contents - { - result = val[0] - } - ; - -tag: - TAG_START tag_attributes TAG_END - { - if val[0] != val[2] - raise Racc::ParseError.new("XHTML end tag #{val[2]} does not match start tag #{val[0]}") - end - elem = ElementAST.new(@ast_index, @ast_length) - elem.name = val[0] - elem.attributes = val[1] - result = elem - } - | TAG_START tag_attributes repeated_contents TAG_END - { - if val[0] != val[3] - raise Racc::ParseError.new("XHTML end tag #{val[3]} does not match start tag #{val[0]}") - end - elem = ElementAST.new(@ast_index, @ast_length) - elem.name = val[0] - elem.attributes = val[1] - elem.children += val[2] - result = elem - } - ; - -tag_attributes: - { - result = nil - } - | ATTR_NAME tag_attributes - { - attr_map = val[2] ? val[2] : {} - attr_map[val[0]] = true - result = attr_map - } - | ATTR_NAME ATTR_VALUE tag_attributes - { - attr_map = val[2] ? val[2] : {} - attr_map[val[0]] = val[1] - result = attr_map - } - ; - - -link_contents: - TEXT - { - result = val - } - | TEXT LINKSEP link_repeated_contents - { - result = [val[0]] - result += val[2] - } - ; - - -link_repeated_contents: - repeated_contents - { - result = val[0] - } - | repeated_contents LINKSEP link_repeated_contents - { - result = val[0] - result += val[2] if val[2] - } - ; - - -intlink_repeated_contents: - { - result = nil - } - | INTLINKSEP repeated_contents - { - result = val[1] - } - ; - -cat_sort_contents: - { - result = nil - } - | INTLINKSEP TEXT - { - result = val[1] - } - ; - -reslink_repeated_contents: - { - result = nil - } - | INTLINKSEP reslink_repeated_contents - { - result = val[1] - } - | INTLINKSEP repeated_contents reslink_repeated_contents - { - i = InternalLinkItemAST.new(@ast_index, @ast_length) - i.children = val[1] - result = [i] - result += val[2] if val[2] - } - ; - -repeated_contents: contents - { - result = [] - result << val[0] - } - | repeated_contents contents - { - result = [] - result += val[0] - result << val[1] - } - ; - -text: element - { - p = TextAST.new(@ast_index, @ast_length) - p.formatting = val[0][0] - p.contents = val[0][1] - result = p - } - | formatted_element - { - result = val[0] - } - ; - -table: - TABLE_START table_contents TABLE_END - { - table = TableAST.new(@ast_index, @ast_length) - table.children = val[1] unless val[1].nil? or val[1].empty? - result = table - } - | TABLE_START TEXT table_contents TABLE_END - { - table = TableAST.new(@ast_index, @ast_length) - table.options = val[1] - table.children = val[2] unless val[2].nil? or val[2].empty? - result = table - } - -table_contents: - { - result = nil - } - | ROW_START row_contents ROW_END table_contents - { - row = TableRowAST.new(@ast_index, @ast_length) - row.children = val[1] unless val[1].nil? or val[1].empty? - result = [row] - result += val[3] unless val[3].nil? or val[3].empty? - } - | ROW_START TEXT row_contents ROW_END table_contents - { - row = TableRowAST.new(@ast_index, @ast_length) - row.children = val[2] unless val[2].nil? or val[2].empty? - row.options = val[1] - result = [row] - result += val[4] unless val[4].nil? or val[4].empty? - } - -row_contents: - { - result = nil - } - | HEAD_START HEAD_END row_contents - { - cell = TableCellAST.new(@ast_index, @ast_length) - cell.type = :head - result = [cell] - result += val[2] unless val[2].nil? or val[2].empty? - } - | HEAD_START repeated_contents HEAD_END row_contents - { - cell = TableCellAST.new(@ast_index, @ast_length) - cell.children = val[1] unless val[1].nil? or val[1].empty? - cell.type = :head - result = [cell] - result += val[3] unless val[3].nil? or val[3].empty? - } - | CELL_START CELL_END row_contents - { - cell = TableCellAST.new(@ast_index, @ast_length) - cell.type = :body - result = [cell] - result += val[2] unless val[2].nil? or val[2].empty? - } - | CELL_START repeated_contents CELL_END row_contents - { - if val[2] == 'attributes' - result = [] - else - cell = TableCellAST.new(@ast_index, @ast_length) - cell.children = val[1] unless val[1].nil? or val[1].empty? - cell.type = :body - result = [cell] - end - result += val[3] unless val[3].nil? or val[3].empty? - if val[2] == 'attributes' and val[3] and val[3].first.class == TableCellAST - val[3].first.attributes = val[1] - end - result - } - - -element: - TEXT - { return [:None, val[0]] } - | HLINE - { return [:HLine, val[0]] } - | CHAR_ENT - { return [:CharacterEntity, val[0]] } - | SIGNATURE_DATE - { return [:SignatureDate, val[0]] } - | SIGNATURE_NAME - { return [:SignatureName, val[0]] } - | SIGNATURE_FULL - { return [:SignatureFull, val[0]] } - ; - -formatted_element: - BOLD_START BOLD_END - { - result = FormattedAST.new(@ast_index, @ast_length) - result.formatting = :Bold - result - } - | ITALIC_START ITALIC_END - { - result = FormattedAST.new(@ast_index, @ast_length) - result.formatting = :Italic - result - } - | BOLD_START repeated_contents BOLD_END - { - p = FormattedAST.new(@ast_index, @ast_length) - p.formatting = :Bold - p.children += val[1] - result = p - } - | ITALIC_START repeated_contents ITALIC_END - { - p = FormattedAST.new(@ast_index, @ast_length) - p.formatting = :Italic - p.children += val[1] - result = p - } - ; - -bulleted_list: UL_START list_item list_contents UL_END - { - list = ListAST.new(@ast_index, @ast_length) - list.list_type = :Bulleted - list.children << val[1] - list.children += val[2] - result = list - } - ; - -numbered_list: OL_START list_item list_contents OL_END - { - list = ListAST.new(@ast_index, @ast_length) - list.list_type = :Numbered - list.children << val[1] - list.children += val[2] - result = list - } - ; - -list_contents: - { result = [] } - list_item list_contents - { - result << val[1] - result += val[2] - } - | - { result = [] } - ; - -list_item: - LI_START LI_END - { - result = ListItemAST.new(@ast_index, @ast_length) - } - | LI_START repeated_contents LI_END - { - li = ListItemAST.new(@ast_index, @ast_length) - li.children += val[1] - result = li - } - ; - -dictionary_list: - DL_START dictionary_term dictionary_contents DL_END - { - result = [val[1]] - result += val[2] - } - | DL_START dictionary_contents DL_END - { - result = val[1] - } - ; - -dictionary_term: - DT_START DT_END - { - result = ListTermAST.new(@ast_index, @ast_length) - } - | DT_START repeated_contents DT_END - { - term = ListTermAST.new(@ast_index, @ast_length) - term.children += val[1] - result = term - } - -dictionary_contents: - dictionary_definition dictionary_contents - { - result = [val[0]] - result += val[1] if val[1] - } - | - { - result = [] - } - -dictionary_definition: - DD_START DD_END - { - result = ListDefinitionAST.new(@ast_index, @ast_length) - } - | DD_START repeated_contents DD_END - { - term = ListDefinitionAST.new(@ast_index, @ast_length) - term.children += val[1] - result = term - } - -preformatted: PRE_START repeated_contents PRE_END - { - p = PreformattedAST.new(@ast_index, @ast_length) - p.children += val[1] - result = p - } - | PREINDENT_START repeated_contents PREINDENT_END - { - p = PreformattedAST.new(@ast_index, @ast_length) - p.indented = true - p.children += val[1] - result = p - } - ; - -section: SECTION_START repeated_contents SECTION_END - { result = [val[1], val[0].length] - s = SectionAST.new(@ast_index, @ast_length) - s.children = val[1] - s.level = val[0].length - result = s - } - ; - -template: TEMPLATE_START TEXT template_parameters TEMPLATE_END - { - t = TemplateAST.new(@ast_index, @ast_length) - t.template_name = val[1] - t.children = val[2] unless val[2].nil? or val[2].empty? - result = t - } - ; - -template_parameters: - { - result = nil - } - | INTLINKSEP TEXT template_parameters - { - p = TemplateParameterAST.new(@ast_index, @ast_length) - p.parameter_value = val[1] - result = [p] - result += val[2] if val[2] - } - | INTLINKSEP template template_parameters - { - p = TemplateParameterAST.new(@ast_index, @ast_length) - p.children << val[1] - result = [p] - result += val[2] if val[2] - } - ; - -end - ----- header ---- -require 'mediacloth/mediawikiast' - ----- inner ---- - -attr_accessor :lexer - -def initialize - @nodes = [] - @context = [] - @wiki_ast_length = 0 - super -end - -#Tokenizes input string and parses it. -def parse(input) - @yydebug=true - lexer.tokenize(input) - do_parse - return @nodes.last -end - -#Asks the lexer to return the next token. -def next_token - token = @lexer.lex - if token[0].to_s.upcase.include? "_START" - @context << token[2..3] - elsif token[0].to_s.upcase.include? "_END" - @ast_index = @context.last[0] - @ast_length = token[2] + token[3] - @context.last[0] - @context.pop - else - @ast_index = token[2] - @ast_length = token[3] - end - - @wiki_ast_length += token[3] - - return token[0..1] -end diff --git a/test/racc/assets/mof.y b/test/racc/assets/mof.y deleted file mode 100644 index da3172988f..0000000000 --- a/test/racc/assets/mof.y +++ /dev/null @@ -1,649 +0,0 @@ -# Distributed under the Ruby license -# See http://www.ruby-lang.org/en/LICENSE.txt for the full license text -# Copyright (c) 2010 Klaus Kämpf <kkaempf@suse.de> - -/* - * According to appendix A of - * http://www.dmtf.org/standards/cim/cim_spec_v22 - */ - -class MOF::Parser - prechigh -/* nonassoc UMINUS */ - left '*' '/' - left '+' '-' - preclow - - token PRAGMA INCLUDE IDENTIFIER CLASS ASSOCIATION INDICATION - AMENDED ENABLEOVERRIDE DISABLEOVERRIDE RESTRICTED TOSUBCLASS TOINSTANCE - TRANSLATABLE QUALIFIER SCOPE SCHEMA PROPERTY REFERENCE - METHOD PARAMETER FLAVOR INSTANCE - AS REF ANY OF - DT_VOID - DT_UINT8 DT_SINT8 DT_UINT16 DT_SINT16 DT_UINT32 DT_SINT32 - DT_UINT64 DT_SINT64 DT_REAL32 DT_REAL64 DT_CHAR16 DT_STR - DT_BOOLEAN DT_DATETIME - positiveDecimalValue - stringValue - realValue - charValue - booleanValue - nullValue - binaryValue - octalValue - decimalValue - hexValue - -rule - - /* Returns a Hash of filename and MofResult */ - mofSpecification - : /* empty */ - { result = Hash.new } - | mofProduction - { result = { @name => @result } } - | mofSpecification mofProduction - { result = val[0] - result[@name] = @result - } - ; - - mofProduction - : compilerDirective - | classDeclaration - { #puts "Class '#{val[0].name}'" - @result.classes << val[0] - } - | qualifierDeclaration - { @result.qualifiers << val[0] - @qualifiers[val[0].name.downcase] = val[0] - } - | instanceDeclaration - { @result.instances << val[0] } - ; - -/*** - * compilerDirective - * - */ - - compilerDirective - : "#" PRAGMA INCLUDE pragmaParameters_opt - { raise MOF::Helper::Error.new(@name,@lineno,@line,"Missing filename after '#pragma include'") unless val[3] - open val[3], :pragma - } - | "#" PRAGMA pragmaName pragmaParameters_opt - | "#" INCLUDE pragmaParameters_opt - { raise StyleError.new(@name,@lineno,@line,"Use '#pragma include' instead of '#include'") unless @style == :wmi - raise MOF::Helper::Error.new(@name,@lineno,@line,"Missing filename after '#include'") unless val[2] - open val[2], :pragma - } - ; - - pragmaName - : IDENTIFIER - ; - - pragmaParameters_opt - : /* empty */ - { raise StyleError.new(@name,@lineno,@line,"#pragma parameter missing") unless @style == :wmi } - | "(" pragmaParameterValues ")" - { result = val[1] } - ; - - pragmaParameterValues - : pragmaParameterValue - | pragmaParameterValues "," pragmaParameterValue - ; - - pragmaParameterValue - : string - | integerValue - { raise StyleError.new(@name,@lineno,@line,"#pragma parameter missing") unless @style == :wmi } - | IDENTIFIER - ; - -/*** - * classDeclaration - * - */ - - classDeclaration - : qualifierList_opt CLASS className alias_opt superClass_opt "{" classFeatures "}" ";" - { qualifiers = val[0] - features = val[6] - # FIXME: features must not include references - result = CIM::Class.new(val[2],qualifiers,val[3],val[4],features) - } - ; - - classFeatures - : /* empty */ - { result = [] } - | classFeatures classFeature - { result = val[0] << val[1] } - ; - - classFeature - : propertyDeclaration - | methodDeclaration - | referenceDeclaration /* must have association qualifier */ - ; - - - qualifierList_opt - : /* empty */ - | qualifierList - { result = CIM::QualifierSet.new val[0] } - ; - - qualifierList - : "[" qualifier qualifiers "]" - { result = val[2] - result.unshift val[1] if val[1] } - ; - - qualifiers - : /* empty */ - { result = [] } - | qualifiers "," qualifier - { result = val[0] - result << val[2] if val[2] - } - ; - - qualifier - : qualifierName qualifierParameter_opt flavor_opt - { # Get qualifier decl - qualifier = case val[0] - when CIM::Qualifier then val[0].definition - when CIM::QualifierDeclaration then val[0] - when String then @qualifiers[val[0].downcase] - else - nil - end - raise MOF::Helper::Error.new(@name,@lineno,@line,"'#{val[0]}' is not a valid qualifier") unless qualifier - value = val[1] - raise MOF::Helper::Error.new(@name,@lineno,@line,"#{value.inspect} does not match qualifier type '#{qualifier.type}'") unless qualifier.type.matches?(value)||@style == :wmi - # Don't propagate a boolean 'false' - if qualifier.type == :boolean && value == false - result = nil - else - result = CIM::Qualifier.new(qualifier,value,val[2]) - end - } - ; - - flavor_opt - : /* empty */ - | ":" flavor - { result = CIM::QualifierFlavors.new val[1] } - ; - - qualifierParameter_opt - : /* empty */ - | qualifierParameter - ; - - qualifierParameter - : "(" constantValue ")" - { result = val[1] } - | arrayInitializer - ; - - /* CIM::Flavors */ - flavor - : AMENDED | ENABLEOVERRIDE | DISABLEOVERRIDE | RESTRICTED | TOSUBCLASS | TRANSLATABLE | TOINSTANCE - { case val[0].to_sym - when :amended, :toinstance - raise StyleError.new(@name,@lineno,@line,"'#{val[0]}' is not a valid flavor") unless @style == :wmi - end - } - ; - - alias_opt - : /* empty */ - | alias - ; - - superClass_opt - : /* empty */ - | superClass - ; - - className - : IDENTIFIER /* must be <schema>_<classname> in CIM v2.x */ - { raise ParseError.new("Class name must be prefixed by '<schema>_'") unless val[0].include?("_") || @style == :wmi } - ; - - alias - : AS aliasIdentifier - { result = val[1] } - ; - - aliasIdentifier - : "$" IDENTIFIER /* NO whitespace ! */ - { result = val[1] } - ; - - superClass - : ":" className - { result = val[1] } - ; - - - propertyDeclaration - : qualifierList_opt dataType propertyName array_opt defaultValue_opt ";" - { if val[3] - type = CIM::Array.new val[3],val[1] - else - type = val[1] - end - result = CIM::Property.new(type,val[2],val[0],val[4]) - } - ; - - referenceDeclaration - : qualifierList_opt objectRef referenceName array_opt defaultValue_opt ";" - { if val[4] - raise StyleError.new(@name,@lineno,@line,"Array not allowed in reference declaration") unless @style == :wmi - end - result = CIM::Reference.new(val[1],val[2],val[0],val[4]) } - ; - - methodDeclaration - : qualifierList_opt dataType methodName "(" parameterList_opt ")" ";" - { result = CIM::Method.new(val[1],val[2],val[0],val[4]) } - ; - - propertyName - : IDENTIFIER - | PROPERTY - { # tmplprov.mof has 'string Property;' - raise StyleError.new(@name,@lineno,@line,"Invalid keyword '#{val[0]}' used for property name") unless @style == :wmi - } - ; - - referenceName - : IDENTIFIER - | INDICATION - { result = "Indication" } - ; - - methodName - : IDENTIFIER - ; - - dataType - : DT_UINT8 - | DT_SINT8 - | DT_UINT16 - | DT_SINT16 - | DT_UINT32 - | DT_SINT32 - | DT_UINT64 - | DT_SINT64 - | DT_REAL32 - | DT_REAL64 - | DT_CHAR16 - | DT_STR - | DT_BOOLEAN - | DT_DATETIME - | DT_VOID - { raise StyleError.new(@name,@lineno,@line,"'void' is not a valid datatype") unless @style == :wmi } - ; - - objectRef - : className - { # WMI uses class names as data types (without REF ?!) - raise StyleError.new(@name,@lineno,@line,"Expected 'ref' keyword after classname '#{val[0]}'") unless @style == :wmi - result = CIM::ReferenceType.new val[0] - } - - | className REF - { result = CIM::ReferenceType.new val[0] } - ; - - parameterList_opt - : /* empty */ - | parameterList - ; - - parameterList - : parameter parameters - { result = val[1].unshift val[0] } - ; - - parameters - : /* empty */ - { result = [] } - | parameters "," parameter - { result = val[0] << val[2] } - ; - - parameter - : qualifierList_opt typespec parameterName array_opt parameterValue_opt - { if val[3] - type = CIM::Array.new val[3], val[1] - else - type = val[1] - end - result = CIM::Property.new(type,val[2],val[0]) - } - ; - - typespec - : dataType - | objectRef - ; - - parameterName - : IDENTIFIER - ; - - array_opt - : /* empty */ - | array - ; - - parameterValue_opt - : /* empty */ - | defaultValue - { raise "Default parameter value not allowed in syntax style '{@style}'" unless @style == :wmi } - ; - - array - : "[" positiveDecimalValue_opt "]" - { result = val[1] } - ; - - positiveDecimalValue_opt - : /* empty */ - { result = -1 } - | positiveDecimalValue - ; - - defaultValue_opt - : /* empty */ - | defaultValue - ; - - defaultValue - : "=" initializer - { result = val[1] } - ; - - initializer - : constantValue - | arrayInitializer - | referenceInitializer - ; - - arrayInitializer - : "{" constantValues "}" - { result = val[1] } - ; - - constantValues - : /* empty */ - | constantValue - { result = [ val[0] ] } - | constantValues "," constantValue - { result = val[0] << val[2] } - ; - - constantValue - : integerValue - | realValue - | charValue - | string - | booleanValue - | nullValue - | instance - { raise "Instance as property value not allowed in syntax style '{@style}'" unless @style == :wmi } - ; - - integerValue - : binaryValue - | octalValue - | decimalValue - | positiveDecimalValue - | hexValue - ; - - string - : stringValue - | string stringValue - { result = val[0] + val[1] } - ; - - referenceInitializer - : objectHandle - | aliasIdentifier - ; - - objectHandle - : namespace_opt modelPath - ; - - namespace_opt - : /* empty */ - | namespaceHandle ":" - ; - - namespaceHandle - : IDENTIFIER - ; - - /* - * Note - : structure depends on type of namespace - */ - - modelPath - : className "." keyValuePairList - ; - - keyValuePairList - : keyValuePair keyValuePairs - ; - - keyValuePairs - : /* empty */ - | keyValuePairs "," keyValuePair - ; - - keyValuePair - : keyname "=" initializer - ; - - keyname - : propertyName | referenceName - ; - -/*** - * qualifierDeclaration - * - */ - - qualifierDeclaration - /* 0 1 2 3 4 */ - : QUALIFIER qualifierName qualifierType scope defaultFlavor_opt ";" - { result = CIM::QualifierDeclaration.new( val[1], val[2][0], val[2][1], val[3], val[4]) } - ; - - defaultFlavor_opt - : /* empty */ - | defaultFlavor - ; - - qualifierName - : IDENTIFIER - | ASSOCIATION /* meta qualifier */ - | INDICATION /* meta qualifier */ - | REFERENCE /* Added in DSP0004 2.7.0 */ - | SCHEMA - ; - - /* [type, value] */ - qualifierType - : ":" dataType array_opt defaultValue_opt - { type = val[2].nil? ? val[1] : CIM::Array.new(val[2],val[1]) - result = [ type, val[3] ] - } - ; - - scope - : "," SCOPE "(" metaElements ")" - { result = CIM::QualifierScopes.new(val[3]) } - ; - - metaElements - : metaElement - { result = [ val[0] ] } - | metaElements "," metaElement - { result = val[0] << val[2] } - ; - - metaElement - : SCHEMA - | CLASS - | ASSOCIATION - | INDICATION - | QUALIFIER - | PROPERTY - | REFERENCE - | METHOD - | PARAMETER - | ANY - ; - - defaultFlavor - : "," FLAVOR "(" flavors ")" - { result = CIM::QualifierFlavors.new val[3] } - ; - - flavors - : flavor - { result = [ val[0] ] } - | flavors "," flavor - { result = val[0] << val[2] } - ; - -/*** - * instanceDeclaration - * - */ - - instanceDeclaration - : instance ";" - ; - - instance - : qualifierList_opt INSTANCE OF className alias_opt "{" valueInitializers "}" - ; - - valueInitializers - : valueInitializer - | valueInitializers valueInitializer - ; - - valueInitializer - : qualifierList_opt keyname "=" initializer ";" - | qualifierList_opt keyname ";" - { raise "Instance property '#{val[1]} must have a value" unless @style == :wmi } - ; - -end # class Parser - ----- header ---- - -# parser.rb - generated by racc - -require 'strscan' -require 'rubygems' -require 'cim' -require File.join(File.dirname(__FILE__), 'result') -require File.join(File.dirname(__FILE__), 'scanner') -require File.join(File.dirname(__FILE__), 'helper') - ----- inner ---- - -# -# Initialize MOF::Parser -# MOF::Parser.new options = {} -# -# options -> Hash of options -# :debug -> boolean -# :includes -> array of include dirs -# :style -> :cim or :wmi -# -def initialize options = {} - @yydebug = options[:debug] - @includes = options[:includes] || [] - @quiet = options[:quiet] - @style = options[:style] || :cim # default to style CIM v2.2 syntax - - @lineno = 1 - @file = nil - @iconv = nil - @eol = "\n" - @fname = nil - @fstack = [] - @in_comment = false - @seen_files = [] - @qualifiers = {} -end - -# -# Make options hash from argv -# -# returns [ files, options ] -# - - def self.argv_handler name, argv - files = [] - options = { :namespace => "" } - while argv.size > 0 - case opt = argv.shift - when "-h" - $stderr.puts "Ruby MOF compiler" - $stderr.puts "#{name} [-h] [-d] [-I <dir>] [<moffiles>]" - $stderr.puts "Compiles <moffile>" - $stderr.puts "\t-d debug" - $stderr.puts "\t-h this help" - $stderr.puts "\t-I <dir> include dir" - $stderr.puts "\t-f force" - $stderr.puts "\t-n <namespace>" - $stderr.puts "\t-o <output>" - $stderr.puts "\t-s <style> syntax style (wmi,cim)" - $stderr.puts "\t-q quiet" - $stderr.puts "\t<moffiles> file(s) to read (else use $stdin)" - exit 0 - when "-f" then options[:force] = true - when "-s" then options[:style] = argv.shift.to_sym - when "-d" then options[:debug] = true - when "-q" then options[:quiet] = true - when "-I" - options[:includes] ||= [] - dirname = argv.shift - unless File.directory?(dirname) - files << dirname - dirname = File.dirname(dirname) - end - options[:includes] << Pathname.new(dirname) - when "-n" then options[:namespace] = argv.shift - when "-o" then options[:output] = argv.shift - when /^-.+/ - $stderr.puts "Undefined option #{opt}" - else - files << opt - end - end - [ files, options ] - end - -include Helper -include Scanner - ----- footer ---- diff --git a/test/racc/assets/namae.y b/test/racc/assets/namae.y deleted file mode 100644 index 0378345fef..0000000000 --- a/test/racc/assets/namae.y +++ /dev/null @@ -1,302 +0,0 @@ -# -*- ruby -*- -# vi: set ft=ruby : - -# Copyright (C) 2012 President and Fellows of Harvard College -# Copyright (C) 2013-2014 Sylvester Keil -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -# EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# The views and conclusions contained in the software and documentation are -# those of the authors and should not be interpreted as representing official -# policies, either expressed or implied, of the copyright holder. - -class Namae::Parser - -token COMMA UWORD LWORD PWORD NICK AND APPELLATION TITLE SUFFIX - -expect 0 - -rule - - names : { result = [] } - | name { result = [val[0]] } - | names AND name { result = val[0] << val[2] } - - name : word { result = Name.new(:given => val[0]) } - | display_order - | honorific word { result = val[0].merge(:family => val[1]) } - | honorific display_order { result = val[1].merge(val[0]) } - | sort_order - - honorific : APPELLATION { result = Name.new(:appellation => val[0]) } - | TITLE { result = Name.new(:title => val[0]) } - - display_order : u_words word opt_suffices opt_titles - { - result = Name.new(:given => val[0], :family => val[1], - :suffix => val[2], :title => val[3]) - } - | u_words NICK last opt_suffices opt_titles - { - result = Name.new(:given => val[0], :nick => val[1], - :family => val[2], :suffix => val[3], :title => val[4]) - } - | u_words NICK von last opt_suffices opt_titles - { - result = Name.new(:given => val[0], :nick => val[1], - :particle => val[2], :family => val[3], - :suffix => val[4], :title => val[5]) - } - | u_words von last - { - result = Name.new(:given => val[0], :particle => val[1], - :family => val[2]) - } - | von last - { - result = Name.new(:particle => val[0], :family => val[1]) - } - - sort_order : last COMMA first - { - result = Name.new({ :family => val[0], :suffix => val[2][0], - :given => val[2][1] }, !!val[2][0]) - } - | von last COMMA first - { - result = Name.new({ :particle => val[0], :family => val[1], - :suffix => val[3][0], :given => val[3][1] }, !!val[3][0]) - } - | u_words von last COMMA first - { - result = Name.new({ :particle => val[0,2].join(' '), :family => val[2], - :suffix => val[4][0], :given => val[4][1] }, !!val[4][0]) - } - ; - - von : LWORD - | von LWORD { result = val.join(' ') } - | von u_words LWORD { result = val.join(' ') } - - last : LWORD | u_words - - first : opt_words { result = [nil,val[0]] } - | words opt_comma suffices { result = [val[2],val[0]] } - | suffices { result = [val[0],nil] } - | suffices COMMA words { result = [val[0],val[2]] } - - u_words : u_word - | u_words u_word { result = val.join(' ') } - - u_word : UWORD | PWORD - - words : word - | words word { result = val.join(' ') } - - opt_comma : /* empty */ | COMMA - opt_words : /* empty */ | words - - word : LWORD | UWORD | PWORD - - opt_suffices : /* empty */ | suffices - - suffices : SUFFIX - | suffices SUFFIX { result = val.join(' ') } - - opt_titles : /* empty */ | titles - - titles : TITLE - | titles TITLE { result = val.join(' ') } - ----- header -require 'singleton' -require 'strscan' - ----- inner - - include Singleton - - attr_reader :options, :input - - def initialize - @input, @options = StringScanner.new(''), { - :debug => false, - :prefer_comma_as_separator => false, - :comma => ',', - :stops => ',;', - :separator => /\s*(\band\b|\&|;)\s*/i, - :title => /\s*\b(sir|lord|count(ess)?|(gen|adm|col|maj|capt|cmdr|lt|sgt|cpl|pvt|prof|dr|md|ph\.?d)\.?)(\s+|$)/i, - :suffix => /\s*\b(JR|Jr|jr|SR|Sr|sr|[IVX]{2,})(\.|\b)/, - :appellation => /\s*\b((mrs?|ms|fr|hr)\.?|miss|herr|frau)(\s+|$)/i - } - end - - def debug? - options[:debug] || ENV['DEBUG'] - end - - def separator - options[:separator] - end - - def comma - options[:comma] - end - - def stops - options[:stops] - end - - def title - options[:title] - end - - def suffix - options[:suffix] - end - - def appellation - options[:appellation] - end - - def prefer_comma_as_separator? - options[:prefer_comma_as_separator] - end - - def parse(input) - parse!(input) - rescue => e - warn e.message if debug? - [] - end - - def parse!(string) - input.string = normalize(string) - reset - do_parse - end - - def normalize(string) - string = string.strip - string - end - - def reset - @commas, @words, @initials, @suffices, @yydebug = 0, 0, 0, 0, debug? - self - end - - private - - def stack - @vstack || @racc_vstack || [] - end - - def last_token - stack[-1] - end - - def consume_separator - return next_token if seen_separator? - @commas, @words, @initials, @suffices = 0, 0, 0, 0 - [:AND, :AND] - end - - def consume_comma - @commas += 1 - [:COMMA, :COMMA] - end - - def consume_word(type, word) - @words += 1 - - case type - when :UWORD - @initials += 1 if word =~ /^[[:upper:]]+\b/ - when :SUFFIX - @suffices += 1 - end - - [type, word] - end - - def seen_separator? - !stack.empty? && last_token == :AND - end - - def suffix? - !@suffices.zero? || will_see_suffix? - end - - def will_see_suffix? - input.peek(8).to_s.strip.split(/\s+/)[0] =~ suffix - end - - def will_see_initial? - input.peek(6).to_s.strip.split(/\s+/)[0] =~ /^[[:upper:]]+\b/ - end - - def seen_full_name? - prefer_comma_as_separator? && @words > 1 && - (@initials > 0 || !will_see_initial?) && !will_see_suffix? - end - - def next_token - case - when input.nil?, input.eos? - nil - when input.scan(separator) - consume_separator - when input.scan(/\s*#{comma}\s*/) - if @commas.zero? && !seen_full_name? || @commas == 1 && suffix? - consume_comma - else - consume_separator - end - when input.scan(/\s+/) - next_token - when input.scan(title) - consume_word(:TITLE, input.matched.strip) - when input.scan(suffix) - consume_word(:SUFFIX, input.matched.strip) - when input.scan(appellation) - [:APPELLATION, input.matched.strip] - when input.scan(/((\\\w+)?\{[^\}]*\})*[[:upper:]][^\s#{stops}]*/) - consume_word(:UWORD, input.matched) - when input.scan(/((\\\w+)?\{[^\}]*\})*[[:lower:]][^\s#{stops}]*/) - consume_word(:LWORD, input.matched) - when input.scan(/(\\\w+)?\{[^\}]*\}[^\s#{stops}]*/) - consume_word(:PWORD, input.matched) - when input.scan(/('[^'\n]+')|("[^"\n]+")/) - consume_word(:NICK, input.matched[1...-1]) - else - raise ArgumentError, - "Failed to parse name #{input.string.inspect}: unmatched data at offset #{input.pos}" - end - end - - def on_error(tid, value, stack) - raise ArgumentError, - "Failed to parse name: unexpected '#{value}' at #{stack.inspect}" - end - -# -*- racc -*- diff --git a/test/racc/assets/nasl.y b/test/racc/assets/nasl.y deleted file mode 100644 index c7b8e46551..0000000000 --- a/test/racc/assets/nasl.y +++ /dev/null @@ -1,626 +0,0 @@ -################################################################################ -# Copyright (c) 2011-2014, Tenable Network Security -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -################################################################################ - -class Nasl::Grammar - -preclow - right ASS_EQ ADD_EQ SUB_EQ MUL_EQ DIV_EQ MOD_EQ SLL_EQ SRA_EQ SRL_EQ - left OR - left AND - left CMP_LT CMP_GT CMP_EQ CMP_NE CMP_GE CMP_LE SUBSTR_EQ SUBSTR_NE REGEX_EQ REGEX_NE - left BIT_OR - left BIT_XOR - left AMPERSAND - left BIT_SRA BIT_SRL BIT_SLL - left ADD SUB - left MUL DIV MOD - right NOT - right UMINUS BIT_NOT - right EXP - right INCR DECR -prechigh - -# Tell the parser generator that we don't wish to use the result variable in the -# action section of rules. Instead, the result of the rule will be the value of -# evaluating the action block. -options no_result_var - -# Tell the parser generator that we expect one shift/reduce conflict due to the -# well-known dangling else problem. We could make the grammar solve this -# problem, but this is how the NASL YACC file solves it, so we'll follow suit. -expect 1 - -rule - ############################################################################## - # Aggregate Statements - ############################################################################## - - start : roots - { val[0] } - | /* Blank */ - { [] } - ; - - roots : root roots - { [val[0]] + val[1] } - | root - { [val[0]] } - ; - - root : COMMENT export - { c(*val) } - | export - { val[0] } - | COMMENT function - { c(*val) } - | function - { val[0] } - | statement - { val[0] } - ; - - statement : simple - { val[0] } - | compound - { val[0] } - ; - - ############################################################################## - # Root Statements - ############################################################################## - - export : EXPORT function - { n(:Export, *val) } - ; - - function : FUNCTION ident LPAREN params RPAREN block - { n(:Function, *val) } - | FUNCTION ident LPAREN RPAREN block - { n(:Function, *val) } - ; - - simple : assign - { val[0] } - | break - { val[0] } - | call - { val[0] } - | continue - { val[0] } - | decr - { val[0] } - | empty - { val[0] } - | COMMENT global - { c(*val) } - | global - { val[0] } - | import - { val[0] } - | include - { val[0] } - | incr - { val[0] } - | local - { val[0] } - | rep - { val[0] } - | return - { val[0] } - ; - - compound : block - { val[0] } - | for - { val[0] } - | foreach - { val[0] } - | if - { val[0] } - | repeat - { val[0] } - | while - { val[0] } - ; - - ############################################################################## - # Simple Statements - ############################################################################## - - assign : assign_exp SEMICOLON - { val[0] } - ; - - break : BREAK SEMICOLON - { n(:Break, *val) } - ; - - call : call_exp SEMICOLON - { val[0] } - ; - - continue : CONTINUE SEMICOLON - { n(:Continue, *val) } - ; - - decr : decr_exp SEMICOLON - { val[0] } - ; - - empty : SEMICOLON - { n(:Empty, *val) } - ; - - global : GLOBAL var_decls SEMICOLON - { n(:Global, *val) } - ; - - incr : incr_exp SEMICOLON - { val[0] } - ; - - import : IMPORT LPAREN string RPAREN SEMICOLON - { n(:Import, *val) } - ; - - include : INCLUDE LPAREN string RPAREN SEMICOLON - { n(:Include, *val) } - ; - - local : LOCAL var_decls SEMICOLON - { n(:Local, *val) } - ; - - rep : call_exp REP expr SEMICOLON - { n(:Repetition, *val[0..-1]) } - ; - - return : RETURN expr SEMICOLON - { n(:Return, *val) } - | RETURN ref SEMICOLON - { n(:Return, *val) } - | RETURN SEMICOLON - { n(:Return, *val) } - ; - - ############################################################################## - # Compound Statements - ############################################################################## - - block : LBRACE statements RBRACE - { n(:Block, *val) } - | LBRACE RBRACE - { n(:Block, *val) } - ; - - for : FOR LPAREN field SEMICOLON expr SEMICOLON field RPAREN statement - { n(:For, *val) } - ; - - foreach : FOREACH ident LPAREN expr RPAREN statement - { n(:Foreach, val[0], val[1], val[3], val[5]) } - | FOREACH LPAREN ident IN expr RPAREN statement - { n(:Foreach, val[0], val[2], val[4], val[6]) } - ; - - if : IF LPAREN expr RPAREN statement - { n(:If, *val) } - | IF LPAREN expr RPAREN statement ELSE statement - { n(:If, *val) } - ; - - repeat : REPEAT statement UNTIL expr SEMICOLON - { n(:Repeat, *val) } - ; - - while : WHILE LPAREN expr RPAREN statement - { n(:While, *val) } - ; - - ############################################################################## - # Expressions - ############################################################################## - - assign_exp : lval ASS_EQ expr - { n(:Assignment, *val) } - | lval ASS_EQ ref - { n(:Assignment, *val) } - | lval ADD_EQ expr - { n(:Assignment, *val) } - | lval SUB_EQ expr - { n(:Assignment, *val) } - | lval MUL_EQ expr - { n(:Assignment, *val) } - | lval DIV_EQ expr - { n(:Assignment, *val) } - | lval MOD_EQ expr - { n(:Assignment, *val) } - | lval SRL_EQ expr - { n(:Assignment, *val) } - | lval SRA_EQ expr - { n(:Assignment, *val) } - | lval SLL_EQ expr - { n(:Assignment, *val) } - ; - - call_exp : lval LPAREN args RPAREN - { n(:Call, *val) } - | lval LPAREN RPAREN - { n(:Call, *val) } - ; - - decr_exp : DECR lval - { n(:Decrement, val[0]) } - | lval DECR - { n(:Decrement, val[0]) } - ; - - incr_exp : INCR lval - { n(:Increment, val[0]) } - | lval INCR - { n(:Increment, val[0]) } - ; - - expr : LPAREN expr RPAREN - { n(:Expression, *val) } - | expr AND expr - { n(:Expression, *val) } - | NOT expr - { n(:Expression, *val) } - | expr OR expr - { n(:Expression, *val) } - | expr ADD expr - { n(:Expression, *val) } - | expr SUB expr - { n(:Expression, *val) } - | SUB expr =UMINUS - { n(:Expression, *val) } - | BIT_NOT expr - { n(:Expression, *val) } - | expr MUL expr - { n(:Expression, *val) } - | expr EXP expr - { n(:Expression, *val) } - | expr DIV expr - { n(:Expression, *val) } - | expr MOD expr - { n(:Expression, *val) } - | expr AMPERSAND expr - { n(:Expression, *val) } - | expr BIT_XOR expr - { n(:Expression, *val) } - | expr BIT_OR expr - { n(:Expression, *val) } - | expr BIT_SRA expr - { n(:Expression, *val) } - | expr BIT_SRL expr - { n(:Expression, *val) } - | expr BIT_SLL expr - { n(:Expression, *val) } - | incr_exp - { val[0] } - | decr_exp - { val[0] } - | expr SUBSTR_EQ expr - { n(:Expression, *val) } - | expr SUBSTR_NE expr - { n(:Expression, *val) } - | expr REGEX_EQ expr - { n(:Expression, *val) } - | expr REGEX_NE expr - { n(:Expression, *val) } - | expr CMP_LT expr - { n(:Expression, *val) } - | expr CMP_GT expr - { n(:Expression, *val) } - | expr CMP_EQ expr - { n(:Expression, *val) } - | expr CMP_NE expr - { n(:Expression, *val) } - | expr CMP_GE expr - { n(:Expression, *val) } - | expr CMP_LE expr - { n(:Expression, *val) } - | assign_exp - { val[0] } - | string - { val[0] } - | call_exp - { val[0] } - | lval - { val[0] } - | ip - { val[0] } - | int - { val[0] } - | undef - { val[0] } - | list_expr - { val[0] } - | array_expr - { val[0] } - ; - - ############################################################################## - # Named Components - ############################################################################## - - arg : ident COLON expr - { n(:Argument, *val) } - | ident COLON ref - { n(:Argument, *val) } - | expr - { n(:Argument, *val) } - | ref - { n(:Argument, *val) } - ; - - kv_pair : string COLON expr - { n(:KeyValuePair, *val) } - | int COLON expr - { n(:KeyValuePair, *val) } - | ident COLON expr - { n(:KeyValuePair, *val) } - | string COLON ref - { n(:KeyValuePair, *val) } - | int COLON ref - { n(:KeyValuePair, *val) } - | ident COLON ref - { n(:KeyValuePair, *val) } - ; - - kv_pairs : kv_pair COMMA kv_pairs - { [val[0]] + val[2] } - | kv_pair COMMA - { [val[0]] } - | kv_pair - { [val[0]] } - ; - - lval : ident indexes - { n(:Lvalue, *val) } - | ident - { n(:Lvalue, *val) } - ; - - ref : AT_SIGN ident - { n(:Reference, val[1]) } - ; - - ############################################################################## - # Anonymous Components - ############################################################################## - - args : arg COMMA args - { [val[0]] + val[2] } - | arg - { [val[0]] } - ; - - array_expr : LBRACE kv_pairs RBRACE - { n(:Array, *val) } - | LBRACE RBRACE - { n(:Array, *val) } - ; - - field : assign_exp - { val[0] } - | call_exp - { val[0] } - | decr_exp - { val[0] } - | incr_exp - { val[0] } - | /* Blank */ - { nil } - ; - - index : LBRACK expr RBRACK - { val[1] } - | PERIOD ident - { val[1] } - ; - - indexes : index indexes - { [val[0]] + val[1] } - | index - { [val[0]] } - ; - - list_elem : expr - { val[0] } - | ref - { val[0] } - ; - - list_elems : list_elem COMMA list_elems - { [val[0]] + val[2] } - | list_elem - { [val[0]] } - ; - - list_expr : LBRACK list_elems RBRACK - { n(:List, *val) } - | LBRACK RBRACK - { n(:List, *val) } - ; - - param : AMPERSAND ident - { n(:Parameter, val[1], 'reference') } - | ident - { n(:Parameter, val[0], 'value') } - ; - - params : param COMMA params - { [val[0]] + val[2] } - | param - { [val[0]] } - ; - - statements : statement statements - { [val[0]] + val[1] } - | statement - { [val[0]] } - ; - - var_decl : ident ASS_EQ expr - { n(:Assignment, *val) } - | ident ASS_EQ ref - { n(:Assignment, *val) } - | ident - { val[0] } - ; - - var_decls : var_decl COMMA var_decls - { [val[0]] + val[2] } - | var_decl - { [val[0]] } - ; - - ############################################################################## - # Literals - ############################################################################## - - ident : IDENT - { n(:Identifier, *val) } - | REP - { n(:Identifier, *val) } - | IN - { n(:Identifier, *val) } - ; - - int : INT_DEC - { n(:Integer, *val) } - | INT_HEX - { n(:Integer, *val) } - | INT_OCT - { n(:Integer, *val) } - | FALSE - { n(:Integer, *val) } - | TRUE - { n(:Integer, *val) } - ; - - ip : int PERIOD int PERIOD int PERIOD int - { n(:Ip, *val) } - - string : DATA - { n(:String, *val) } - | STRING - { n(:String, *val) } - ; - - undef : UNDEF - { n(:Undefined, *val) } - ; -end - ----- header ---- - -require 'nasl/parser/tree' - -require 'nasl/parser/argument' -require 'nasl/parser/array' -require 'nasl/parser/assigment' -require 'nasl/parser/block' -require 'nasl/parser/break' -require 'nasl/parser/call' -require 'nasl/parser/comment' -require 'nasl/parser/continue' -require 'nasl/parser/decrement' -require 'nasl/parser/empty' -require 'nasl/parser/export' -require 'nasl/parser/expression' -require 'nasl/parser/for' -require 'nasl/parser/foreach' -require 'nasl/parser/function' -require 'nasl/parser/global' -require 'nasl/parser/identifier' -require 'nasl/parser/if' -require 'nasl/parser/import' -require 'nasl/parser/include' -require 'nasl/parser/increment' -require 'nasl/parser/integer' -require 'nasl/parser/ip' -require 'nasl/parser/key_value_pair' -require 'nasl/parser/list' -require 'nasl/parser/local' -require 'nasl/parser/lvalue' -require 'nasl/parser/parameter' -require 'nasl/parser/reference' -require 'nasl/parser/repeat' -require 'nasl/parser/repetition' -require 'nasl/parser/return' -require 'nasl/parser/string' -require 'nasl/parser/undefined' -require 'nasl/parser/while' - ----- inner ---- - -def n(cls, *args) - begin - Nasl.const_get(cls).new(@tree, *args) - rescue - puts "An exception occurred during the creation of a #{cls} instance." - puts - puts "The arguments passed to the constructor were:" - puts args - puts - puts @tok.last.context - puts - raise - end -end - -def c(*args) - n(:Comment, *args) - args[1] -end - -def on_error(type, value, stack) - raise ParseException, "The language's grammar does not permit #{value.name} to appear here", value.context -end - -def next_token - @tok = @tkz.get_token - - if @first && @tok.first == :COMMENT - n(:Comment, @tok.last) - @tok = @tkz.get_token - end - @first = false - - return @tok -end - -def parse(env, code, path) - @first = true - @tree = Tree.new(env) - @tkz = Tokenizer.new(code, path) - @tree.concat(do_parse) -end - ----- footer ---- diff --git a/test/racc/assets/newsyn.y b/test/racc/assets/newsyn.y deleted file mode 100644 index 5b670c966a..0000000000 --- a/test/racc/assets/newsyn.y +++ /dev/null @@ -1,25 +0,0 @@ - -class A - - preclow - left preclow prechigh right left nonassoc token - right preclow prechigh right left nonassoc token - nonassoc preclow prechigh right left nonassoc token - prechigh - - convert - left 'a' - right 'b' - preclow 'c' - nonassoc 'd' - preclow 'e' - prechigh 'f' - end - -rule - - left: right nonassoc preclow prechigh - - right: A B C - -end diff --git a/test/racc/assets/noend.y b/test/racc/assets/noend.y deleted file mode 100644 index 5aa0670be0..0000000000 --- a/test/racc/assets/noend.y +++ /dev/null @@ -1,4 +0,0 @@ -class MyParser -rule -input: A B C -end diff --git a/test/racc/assets/nokogiri-css.y b/test/racc/assets/nokogiri-css.y deleted file mode 100644 index 24dfbf3b1b..0000000000 --- a/test/racc/assets/nokogiri-css.y +++ /dev/null @@ -1,255 +0,0 @@ -class Nokogiri::CSS::Parser - -token FUNCTION INCLUDES DASHMATCH LBRACE HASH PLUS GREATER S STRING IDENT -token COMMA NUMBER PREFIXMATCH SUFFIXMATCH SUBSTRINGMATCH TILDE NOT_EQUAL -token SLASH DOUBLESLASH NOT EQUAL RPAREN LSQUARE RSQUARE HAS - -rule - selector - : selector COMMA simple_selector_1toN { - result = [val.first, val.last].flatten - } - | prefixless_combinator_selector { result = val.flatten } - | optional_S simple_selector_1toN { result = [val.last].flatten } - ; - combinator - : PLUS { result = :DIRECT_ADJACENT_SELECTOR } - | GREATER { result = :CHILD_SELECTOR } - | TILDE { result = :FOLLOWING_SELECTOR } - | DOUBLESLASH { result = :DESCENDANT_SELECTOR } - | SLASH { result = :CHILD_SELECTOR } - ; - simple_selector - : element_name hcap_0toN { - result = if val[1].nil? - val.first - else - Node.new(:CONDITIONAL_SELECTOR, [val.first, val[1]]) - end - } - | function - | function pseudo { - result = Node.new(:CONDITIONAL_SELECTOR, val) - } - | function attrib { - result = Node.new(:CONDITIONAL_SELECTOR, val) - } - | hcap_1toN { - result = Node.new(:CONDITIONAL_SELECTOR, - [Node.new(:ELEMENT_NAME, ['*']), val.first] - ) - } - ; - prefixless_combinator_selector - : combinator simple_selector_1toN { - result = Node.new(val.first, [nil, val.last]) - } - ; - simple_selector_1toN - : simple_selector combinator simple_selector_1toN { - result = Node.new(val[1], [val.first, val.last]) - } - | simple_selector S simple_selector_1toN { - result = Node.new(:DESCENDANT_SELECTOR, [val.first, val.last]) - } - | simple_selector - ; - class - : '.' IDENT { result = Node.new(:CLASS_CONDITION, [val[1]]) } - ; - element_name - : namespaced_ident - | '*' { result = Node.new(:ELEMENT_NAME, val) } - ; - namespaced_ident - : namespace '|' IDENT { - result = Node.new(:ELEMENT_NAME, - [[val.first, val.last].compact.join(':')] - ) - } - | IDENT { - name = @namespaces.key?('xmlns') ? "xmlns:#{val.first}" : val.first - result = Node.new(:ELEMENT_NAME, [name]) - } - ; - namespace - : IDENT { result = val[0] } - | - ; - attrib - : LSQUARE attrib_name attrib_val_0or1 RSQUARE { - result = Node.new(:ATTRIBUTE_CONDITION, - [val[1]] + (val[2] || []) - ) - } - | LSQUARE function attrib_val_0or1 RSQUARE { - result = Node.new(:ATTRIBUTE_CONDITION, - [val[1]] + (val[2] || []) - ) - } - | LSQUARE NUMBER RSQUARE { - # Non standard, but hpricot supports it. - result = Node.new(:PSEUDO_CLASS, - [Node.new(:FUNCTION, ['nth-child(', val[1]])] - ) - } - ; - attrib_name - : namespace '|' IDENT { - result = Node.new(:ELEMENT_NAME, - [[val.first, val.last].compact.join(':')] - ) - } - | IDENT { - # Default namespace is not applied to attributes. - # So we don't add prefix "xmlns:" as in namespaced_ident. - result = Node.new(:ELEMENT_NAME, [val.first]) - } - ; - function - : FUNCTION RPAREN { - result = Node.new(:FUNCTION, [val.first.strip]) - } - | FUNCTION expr RPAREN { - result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten) - } - | FUNCTION nth RPAREN { - result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten) - } - | NOT expr RPAREN { - result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten) - } - | HAS selector RPAREN { - result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten) - } - ; - expr - : NUMBER COMMA expr { result = [val.first, val.last] } - | STRING COMMA expr { result = [val.first, val.last] } - | IDENT COMMA expr { result = [val.first, val.last] } - | NUMBER - | STRING - | IDENT # even, odd - { - case val[0] - when 'even' - result = Node.new(:NTH, ['2','n','+','0']) - when 'odd' - result = Node.new(:NTH, ['2','n','+','1']) - when 'n' - result = Node.new(:NTH, ['1','n','+','0']) - else - # This is not CSS standard. It allows us to support this: - # assert_xpath("//a[foo(., @href)]", @parser.parse('a:foo(@href)')) - # assert_xpath("//a[foo(., @a, b)]", @parser.parse('a:foo(@a, b)')) - # assert_xpath("//a[foo(., a, 10)]", @parser.parse('a:foo(a, 10)')) - result = val - end - } - ; - nth - : NUMBER IDENT PLUS NUMBER # 5n+3 -5n+3 - { - if val[1] == 'n' - result = Node.new(:NTH, val) - else - raise Racc::ParseError, "parse error on IDENT '#{val[1]}'" - end - } - | IDENT PLUS NUMBER { # n+3, -n+3 - if val[0] == 'n' - val.unshift("1") - result = Node.new(:NTH, val) - elsif val[0] == '-n' - val[0] = 'n' - val.unshift("-1") - result = Node.new(:NTH, val) - else - raise Racc::ParseError, "parse error on IDENT '#{val[1]}'" - end - } - | NUMBER IDENT { # 5n, -5n, 10n-1 - n = val[1] - if n[0, 2] == 'n-' - val[1] = 'n' - val << "-" - # b is contained in n as n is the string "n-b" - val << n[2, n.size] - result = Node.new(:NTH, val) - elsif n == 'n' - val << "+" - val << "0" - result = Node.new(:NTH, val) - else - raise Racc::ParseError, "parse error on IDENT '#{val[1]}'" - end - } - ; - pseudo - : ':' function { - result = Node.new(:PSEUDO_CLASS, [val[1]]) - } - | ':' IDENT { result = Node.new(:PSEUDO_CLASS, [val[1]]) } - ; - hcap_0toN - : hcap_1toN - | - ; - hcap_1toN - : attribute_id hcap_1toN { - result = Node.new(:COMBINATOR, val) - } - | class hcap_1toN { - result = Node.new(:COMBINATOR, val) - } - | attrib hcap_1toN { - result = Node.new(:COMBINATOR, val) - } - | pseudo hcap_1toN { - result = Node.new(:COMBINATOR, val) - } - | negation hcap_1toN { - result = Node.new(:COMBINATOR, val) - } - | attribute_id - | class - | attrib - | pseudo - | negation - ; - attribute_id - : HASH { result = Node.new(:ID, val) } - ; - attrib_val_0or1 - : eql_incl_dash IDENT { result = [val.first, val[1]] } - | eql_incl_dash STRING { result = [val.first, val[1]] } - | - ; - eql_incl_dash - : EQUAL { result = :equal } - | PREFIXMATCH { result = :prefix_match } - | SUFFIXMATCH { result = :suffix_match } - | SUBSTRINGMATCH { result = :substring_match } - | NOT_EQUAL { result = :not_equal } - | INCLUDES { result = :includes } - | DASHMATCH { result = :dash_match } - ; - negation - : NOT negation_arg RPAREN { - result = Node.new(:NOT, [val[1]]) - } - ; - negation_arg - : element_name - | element_name hcap_1toN - | hcap_1toN - ; - optional_S - : S - | - ; -end - ----- header - -require 'nokogiri/css/parser_extras' diff --git a/test/racc/assets/nonass.y b/test/racc/assets/nonass.y deleted file mode 100644 index b9a35a2626..0000000000 --- a/test/racc/assets/nonass.y +++ /dev/null @@ -1,41 +0,0 @@ -# -# nonassoc test -# - -class P - -preclow - nonassoc N - left P -prechigh - -rule - -target : exp -exp : exp N exp - | exp P exp - | T - -end - ----- inner - - def parse - @src = [[:T,'T'], [:N,'N'], [:T,'T'], [:N,'N'], [:T,'T']] - do_parse - end - - def next_token - @src.shift - end - ----- footer - -begin - P.new.parse -rescue ParseError - exit 0 -else - $stderr.puts 'parse error not raised: nonassoc not work' - exit 1 -end diff --git a/test/racc/assets/normal.y b/test/racc/assets/normal.y deleted file mode 100644 index 96ae352c82..0000000000 --- a/test/racc/assets/normal.y +++ /dev/null @@ -1,27 +0,0 @@ - -class Testp - - convert - A '2' - B '3' - end - - prechigh - left B - preclow - -rule - -/* comment */ - target: A B C nonterminal { action "string" == /regexp/o - 1 /= 3 } - ; # comment - - nonterminal: A '+' B = A; - -/* end */ -end - ----- driver - - # driver is old name diff --git a/test/racc/assets/norule.y b/test/racc/assets/norule.y deleted file mode 100644 index e50a4b3472..0000000000 --- a/test/racc/assets/norule.y +++ /dev/null @@ -1,4 +0,0 @@ - -class A -rule -end diff --git a/test/racc/assets/nullbug1.y b/test/racc/assets/nullbug1.y deleted file mode 100644 index 4b267ba0ea..0000000000 --- a/test/racc/assets/nullbug1.y +++ /dev/null @@ -1,25 +0,0 @@ -# -# number of conflicts must be ZERO. -# - -class T - -rule - -targ : dummy - | a b c - -dummy : V v - -V : E e - | F f - | - ; - -E : - ; - -F : - ; - -end diff --git a/test/racc/assets/nullbug2.y b/test/racc/assets/nullbug2.y deleted file mode 100644 index 0c1d43bf3e..0000000000 --- a/test/racc/assets/nullbug2.y +++ /dev/null @@ -1,15 +0,0 @@ -# -# number of conflicts must be ZERO. -# - -class A -rule - targ: operation voidhead - | variable - - voidhead : void B - void: - - operation: A - variable : A -end diff --git a/test/racc/assets/opal.y b/test/racc/assets/opal.y deleted file mode 100644 index ae6a5a6bdd..0000000000 --- a/test/racc/assets/opal.y +++ /dev/null @@ -1,1807 +0,0 @@ -# Copyright (C) 2013 by Adam Beynon -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -class Opal::Parser - -token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS - kTHEN kELSIF kELSE kCASE kWHEN kWHILE kUNTIL kFOR kBREAK kNEXT - kREDO kRETRY kIN kDO kDO_COND kDO_BLOCK kDO_LAMBDA kRETURN kYIELD kSUPER - kSELF kNIL kTRUE kFALSE kAND kOR kNOT kIF_MOD kUNLESS_MOD kWHILE_MOD - kUNTIL_MOD kRESCUE_MOD kALIAS kDEFINED klBEGIN klEND k__LINE__ - k__FILE__ k__ENCODING__ tIDENTIFIER tFID tGVAR tIVAR tCONSTANT - tLABEL tCVAR tNTH_REF tBACK_REF tSTRING_CONTENT tINTEGER tFLOAT - tREGEXP_END tUPLUS tUMINUS tUMINUS_NUM tPOW tCMP tEQ tEQQ tNEQ tGEQ tLEQ tANDOP - tOROP tMATCH tNMATCH tJSDOT tDOT tDOT2 tDOT3 tAREF tASET tLSHFT tRSHFT - tCOLON2 tCOLON3 tOP_ASGN tASSOC tLPAREN tLPAREN2 tRPAREN tLPAREN_ARG - ARRAY_BEG tRBRACK tLBRACE tLBRACE_ARG tSTAR tSTAR2 tAMPER tAMPER2 - tTILDE tPERCENT tDIVIDE tPLUS tMINUS tLT tGT tPIPE tBANG tCARET - tLCURLY tRCURLY tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG - tWORDS_BEG tAWORDS_BEG tSTRING_DBEG tSTRING_DVAR tSTRING_END tSTRING - tSYMBOL tNL tEH tCOLON tCOMMA tSPACE tSEMI tLAMBDA tLAMBEG - tLBRACK2 tLBRACK tJSLBRACK tDSTAR - -prechigh - right tBANG tTILDE tUPLUS - right tPOW - right tUMINUS_NUM tUMINUS - left tSTAR2 tDIVIDE tPERCENT - left tPLUS tMINUS - left tLSHFT tRSHFT - left tAMPER2 - left tPIPE tCARET - left tGT tGEQ tLT tLEQ - nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH - left tANDOP - left tOROP - nonassoc tDOT2 tDOT3 - right tEH tCOLON - left kRESCUE_MOD - right tEQL tOP_ASGN - nonassoc kDEFINED - right kNOT - left kOR kAND - nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD - nonassoc tLBRACE_ARG - nonassoc tLOWEST -preclow - -rule - - program: top_compstmt - - top_compstmt: top_stmts opt_terms - { - result = new_compstmt val[0] - } - - top_stmts: # none - { - result = new_block - } - | top_stmt - { - result = new_block val[0] - } - | top_stmts terms top_stmt - { - val[0] << val[2] - result = val[0] - } - - top_stmt: stmt - | klBEGIN tLCURLY top_compstmt tRCURLY - { - result = val[2] - } - - bodystmt: compstmt opt_rescue opt_else opt_ensure - { - result = new_body(val[0], val[1], val[2], val[3]) - } - - compstmt: stmts opt_terms - { - result = new_compstmt val[0] - } - - stmts: # none - { - result = new_block - } - | stmt - { - result = new_block val[0] - } - | stmts terms stmt - { - val[0] << val[2] - result = val[0] - } - - stmt: kALIAS fitem - { - lexer.lex_state = :expr_fname - } - fitem - { - result = new_alias(val[0], val[1], val[3]) - } - | kALIAS tGVAR tGVAR - { - result = s(:valias, value(val[1]).to_sym, value(val[2]).to_sym) - } - | kALIAS tGVAR tBACK_REF - | kALIAS tGVAR tNTH_REF - { - result = s(:valias, value(val[1]).to_sym, value(val[2]).to_sym) - } - | kUNDEF undef_list - { - result = val[1] - } - | stmt kIF_MOD expr_value - { - result = new_if(val[1], val[2], val[0], nil) - } - | stmt kUNLESS_MOD expr_value - { - result = new_if(val[1], val[2], nil, val[0]) - } - | stmt kWHILE_MOD expr_value - { - result = new_while(val[1], val[2], val[0]) - } - | stmt kUNTIL_MOD expr_value - { - result = new_until(val[1], val[2], val[0]) - } - | stmt kRESCUE_MOD stmt - { - result = new_rescue_mod(val[1], val[0], val[2]) - } - | klEND tLCURLY compstmt tRCURLY - | lhs tEQL command_call - { - result = new_assign(val[0], val[1], val[2]) - } - | mlhs tEQL command_call - { - result = s(:masgn, val[0], s(:to_ary, val[2])) - } - | var_lhs tOP_ASGN command_call - { - result = new_op_asgn val[1], val[0], val[2] - } - | primary_value tLBRACK2 aref_args tRBRACK tOP_ASGN command_call - | primary_value tJSLBRACK aref_args tRBRACK tOP_ASGN command_call - | primary_value tDOT tIDENTIFIER tOP_ASGN command_call - { - result = s(:op_asgn2, val[0], op_to_setter(val[2]), value(val[3]).to_sym, val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN command_call - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call - | backref tOP_ASGN command_call - | lhs tEQL mrhs - { - result = new_assign val[0], val[1], s(:svalue, val[2]) - } - | mlhs tEQL arg_value - { - result = s(:masgn, val[0], s(:to_ary, val[2])) - } - | mlhs tEQL mrhs - { - result = s(:masgn, val[0], val[2]) - } - | expr - - expr: command_call - | expr kAND expr - { - result = s(:and, val[0], val[2]) - } - | expr kOR expr - { - result = s(:or, val[0], val[2]) - } - | kNOT expr - { - result = new_unary_call(['!', []], val[1]) - } - | tBANG command_call - { - result = new_unary_call(val[0], val[1]) - } - | arg - - expr_value: expr - - command_call: command - | block_command - | kRETURN call_args - { - result = new_return(val[0], val[1]) - } - | kBREAK call_args - { - result = new_break(val[0], val[1]) - } - | kNEXT call_args - { - result = new_next(val[0], val[1]) - } - - block_command: block_call - | block_call tJSDOT operation2 command_args - | block_call tDOT operation2 command_args - | block_call tCOLON2 operation2 command_args - - cmd_brace_block: tLBRACE_ARG opt_block_var compstmt tRCURLY - - command: operation command_args =tLOWEST - { - result = new_call(nil, val[0], val[1]) - } - | operation command_args cmd_brace_block - | primary_value tJSDOT operation2 command_args =tLOWEST - { - result = new_js_call(val[0], val[2], val[3]) - } - | primary_value tJSDOT operation2 command_args cmd_brace_block - | primary_value tDOT operation2 command_args =tLOWEST - { - result = new_call(val[0], val[2], val[3]) - } - | primary_value tDOT operation2 command_args cmd_brace_block - | primary_value tCOLON2 operation2 command_args =tLOWEST - { - result = new_call(val[0], val[2], val[3]) - } - | primary_value tCOLON2 operation2 command_args cmd_brace_block - | kSUPER command_args - { - result = new_super(val[0], val[1]) - } - | kYIELD command_args - { - result = new_yield val[1] - } - - mlhs: mlhs_basic - { - result = val[0] - } - | tLPAREN mlhs_entry tRPAREN - { - result = val[1] - } - - mlhs_entry: mlhs_basic - { - result = val[0] - } - | tLPAREN mlhs_entry tRPAREN - { - result = val[1] - } - - mlhs_basic: mlhs_head - { - result = val[0] - } - | mlhs_head mlhs_item - { - result = val[0] << val[1] - } - | mlhs_head tSTAR mlhs_node - { - result = val[0] << s(:splat, val[2]) - } - | mlhs_head tSTAR mlhs_node tCOMMA mlhs_post - | mlhs_head tSTAR - { - result = val[0] << s(:splat) - } - | mlhs_head tSTAR tCOMMA mlhs_post - | tSTAR mlhs_node - { - result = s(:array, s(:splat, val[1])) - } - | tSTAR - { - result = s(:array, s(:splat)) - } - | tSTAR tCOMMA mlhs_post - - mlhs_item: mlhs_node - { - result = val[0] - } - | tLPAREN mlhs_entry tRPAREN - { - result = val[1] - } - - mlhs_head: mlhs_item tCOMMA - { - result = s(:array, val[0]) - } - | mlhs_head mlhs_item tCOMMA - { - result = val[0] << val[1] - } - - mlhs_post: mlhs_item - | mlhs_post tCOMMA mlhs_item - - mlhs_node: variable - { - result = new_assignable val[0] - } - | primary_value tLBRACK2 aref_args tRBRACK - { - args = val[2] ? val[2] : [] - result = s(:attrasgn, val[0], :[]=, s(:arglist, *args)) - } - | primary_value tDOT tIDENTIFIER - { - result = new_call val[0], val[2], [] - } - | primary_value tCOLON2 tIDENTIFIER - | primary_value tDOT tCONSTANT - | primary_value tCOLON2 tCONSTANT - | tCOLON3 tCONSTANT - | backref - - lhs: variable - { - result = new_assignable val[0] - } - | primary_value tJSLBRACK aref_args tRBRACK - { - result = new_js_attrasgn(val[0], val[2]) - } - | primary_value tLBRACK2 aref_args tRBRACK - { - result = new_attrasgn(val[0], :[]=, val[2]) - } - | primary_value tDOT tIDENTIFIER - { - result = new_attrasgn(val[0], op_to_setter(val[2])) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = new_attrasgn(val[0], op_to_setter(val[2])) - } - | primary_value tDOT tCONSTANT - { - result = new_attrasgn(val[0], op_to_setter(val[2])) - } - | primary_value tCOLON2 tCONSTANT - { - result = new_colon2(val[0], val[1], val[2]) - } - | tCOLON3 tCONSTANT - { - result = new_colon3(val[0], val[1]) - } - | backref - - cname: tCONSTANT - - cpath: tCOLON3 cname - { - result = new_colon3(val[0], val[1]) - } - | cname - { - result = new_const(val[0]) - } - | primary_value tCOLON2 cname - { - result = new_colon2(val[0], val[1], val[2]) - } - - fname: tIDENTIFIER - | tCONSTANT - | tFID - | op - { - lexer.lex_state = :expr_end - result = val[0] - } - | reswords - { - lexer.lex_state = :expr_end - result = val[0] - } - - fitem: fname - { - result = new_sym(val[0]) - } - | symbol - - undef_list: fitem - { - result = s(:undef, val[0]) - } - | undef_list tCOMMA fitem - { - result = val[0] << val[2] - } - - op: tPIPE | tCARET | tAMPER2 | tCMP | tEQ | tEQQ - | tMATCH | tNMATCH | tGT | tGEQ | tLT | tLEQ - | tNEQ | tLSHFT | tRSHFT | tPLUS | tMINUS | tSTAR2 - | tSTAR | tDIVIDE | tPERCENT | tPOW | tBANG | tTILDE - | tUPLUS | tUMINUS | tAREF | tASET | tBACK_REF2 - - reswords: k__LINE__ | k__FILE__ | klBEGIN | klEND | kALIAS | kAND - | kBEGIN | kBREAK | kCASE | kCLASS | kDEF | kDEFINED - | kDO | kELSE | kELSIF | kEND | kENSURE | kFALSE - | kFOR | kIN | kMODULE | kNEXT | kNIL | kNOT - | kOR | kREDO | kRESCUE | kRETRY | kRETURN | kSELF - | kSUPER | kTHEN | kTRUE | kUNDEF | kWHEN | kYIELD - | kIF_MOD | kUNLESS_MOD | kWHILE_MOD | kUNTIL_MOD | kRESCUE_MOD - | kIF | kWHILE | kUNTIL | kUNLESS - - arg: lhs tEQL arg - { - result = new_assign(val[0], val[1], val[2]) - } - | lhs tEQL arg kRESCUE_MOD arg - { - result = new_assign val[0], val[1], s(:rescue_mod, val[2], val[4]) - } - | var_lhs tOP_ASGN arg - { - result = new_op_asgn val[1], val[0], val[2] - } - | primary_value tLBRACK2 aref_args tRBRACK tOP_ASGN arg - { - result = new_op_asgn1(val[0], val[2], val[4], val[5]) - } - | primary_value tJSLBRACK aref_args tRBRACK tOP_ASGN arg - { - raise ".JS[...] #{val[4]} is not supported" - } - | primary_value tDOT tIDENTIFIER tOP_ASGN arg - { - result = s(:op_asgn2, val[0], op_to_setter(val[2]), value(val[3]).to_sym, val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN arg - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg - | primary_value tCOLON2 tCONSTANT tOP_ASGN arg - | tCOLON3 tCONSTANT tOP_ASGN arg - | backref tOP_ASGN arg - | arg tDOT2 arg - { - result = new_irange(val[0], val[1], val[2]) - } - | arg tDOT3 arg - { - result = new_erange(val[0], val[1], val[2]) - } - | arg tPLUS arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tMINUS arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tSTAR2 arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tDIVIDE arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tPERCENT arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tPOW arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | '-@NUM' tINTEGER tPOW arg - { - result = new_call new_binary_call(new_int(val[1]), val[2], val[3]), [:"-@", []], [] - } - | '-@NUM' tFLOAT tPOW arg - { - result = new_call new_binary_call(new_float(val[1]), val[2], val[3]), [:"-@", []], [] - } - | tUPLUS arg - { - result = new_call val[1], [:"+@", []], [] - if [:int, :float].include? val[1].type - result = val[1] - end - } - | tUMINUS arg - { - result = new_call val[1], [:"-@", []], [] - if val[1].type == :int - val[1][1] = -val[1][1] - result = val[1] - elsif val[1].type == :float - val[1][1] = -val[1][1].to_f - result = val[1] - end - } - | arg tPIPE arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tCARET arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tAMPER2 arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tCMP arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tGT arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tGEQ arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tLT arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tLEQ arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tEQ arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tEQQ arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tNEQ arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tMATCH arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tNMATCH arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | tBANG arg - { - result = new_unary_call(val[0], val[1]) - } - | tTILDE arg - { - result = new_unary_call(val[0], val[1]) - } - | arg tLSHFT arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tRSHFT arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tANDOP arg - { - result = new_and(val[0], val[1], val[2]) - } - | arg tOROP arg - { - result = new_or(val[0], val[1], val[2]) - } - | kDEFINED opt_nl arg - { - result = s(:defined, val[2]) - } - | arg tEH arg tCOLON arg - { - result = new_if(val[1], val[0], val[2], val[4]) - } - | primary - - arg_value: arg - - aref_args: none - { - result = nil - } - | command opt_nl - { - result = [val[0]] - } - | args trailer - { - result = val[0] - } - | args tCOMMA assocs trailer - { - val[0] << s(:hash, *val[2]) - result = val[0] - } - | assocs trailer - { - result = [s(:hash, *val[0])] - } - - paren_args: tLPAREN2 opt_call_args rparen - { - result = val[1] - } - - rparen: opt_nl tRPAREN - - opt_paren_args: none - { - result = [] - } - | paren_args - - opt_call_args: none - { - result = [] - } - | call_args - | args tCOMMA - { - result = val[0] - } - | args tCOMMA assocs tCOMMA - { - result = val[0] - result << new_hash(nil, val[2], nil) - } - | assocs tCOMMA - { - result = [new_hash(nil, val[0], nil)] - } - - call_args: command - { - result = [val[0]] - } - | args opt_block_arg - { - result = val[0] - add_block_pass val[0], val[1] - } - | assocs opt_block_arg - { - result = [new_hash(nil, val[0], nil)] - add_block_pass result, val[1] - } - | args tCOMMA assocs opt_block_arg - { - result = val[0] - result << new_hash(nil, val[2], nil) - result << val[3] if val[3] - } - | block_arg - { - result = [] - add_block_pass result, val[0] - } - - call_args2: arg_value tCOMMA args opt_block_arg - | block_arg - - command_args: { - lexer.cmdarg_push 1 - } - open_args - { - lexer.cmdarg_pop - result = val[1] - } - - open_args: call_args - | tLPAREN_ARG tRPAREN - { - result = nil - } - | tLPAREN_ARG call_args2 tRPAREN - { - result = val[1] - } - - block_arg: tAMPER arg_value - { - result = new_block_pass(val[0], val[1]) - } - - opt_block_arg: tCOMMA block_arg - { - result = val[1] - } - | # none - { - result = nil - } - - args: arg_value - { - result = [val[0]] - } - | tSTAR arg_value - { - result = [new_splat(val[0], val[1])] - } - | args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << new_splat(val[2], val[3]) - } - - mrhs: args tCOMMA arg_value - { - val[0] << val[2] - result = s(:array, *val[0]) - } - | args tCOMMA tSTAR arg_value - { - val[0] << s(:splat, val[3]) - result = s(:array, *val[0]) - } - | tSTAR arg_value - { - result = s(:splat, val[1]) - } - - primary: literal - | strings - | xstring - | regexp - | words - | awords - | var_ref - | backref - | tFID - | kBEGIN - { - result = lexer.line - } - bodystmt kEND - { - result = s(:begin, val[2]) - } - | tLPAREN_ARG expr opt_nl tRPAREN - { - result = val[1] - } - | tLPAREN compstmt tRPAREN - { - result = new_paren(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = new_colon2(val[0], val[1], val[2]) - } - | tCOLON3 tCONSTANT - { - result = new_colon3(val[0], val[1]) - } - | primary_value tLBRACK2 aref_args tRBRACK - { - result = new_call val[0], [:[], []], val[2] - } - | primary_value tJSLBRACK aref_args tRBRACK - { - result = new_js_call val[0], [:[], []], val[2] - } - | tLBRACK aref_args tRBRACK - { - result = new_array(val[0], val[1], val[2]) - } - | tLBRACE assoc_list tRCURLY - { - result = new_hash(val[0], val[1], val[2]) - } - | kRETURN - { - result = new_return(val[0]) - } - | kYIELD tLPAREN2 call_args tRPAREN - { - result = new_yield val[2] - } - | kYIELD tLPAREN2 tRPAREN - { - result = s(:yield) - } - | kYIELD - { - result = s(:yield) - } - | kDEFINED opt_nl tLPAREN2 expr tRPAREN - { - result = s(:defined, val[3]) - } - | kNOT tLPAREN2 expr tRPAREN - { - result = new_unary_call(['!', []], val[2]) - } - | kNOT tLPAREN2 tRPAREN - { - result = new_unary_call(['!', []], new_nil(val[0])) - } - | operation brace_block - { - result = new_call(nil, val[0], []) - result << val[1] - } - | method_call - | method_call brace_block - { - val[0] << val[1] - result = val[0] - } - | tLAMBDA lambda - { - result = val[1] - } - | kIF expr_value then compstmt if_tail kEND - { - result = new_if(val[0], val[1], val[3], val[4]) - } - | kUNLESS expr_value then compstmt opt_else kEND - { - result = new_if(val[0], val[1], val[4], val[3]) - } - | kWHILE - { - lexer.cond_push 1 - result = lexer.line - } - expr_value do - { - lexer.cond_pop - } - compstmt kEND - { - result = s(:while, val[2], val[5]) - } - | kUNTIL - { - lexer.cond_push 1 - result = lexer.line - } - expr_value do - { - lexer.cond_pop - } - compstmt kEND - { - result = s(:until, val[2], val[5]) - } - | kCASE expr_value opt_terms case_body kEND - { - result = s(:case, val[1], *val[3]) - } - | kCASE opt_terms case_body kEND - { - result = s(:case, nil, *val[2]) - } - | kCASE opt_terms kELSE compstmt kEND - { - result = s(:case, nil, val[3]) - } - | kFOR for_var kIN - { - lexer.cond_push 1 - result = lexer.line - } - expr_value do - { - lexer.cond_pop - } - compstmt kEND - { - result = s(:for, val[4], val[1], val[7]) - } - | kCLASS cpath superclass - { - # ... - } - bodystmt kEND - { - result = new_class val[0], val[1], val[2], val[4], val[5] - } - | kCLASS tLSHFT - { - result = lexer.line - } - expr term - { - # ... - } - bodystmt kEND - { - result = new_sclass(val[0], val[3], val[6], val[7]) - } - | kMODULE - { - result = lexer.line - } - cpath - { - # ... - } - bodystmt kEND - { - result = new_module(val[0], val[2], val[4], val[5]) - } - | kDEF fname - { - push_scope - lexer.lex_state = :expr_endfn - } - f_arglist bodystmt kEND - { - result = new_def(val[0], nil, val[1], val[3], val[4], val[5]) - pop_scope - } - | kDEF singleton dot_or_colon - { - lexer.lex_state = :expr_fname - } - fname - { - push_scope - lexer.lex_state = :expr_endfn - } - f_arglist bodystmt kEND - { - result = new_def(val[0], val[1], val[4], val[6], val[7], val[8]) - pop_scope - } - | kBREAK - { - result = new_break(val[0]) - } - | kNEXT - { - result = s(:next) - } - | kREDO - { - result = s(:redo) - } - | kRETRY - - primary_value: primary - - then: term - | tCOLON - | kTHEN - | term kTHEN - - do: term - | tCOLON - | kDO_COND - - lambda: f_larglist lambda_body - { - result = new_call nil, [:lambda, []], [] - result << new_iter(val[0], val[1]) - } - - f_larglist: tLPAREN2 block_param tRPAREN - { - result = val[1] - } - | tLPAREN2 tRPAREN - { - result = nil - } - | block_param - | none - - lambda_body: tLAMBEG compstmt tRCURLY - { - result = val[1] - } - | kDO_LAMBDA compstmt kEND - { - result = val[1] - } - - if_tail: opt_else - { - result = val[0] - } - | kELSIF expr_value then compstmt if_tail - { - result = new_if(val[0], val[1], val[3], val[4]) - } - - opt_else: none - | kELSE compstmt - { - result = val[1] - } - - f_block_optarg: f_block_opt - { - result = s(:block, val[0]) - } - | f_block_optarg tCOMMA f_block_opt - { - val[0] << val[2] - result = val[0] - } - - f_block_opt: tIDENTIFIER tEQL primary_value - { - result = new_assign(new_assignable(new_ident( - val[0])), val[1], val[2]) - } - - opt_block_var: none - | tPIPE tPIPE - { - result = nil - } - | tOROP - { - result = nil - } - | tPIPE block_param tPIPE - { - result = val[1] - } - - block_args_tail: f_block_arg - { - result = val[0] - } - -opt_block_args_tail: tCOMMA block_args_tail - { - result = val[1] - } - | none - { - nil - } - - block_param: f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg opt_block_args_tail - { - result = new_block_args(val[0], val[2], val[4], val[5]) - } - | f_arg tCOMMA f_block_optarg opt_block_args_tail - { - result = new_block_args(val[0], val[2], nil, val[3]) - } - | f_arg tCOMMA f_rest_arg opt_block_args_tail - { - result = new_block_args(val[0], nil, val[2], val[3]) - } - | f_arg tCOMMA - { - result = new_block_args(val[0], nil, nil, nil) - } - | f_arg opt_block_args_tail - { - result = new_block_args(val[0], nil, nil, val[1]) - } - | f_block_optarg tCOMMA f_rest_arg opt_block_args_tail - { - result = new_block_args(nil, val[0], val[2], val[3]) - } - | f_block_optarg opt_block_args_tail - { - result = new_block_args(nil, val[0], nil, val[1]) - } - | f_rest_arg opt_block_args_tail - { - result = new_block_args(nil, nil, val[0], val[1]) - } - | block_args_tail - { - result = new_block_args(nil, nil, nil, val[0]) - } - - do_block: kDO_BLOCK - { - push_scope :block - result = lexer.line - } - opt_block_var compstmt kEND - { - result = new_iter val[2], val[3] - pop_scope - } - - block_call: command do_block - { - val[0] << val[1] - result = val[0] - } - | block_call tJSDOT operation2 opt_paren_args - | block_call tDOT operation2 opt_paren_args - | block_call tCOLON2 operation2 opt_paren_args - - method_call: operation paren_args - { - result = new_call(nil, val[0], val[1]) - } - | primary_value tDOT operation2 opt_paren_args - { - result = new_call(val[0], val[2], val[3]) - } - | primary_value tJSDOT operation2 opt_paren_args - { - result = new_js_call(val[0], val[2], val[3]) - } - | primary_value tDOT paren_args - { - result = new_call(val[0], [:call, []], val[2]) - } - | primary_value tCOLON2 operation2 paren_args - { - result = new_call(val[0], val[2], val[3]) - } - | primary_value tCOLON2 operation3 - { - result = new_call(val[0], val[2]) - } - | kSUPER paren_args - { - result = new_super(val[0], val[1]) - } - | kSUPER - { - result = new_super(val[0], nil) - } - - brace_block: tLCURLY - { - push_scope :block - result = lexer.line - } - opt_block_var compstmt tRCURLY - { - result = new_iter val[2], val[3] - pop_scope - } - | kDO - { - push_scope :block - result = lexer.line - } - opt_block_var compstmt kEND - { - result = new_iter val[2], val[3] - pop_scope - } - - case_body: kWHEN - { - result = lexer.line - } - args then compstmt cases - { - part = s(:when, s(:array, *val[2]), val[4]) - result = [part] - result.push(*val[5]) if val[5] - } - - cases: opt_else - { - result = [val[0]] - } - | case_body - - opt_rescue: kRESCUE exc_list exc_var then compstmt opt_rescue - { - exc = val[1] || s(:array) - exc << new_assign(val[2], val[2], s(:gvar, '$!'.intern)) if val[2] - result = [s(:resbody, exc, val[4])] - result.push val[5].first if val[5] - } - | # none - { - result = nil - } - - exc_list: arg_value - { - result = s(:array, val[0]) - } - | mrhs - | none - - exc_var: tASSOC lhs - { - result = val[1] - } - | none - { - result = nil - } - - opt_ensure: kENSURE compstmt - { - result = val[1].nil? ? s(:nil) : val[1] - } - | none - - literal: numeric - | symbol - | dsym - - strings: string - { - result = new_str val[0] - } - - string: string1 - | string string1 - { - result = str_append val[0], val[1] - } - - string1: tSTRING_BEG string_contents tSTRING_END - { - result = val[1] - } - | tSTRING - { - result = s(:str, value(val[0])) - } - - xstring: tXSTRING_BEG xstring_contents tSTRING_END - { - result = new_xstr(val[0], val[1], val[2]) - } - - regexp: tREGEXP_BEG xstring_contents tREGEXP_END - { - result = new_regexp val[1], val[2] - } - - words: tWORDS_BEG tSPACE tSTRING_END - { - result = s(:array) - } - | tWORDS_BEG word_list tSTRING_END - { - result = val[1] - } - - word_list: none - { - result = s(:array) - } - | word_list word tSPACE - { - part = val[1] - part = s(:dstr, "", val[1]) if part.type == :evstr - result = val[0] << part - } - - word: string_content - { - result = val[0] - } - | word string_content - { - result = val[0].concat([val[1]]) - } - - awords: tAWORDS_BEG tSPACE tSTRING_END - { - result = s(:array) - } - | tAWORDS_BEG qword_list tSTRING_END - { - result = val[1] - } - - qword_list: none - { - result = s(:array) - } - | qword_list tSTRING_CONTENT tSPACE - { - result = val[0] << s(:str, value(val[1])) - } - - string_contents: none - { - result = nil - } - | string_contents string_content - { - result = str_append val[0], val[1] - } - -xstring_contents: none - { - result = nil - } - | xstring_contents string_content - { - result = str_append val[0], val[1] - } - - string_content: tSTRING_CONTENT - { - result = new_str_content(val[0]) - } - | tSTRING_DVAR - { - result = lexer.strterm - lexer.strterm = nil - } - string_dvar - { - lexer.strterm = val[1] - result = new_evstr(val[2]) - } - | tSTRING_DBEG - { - lexer.cond_push 0 - lexer.cmdarg_push 0 - result = lexer.strterm - lexer.strterm = nil - lexer.lex_state = :expr_beg - } - compstmt tRCURLY - { - lexer.strterm = val[1] - lexer.cond_lexpop - lexer.cmdarg_lexpop - result = new_evstr(val[2]) - } - - string_dvar: tGVAR - { - result = new_gvar(val[0]) - } - | tIVAR - { - result = new_ivar(val[0]) - } - | tCVAR - { - result = new_cvar(val[0]) - } - | backref - - - symbol: tSYMBEG sym - { - result = new_sym(val[1]) - lexer.lex_state = :expr_end - } - | tSYMBOL - { - result = new_sym(val[0]) - } - - sym: fname - | tIVAR - | tGVAR - | tCVAR - - dsym: tSYMBEG xstring_contents tSTRING_END - { - result = new_dsym val[1] - } - - numeric: tINTEGER - { - result = new_int(val[0]) - } - | tFLOAT - { - result = new_float(val[0]) - } - | '-@NUM' tINTEGER =tLOWEST - { - result = negate_num(new_int(val[1])) - } - | '-@NUM' tFLOAT =tLOWEST - { - result = negate_num(new_float(val[1])) - } - | '+@NUM' tINTEGER =tLOWEST - { - result = new_int(val[1]) - } - | '+@NUM' tFLOAT =tLOWEST - { - result = new_float(val[1]) - } - - variable: tIDENTIFIER - { - result = new_ident(val[0]) - } - | tIVAR - { - result = new_ivar(val[0]) - } - | tGVAR - { - result = new_gvar(val[0]) - } - | tCONSTANT - { - result = new_const(val[0]) - } - | tCVAR - { - result = new_cvar(val[0]) - } - | kNIL - { - result = new_nil(val[0]) - } - | kSELF - { - result = new_self(val[0]) - } - | kTRUE - { - result = new_true(val[0]) - } - | kFALSE - { - result = new_false(val[0]) - } - | k__FILE__ - { - result = new___FILE__(val[0]) - } - | k__LINE__ - { - result = new___LINE__(val[0]) - } - - var_ref: variable - { - result = new_var_ref(val[0]) - } - - var_lhs: variable - { - result = new_assignable val[0] - } - - backref: tNTH_REF - { - result = s(:nth_ref, value(val[0])) - } - | tBACK_REF - - superclass: term - { - result = nil - } - | tLT expr_value term - { - result = val[1] - } - | error term - { - result = nil - } - - f_arglist: tLPAREN2 f_args opt_nl tRPAREN - { - result = val[1] - lexer.lex_state = :expr_beg - } - | f_args term - { - result = val[0] - lexer.lex_state = :expr_beg - } - - kwrest_mark: tPOW - | tDSTAR - - f_kwrest: kwrest_mark tIDENTIFIER - { - result = new_kwrestarg(val[1]) - } - | kwrest_mark - { - result = new_kwrestarg() - } - - f_label: tLABEL - { - result = new_sym(val[0]) - } - - f_kw: f_label arg_value - { - result = new_kwoptarg(val[0], val[1]) - } - | f_label - { - result = new_kwarg(val[0]) - } - - f_kwarg: f_kw - { - result = [val[0]] - } - | f_kwarg tCOMMA f_kw - { - result = val[0] - result << val[2] - } - - args_tail: f_kwarg tCOMMA f_kwrest opt_f_block_arg - { - result = new_args_tail(val[0], val[2], val[3]) - } - | f_kwarg opt_f_block_arg - { - result = new_args_tail(val[0], nil, val[1]) - } - | f_kwrest opt_f_block_arg - { - result = new_args_tail(nil, val[0], val[1]) - } - | f_block_arg - { - result = new_args_tail(nil, nil, val[0]) - } - - opt_args_tail: tCOMMA args_tail - { - result = val[1] - } - | # none - { - result = new_args_tail(nil, nil, nil) - } - - f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_args_tail - { - result = new_args(val[0], val[2], val[4], val[5]) - } - | f_arg tCOMMA f_optarg opt_args_tail - { - result = new_args(val[0], val[2], nil, val[3]) - } - | f_arg tCOMMA f_rest_arg opt_args_tail - { - result = new_args(val[0], nil, val[2], val[3]) - } - | f_arg opt_args_tail - { - result = new_args(val[0], nil, nil, val[1]) - } - | f_optarg tCOMMA f_rest_arg opt_args_tail - { - result = new_args(nil, val[0], val[2], val[3]) - } - | f_optarg opt_args_tail - { - result = new_args(nil, val[0], nil, val[1]) - } - | f_rest_arg opt_args_tail - { - result = new_args(nil, nil, val[0], val[1]) - } - | args_tail - { - result = new_args(nil, nil, nil, val[0]) - } - | # none - { - result = new_args(nil, nil, nil, nil) - } - - f_norm_arg: f_bad_arg - | tIDENTIFIER - { - result = value(val[0]).to_sym - scope.add_local result - } - - f_bad_arg: tCONSTANT - { - raise 'formal argument cannot be a constant' - } - | tIVAR - { - raise 'formal argument cannot be an instance variable' - } - | tCVAR - { - raise 'formal argument cannot be a class variable' - } - | tGVAR - { - raise 'formal argument cannot be a global variable' - } - - f_arg_item: f_norm_arg - { - result = val[0] - } - | tLPAREN f_margs tRPAREN - { - result = val[1] - } - - for_var: lhs - | mlhs - - f_marg: f_norm_arg - { - result = s(:lasgn, val[0]) - } - | tLPAREN f_margs tRPAREN - - f_marg_list: f_marg - { - result = s(:array, val[0]) - } - | f_marg_list tCOMMA f_marg - { - val[0] << val[2] - result = val[0] - } - - f_margs: f_marg_list - | f_marg_list tCOMMA tSTAR f_norm_arg - | f_marg_list tCOMMA tSTAR - | tSTAR f_norm_arg - | tSTAR - - f_arg: f_arg_item - { - result = [val[0]] - } - | f_arg tCOMMA f_arg_item - { - val[0] << val[2] - result = val[0] - } - - f_opt: tIDENTIFIER tEQL arg_value - { - result = new_assign(new_assignable(new_ident(val[0])), val[1], val[2]) - } - - f_optarg: f_opt - { - result = s(:block, val[0]) - } - | f_optarg tCOMMA f_opt - { - result = val[0] - val[0] << val[2] - } - - restarg_mark: tSTAR2 - | tSTAR - - f_rest_arg: restarg_mark tIDENTIFIER - { - result = "*#{value(val[1])}".to_sym - } - | restarg_mark - { - result = :"*" - } - - blkarg_mark: tAMPER2 - | tAMPER - - f_block_arg: blkarg_mark tIDENTIFIER - { - result = "&#{value(val[1])}".to_sym - } - - opt_f_block_arg: tCOMMA f_block_arg - { - result = val[1] - } - | # none - { - result = nil - } - - singleton: var_ref - { - result = val[0] - } - | tLPAREN2 expr opt_nl tRPAREN - { - result = val[1] - } - - assoc_list: # none - { - result = [] - } - | assocs trailer - { - result = val[0] - } - - assocs: assoc - { - result = val[0] - } - | assocs tCOMMA assoc - { - result = val[0].push(*val[2]) - } - - assoc: arg_value tASSOC arg_value - { - result = [val[0], val[2]] - } - | tLABEL arg_value - { - result = [new_sym(val[0]), val[1]] - } - - operation: tIDENTIFIER - | tCONSTANT - | tFID - - operation2: tIDENTIFIER - | tCONSTANT - | tFID - | op - - operation3: tIDENTIFIER - | tFID - | op - - dot_or_colon: tDOT - | tCOLON2 - - opt_terms: # none - | terms - - opt_nl: # none - | tNL - - trailer: # none - | tNL - | tCOMMA - - term: tSEMI - | tNL - - terms: term - | terms tSEMI - - none: # none - { - result = nil - } -end - ----- inner diff --git a/test/racc/assets/opt.y b/test/racc/assets/opt.y deleted file mode 100644 index a011953a51..0000000000 --- a/test/racc/assets/opt.y +++ /dev/null @@ -1,123 +0,0 @@ -# -# check options working -# - -class Calcp - - prechigh - left '*' '/' - left '+' '-' - preclow - - convert - NUMBER 'Number' - end - - options no_omit_action_call no_result_var - -rule - - target : exp | /* none */ { 0 } ; - - exp : exp '+' exp { chk(val[0] + val[2]) } - | exp '-' exp { chk(val[0] - val[2]) } - | exp '*' exp { chk(val[0] * val[2]) } - | exp '/' exp { chk(val[0] / val[2]) } - | '(' { $emb = true } exp ')' - { - raise 'must not happen' unless $emb - val[2] - } - | '-' NUMBER { -val[1] } - | NUMBER - ; - -end - -----header - -class Number; end - -----inner - - def parse( src ) - @src = src - do_parse - end - - def next_token - @src.shift - end - - def initialize - @yydebug = true - end - - def chk( i ) - # p i - i - end - -----footer - -$parser = Calcp.new -$test_number = 1 - -def chk( src, ans ) - result = $parser.parse(src) - raise "test #{$test_number} failed" unless result == ans - $test_number += 1 -end - -chk( - [ [Number, 9], - [false, false], - [false, false] ], 9 -) - -chk( - [ [Number, 5], - ['*', nil], - [Number, 1], - ['-', nil], - [Number, 1], - ['*', nil], - [Number, 8], - [false, false], - [false, false] ], -3 -) - -chk( - [ [Number, 5], - ['+', nil], - [Number, 2], - ['-', nil], - [Number, 5], - ['+', nil], - [Number, 2], - ['-', nil], - [Number, 5], - [false, false], - [false, false] ], -1 -) - -chk( - [ ['-', nil], - [Number, 4], - [false, false], - [false, false] ], -4 -) - -chk( - [ [Number, 7], - ['*', nil], - ['(', nil], - [Number, 4], - ['+', nil], - [Number, 3], - [')', nil], - ['-', nil], - [Number, 9], - [false, false], - [false, false] ], 40 -) diff --git a/test/racc/assets/percent.y b/test/racc/assets/percent.y deleted file mode 100644 index 68d63583ca..0000000000 --- a/test/racc/assets/percent.y +++ /dev/null @@ -1,35 +0,0 @@ -class ScannerChecker -rule - target: A - { - i = 7 - i %= 4 - raise 'assert failed' unless i == 3 - tmp = %-This is percent string.- - raise 'assert failed' unless tmp == 'This is percent string.' - a = 5; b = 3 - assert_equal(2,(a%b)) #A - # assert_equal(2,(a %b)) # is %-string - assert_equal(2,(a% b)) #B - assert_equal(2,(a % b)) #C - } -end - ----- inner ---- - - def parse - @q = [[:A, 'A'], [false, '$']] - do_parse - end - - def next_token - @q.shift - end - - def assert_equal( expect, real ) - raise "expect #{expect.inspect} but #{real.inspect}" unless expect == real - end - ----- footer ---- - -parser = ScannerChecker.new.parse diff --git a/test/racc/assets/php_serialization.y b/test/racc/assets/php_serialization.y deleted file mode 100644 index 99f78f2081..0000000000 --- a/test/racc/assets/php_serialization.y +++ /dev/null @@ -1,98 +0,0 @@ -# MIT License -# See https://github.com/divoxx/ruby-php-serialization/blob/master/LICENSE.txt - -class PhpSerialization::Unserializer -rule - - data : null ';' { @object = val[0] } - | bool ';' { @object = val[0] } - | integer ';' { @object = val[0] } - | double ';' { @object = val[0] } - | string ';' { @object = val[0] } - | assoc_array { @object = val[0] } - | object { @object = val[0] } - ; - - null : 'N' { result = nil } - ; - - bool : 'b' ':' NUMBER { result = Integer(val[2]) > 0 } - ; - - integer : 'i' ':' NUMBER { result = Integer(val[2]) } - ; - - double : 'd' ':' NUMBER { result = Float(val[2]) } - ; - - string : 's' ':' NUMBER ':' STRING { result = val[4] } - ; - - object : 'O' ':' NUMBER ':' STRING ':' NUMBER ':' '{' attribute_list '}' - { - if eval("defined?(#{val[4]})") - result = Object.const_get(val[4]).new - - val[9].each do |(attr_name, value)| - # Protected and private attributes will have a \0..\0 prefix - attr_name = attr_name.gsub(/\A\\0[^\\]+\\0/, '') - result.instance_variable_set("@#{attr_name}", value) - end - else - klass_name = val[4].gsub(/^Struct::/, '') - attr_names, values = [], [] - - val[9].each do |(attr_name, value)| - # Protected and private attributes will have a \0..\0 prefix - attr_names << attr_name.gsub(/\A\\0[^\\]+\\0/, '') - values << value - end - - result = Struct.new(klass_name, *attr_names).new(*values) - result.instance_variable_set("@_php_class", klass_name) - end - } - ; - - attribute_list : attribute_list attribute { result = val[0] << val[1] } - | { result = [] } - ; - - attribute : data data { result = val } - ; - - assoc_array : 'a' ':' NUMBER ':' '{' attribute_list '}' - { - # Checks if the keys are a sequence of integers - idx = -1 - arr = val[5].all? { |(k,v)| k == (idx += 1) } - - if arr - result = val[5].map { |(k,v)| v } - else - result = Hash[val[5]] - end - } - ; - -end - ----- header ---- -require 'php_serialization/tokenizer' - ----- inner ---- - def initialize(tokenizer_klass = Tokenizer) - @tokenizer_klass = tokenizer_klass - end - - def run(string) - @tokenizer = @tokenizer_klass.new(string) - yyparse(@tokenizer, :each) - return @object - ensure - @tokenizer = nil - end - - def next_token - @tokenizer.next_token - end diff --git a/test/racc/assets/recv.y b/test/racc/assets/recv.y deleted file mode 100644 index b6e849dda9..0000000000 --- a/test/racc/assets/recv.y +++ /dev/null @@ -1,97 +0,0 @@ -# s/r 5, r/r 10 -class A -rule - - content: RecvH received - ; - - datetime: day - ; - - msgid: '<' spec '>'; - - day: - | ATOM ',' - ; - - received: recvitem_list recvdatetime - ; - - recvitem_list: - | recvitem_list recvitem - ; - - recvitem: by | via | with | for ; - - by: - | BY domain - ; - - via: - | VIA ATOM - ; - - with: WITH ATOM - ; - - for: - | FOR addr - ; - - recvdatetime: - | ';' datetime - ; - - addr: mbox | group ; - - mboxes: mbox - | mboxes ',' mbox - ; - - mbox: spec - | routeaddr - | phrase routeaddr - ; - - group: phrase ':' mboxes ';' - ; - - routeaddr: '<' route spec '>' - | '<' spec '>' - ; - - route: at_domains ':' ; - - at_domains: '@' domain - | at_domains ',' '@' domain - ; - - spec: local '@' domain - | local - ; - - local: word - | local '.' word - ; - - domain: domword - | domain '.' domword - ; - - domword: atom - | DOMLIT - | DIGIT - ; - - phrase: word - | phrase word - ; - - word: atom - | QUOTED - | DIGIT - ; - - atom: ATOM | FROM | BY | VIA | WITH | ID | FOR ; - -end diff --git a/test/racc/assets/riml.y b/test/racc/assets/riml.y deleted file mode 100644 index 1d99b0fdb8..0000000000 --- a/test/racc/assets/riml.y +++ /dev/null @@ -1,665 +0,0 @@ -# Copyright (c) 2012-2014 by Luke Gruber -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be included -# in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class Riml::Parser - -token IF ELSE ELSEIF THEN UNLESS END -token WHILE UNTIL BREAK CONTINUE -token TRY CATCH FINALLY -token FOR IN -token DEF DEF_BANG SPLAT_PARAM SPLAT_ARG CALL BUILTIN_COMMAND # such as echo "hi" -token CLASS NEW DEFM DEFM_BANG SUPER -token RIML_FILE_COMMAND RIML_CLASS_COMMAND -token RETURN -token NEWLINE -token NUMBER -token STRING_D STRING_S # single- and double-quoted -token EX_LITERAL -token REGEXP -token TRUE FALSE -token LET UNLET UNLET_BANG IDENTIFIER -token DICT_VAL # like dict.key, 'key' is a DICT_VAL -token SCOPE_MODIFIER SCOPE_MODIFIER_LITERAL SPECIAL_VAR_PREFIX -token FINISH - -prechigh - right '!' - left '*' '/' '%' - left '+' '-' '.' - left '>' '>#' '>?' '<' '<#' '<?' '>=' '>=#' '>=?' '<=' '<=#' '<=?' - left '==' '==?' '==#' '=~' '=~?' '=~#' '!~' '!~?' '!~#' '!=' '!=?' '!=#' - left IS ISNOT - left '&&' - left '||' - right '?' - right '=' '+=' '-=' '.=' - left ',' - left IF UNLESS -preclow - -# All rules -rule - - Root: - /* nothing */ { result = make_node(val) { |_| Riml::Nodes.new([]) } } - | Terminator { result = make_node(val) { |_| Riml::Nodes.new([]) } } - | Statements { result = val[0] } - ; - - # any list of expressions - Statements: - Statement { result = make_node(val) { |v| Riml::Nodes.new([ v[0] ]) } } - | Statements Terminator Statement { result = val[0] << val[2] } - | Statements Terminator { result = val[0] } - | Terminator Statements { result = make_node(val) { |v| Riml::Nodes.new(v[1]) } } - ; - - # All types of expressions in Riml - Statement: - ExplicitCall { result = val[0] } - | Def { result = val[0] } - | Return { result = val[0] } - | UnletVariable { result = val[0] } - | ExLiteral { result = val[0] } - | For { result = val[0] } - | While { result = val[0] } - | Until { result = val[0] } - | Try { result = val[0] } - | ClassDefinition { result = val[0] } - | LoopKeyword { result = val[0] } - | EndScript { result = val[0] } - | RimlFileCommand { result = val[0] } - | RimlClassCommand { result = val[0] } - | MultiAssign { result = val[0] } - | If { result = val[0] } - | Unless { result = val[0] } - | Expression { result = val[0] } - ; - - Expression: - ExpressionWithoutDictLiteral { result = val[0] } - | Dictionary { result = val[0] } - | Dictionary DictGetWithDotLiteral { result = make_node(val) { |v| Riml::DictGetDotNode.new(v[0], v[1]) } } - | BinaryOperator { result = val[0] } - | Ternary { result = val[0] } - | Assign { result = val[0] } - | Super { result = val[0] } - | '(' Expression ')' { result = make_node(val) { |v| Riml::WrapInParensNode.new(v[1]) } } - ; - - ExpressionWithoutDictLiteral: - UnaryOperator { result = val[0] } - | DictGet { result = val[0] } - | ListOrDictGet { result = val[0] } - | AllVariableRetrieval { result = val[0] } - | LiteralWithoutDictLiteral { result = val[0] } - | Call { result = val[0] } - | ObjectInstantiation { result = val[0] } - | '(' ExpressionWithoutDictLiteral ')' { result = make_node(val) { |v| Riml::WrapInParensNode.new(v[1]) } } - ; - - # for inside curly-brace variable names - PossibleStringValue: - String { result = val[0] } - | DictGet { result = val[0] } - | ListOrDictGet { result = val[0] } - | AllVariableRetrieval { result = val[0] } - | BinaryOperator { result = val[0] } - | Ternary { result = val[0] } - | Call { result = val[0] } - ; - - Terminator: - NEWLINE { result = nil } - | ';' { result = nil } - ; - - LiteralWithoutDictLiteral: - Number { result = val[0] } - | String { result = val[0] } - | Regexp { result = val[0] } - | List { result = val[0] } - | ScopeModifierLiteral { result = val[0] } - | TRUE { result = make_node(val) { |_| Riml::TrueNode.new } } - | FALSE { result = make_node(val) { |_| Riml::FalseNode.new } } - ; - - Number: - NUMBER { result = make_node(val) { |v| Riml::NumberNode.new(v[0]) } } - ; - - String: - STRING_S { result = make_node(val) { |v| Riml::StringNode.new(v[0], :s) } } - | STRING_D { result = make_node(val) { |v| Riml::StringNode.new(v[0], :d) } } - | String STRING_S { result = make_node(val) { |v| Riml::StringLiteralConcatNode.new(v[0], Riml::StringNode.new(v[1], :s)) } } - | String STRING_D { result = make_node(val) { |v| Riml::StringLiteralConcatNode.new(v[0], Riml::StringNode.new(v[1], :d)) } } - ; - - Regexp: - REGEXP { result = make_node(val) { |v| Riml::RegexpNode.new(v[0]) } } - ; - - ScopeModifierLiteral: - SCOPE_MODIFIER_LITERAL { result = make_node(val) { |v| Riml::ScopeModifierLiteralNode.new(v[0]) } } - ; - - List: - ListLiteral { result = make_node(val) { |v| Riml::ListNode.new(v[0]) } } - ; - - ListUnpack: - '[' ListItems ';' Expression ']' { result = make_node(val) { |v| Riml::ListUnpackNode.new(v[1] << v[3]) } } - ; - - ListLiteral: - '[' ListItems ']' { result = val[1] } - | '[' ListItems ',' ']' { result = val[1] } - ; - - ListItems: - /* nothing */ { result = [] } - | Expression { result = [val[0]] } - | ListItems ',' Expression { result = val[0] << val[2] } - ; - - Dictionary: - DictionaryLiteral { result = make_node(val) { |v| Riml::DictionaryNode.new(v[0]) } } - ; - - # {'key': 'value', 'key2': 'value2'} - # Save as [['key', 'value'], ['key2', 'value2']] because ruby-1.8.7 offers - # no guarantee for key-value pair ordering. - DictionaryLiteral: - '{' DictItems '}' { result = val[1] } - | '{' DictItems ',' '}' { result = val[1] } - ; - - # [[key, value], [key, value]] - DictItems: - /* nothing */ { result = [] } - | DictItem { result = val } - | DictItems ',' DictItem { result = val[0] << val[2] } - ; - - # [key, value] - DictItem: - Expression ':' Expression { result = [val[0], val[2]] } - ; - - DictGet: - AllVariableRetrieval DictGetWithDot { result = make_node(val) { |v| Riml::DictGetDotNode.new(v[0], v[1]) } } - | ListOrDictGet DictGetWithDot { result = make_node(val) { |v| Riml::DictGetDotNode.new(v[0], v[1]) } } - | Call DictGetWithDot { result = make_node(val) { |v| Riml::DictGetDotNode.new(v[0], v[1]) } } - | '(' Expression ')' DictGetWithDot { result = make_node(val) { |v| Riml::DictGetDotNode.new(Riml::WrapInParensNode.new(v[1]), v[3]) } } - ; - - ListOrDictGet: - ExpressionWithoutDictLiteral ListOrDictGetWithBrackets { result = make_node(val) { |v| Riml::ListOrDictGetNode.new(v[0], v[1]) } } - | '(' Expression ')' ListOrDictGetWithBrackets { result = make_node(val) { |v| Riml::ListOrDictGetNode.new(Riml::WrapInParensNode.new(v[1]), v[3]) } } - ; - - ListOrDictGetAssign: - ExpressionWithoutDictLiteral ListOrDictGetWithBrackets { result = make_node(val) { |v| Riml::ListOrDictGetNode.new(v[0], v[1]) } } - ; - - ListOrDictGetWithBrackets: - '[' Expression ']' { result = [val[1]] } - | '[' SubList ']' { result = [val[1]] } - | ListOrDictGetWithBrackets '[' Expression ']' { result = val[0] << val[2] } - | ListOrDictGetWithBrackets '[' SubList ']' { result = val[0] << val[2] } - ; - - SubList: - Expression ':' Expression { result = make_node(val) { |v| Riml::SublistNode.new([v[0], Riml::LiteralNode.new(' : '), v[2]]) } } - | Expression ':' { result = make_node(val) { |v| Riml::SublistNode.new([v[0], Riml::LiteralNode.new(' :')]) } } - | ':' Expression { result = make_node(val) { |v| Riml::SublistNode.new([Riml::LiteralNode.new(': '), v[1]]) } } - | ':' { result = make_node(val) { |_| Riml::SublistNode.new([Riml::LiteralNode.new(':')]) } } - ; - - DictGetWithDot: - DICT_VAL { result = [val[0]] } - | DictGetWithDot DICT_VAL { result = val[0] << val[1] } - ; - - DictGetWithDotLiteral: - '.' IDENTIFIER { result = [val[1]] } - | DictGetWithDotLiteral DICT_VAL { result = val[0] << val[1] } - ; - - Call: - Scope DefCallIdentifier '(' ArgList ')' { result = make_node(val) { |v| Riml::CallNode.new(v[0], v[1], v[3]) } } - | DictGet '(' ArgList ')' { result = make_node(val) { |v| Riml::CallNode.new(nil, v[0], v[2]) } } - | BUILTIN_COMMAND '(' ArgList ')' { result = make_node(val) { |v| Riml::CallNode.new(nil, v[0], v[2]) } } - | BUILTIN_COMMAND ArgListWithoutNothing { result = make_node(val) { |v| Riml::CallNode.new(nil, v[0], v[1]) } } - | BUILTIN_COMMAND NEWLINE { result = make_node(val) { |v| Riml::CallNode.new(nil, v[0], []) } } - | CALL '(' ArgList ')' { result = make_node(val) { |v| Riml::ExplicitCallNode.new(nil, nil, v[2]) } } - ; - - ObjectInstantiationCall: - Scope DefCallIdentifier '(' ArgList ')' { result = make_node(val) { |v| Riml::CallNode.new(v[0], v[1], v[3]) } } - | Scope DefCallIdentifier { result = make_node(val) { |v| Riml::CallNode.new(v[0], v[1], []) } } - ; - - RimlFileCommand: - RIML_FILE_COMMAND '(' ArgList ')' { result = make_node(val) { |v| Riml::RimlFileCommandNode.new(nil, v[0], v[2]) } } - | RIML_FILE_COMMAND ArgList { result = make_node(val) { |v| Riml::RimlFileCommandNode.new(nil, v[0], v[1]) } } - ; - - RimlClassCommand: - RIML_CLASS_COMMAND '(' ClassArgList ')' { result = make_node(val) { |v| Riml::RimlClassCommandNode.new(nil, v[0], v[2]) } } - | RIML_CLASS_COMMAND ClassArgList { result = make_node(val) { |v| Riml::RimlClassCommandNode.new(nil, v[0], v[1]) } } - ; - - ClassArgList: - Scope IDENTIFIER { result = ["#{val[0]}#{val[1]}"] } - | String { result = val } - | ClassArgList ',' Scope IDENTIFIER { result = val[0].concat ["#{val[2]}#{val[3]}"] } - ; - - ExplicitCall: - CALL Scope DefCallIdentifier '(' ArgList ')' { result = make_node(val) { |v| Riml::ExplicitCallNode.new(v[1], v[2], v[4]) } } - | CALL DictGet '(' ArgList ')' { result = make_node(val) { |v| Riml::ExplicitCallNode.new(nil, v[1], v[3]) } } - ; - - Scope: - SCOPE_MODIFIER { result = val[0] } - | /* nothing */ { result = nil } - ; - - # [SID, scope_modifier] - SIDAndScope: - Scope { result = [ nil, val[0] ] } - | '<' IDENTIFIER '>' Scope { result = [ make_node(val) { |v| Riml::SIDNode.new(v[1]) }, val[3] ] } - ; - - ArgList: - /* nothing */ { result = [] } - | ArgListWithoutNothingWithSplat { result = val[0] } - ; - - ArgListWithSplat: - /* nothing */ { result = [] } - | ArgListWithoutNothingWithSplat { result = val[0] } - ; - - ArgListWithoutNothingWithSplat: - Expression { result = val } - | SPLAT_ARG Expression { result = [ make_node(val) { |v| Riml::SplatNode.new(v[1]) } ] } - | ArgListWithoutNothingWithSplat "," Expression { result = val[0] << val[2] } - | ArgListWithoutNothingWithSplat "," SPLAT_ARG Expression { result = val[0] << make_node(val) { |v| Riml::SplatNode.new(v[3]) } } - ; - - ArgListWithoutNothing: - Expression { result = val } - | ArgListWithoutNothing "," Expression { result = val[0] << val[2] } - ; - - BinaryOperator: - Expression '||' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '&&' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression '==' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '==#' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '==?' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - # added by riml - | Expression '===' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression '!=' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '!=#' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '!=?' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression '=~' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '=~#' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '=~?' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression '!~' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '!~#' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '!~?' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression '>' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '>#' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '>?' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression '>=' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '>=#' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '>=?' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression '<' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '<#' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '<?' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression '<=' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '<=#' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '<=?' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression '+' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '-' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '*' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '/' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '.' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '%' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression IS Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression ISNOT Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - ; - - UnaryOperator: - '!' Expression { result = make_node(val) { |v| Riml::UnaryOperatorNode.new(val[0], [val[1]]) } } - | '+' Expression { result = make_node(val) { |v| Riml::UnaryOperatorNode.new(val[0], [val[1]]) } } - | '-' Expression { result = make_node(val) { |v| Riml::UnaryOperatorNode.new(val[0], [val[1]]) } } - ; - - # ['=', LHS, RHS] - Assign: - LET AssignExpression { result = make_node(val) { |v| Riml::AssignNode.new(v[1][0], v[1][1], v[1][2]) } } - | AssignExpression { result = make_node(val) { |v| Riml::AssignNode.new(v[0][0], v[0][1], v[0][2]) } } - ; - - MultiAssign: - Assign ',' Assign { result = make_node(val) { |v| Riml::MultiAssignNode.new([v[0], v[2]]) } } - | MultiAssign ',' Assign { val[0].assigns << val[2]; result = val[0] } - ; - - # ['=', AssignLHS, Expression] - AssignExpression: - AssignLHS '=' Expression { result = [val[1], val[0], val[2]] } - | AssignLHS '+=' Expression { result = [val[1], val[0], val[2]] } - | AssignLHS '-=' Expression { result = [val[1], val[0], val[2]] } - | AssignLHS '.=' Expression { result = [val[1], val[0], val[2]] } - ; - - AssignLHS: - AllVariableRetrieval { result = val[0] } - | List { result = val[0] } - | ListUnpack { result = val[0] } - | DictGet { result = val[0] } - | ListOrDictGetAssign { result = val[0] } - ; - - # retrieving the value of a variable - VariableRetrieval: - SimpleVariableRetrieval { result = val[0] } - | SPECIAL_VAR_PREFIX IDENTIFIER { result = make_node(val) { |v| Riml::GetSpecialVariableNode.new(v[0], v[1]) } } - | ScopeModifierLiteral ListOrDictGetWithBrackets { result = make_node(val) { |v| Riml::GetVariableByScopeAndDictNameNode.new(v[0], v[1]) } } - ; - - SimpleVariableRetrieval: - Scope IDENTIFIER { result = make_node(val) { |v| Riml::GetVariableNode.new(v[0], v[1]) } } - ; - - AllVariableRetrieval: - VariableRetrieval { result = val[0] } - | Scope CurlyBraceName { result = make_node(val) { |v| Riml::GetCurlyBraceNameNode.new(v[0], v[1]) } } - ; - - UnletVariable: - UNLET VariableRetrieval { result = make_node(val) { |v| Riml::UnletVariableNode.new('!', [ v[1] ]) } } - | UNLET_BANG VariableRetrieval { result = make_node(val) { |v| Riml::UnletVariableNode.new('!', [ v[1] ]) } } - | UnletVariable VariableRetrieval { result = val[0] << val[1] } - ; - - CurlyBraceName: - CurlyBraceVarPart { result = make_node(val) { |v| Riml::CurlyBraceVariable.new([ v[0] ]) } } - | IDENTIFIER CurlyBraceName { result = make_node(val) { |v| Riml::CurlyBraceVariable.new([ Riml::CurlyBracePart.new(v[0]), v[1] ]) } } - | CurlyBraceName IDENTIFIER { result = val[0] << make_node(val) { |v| Riml::CurlyBracePart.new(v[1]) } } - | CurlyBraceName CurlyBraceVarPart { result = val[0] << val[1] } - ; - - CurlyBraceVarPart: - '{' PossibleStringValue '}' { result = make_node(val) { |v| Riml::CurlyBracePart.new(v[1]) } } - | '{' PossibleStringValue CurlyBraceVarPart '}' { result = make_node(val) { |v| Riml::CurlyBracePart.new([v[1], v[2]]) } } - | '{' CurlyBraceVarPart PossibleStringValue '}' { result = make_node(val) { |v| Riml::CurlyBracePart.new([v[1], v[2]]) } } - ; - - # Method definition - # [SID, scope_modifier, name, parameters, keyword, expressions] - Def: - FunctionType SIDAndScope DefCallIdentifier DefKeywords Block END { result = make_node(val) { |v| Riml.const_get(val[0]).new('!', v[1][0], v[1][1], v[2], [], v[3], v[4]) } } - | FunctionType SIDAndScope DefCallIdentifier '(' ParamList ')' DefKeywords Block END { result = make_node(val) { |v| Riml.const_get(val[0]).new('!', v[1][0], v[1][1], v[2], v[4], v[6], v[7]) } } - | FunctionType SIDAndScope DefCallIdentifier '(' SPLAT_PARAM ')' DefKeywords Block END { result = make_node(val) { |v| Riml.const_get(val[0]).new('!', v[1][0], v[1][1], v[2], [v[4]], v[6], v[7]) } } - | FunctionType SIDAndScope DefCallIdentifier '(' ParamList ',' SPLAT_PARAM ')' DefKeywords Block END { result = make_node(val) { |v| Riml.const_get(val[0]).new('!', v[1][0], v[1][1], v[2], v[4] << v[6], v[8], v[9]) } } - ; - - FunctionType: - DEF { result = "DefNode" } - | DEF_BANG { result = "DefNode" } - | DEFM { result = "DefMethodNode" } - ; - - DefCallIdentifier: - # use '' for first argument instead of nil in order to avoid a double scope-modifier - CurlyBraceName { result = make_node(val) { |v| Riml::GetCurlyBraceNameNode.new('', v[0]) } } - | IDENTIFIER { result = val[0] } - ; - - # Example: 'range', 'dict' or 'abort' after function definition - DefKeywords: - IDENTIFIER { result = [val[0]] } - | DefKeywords IDENTIFIER { result = val[0] << val[1] } - | /* nothing */ { result = nil } - ; - - ParamList: - /* nothing */ { result = [] } - | IDENTIFIER { result = val } - | DefaultParam { result = val } - | ParamList ',' IDENTIFIER { result = val[0] << val[2] } - | ParamList ',' DefaultParam { result = val[0] << val[2] } - ; - - DefaultParam: - IDENTIFIER '=' Expression { result = make_node(val) { |v| Riml::DefaultParamNode.new(v[0], v[2]) } } - ; - - Return: - RETURN Returnable { result = make_node(val) { |v| Riml::ReturnNode.new(v[1]) } } - | RETURN Returnable IF Expression { result = make_node(val) { |v| Riml::IfNode.new(v[3], Nodes.new([ReturnNode.new(v[1])])) } } - | RETURN Returnable UNLESS Expression { result = make_node(val) { |v| Riml::UnlessNode.new(v[3], Nodes.new([ReturnNode.new(v[1])])) } } - ; - - Returnable: - /* nothing */ { result = nil } - | Expression { result = val[0] } - ; - - EndScript: - FINISH { result = make_node(val) { |_| Riml::FinishNode.new } } - ; - - # [expression, expressions] - If: - IF Expression IfBlock END { result = make_node(val) { |v| Riml::IfNode.new(v[1], v[2]) } } - | IF Expression THEN Expression END { result = make_node(val) { |v| Riml::IfNode.new(v[1], Riml::Nodes.new([v[3]])) } } - | Expression IF Expression { result = make_node(val) { |v| Riml::IfNode.new(v[2], Riml::Nodes.new([v[0]])) } } - ; - - Unless: - UNLESS Expression IfBlock END { result = make_node(val) { |v| Riml::UnlessNode.new(v[1], v[2]) } } - | UNLESS Expression THEN Expression END { result = make_node(val) { |v| Riml::UnlessNode.new(v[1], Riml::Nodes.new([v[3]])) } } - | Expression UNLESS Expression { result = make_node(val) { |v| Riml::UnlessNode.new(v[2], Riml::Nodes.new([v[0]])) } } - ; - - Ternary: - Expression '?' Expression ':' Expression { result = make_node(val) { |v| Riml::TernaryOperatorNode.new([v[0], v[2], v[4]]) } } - ; - - While: - WHILE Expression Block END { result = make_node(val) { |v| Riml::WhileNode.new(v[1], v[2]) } } - ; - - LoopKeyword: - BREAK { result = make_node(val) { |_| Riml::BreakNode.new } } - | CONTINUE { result = make_node(val) { |_| Riml::ContinueNode.new } } - ; - - Until: - UNTIL Expression Block END { result = make_node(val) { |v| Riml::UntilNode.new(v[1], v[2]) } } - ; - - For: - FOR SimpleVariableRetrieval IN Expression Block END { result = make_node(val) { |v| Riml::ForNode.new(v[1], v[3], v[4]) } } - | FOR List IN Expression Block END { result = make_node(val) { |v| Riml::ForNode.new(v[1], v[3], v[4]) } } - | FOR ListUnpack IN Expression Block END { result = make_node(val) { |v| Riml::ForNode.new(v[1], v[3], v[4]) } } - ; - - Try: - TRY Block END { result = make_node(val) { |v| Riml::TryNode.new(v[1], nil, nil) } } - | TRY Block Catch END { result = make_node(val) { |v| Riml::TryNode.new(v[1], v[2], nil) } } - | TRY Block Catch FINALLY Block END { result = make_node(val) { |v| Riml::TryNode.new(v[1], v[2], v[4]) } } - ; - - Catch: - /* nothing */ { result = nil } - | CATCH Block { result = [ make_node(val) { |v| Riml::CatchNode.new(nil, v[1]) } ] } - | CATCH Catchable Block { result = [ make_node(val) { |v| Riml::CatchNode.new(v[1], v[2]) } ] } - | Catch CATCH Block { result = val[0] << make_node(val) { |v| Riml::CatchNode.new(nil, v[2]) } } - | Catch CATCH Catchable Block { result = val[0] << make_node(val) { |v| Riml::CatchNode.new(v[2], v[3]) } } - ; - - Catchable: - Regexp { result = val[0] } - | String { result = val[0] } - ; - - # [expressions] - # expressions list could contain an ElseNode, which contains expressions - # itself - Block: - NEWLINE Statements { result = val[1] } - | NEWLINE { result = make_node(val) { |_| Riml::Nodes.new([]) } } - ; - - IfBlock: - Block { result = val[0] } - | NEWLINE Statements ElseBlock { result = val[1] << val[2] } - | NEWLINE Statements ElseifBlock { result = val[1] << val[2] } - | NEWLINE Statements ElseifBlock ElseBlock { result = val[1] << val[2] << val[3] } - ; - - ElseBlock: - ELSE NEWLINE Statements { result = make_node(val) { |v| Riml::ElseNode.new(v[2]) } } - ; - - ElseifBlock: - ELSEIF Expression NEWLINE Statements { result = make_node(val) { |v| Riml::Nodes.new([Riml::ElseifNode.new(v[1], v[3])]) } } - | ElseifBlock ELSEIF Expression NEWLINE Statements { result = val[0] << make_node(val) { |v| Riml::ElseifNode.new(v[2], v[4]) } } - ; - - ClassDefinition: - CLASS Scope IDENTIFIER Block END { result = make_node(val) { |v| Riml::ClassDefinitionNode.new(v[1], v[2], nil, v[3]) } } - | CLASS Scope IDENTIFIER '<' Scope IDENTIFIER Block END { result = make_node(val) { |v| Riml::ClassDefinitionNode.new(v[1], v[2], (v[4] || ClassDefinitionNode::DEFAULT_SCOPE_MODIFIER) + v[5], v[6]) } } - ; - - ObjectInstantiation: - NEW ObjectInstantiationCall { result = make_node(val) { |v| Riml::ObjectInstantiationNode.new(v[1]) } } - ; - - Super: - SUPER '(' ArgListWithSplat ')' { result = make_node(val) { |v| Riml::SuperNode.new(v[2], true) } } - | SUPER { result = make_node(val) { |_| Riml::SuperNode.new([], false) } } - ; - - ExLiteral: - EX_LITERAL { result = make_node(val) { |v| Riml::ExLiteralNode.new(v[0]) } } - ; -end - ----- header - require File.expand_path("../lexer", __FILE__) - require File.expand_path("../nodes", __FILE__) - require File.expand_path("../errors", __FILE__) - require File.expand_path("../ast_rewriter", __FILE__) ----- inner - # This code will be put as-is in the parser class - - attr_accessor :ast_rewriter - attr_writer :options - - # The Parser and AST_Rewriter share this same hash of options - def options - @options ||= {} - end - - def self.ast_cache - @ast_cache - end - @ast_cache = {} - - # parses tokens or code into output nodes - def parse(object, ast_rewriter = Riml::AST_Rewriter.new, filename = nil, included = false) - if (ast = self.class.ast_cache[filename]) - else - if tokens?(object) - @tokens = object - elsif code?(object) - @lexer = Riml::Lexer.new(object, filename, true) - end - - begin - ast = do_parse - rescue Racc::ParseError => e - raise unless @lexer - if (invalid_token = @lexer.prev_token_is_keyword?) - warning = "#{invalid_token.inspect} is a keyword, and cannot " \ - "be used as a variable name" - end - error_msg = e.message - error_msg << "\nWARNING: #{warning}" if warning - error = Riml::ParseError.new(error_msg, @lexer.filename, @lexer.lineno) - raise error - end - self.class.ast_cache[filename] = ast if filename - end - @ast_rewriter ||= ast_rewriter - return ast unless @ast_rewriter - @ast_rewriter.ast = ast.dup - @ast_rewriter.options ||= options - @ast_rewriter.rewrite(filename, included) - @ast_rewriter.ast - end - - # get the next token from either the list of tokens provided, or - # the lexer getting the next token - def next_token - return @tokens.shift unless @lexer - token = @lexer.next_token - if token && @lexer.parser_info - @current_parser_info = token.pop - end - token - end - - private - - def tokens?(object) - Array === object - end - - def code?(object) - String === object - end - - def make_node(racc_val) - node = yield racc_val - node.parser_info = @current_parser_info - node - end diff --git a/test/racc/assets/rrconf.y b/test/racc/assets/rrconf.y deleted file mode 100644 index baf9249a77..0000000000 --- a/test/racc/assets/rrconf.y +++ /dev/null @@ -1,14 +0,0 @@ -# 1 s/r conflict and 1 r/r conflict - -class A -rule - -target: a - -a : - | a list - -list : - | list ITEM - -end diff --git a/test/racc/assets/ruby18.y b/test/racc/assets/ruby18.y deleted file mode 100644 index eceb253298..0000000000 --- a/test/racc/assets/ruby18.y +++ /dev/null @@ -1,1943 +0,0 @@ -# Copyright (c) 2013 Peter Zotov <whitequark@whitequark.org> -# -# Parts of the source are derived from ruby_parser: -# Copyright (c) Ryan Davis, seattle.rb -# -# MIT License -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class Parser::Ruby18 - -token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS - kTHEN kELSIF kELSE kCASE kWHEN kWHILE kUNTIL kFOR kBREAK kNEXT - kREDO kRETRY kIN kDO kDO_COND kDO_BLOCK kRETURN kYIELD kSUPER - kSELF kNIL kTRUE kFALSE kAND kOR kNOT kIF_MOD kUNLESS_MOD kWHILE_MOD - kUNTIL_MOD kRESCUE_MOD kALIAS kDEFINED klBEGIN klEND k__LINE__ - k__FILE__ tIDENTIFIER tFID tGVAR tIVAR tCONSTANT tCVAR tNTH_REF - tBACK_REF tSTRING_CONTENT tINTEGER tFLOAT tREGEXP_END tUPLUS - tUMINUS tUMINUS_NUM tPOW tCMP tEQ tEQQ tNEQ tGEQ tLEQ tANDOP - tOROP tMATCH tNMATCH tDOT tDOT2 tDOT3 tAREF tASET tLSHFT tRSHFT - tCOLON2 tCOLON3 tOP_ASGN tASSOC tLPAREN tLPAREN2 tRPAREN tLPAREN_ARG - tLBRACK tLBRACK2 tRBRACK tLBRACE tLBRACE_ARG tSTAR tSTAR2 tAMPER tAMPER2 - tTILDE tPERCENT tDIVIDE tPLUS tMINUS tLT tGT tPIPE tBANG tCARET - tLCURLY tRCURLY tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG - tWORDS_BEG tQWORDS_BEG tSTRING_DBEG tSTRING_DVAR tSTRING_END tSTRING - tSYMBOL tREGEXP_OPT tNL tEH tCOLON tCOMMA tSPACE tSEMI - -prechigh - right tBANG tTILDE tUPLUS - right tPOW - right tUMINUS_NUM tUMINUS - left tSTAR2 tDIVIDE tPERCENT - left tPLUS tMINUS - left tLSHFT tRSHFT - left tAMPER2 - left tPIPE tCARET - left tGT tGEQ tLT tLEQ - nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH - left tANDOP - left tOROP - nonassoc tDOT2 tDOT3 - right tEH tCOLON - left kRESCUE_MOD - right tEQL tOP_ASGN - nonassoc kDEFINED - right kNOT - left kOR kAND - nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD - nonassoc tLBRACE_ARG - nonassoc tLOWEST -preclow - -rule - - program: compstmt - { - result = val[0] - } - - bodystmt: compstmt opt_rescue opt_else opt_ensure - { - rescue_bodies = val[1] - else_t, else_ = val[2] - ensure_t, ensure_ = val[3] - - if rescue_bodies.empty? && !else_.nil? - diagnostic :warning, :useless_else, nil, else_t - end - - result = @builder.begin_body(val[0], - rescue_bodies, - else_t, else_, - ensure_t, ensure_) - } - - compstmt: stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - stmts: # nothing - { - result = [] - } - | stmt - { - result = [ val[0] ] - } - | error stmt - { - result = [ val[1] ] - } - | stmts terms stmt - { - result = val[0] << val[2] - } - - stmt: kALIAS fitem - { - @lexer.state = :expr_fname - } - fitem - { - result = @builder.alias(val[0], val[1], val[3]) - } - | kALIAS tGVAR tGVAR - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.gvar(val[2])) - } - | kALIAS tGVAR tBACK_REF - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.back_ref(val[2])) - } - | kALIAS tGVAR tNTH_REF - { - diagnostic :error, :nth_ref_alias, nil, val[2] - } - | kUNDEF undef_list - { - result = @builder.undef_method(val[0], val[1]) - } - | stmt kIF_MOD expr_value - { - result = @builder.condition_mod(val[0], nil, - val[1], val[2]) - } - | stmt kUNLESS_MOD expr_value - { - result = @builder.condition_mod(nil, val[0], - val[1], val[2]) - } - | stmt kWHILE_MOD expr_value - { - result = @builder.loop_mod(:while, val[0], val[1], val[2]) - } - | stmt kUNTIL_MOD expr_value - { - result = @builder.loop_mod(:until, val[0], val[1], val[2]) - } - | stmt kRESCUE_MOD stmt - { - rescue_body = @builder.rescue_body(val[1], - nil, nil, nil, - nil, val[2]) - - result = @builder.begin_body(val[0], [ rescue_body ]) - } - | klBEGIN tLCURLY compstmt tRCURLY - { - if in_def? - diagnostic :error, :begin_in_method, nil, val[0] - end - - result = @builder.preexe(val[0], val[1], val[2], val[3]) - } - | klEND tLCURLY compstmt tRCURLY - { - result = @builder.postexe(val[0], val[1], val[2], val[3]) - } - | lhs tEQL command_call - { - result = @builder.assign(val[0], val[1], val[2]) - } - | mlhs tEQL command_call - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN command_call - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | primary_value tLBRACK2 aref_args tRBRACK tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | backref tOP_ASGN command_call - { - @builder.op_assign(val[0], val[1], val[2]) - } - | lhs tEQL mrhs - { - result = @builder.assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | mlhs tEQL arg_value - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | mlhs tEQL mrhs - { - result = @builder.multi_assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | expr - - expr: command_call - | expr kAND expr - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | expr kOR expr - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kNOT expr - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | tBANG command_call - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | arg - - expr_value: expr - - command_call: command - | block_command - | kRETURN call_args - { - result = @builder.keyword_cmd(:return, val[0], - nil, val[1], nil) - } - | kBREAK call_args - { - result = @builder.keyword_cmd(:break, val[0], - nil, val[1], nil) - } - | kNEXT call_args - { - result = @builder.keyword_cmd(:next, val[0], - nil, val[1], nil) - } - - block_command: block_call - | block_call tDOT operation2 command_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | block_call tCOLON2 operation2 command_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - - cmd_brace_block: tLBRACE_ARG - { - @static_env.extend_dynamic - } - opt_block_var compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - command: operation command_args =tLOWEST - { - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - } - | operation command_args cmd_brace_block - { - lparen_t, args, rparen_t = val[1] - method_call = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - - begin_t, block_args, body, end_t = val[2] - result = @builder.block(method_call, - begin_t, block_args, body, end_t) - } - | primary_value tDOT operation2 command_args =tLOWEST - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - } - | primary_value tDOT operation2 command_args cmd_brace_block - { - lparen_t, args, rparen_t = val[3] - method_call = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - begin_t, block_args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, block_args, body, end_t) - } - | primary_value tCOLON2 operation2 command_args =tLOWEST - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation2 command_args cmd_brace_block - { - lparen_t, args, rparen_t = val[3] - method_call = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - begin_t, block_args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, block_args, body, end_t) - } - | kSUPER command_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - } - | kYIELD command_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:yield, val[0], - lparen_t, args, rparen_t) - } - - mlhs: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_entry tRPAREN - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_entry: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_entry tRPAREN - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - mlhs_basic: mlhs_head - { - result = val[0] - } - | mlhs_head mlhs_item - { - result = val[0] << val[1] - } - | mlhs_head tSTAR mlhs_node - { - result = val[0] << @builder.splat(val[1], val[2]) - } - | mlhs_head tSTAR - { - result = val[0] << @builder.splat(val[1]) - } - | tSTAR mlhs_node - { - result = [ @builder.splat(val[0], val[1]) ] - } - | tSTAR - { - result = [ @builder.splat(val[0]) ] - } - - mlhs_item: mlhs_node - | tLPAREN mlhs_entry tRPAREN - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_head: mlhs_item tCOMMA - { - result = [ val[0] ] - } - | mlhs_head mlhs_item tCOMMA - { - result = val[0] << val[1] - } - - mlhs_node: variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 aref_args tRBRACK - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - lhs: variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 aref_args tRBRACK - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - cname: tIDENTIFIER - { - diagnostic :error, :module_name_const, nil, val[0] - } - | tCONSTANT - - cpath: tCOLON3 cname - { - result = @builder.const_global(val[0], val[1]) - } - | cname - { - result = @builder.const(val[0]) - } - | primary_value tCOLON2 cname - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - - fname: tIDENTIFIER | tCONSTANT | tFID - | op - | reswords - - fsym: fname - { - result = @builder.symbol(val[0]) - } - | symbol - - fitem: fsym - | dsym - - undef_list: fitem - { - result = [ val[0] ] - } - | undef_list tCOMMA - { - @lexer.state = :expr_fname - } - fitem - { - result = val[0] << val[3] - } - - op: tPIPE | tCARET | tAMPER2 | tCMP | tEQ | tEQQ - | tMATCH | tGT | tGEQ | tLT | tLEQ | tLSHFT - | tRSHFT | tPLUS | tMINUS | tSTAR2 | tSTAR | tDIVIDE - | tPERCENT | tPOW | tTILDE | tUPLUS | tUMINUS | tAREF - | tASET | tBACK_REF2 - - reswords: k__LINE__ | k__FILE__ | klBEGIN | klEND | kALIAS | kAND - | kBEGIN | kBREAK | kCASE | kCLASS | kDEF | kDEFINED - | kDO | kELSE | kELSIF | kEND | kENSURE | kFALSE - | kFOR | kIN | kMODULE | kNEXT | kNIL | kNOT - | kOR | kREDO | kRESCUE | kRETRY | kRETURN | kSELF - | kSUPER | kTHEN | kTRUE | kUNDEF | kWHEN | kYIELD - | kIF | kUNLESS | kWHILE | kUNTIL - - arg: lhs tEQL arg - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.assign(val[0], val[1], rescue_) - } - | var_lhs tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | primary_value tLBRACK2 aref_args tRBRACK tOP_ASGN arg - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN arg - { - diagnostic :error, :dynamic_const, nil, val[2], [ val[3] ] - } - | tCOLON3 tCONSTANT tOP_ASGN arg - { - diagnostic :error, :dynamic_const, nil, val[1], [ val[2] ] - } - | backref tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | arg tDOT2 arg - { - result = @builder.range_inclusive(val[0], val[1], val[2]) - } - | arg tDOT3 arg - { - result = @builder.range_exclusive(val[0], val[1], val[2]) - } - | arg tPLUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMINUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tSTAR2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tDIVIDE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPERCENT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPOW arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tUMINUS_NUM tINTEGER tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.integer(val[1]), - val[2], val[3])) - } - | tUMINUS_NUM tFLOAT tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.float(val[1]), - val[2], val[3])) - } - | tUPLUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | tUMINUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tPIPE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCARET arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tAMPER2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCMP arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tNEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMATCH arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tNMATCH arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tBANG arg - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | tTILDE arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tLSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tRSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tANDOP arg - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | arg tOROP arg - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kDEFINED opt_nl arg - { - result = @builder.keyword_cmd(:defined?, val[0], nil, [ val[2] ], nil) - } - | arg tEH arg tCOLON arg - { - result = @builder.ternary(val[0], val[1], - val[2], val[3], val[4]) - } - | primary - - arg_value: arg - - aref_args: none - | command opt_nl - { - result = [ val[0] ] - } - | args trailer - { - result = val[0] - } - | args tCOMMA tSTAR arg opt_nl - { - result = val[0] << @builder.splat(val[2], val[3]) - } - | assocs trailer - { - result = [ @builder.associate(nil, val[0], nil) ] - } - | tSTAR arg opt_nl - { - result = [ @builder.splat(val[0], val[1]) ] - } - - paren_args: tLPAREN2 none tRPAREN - { - result = [ val[0], [], val[2] ] - } - | tLPAREN2 call_args opt_nl tRPAREN - { - result = [ val[0], val[1], val[3] ] - } - | tLPAREN2 block_call opt_nl tRPAREN - { - result = [ val[0], [ val[1] ], val[3] ] - } - | tLPAREN2 args tCOMMA block_call opt_nl tRPAREN - { - result = [ val[0], val[1] << val[3], val[5] ] - } - - opt_paren_args: # nothing - { - result = [ nil, [], nil ] - } - | paren_args - - call_args: command - { - result = [ val[0] ] - } - | args opt_block_arg - { - result = val[0].concat(val[1]) - } - | args tCOMMA tSTAR arg_value opt_block_arg - { - result = val[0].concat( - [ @builder.splat(val[2], val[3]), - *val[4] ]) - } - | assocs opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil), - *val[1] ] - } - | assocs tCOMMA tSTAR arg_value opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil), - @builder.splat(val[2], val[3]), - *val[4] ] - } - | args tCOMMA assocs opt_block_arg - { - result = val[0].concat( - [ @builder.associate(nil, val[2], nil), - *val[3] ]) - } - | args tCOMMA assocs tCOMMA tSTAR arg opt_block_arg - { - result = val[0].concat( - [ @builder.associate(nil, val[2], nil), - @builder.splat(val[4], val[5]), - *val[6] ]) - } - | tSTAR arg_value opt_block_arg - { - result = [ @builder.splat(val[0], val[1]), - *val[2] ] - } - | block_arg - { - result = [ val[0] ] - } - - call_args2: arg_value tCOMMA args opt_block_arg - { - result = [ val[0], *val[2].concat(val[3]) ] - } - | arg_value tCOMMA block_arg - { - result = [ val[0], val[2] ] - } - | arg_value tCOMMA tSTAR arg_value opt_block_arg - { - result = [ val[0], - @builder.splat(val[2], val[3]), - *val[4] ] - } - | arg_value tCOMMA args tCOMMA tSTAR arg_value opt_block_arg - { - result = [ val[0], - *val[2]. - push(@builder.splat(val[4], val[5])). - concat(val[6]) ] - } - | assocs opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil), - *val[1] ] - } - | assocs tCOMMA tSTAR arg_value opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil), - @builder.splat(val[2], val[3]), - *val[4] ] - } - | arg_value tCOMMA assocs opt_block_arg - { - result = [ val[0], - @builder.associate(nil, val[2], nil), - *val[3] ] - } - | arg_value tCOMMA args tCOMMA assocs opt_block_arg - { - result = [ val[0], - *val[2]. - push(@builder.associate(nil, val[4], nil)). - concat(val[5]) ] - } - | arg_value tCOMMA assocs tCOMMA tSTAR arg_value opt_block_arg - { - result = [ val[0], - @builder.associate(nil, val[2], nil), - @builder.splat(val[4], val[5]), - *val[6] ] - } - | arg_value tCOMMA args tCOMMA assocs tCOMMA tSTAR arg_value opt_block_arg - { - result = [ val[0], - *val[2]. - push(@builder.associate(nil, val[4], nil)). - push(@builder.splat(val[6], val[7])). - concat(val[8]) ] - } - | tSTAR arg_value opt_block_arg - { - result = [ @builder.splat(val[0], val[1]), - *val[2] ] - } - | block_arg - { - result = [ val[0] ] - } - - command_args: { - result = @lexer.cmdarg.dup - @lexer.cmdarg.push(true) - } - open_args - { - @lexer.cmdarg = val[0] - - result = val[1] - } - - open_args: call_args - { - result = [ nil, val[0], nil ] - } - | tLPAREN_ARG - { - @lexer.state = :expr_endarg - } - tRPAREN - { - result = [ val[0], [], val[2] ] - } - | tLPAREN_ARG call_args2 - { - @lexer.state = :expr_endarg - } - tRPAREN - { - result = [ val[0], val[1], val[3] ] - } - - block_arg: tAMPER arg_value - { - result = @builder.block_pass(val[0], val[1]) - } - - opt_block_arg: tCOMMA block_arg - { - result = [ val[1] ] - } - | # nothing - { - result = [] - } - - args: arg_value - { - result = [ val[0] ] - } - | args tCOMMA arg_value - { - result = val[0] << val[2] - } - - mrhs: args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - - primary: literal - | strings - | xstring - | regexp - | words - | qwords - | var_ref - | backref - | tFID - { - result = @builder.call_method(nil, nil, val[0]) - } - | kBEGIN bodystmt kEND - { - result = @builder.begin_keyword(val[0], val[1], val[2]) - } - | tLPAREN_ARG expr - { - @lexer.state = :expr_endarg - } - opt_nl tRPAREN - { - result = @builder.begin(val[0], val[1], val[4]) - } - | tLPAREN compstmt tRPAREN - { - result = @builder.begin(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - | tCOLON3 tCONSTANT - { - result = @builder.const_global(val[0], val[1]) - } - | primary_value tLBRACK2 aref_args tRBRACK - { - result = @builder.index(val[0], val[1], val[2], val[3]) - } - | tLBRACK aref_args tRBRACK - { - result = @builder.array(val[0], val[1], val[2]) - } - | tLBRACE assoc_list tRCURLY - { - result = @builder.associate(val[0], val[1], val[2]) - } - | kRETURN - { - result = @builder.keyword_cmd(:return, val[0]) - } - | kYIELD tLPAREN2 call_args tRPAREN - { - result = @builder.keyword_cmd(:yield, val[0], val[1], val[2], val[3]) - } - | kYIELD tLPAREN2 tRPAREN - { - result = @builder.keyword_cmd(:yield, val[0], val[1], [], val[2]) - } - | kYIELD - { - result = @builder.keyword_cmd(:yield, val[0]) - } - | kDEFINED opt_nl tLPAREN2 expr tRPAREN - { - result = @builder.keyword_cmd(:defined?, val[0], - val[2], [ val[3] ], val[4]) - } - | operation brace_block - { - method_call = @builder.call_method(nil, nil, val[0]) - - begin_t, args, body, end_t = val[1] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | method_call - | method_call brace_block - { - begin_t, args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, args, body, end_t) - } - | kIF expr_value then compstmt if_tail kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, val[5]) - } - | kUNLESS expr_value then compstmt opt_else kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - else_, else_t, - val[3], val[5]) - } - | kWHILE - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:while, val[0], val[2], val[3], - val[5], val[6]) - } - | kUNTIL - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:until, val[0], val[2], val[3], - val[5], val[6]) - } - | kCASE expr_value opt_terms case_body kEND - { - when_bodies = val[3][0..-2] - else_t, else_body = val[3][-1] - - result = @builder.case(val[0], val[1], - when_bodies, else_t, else_body, - val[4]) - } - | kCASE opt_terms case_body kEND - { - when_bodies = val[2][0..-2] - else_t, else_body = val[2][-1] - - result = @builder.case(val[0], nil, - when_bodies, else_t, else_body, - val[3]) - } - | kCASE opt_terms kELSE compstmt kEND - { - result = @builder.case(val[0], nil, - [], val[2], val[3], - val[4]) - } - | kFOR for_var kIN - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.for(val[0], val[1], - val[2], val[4], - val[5], val[7], val[8]) - } - | kCLASS cpath superclass - { - @static_env.extend_static - } - bodystmt kEND - { - if in_def? - diagnostic :error, :class_in_def, nil, val[0] - end - - lt_t, superclass = val[2] - result = @builder.def_class(val[0], val[1], - lt_t, superclass, - val[4], val[5]) - - @static_env.unextend - } - | kCLASS tLSHFT expr term - { - result = @def_level - @def_level = 0 - - @static_env.extend_static - } - bodystmt kEND - { - result = @builder.def_sclass(val[0], val[1], val[2], - val[5], val[6]) - - @static_env.unextend - - @def_level = val[4] - } - | kMODULE cpath - { - @static_env.extend_static - } - bodystmt kEND - { - if in_def? - diagnostic :error, :module_in_def, nil, val[0] - end - - result = @builder.def_module(val[0], val[1], - val[3], val[4]) - - @static_env.unextend - } - | kDEF fname - { - @def_level += 1 - @static_env.extend_static - } - f_arglist bodystmt kEND - { - result = @builder.def_method(val[0], val[1], - val[3], val[4], val[5]) - - @static_env.unextend - @def_level -= 1 - } - | kDEF singleton dot_or_colon - { - @lexer.state = :expr_fname - } - fname - { - @def_level += 1 - @static_env.extend_static - } - f_arglist bodystmt kEND - { - result = @builder.def_singleton(val[0], val[1], val[2], - val[4], val[6], val[7], val[8]) - - @static_env.unextend - @def_level -= 1 - } - | kBREAK - { - result = @builder.keyword_cmd(:break, val[0]) - } - | kNEXT - { - result = @builder.keyword_cmd(:next, val[0]) - } - | kREDO - { - result = @builder.keyword_cmd(:redo, val[0]) - } - | kRETRY - { - result = @builder.keyword_cmd(:retry, val[0]) - } - - primary_value: primary - - then: term - | tCOLON - | kTHEN - | term kTHEN - { - result = val[1] - } - - do: term - | tCOLON - | kDO_COND - - if_tail: opt_else - | kELSIF expr_value then compstmt if_tail - { - else_t, else_ = val[4] - result = [ val[0], - @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, nil), - ] - } - - opt_else: none - | kELSE compstmt - { - result = val - } - - for_var: lhs - | mlhs - - block_par: mlhs_item - { - result = [ @builder.arg_expr(val[0]) ] - } - | block_par tCOMMA mlhs_item - { - result = val[0] << @builder.arg_expr(val[2]) - } - - block_var: block_par - | block_par tCOMMA - | block_par tCOMMA tAMPER lhs - { - result = val[0]. - push(@builder.blockarg_expr(val[2], val[3])) - } - | block_par tCOMMA tSTAR lhs tCOMMA tAMPER lhs - { - result = val[0]. - push(@builder.restarg_expr(val[2], val[3])). - push(@builder.blockarg_expr(val[5], val[6])) - } - | block_par tCOMMA tSTAR tCOMMA tAMPER lhs - { - result = val[0]. - push(@builder.restarg_expr(val[2])). - push(@builder.blockarg_expr(val[4], val[5])) - } - | block_par tCOMMA tSTAR lhs - { - result = val[0]. - push(@builder.restarg_expr(val[2], val[3])) - } - | block_par tCOMMA tSTAR - { - result = val[0]. - push(@builder.restarg_expr(val[2])) - } - | tSTAR lhs tCOMMA tAMPER lhs - { - result = [ @builder.restarg_expr(val[0], val[1]), - @builder.blockarg_expr(val[3], val[4]) ] - } - | tSTAR tCOMMA tAMPER lhs - { - result = [ @builder.restarg_expr(val[0]), - @builder.blockarg_expr(val[2], val[3]) ] - } - | tSTAR lhs - { - result = [ @builder.restarg_expr(val[0], val[1]) ] - } - | tSTAR - { - result = [ @builder.restarg_expr(val[0]) ] - } - | tAMPER lhs - { - result = [ @builder.blockarg_expr(val[0], val[1]) ] - } - ; - - opt_block_var: # nothing - { - result = @builder.args(nil, [], nil) - } - | tPIPE tPIPE - { - result = @builder.args(val[0], [], val[1]) - } - | tOROP - { - result = @builder.args(val[0], [], val[0]) - } - | tPIPE block_var tPIPE - { - result = @builder.args(val[0], val[1], val[2], false) - } - - do_block: kDO_BLOCK - { - @static_env.extend_dynamic - } - opt_block_var compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - block_call: command do_block - { - begin_t, block_args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, block_args, body, end_t) - } - | block_call tDOT operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | block_call tCOLON2 operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - - method_call: operation paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - } - | primary_value tDOT operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation2 paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation3 - { - result = @builder.call_method(val[0], val[1], val[2]) - } - | kSUPER paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - } - | kSUPER - { - result = @builder.keyword_cmd(:zsuper, val[0]) - } - - brace_block: tLCURLY - { - @static_env.extend_dynamic - } - opt_block_var compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - | kDO - { - @static_env.extend_dynamic - } - opt_block_var compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - case_body: kWHEN when_args then compstmt cases - { - result = [ @builder.when(val[0], val[1], val[2], val[3]), - *val[4] ] - } - - when_args: args - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - - cases: opt_else - { - result = [ val[0] ] - } - | case_body - - opt_rescue: kRESCUE exc_list exc_var then compstmt opt_rescue - { - assoc_t, exc_var = val[2] - - if val[1] - exc_list = @builder.array(nil, val[1], nil) - end - - result = [ @builder.rescue_body(val[0], - exc_list, assoc_t, exc_var, - val[3], val[4]), - *val[5] ] - } - | # nothing - { - result = [] - } - - exc_list: arg_value - { - result = [ val[0] ] - } - | mrhs - | none - - exc_var: tASSOC lhs - { - result = [ val[0], val[1] ] - } - | none - - opt_ensure: kENSURE compstmt - { - result = [ val[0], val[1] ] - } - | none - - literal: numeric - | symbol - | dsym - - strings: string - { - result = @builder.string_compose(nil, val[0], nil) - } - - string: string1 - { - result = [ val[0] ] - } - | string string1 - { - result = val[0] << val[1] - } - - string1: tSTRING_BEG string_contents tSTRING_END - { - result = @builder.string_compose(val[0], val[1], val[2]) - } - | tSTRING - { - result = @builder.string(val[0]) - } - - xstring: tXSTRING_BEG xstring_contents tSTRING_END - { - result = @builder.xstring_compose(val[0], val[1], val[2]) - } - - regexp: tREGEXP_BEG xstring_contents tSTRING_END tREGEXP_OPT - { - opts = @builder.regexp_options(val[3]) - result = @builder.regexp_compose(val[0], val[1], val[2], opts) - } - - words: tWORDS_BEG word_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - word_list: # nothing - { - result = [] - } - | word_list word tSPACE - { - result = val[0] << @builder.word(val[1]) - } - - word: string_content - { - result = [ val[0] ] - } - | word string_content - { - result = val[0] << val[1] - } - - qwords: tQWORDS_BEG qword_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - qword_list: # nothing - { - result = [] - } - | qword_list tSTRING_CONTENT tSPACE - { - result = val[0] << @builder.string_internal(val[1]) - } - - string_contents: # nothing - { - result = [] - } - | string_contents string_content - { - result = val[0] << val[1] - } - -xstring_contents: # nothing - { - result = [] - } - | xstring_contents string_content - { - result = val[0] << val[1] - } - - string_content: tSTRING_CONTENT - { - result = @builder.string_internal(val[0]) - } - | tSTRING_DVAR string_dvar - { - result = val[1] - } - | tSTRING_DBEG - { - @lexer.cond.push(false) - @lexer.cmdarg.push(false) - } - compstmt tRCURLY - { - @lexer.cond.lexpop - @lexer.cmdarg.lexpop - - result = @builder.begin(val[0], val[2], val[3]) - } - - string_dvar: tGVAR - { - result = @builder.gvar(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - | backref - - - symbol: tSYMBOL - { - result = @builder.symbol(val[0]) - } - - dsym: tSYMBEG xstring_contents tSTRING_END - { - result = @builder.symbol_compose(val[0], val[1], val[2]) - } - - numeric: tINTEGER - { - result = @builder.integer(val[0]) - } - | tFLOAT - { - result = @builder.float(val[0]) - } - | tUMINUS_NUM tINTEGER =tLOWEST - { - result = @builder.negate(val[0], - @builder.integer(val[1])) - } - | tUMINUS_NUM tFLOAT =tLOWEST - { - result = @builder.negate(val[0], - @builder.float(val[1])) - } - - variable: tIDENTIFIER - { - result = @builder.ident(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tGVAR - { - result = @builder.gvar(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - | tCONSTANT - { - result = @builder.const(val[0]) - } - | kNIL - { - result = @builder.nil(val[0]) - } - | kSELF - { - result = @builder.self(val[0]) - } - | kTRUE - { - result = @builder.true(val[0]) - } - | kFALSE - { - result = @builder.false(val[0]) - } - | k__FILE__ - { - result = @builder.__FILE__(val[0]) - } - | k__LINE__ - { - result = @builder.__LINE__(val[0]) - } - - var_ref: variable - { - result = @builder.accessible(val[0]) - } - - var_lhs: variable - { - result = @builder.assignable(val[0]) - } - - backref: tNTH_REF - { - result = @builder.nth_ref(val[0]) - } - | tBACK_REF - { - result = @builder.back_ref(val[0]) - } - - superclass: term - { - result = nil - } - | tLT expr_value term - { - result = [ val[0], val[1] ] - } - | error term - { - yyerrok - result = nil - } - - f_arglist: tLPAREN2 f_args opt_nl tRPAREN - { - result = @builder.args(val[0], val[1], val[3]) - - @lexer.state = :expr_beg - } - | f_args term - { - result = @builder.args(nil, val[0], nil) - } - - f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_optarg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_optarg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_block_arg - { - result = [ val[0] ] - } - | # nothing - { - result = [] - } - - f_norm_arg: tCONSTANT - { - diagnostic :error, :argument_const, nil, val[0] - } - | tIVAR - { - diagnostic :error, :argument_ivar, nil, val[0] - } - | tGVAR - { - diagnostic :error, :argument_gvar, nil, val[0] - } - | tCVAR - { - diagnostic :error, :argument_cvar, nil, val[0] - } - | tIDENTIFIER - { - @static_env.declare val[0][0] - - result = @builder.arg(val[0]) - } - - f_arg: f_norm_arg - { - result = [ val[0] ] - } - | f_arg tCOMMA f_norm_arg - { - result = val[0] << val[2] - } - - f_opt: tIDENTIFIER tEQL arg_value - { - @static_env.declare val[0][0] - - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_optarg: f_opt - { - result = [ val[0] ] - } - | f_optarg tCOMMA f_opt - { - result = val[0] << val[2] - } - - restarg_mark: tSTAR2 | tSTAR - - f_rest_arg: restarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - } - | restarg_mark - { - result = [ @builder.restarg(val[0]) ] - } - - blkarg_mark: tAMPER2 | tAMPER - - f_block_arg: blkarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = @builder.blockarg(val[0], val[1]) - } - - opt_f_block_arg: tCOMMA f_block_arg - { - result = [ val[1] ] - } - | # nothing - { - result = [] - } - - singleton: var_ref - | tLPAREN2 expr opt_nl tRPAREN - { - result = val[1] - } - - assoc_list: # nothing - { - result = [] - } - | assocs trailer - { - result = val[0] - } - | args trailer - { - result = @builder.pair_list_18(val[0]) - } - - assocs: assoc - { - result = [ val[0] ] - } - | assocs tCOMMA assoc - { - result = val[0] << val[2] - } - - assoc: arg_value tASSOC arg_value - { - result = @builder.pair(val[0], val[1], val[2]) - } - - operation: tIDENTIFIER | tCONSTANT | tFID - operation2: tIDENTIFIER | tCONSTANT | tFID | op - operation3: tIDENTIFIER | tFID | op - dot_or_colon: tDOT | tCOLON2 - opt_terms: | terms - opt_nl: | tNL - trailer: | tNL | tCOMMA - - term: tSEMI - { - yyerrok - } - | tNL - - terms: term - | terms tSEMI - - none: # nothing - { - result = nil - } - -end - ----- header - -require 'parser' - ----- inner - - def version - 18 - end - - def default_encoding - Encoding::BINARY if defined? Encoding - end diff --git a/test/racc/assets/ruby19.y b/test/racc/assets/ruby19.y deleted file mode 100644 index b405c952e7..0000000000 --- a/test/racc/assets/ruby19.y +++ /dev/null @@ -1,2174 +0,0 @@ -# Copyright (c) 2013 Peter Zotov <whitequark@whitequark.org> -# -# Parts of the source are derived from ruby_parser: -# Copyright (c) Ryan Davis, seattle.rb -# -# MIT License -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class Parser::Ruby19 - -token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS - kTHEN kELSIF kELSE kCASE kWHEN kWHILE kUNTIL kFOR kBREAK kNEXT - kREDO kRETRY kIN kDO kDO_COND kDO_BLOCK kDO_LAMBDA kRETURN kYIELD kSUPER - kSELF kNIL kTRUE kFALSE kAND kOR kNOT kIF_MOD kUNLESS_MOD kWHILE_MOD - kUNTIL_MOD kRESCUE_MOD kALIAS kDEFINED klBEGIN klEND k__LINE__ - k__FILE__ k__ENCODING__ tIDENTIFIER tFID tGVAR tIVAR tCONSTANT - tLABEL tCVAR tNTH_REF tBACK_REF tSTRING_CONTENT tINTEGER tFLOAT - tREGEXP_END tUPLUS tUMINUS tUMINUS_NUM tPOW tCMP tEQ tEQQ tNEQ - tGEQ tLEQ tANDOP tOROP tMATCH tNMATCH tDOT tDOT2 tDOT3 tAREF - tASET tLSHFT tRSHFT tCOLON2 tCOLON3 tOP_ASGN tASSOC tLPAREN - tLPAREN2 tRPAREN tLPAREN_ARG tLBRACK tLBRACK2 tRBRACK tLBRACE - tLBRACE_ARG tSTAR tSTAR2 tAMPER tAMPER2 tTILDE tPERCENT tDIVIDE - tPLUS tMINUS tLT tGT tPIPE tBANG tCARET tLCURLY tRCURLY - tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG tREGEXP_OPT - tWORDS_BEG tQWORDS_BEG tSTRING_DBEG tSTRING_DVAR tSTRING_END - tSTRING tSYMBOL tNL tEH tCOLON tCOMMA tSPACE tSEMI tLAMBDA tLAMBEG - tCHARACTER - -prechigh - right tBANG tTILDE tUPLUS - right tPOW - right tUMINUS_NUM tUMINUS - left tSTAR2 tDIVIDE tPERCENT - left tPLUS tMINUS - left tLSHFT tRSHFT - left tAMPER2 - left tPIPE tCARET - left tGT tGEQ tLT tLEQ - nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH - left tANDOP - left tOROP - nonassoc tDOT2 tDOT3 - right tEH tCOLON - left kRESCUE_MOD - right tEQL tOP_ASGN - nonassoc kDEFINED - right kNOT - left kOR kAND - nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD - nonassoc tLBRACE_ARG - nonassoc tLOWEST -preclow - -rule - - program: top_compstmt - - top_compstmt: top_stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - top_stmts: # nothing - { - result = [] - } - | top_stmt - { - result = [ val[0] ] - } - | top_stmts terms top_stmt - { - result = val[0] << val[2] - } - | error top_stmt - { - result = [ val[1] ] - } - - top_stmt: stmt - | klBEGIN tLCURLY top_compstmt tRCURLY - { - result = @builder.preexe(val[0], val[1], val[2], val[3]) - } - - bodystmt: compstmt opt_rescue opt_else opt_ensure - { - rescue_bodies = val[1] - else_t, else_ = val[2] - ensure_t, ensure_ = val[3] - - if rescue_bodies.empty? && !else_.nil? - diagnostic :warning, :useless_else, nil, else_t - end - - result = @builder.begin_body(val[0], - rescue_bodies, - else_t, else_, - ensure_t, ensure_) - } - - compstmt: stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - stmts: # nothing - { - result = [] - } - | stmt - { - result = [ val[0] ] - } - | stmts terms stmt - { - result = val[0] << val[2] - } - | error stmt - { - result = [ val[1] ] - } - - stmt: kALIAS fitem - { - @lexer.state = :expr_fname - } - fitem - { - result = @builder.alias(val[0], val[1], val[3]) - } - | kALIAS tGVAR tGVAR - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.gvar(val[2])) - } - | kALIAS tGVAR tBACK_REF - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.back_ref(val[2])) - } - | kALIAS tGVAR tNTH_REF - { - diagnostic :error, :nth_ref_alias, nil, val[2] - } - | kUNDEF undef_list - { - result = @builder.undef_method(val[0], val[1]) - } - | stmt kIF_MOD expr_value - { - result = @builder.condition_mod(val[0], nil, - val[1], val[2]) - } - | stmt kUNLESS_MOD expr_value - { - result = @builder.condition_mod(nil, val[0], - val[1], val[2]) - } - | stmt kWHILE_MOD expr_value - { - result = @builder.loop_mod(:while, val[0], val[1], val[2]) - } - | stmt kUNTIL_MOD expr_value - { - result = @builder.loop_mod(:until, val[0], val[1], val[2]) - } - | stmt kRESCUE_MOD stmt - { - rescue_body = @builder.rescue_body(val[1], - nil, nil, nil, - nil, val[2]) - - result = @builder.begin_body(val[0], [ rescue_body ]) - } - | klEND tLCURLY compstmt tRCURLY - { - result = @builder.postexe(val[0], val[1], val[2], val[3]) - } - | command_asgn - | mlhs tEQL command_call - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN command_call - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | backref tOP_ASGN command_call - { - @builder.op_assign(val[0], val[1], val[2]) - } - | lhs tEQL mrhs - { - result = @builder.assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | mlhs tEQL arg_value - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | mlhs tEQL mrhs - { - result = @builder.multi_assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | expr - - command_asgn: lhs tEQL command_call - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL command_asgn - { - result = @builder.assign(val[0], val[1], val[2]) - } - - expr: command_call - | expr kAND expr - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | expr kOR expr - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kNOT opt_nl expr - { - result = @builder.not_op(val[0], nil, val[2], nil) - } - | tBANG command_call - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | arg - - expr_value: expr - - command_call: command - | block_command - - block_command: block_call - | block_call tDOT operation2 command_args - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - | block_call tCOLON2 operation2 command_args - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - - cmd_brace_block: tLBRACE_ARG - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - command: operation command_args =tLOWEST - { - result = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - } - | operation command_args cmd_brace_block - { - method_call = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - - begin_t, args, body, end_t = val[2] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tDOT operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - | primary_value tDOT operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tCOLON2 operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - | primary_value tCOLON2 operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | kSUPER command_args - { - result = @builder.keyword_cmd(:super, val[0], - nil, val[1], nil) - } - | kYIELD command_args - { - result = @builder.keyword_cmd(:yield, val[0], - nil, val[1], nil) - } - | kRETURN call_args - { - result = @builder.keyword_cmd(:return, val[0], - nil, val[1], nil) - } - | kBREAK call_args - { - result = @builder.keyword_cmd(:break, val[0], - nil, val[1], nil) - } - | kNEXT call_args - { - result = @builder.keyword_cmd(:next, val[0], - nil, val[1], nil) - } - - mlhs: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_inner: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - mlhs_basic: mlhs_head - | mlhs_head mlhs_item - { - result = val[0]. - push(val[1]) - } - | mlhs_head tSTAR mlhs_node - { - result = val[0]. - push(@builder.splat(val[1], val[2])) - } - | mlhs_head tSTAR mlhs_node tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1], val[2])). - concat(val[4]) - } - | mlhs_head tSTAR - { - result = val[0]. - push(@builder.splat(val[1])) - } - | mlhs_head tSTAR tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1])). - concat(val[3]) - } - | tSTAR mlhs_node - { - result = [ @builder.splat(val[0], val[1]) ] - } - | tSTAR mlhs_node tCOMMA mlhs_post - { - result = [ @builder.splat(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.splat(val[0]) ] - } - | tSTAR tCOMMA mlhs_post - { - result = [ @builder.splat(val[0]), - *val[2] ] - } - - mlhs_item: mlhs_node - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_head: mlhs_item tCOMMA - { - result = [ val[0] ] - } - | mlhs_head mlhs_item tCOMMA - { - result = val[0] << val[1] - } - - mlhs_post: mlhs_item - { - result = [ val[0] ] - } - | mlhs_post tCOMMA mlhs_item - { - result = val[0] << val[2] - } - - mlhs_node: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - lhs: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - cname: tIDENTIFIER - { - diagnostic :error, :module_name_const, nil, val[0] - } - | tCONSTANT - - cpath: tCOLON3 cname - { - result = @builder.const_global(val[0], val[1]) - } - | cname - { - result = @builder.const(val[0]) - } - | primary_value tCOLON2 cname - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - - fname: tIDENTIFIER | tCONSTANT | tFID - | op - | reswords - - fsym: fname - { - result = @builder.symbol(val[0]) - } - | symbol - - fitem: fsym - | dsym - - undef_list: fitem - { - result = [ val[0] ] - } - | undef_list tCOMMA - { - @lexer.state = :expr_fname - } - fitem - { - result = val[0] << val[3] - } - - op: tPIPE | tCARET | tAMPER2 | tCMP | tEQ | tEQQ - | tMATCH | tNMATCH | tGT | tGEQ | tLT | tLEQ - | tNEQ | tLSHFT | tRSHFT | tPLUS | tMINUS | tSTAR2 - | tSTAR | tDIVIDE | tPERCENT | tPOW | tBANG | tTILDE - | tUPLUS | tUMINUS | tAREF | tASET | tBACK_REF2 - - reswords: k__LINE__ | k__FILE__ | k__ENCODING__ | klBEGIN | klEND - | kALIAS | kAND | kBEGIN | kBREAK | kCASE - | kCLASS | kDEF | kDEFINED | kDO | kELSE - | kELSIF | kEND | kENSURE | kFALSE | kFOR - | kIN | kMODULE | kNEXT | kNIL | kNOT - | kOR | kREDO | kRESCUE | kRETRY | kRETURN - | kSELF | kSUPER | kTHEN | kTRUE | kUNDEF - | kWHEN | kYIELD | kIF | kUNLESS | kWHILE - | kUNTIL - - arg: lhs tEQL arg - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.assign(val[0], val[1], rescue_) - } - | var_lhs tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.op_assign(val[0], val[1], rescue_) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN arg - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN arg - { - diagnostic :error, :dynamic_const, nil, val[2], [ val[3] ] - } - | tCOLON3 tCONSTANT tOP_ASGN arg - { - diagnostic :error, :dynamic_const, nil, val[1], [ val[2] ] - } - | backref tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | arg tDOT2 arg - { - result = @builder.range_inclusive(val[0], val[1], val[2]) - } - | arg tDOT3 arg - { - result = @builder.range_exclusive(val[0], val[1], val[2]) - } - | arg tPLUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMINUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tSTAR2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tDIVIDE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPERCENT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPOW arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tUMINUS_NUM tINTEGER tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.integer(val[1]), - val[2], val[3])) - } - | tUMINUS_NUM tFLOAT tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.float(val[1]), - val[2], val[3])) - } - | tUPLUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | tUMINUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tPIPE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCARET arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tAMPER2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCMP arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tNEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMATCH arg - { - result = @builder.match_op(val[0], val[1], val[2]) - } - | arg tNMATCH arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tBANG arg - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | tTILDE arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tLSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tRSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tANDOP arg - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | arg tOROP arg - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kDEFINED opt_nl arg - { - result = @builder.keyword_cmd(:defined?, val[0], nil, [ val[2] ], nil) - } - - | arg tEH arg opt_nl tCOLON arg - { - result = @builder.ternary(val[0], val[1], - val[2], val[4], val[5]) - } - | primary - - arg_value: arg - - aref_args: none - | args trailer - | args tCOMMA assocs trailer - { - result = val[0] << @builder.associate(nil, val[2], nil) - } - | assocs trailer - { - result = [ @builder.associate(nil, val[0], nil) ] - } - - paren_args: tLPAREN2 opt_call_args rparen - { - result = val - } - - opt_paren_args: # nothing - { - result = [ nil, [], nil ] - } - | paren_args - - opt_call_args: # nothing - { - result = [] - } - | call_args - | args tCOMMA - | args tCOMMA assocs tCOMMA - { - result = val[0] << @builder.associate(nil, val[2], nil) - } - | assocs tCOMMA - { - result = [ @builder.associate(nil, val[0], nil) ] - } - - call_args: command - { - result = [ val[0] ] - } - | args opt_block_arg - { - result = val[0].concat(val[1]) - } - | assocs opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil) ] - result.concat(val[1]) - } - | args tCOMMA assocs opt_block_arg - { - assocs = @builder.associate(nil, val[2], nil) - result = val[0] << assocs - result.concat(val[3]) - } - | block_arg - { - result = [ val[0] ] - } - - command_args: { - result = @lexer.cmdarg.dup - @lexer.cmdarg.push(true) - } - call_args - { - @lexer.cmdarg = val[0] - - result = val[1] - } - - block_arg: tAMPER arg_value - { - result = @builder.block_pass(val[0], val[1]) - } - - opt_block_arg: tCOMMA block_arg - { - result = [ val[1] ] - } - | # nothing - { - result = [] - } - - args: arg_value - { - result = [ val[0] ] - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - | args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - - mrhs: args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - - primary: literal - | strings - | xstring - | regexp - | words - | qwords - | var_ref - | backref - | tFID - { - result = @builder.call_method(nil, nil, val[0]) - } - | kBEGIN bodystmt kEND - { - result = @builder.begin_keyword(val[0], val[1], val[2]) - } - | tLPAREN_ARG - { - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - } - expr - { - @lexer.state = :expr_endarg - } - opt_nl tRPAREN - { - @lexer.cmdarg = val[1] - - result = @builder.begin(val[0], val[2], val[5]) - } - | tLPAREN compstmt tRPAREN - { - result = @builder.begin(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - | tCOLON3 tCONSTANT - { - result = @builder.const_global(val[0], val[1]) - } - | tLBRACK aref_args tRBRACK - { - result = @builder.array(val[0], val[1], val[2]) - } - | tLBRACE assoc_list tRCURLY - { - result = @builder.associate(val[0], val[1], val[2]) - } - | kRETURN - { - result = @builder.keyword_cmd(:return, val[0]) - } - | kYIELD tLPAREN2 call_args rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], val[2], val[3]) - } - | kYIELD tLPAREN2 rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], [], val[2]) - } - | kYIELD - { - result = @builder.keyword_cmd(:yield, val[0]) - } - | kDEFINED opt_nl tLPAREN2 expr rparen - { - result = @builder.keyword_cmd(:defined?, val[0], - val[2], [ val[3] ], val[4]) - } - | kNOT tLPAREN2 expr rparen - { - result = @builder.not_op(val[0], val[1], val[2], val[3]) - } - | kNOT tLPAREN2 rparen - { - result = @builder.not_op(val[0], val[1], nil, val[2]) - } - | operation brace_block - { - method_call = @builder.call_method(nil, nil, val[0]) - - begin_t, args, body, end_t = val[1] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | method_call - | method_call brace_block - { - begin_t, args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, args, body, end_t) - } - | tLAMBDA lambda - { - lambda_call = @builder.call_lambda(val[0]) - - args, (begin_t, body, end_t) = val[1] - result = @builder.block(lambda_call, - begin_t, args, body, end_t) - } - | kIF expr_value then compstmt if_tail kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, val[5]) - } - | kUNLESS expr_value then compstmt opt_else kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - else_, else_t, - val[3], val[5]) - } - | kWHILE - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:while, val[0], val[2], val[3], - val[5], val[6]) - } - | kUNTIL - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:until, val[0], val[2], val[3], - val[5], val[6]) - } - | kCASE expr_value opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[3] - - result = @builder.case(val[0], val[1], - when_bodies, else_t, else_body, - val[4]) - } - | kCASE opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[2] - - result = @builder.case(val[0], nil, - when_bodies, else_t, else_body, - val[3]) - } - | kFOR for_var kIN - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.for(val[0], val[1], - val[2], val[4], - val[5], val[7], val[8]) - } - | kCLASS cpath superclass - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :class_in_def, nil, val[0] - end - - lt_t, superclass = val[2] - result = @builder.def_class(val[0], val[1], - lt_t, superclass, - val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kCLASS tLSHFT expr term - { - result = @def_level - @def_level = 0 - - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - result = @builder.def_sclass(val[0], val[1], val[2], - val[5], val[6]) - - @lexer.pop_cmdarg - @static_env.unextend - - @def_level = val[4] - } - | kMODULE cpath - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :module_in_def, nil, val[0] - end - - result = @builder.def_module(val[0], val[1], - val[3], val[4]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kDEF fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_method(val[0], val[1], - val[3], val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kDEF singleton dot_or_colon - { - @lexer.state = :expr_fname - } - fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_singleton(val[0], val[1], val[2], - val[4], val[6], val[7], val[8]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kBREAK - { - result = @builder.keyword_cmd(:break, val[0]) - } - | kNEXT - { - result = @builder.keyword_cmd(:next, val[0]) - } - | kREDO - { - result = @builder.keyword_cmd(:redo, val[0]) - } - | kRETRY - { - result = @builder.keyword_cmd(:retry, val[0]) - } - - primary_value: primary - - then: term - | kTHEN - | term kTHEN - { - result = val[1] - } - - do: term - | kDO_COND - - if_tail: opt_else - | kELSIF expr_value then compstmt if_tail - { - else_t, else_ = val[4] - result = [ val[0], - @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, nil), - ] - } - - opt_else: none - | kELSE compstmt - { - result = val - } - - for_var: lhs - | mlhs - - f_marg: f_norm_arg - { - @static_env.declare val[0][0] - - result = @builder.arg(val[0]) - } - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_marg_list: f_marg - { - result = [ val[0] ] - } - | f_marg_list tCOMMA f_marg - { - result = val[0] << val[2] - } - - f_margs: f_marg_list - | f_marg_list tCOMMA tSTAR f_norm_arg - { - @static_env.declare val[3][0] - - result = val[0]. - push(@builder.restarg(val[2], val[3])) - } - | f_marg_list tCOMMA tSTAR f_norm_arg tCOMMA f_marg_list - { - @static_env.declare val[3][0] - - result = val[0]. - push(@builder.restarg(val[2], val[3])). - concat(val[5]) - } - | f_marg_list tCOMMA tSTAR - { - result = val[0]. - push(@builder.restarg(val[2])) - } - | f_marg_list tCOMMA tSTAR tCOMMA f_marg_list - { - result = val[0]. - push(@builder.restarg(val[2])). - concat(val[4]) - } - | tSTAR f_norm_arg - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - } - | tSTAR f_norm_arg tCOMMA f_marg_list - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.restarg(val[0]) ] - } - | tSTAR tCOMMA f_marg_list - { - result = [ @builder.restarg(val[0]), - *val[2] ] - } - - block_param: f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_block_optarg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_block_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_block_optarg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_block_optarg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_block_arg - { - result = [ val[0] ] - } - - opt_block_param: # nothing - { - result = @builder.args(nil, [], nil) - } - | block_param_def - { - @lexer.state = :expr_value - } - - block_param_def: tPIPE opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1], val[2]) - } - | tOROP - { - result = @builder.args(val[0], [], val[0]) - } - | tPIPE block_param opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - - opt_bv_decl: # nothing - { - result = [] - } - | tSEMI bv_decls - { - result = val[1] - } - - bv_decls: bvar - { - result = [ val[0] ] - } - | bv_decls tCOMMA bvar - { - result = val[0] << val[2] - } - - bvar: tIDENTIFIER - { - result = @builder.shadowarg(val[0]) - } - | f_bad_arg - - lambda: { - @static_env.extend_dynamic - } - f_larglist lambda_body - { - result = [ val[1], val[2] ] - - @static_env.unextend - } - - f_larglist: tLPAREN2 f_args opt_bv_decl rparen - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - | f_args - { - result = @builder.args(nil, val[0], nil) - } - - lambda_body: tLAMBEG compstmt tRCURLY - { - result = [ val[0], val[1], val[2] ] - } - | kDO_LAMBDA compstmt kEND - { - result = [ val[0], val[1], val[2] ] - } - - do_block: kDO_BLOCK - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - block_call: command do_block - { - begin_t, block_args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, block_args, body, end_t) - } - | block_call tDOT operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | block_call tCOLON2 operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - - method_call: operation paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - } - | primary_value tDOT operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation2 paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation3 - { - result = @builder.call_method(val[0], val[1], val[2]) - } - | primary_value tDOT paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | kSUPER paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - } - | kSUPER - { - result = @builder.keyword_cmd(:zsuper, val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index(val[0], val[1], val[2], val[3]) - } - - brace_block: tLCURLY - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - | kDO - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - case_body: kWHEN args then compstmt cases - { - result = [ @builder.when(val[0], val[1], val[2], val[3]), - *val[4] ] - } - - cases: opt_else - { - result = [ val[0] ] - } - | case_body - - opt_rescue: kRESCUE exc_list exc_var then compstmt opt_rescue - { - assoc_t, exc_var = val[2] - - if val[1] - exc_list = @builder.array(nil, val[1], nil) - end - - result = [ @builder.rescue_body(val[0], - exc_list, assoc_t, exc_var, - val[3], val[4]), - *val[5] ] - } - | - { - result = [] - } - - exc_list: arg_value - { - result = [ val[0] ] - } - | mrhs - | none - - exc_var: tASSOC lhs - { - result = [ val[0], val[1] ] - } - | none - - opt_ensure: kENSURE compstmt - { - result = [ val[0], val[1] ] - } - | none - - literal: numeric - | symbol - | dsym - - strings: string - { - result = @builder.string_compose(nil, val[0], nil) - } - - string: string1 - { - result = [ val[0] ] - } - | string string1 - { - result = val[0] << val[1] - } - - string1: tSTRING_BEG string_contents tSTRING_END - { - result = @builder.string_compose(val[0], val[1], val[2]) - } - | tSTRING - { - result = @builder.string(val[0]) - } - | tCHARACTER - { - result = @builder.character(val[0]) - } - - xstring: tXSTRING_BEG xstring_contents tSTRING_END - { - result = @builder.xstring_compose(val[0], val[1], val[2]) - } - - regexp: tREGEXP_BEG regexp_contents tSTRING_END tREGEXP_OPT - { - opts = @builder.regexp_options(val[3]) - result = @builder.regexp_compose(val[0], val[1], val[2], opts) - } - - words: tWORDS_BEG word_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - word_list: # nothing - { - result = [] - } - | word_list word tSPACE - { - result = val[0] << @builder.word(val[1]) - } - - word: string_content - { - result = [ val[0] ] - } - | word string_content - { - result = val[0] << val[1] - } - - qwords: tQWORDS_BEG qword_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - qword_list: # nothing - { - result = [] - } - | qword_list tSTRING_CONTENT tSPACE - { - result = val[0] << @builder.string_internal(val[1]) - } - - string_contents: # nothing - { - result = [] - } - | string_contents string_content - { - result = val[0] << val[1] - } - -xstring_contents: # nothing - { - result = [] - } - | xstring_contents string_content - { - result = val[0] << val[1] - } - -regexp_contents: # nothing - { - result = [] - } - | regexp_contents string_content - { - result = val[0] << val[1] - } - - string_content: tSTRING_CONTENT - { - result = @builder.string_internal(val[0]) - } - | tSTRING_DVAR string_dvar - { - result = val[1] - } - | tSTRING_DBEG - { - @lexer.cond.push(false) - @lexer.cmdarg.push(false) - } - compstmt tRCURLY - { - @lexer.cond.lexpop - @lexer.cmdarg.lexpop - - result = @builder.begin(val[0], val[2], val[3]) - } - - string_dvar: tGVAR - { - result = @builder.gvar(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - | backref - - - symbol: tSYMBOL - { - result = @builder.symbol(val[0]) - } - - dsym: tSYMBEG xstring_contents tSTRING_END - { - result = @builder.symbol_compose(val[0], val[1], val[2]) - } - - numeric: tINTEGER - { - result = @builder.integer(val[0]) - } - | tFLOAT - { - result = @builder.float(val[0]) - } - | tUMINUS_NUM tINTEGER =tLOWEST - { - result = @builder.negate(val[0], - @builder.integer(val[1])) - } - | tUMINUS_NUM tFLOAT =tLOWEST - { - result = @builder.negate(val[0], - @builder.float(val[1])) - } - - user_variable: tIDENTIFIER - { - result = @builder.ident(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tGVAR - { - result = @builder.gvar(val[0]) - } - | tCONSTANT - { - result = @builder.const(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - -keyword_variable: kNIL - { - result = @builder.nil(val[0]) - } - | kSELF - { - result = @builder.self(val[0]) - } - | kTRUE - { - result = @builder.true(val[0]) - } - | kFALSE - { - result = @builder.false(val[0]) - } - | k__FILE__ - { - result = @builder.__FILE__(val[0]) - } - | k__LINE__ - { - result = @builder.__LINE__(val[0]) - } - | k__ENCODING__ - { - result = @builder.__ENCODING__(val[0]) - } - - var_ref: user_variable - { - result = @builder.accessible(val[0]) - } - | keyword_variable - { - result = @builder.accessible(val[0]) - } - - var_lhs: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - - backref: tNTH_REF - { - result = @builder.nth_ref(val[0]) - } - | tBACK_REF - { - result = @builder.back_ref(val[0]) - } - - superclass: term - { - result = nil - } - | tLT expr_value term - { - result = [ val[0], val[1] ] - } - | error term - { - yyerrok - result = nil - } - - f_arglist: tLPAREN2 f_args rparen - { - result = @builder.args(val[0], val[1], val[2]) - - @lexer.state = :expr_value - } - | f_args term - { - result = @builder.args(nil, val[0], nil) - } - - f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_optarg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_optarg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_optarg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_block_arg - { - result = [ val[0] ] - } - | # nothing - { - result = [] - } - - f_bad_arg: tCONSTANT - { - diagnostic :error, :argument_const, nil, val[0] - } - | tIVAR - { - diagnostic :error, :argument_ivar, nil, val[0] - } - | tGVAR - { - diagnostic :error, :argument_gvar, nil, val[0] - } - | tCVAR - { - diagnostic :error, :argument_cvar, nil, val[0] - } - - f_norm_arg: f_bad_arg - | tIDENTIFIER - - f_arg_item: f_norm_arg - { - @static_env.declare val[0][0] - - result = @builder.arg(val[0]) - } - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_arg: f_arg_item - { - result = [ val[0] ] - } - | f_arg tCOMMA f_arg_item - { - result = val[0] << val[2] - } - - f_opt: tIDENTIFIER tEQL arg_value - { - @static_env.declare val[0][0] - - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_opt: tIDENTIFIER tEQL primary_value - { - @static_env.declare val[0][0] - - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_optarg: f_block_opt - { - result = [ val[0] ] - } - | f_block_optarg tCOMMA f_block_opt - { - result = val[0] << val[2] - } - - f_optarg: f_opt - { - result = [ val[0] ] - } - | f_optarg tCOMMA f_opt - { - result = val[0] << val[2] - } - - restarg_mark: tSTAR2 | tSTAR - - f_rest_arg: restarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - } - | restarg_mark - { - result = [ @builder.restarg(val[0]) ] - } - - blkarg_mark: tAMPER2 | tAMPER - - f_block_arg: blkarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = @builder.blockarg(val[0], val[1]) - } - - opt_f_block_arg: tCOMMA f_block_arg - { - result = [ val[1] ] - } - | # nothing - { - result = [] - } - - singleton: var_ref - | tLPAREN2 expr rparen - { - result = val[1] - } - - assoc_list: # nothing - { - result = [] - } - | assocs trailer - - assocs: assoc - { - result = [ val[0] ] - } - | assocs tCOMMA assoc - { - result = val[0] << val[2] - } - - assoc: arg_value tASSOC arg_value - { - result = @builder.pair(val[0], val[1], val[2]) - } - | tLABEL arg_value - { - result = @builder.pair_keyword(val[0], val[1]) - } - - operation: tIDENTIFIER | tCONSTANT | tFID - operation2: tIDENTIFIER | tCONSTANT | tFID | op - operation3: tIDENTIFIER | tFID | op - dot_or_colon: tDOT | tCOLON2 - opt_terms: | terms - opt_nl: | tNL - rparen: opt_nl tRPAREN - { - result = val[1] - } - rbracket: opt_nl tRBRACK - { - result = val[1] - } - trailer: | tNL | tCOMMA - - term: tSEMI - { - yyerrok - } - | tNL - - terms: term - | terms tSEMI - - none: # nothing - { - result = nil - } -end - ----- header - -require 'parser' - -Parser.check_for_encoding_support - ----- inner - - def version - 19 - end - - def default_encoding - Encoding::BINARY - end diff --git a/test/racc/assets/ruby20.y b/test/racc/assets/ruby20.y deleted file mode 100644 index 6e07734778..0000000000 --- a/test/racc/assets/ruby20.y +++ /dev/null @@ -1,2350 +0,0 @@ -# Copyright (c) 2013 Peter Zotov <whitequark@whitequark.org> -# -# Parts of the source are derived from ruby_parser: -# Copyright (c) Ryan Davis, seattle.rb -# -# MIT License -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class Parser::Ruby20 - -token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS - kTHEN kELSIF kELSE kCASE kWHEN kWHILE kUNTIL kFOR kBREAK kNEXT - kREDO kRETRY kIN kDO kDO_COND kDO_BLOCK kDO_LAMBDA kRETURN kYIELD kSUPER - kSELF kNIL kTRUE kFALSE kAND kOR kNOT kIF_MOD kUNLESS_MOD kWHILE_MOD - kUNTIL_MOD kRESCUE_MOD kALIAS kDEFINED klBEGIN klEND k__LINE__ - k__FILE__ k__ENCODING__ tIDENTIFIER tFID tGVAR tIVAR tCONSTANT - tLABEL tCVAR tNTH_REF tBACK_REF tSTRING_CONTENT tINTEGER tFLOAT - tREGEXP_END tUPLUS tUMINUS tUMINUS_NUM tPOW tCMP tEQ tEQQ tNEQ - tGEQ tLEQ tANDOP tOROP tMATCH tNMATCH tDOT tDOT2 tDOT3 tAREF - tASET tLSHFT tRSHFT tCOLON2 tCOLON3 tOP_ASGN tASSOC tLPAREN - tLPAREN2 tRPAREN tLPAREN_ARG tLBRACK tLBRACK2 tRBRACK tLBRACE - tLBRACE_ARG tSTAR tSTAR2 tAMPER tAMPER2 tTILDE tPERCENT tDIVIDE - tDSTAR tPLUS tMINUS tLT tGT tPIPE tBANG tCARET tLCURLY tRCURLY - tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG tREGEXP_OPT - tWORDS_BEG tQWORDS_BEG tSYMBOLS_BEG tQSYMBOLS_BEG tSTRING_DBEG - tSTRING_DVAR tSTRING_END tSTRING_DEND tSTRING tSYMBOL - tNL tEH tCOLON tCOMMA tSPACE tSEMI tLAMBDA tLAMBEG tCHARACTER - -prechigh - right tBANG tTILDE tUPLUS - right tPOW - right tUMINUS_NUM tUMINUS - left tSTAR2 tDIVIDE tPERCENT - left tPLUS tMINUS - left tLSHFT tRSHFT - left tAMPER2 - left tPIPE tCARET - left tGT tGEQ tLT tLEQ - nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH - left tANDOP - left tOROP - nonassoc tDOT2 tDOT3 - right tEH tCOLON - left kRESCUE_MOD - right tEQL tOP_ASGN - nonassoc kDEFINED - right kNOT - left kOR kAND - nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD - nonassoc tLBRACE_ARG - nonassoc tLOWEST -preclow - -rule - - program: top_compstmt - - top_compstmt: top_stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - top_stmts: # nothing - { - result = [] - } - | top_stmt - { - result = [ val[0] ] - } - | top_stmts terms top_stmt - { - result = val[0] << val[2] - } - | error top_stmt - { - result = [ val[1] ] - } - - top_stmt: stmt - | klBEGIN tLCURLY top_compstmt tRCURLY - { - result = @builder.preexe(val[0], val[1], val[2], val[3]) - } - - bodystmt: compstmt opt_rescue opt_else opt_ensure - { - rescue_bodies = val[1] - else_t, else_ = val[2] - ensure_t, ensure_ = val[3] - - if rescue_bodies.empty? && !else_.nil? - diagnostic :warning, :useless_else, nil, else_t - end - - result = @builder.begin_body(val[0], - rescue_bodies, - else_t, else_, - ensure_t, ensure_) - } - - compstmt: stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - stmts: # nothing - { - result = [] - } - | stmt_or_begin - { - result = [ val[0] ] - } - | stmts terms stmt_or_begin - { - result = val[0] << val[2] - } - | error stmt - { - result = [ val[1] ] - } - - stmt_or_begin: stmt - | klBEGIN tLCURLY top_compstmt tRCURLY - { - if in_def? - diagnostic :error, :begin_in_method, nil, val[0] - end - - result = @builder.preexe(val[0], val[1], val[2], val[3]) - } - - stmt: kALIAS fitem - { - @lexer.state = :expr_fname - } - fitem - { - result = @builder.alias(val[0], val[1], val[3]) - } - | kALIAS tGVAR tGVAR - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.gvar(val[2])) - } - | kALIAS tGVAR tBACK_REF - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.back_ref(val[2])) - } - | kALIAS tGVAR tNTH_REF - { - diagnostic :error, :nth_ref_alias, nil, val[2] - } - | kUNDEF undef_list - { - result = @builder.undef_method(val[0], val[1]) - } - | stmt kIF_MOD expr_value - { - result = @builder.condition_mod(val[0], nil, - val[1], val[2]) - } - | stmt kUNLESS_MOD expr_value - { - result = @builder.condition_mod(nil, val[0], - val[1], val[2]) - } - | stmt kWHILE_MOD expr_value - { - result = @builder.loop_mod(:while, val[0], val[1], val[2]) - } - | stmt kUNTIL_MOD expr_value - { - result = @builder.loop_mod(:until, val[0], val[1], val[2]) - } - | stmt kRESCUE_MOD stmt - { - rescue_body = @builder.rescue_body(val[1], - nil, nil, nil, - nil, val[2]) - - result = @builder.begin_body(val[0], [ rescue_body ]) - } - | klEND tLCURLY compstmt tRCURLY - { - result = @builder.postexe(val[0], val[1], val[2], val[3]) - } - | command_asgn - | mlhs tEQL command_call - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN command_call - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | backref tOP_ASGN command_call - { - @builder.op_assign(val[0], val[1], val[2]) - } - | lhs tEQL mrhs - { - result = @builder.assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | mlhs tEQL arg_value - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | mlhs tEQL mrhs - { - result = @builder.multi_assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | expr - - command_asgn: lhs tEQL command_call - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL command_asgn - { - result = @builder.assign(val[0], val[1], val[2]) - } - - expr: command_call - | expr kAND expr - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | expr kOR expr - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kNOT opt_nl expr - { - result = @builder.not_op(val[0], nil, val[2], nil) - } - | tBANG command_call - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | arg - - expr_value: expr - - command_call: command - | block_command - - block_command: block_call - | block_call dot_or_colon operation2 command_args - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - - cmd_brace_block: tLBRACE_ARG - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - fcall: operation - - command: fcall command_args =tLOWEST - { - result = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - } - | fcall command_args cmd_brace_block - { - method_call = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - - begin_t, args, body, end_t = val[2] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tDOT operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - | primary_value tDOT operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tCOLON2 operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - | primary_value tCOLON2 operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | kSUPER command_args - { - result = @builder.keyword_cmd(:super, val[0], - nil, val[1], nil) - } - | kYIELD command_args - { - result = @builder.keyword_cmd(:yield, val[0], - nil, val[1], nil) - } - | kRETURN call_args - { - result = @builder.keyword_cmd(:return, val[0], - nil, val[1], nil) - } - | kBREAK call_args - { - result = @builder.keyword_cmd(:break, val[0], - nil, val[1], nil) - } - | kNEXT call_args - { - result = @builder.keyword_cmd(:next, val[0], - nil, val[1], nil) - } - - mlhs: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_inner: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - mlhs_basic: mlhs_head - | mlhs_head mlhs_item - { - result = val[0]. - push(val[1]) - } - | mlhs_head tSTAR mlhs_node - { - result = val[0]. - push(@builder.splat(val[1], val[2])) - } - | mlhs_head tSTAR mlhs_node tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1], val[2])). - concat(val[4]) - } - | mlhs_head tSTAR - { - result = val[0]. - push(@builder.splat(val[1])) - } - | mlhs_head tSTAR tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1])). - concat(val[3]) - } - | tSTAR mlhs_node - { - result = [ @builder.splat(val[0], val[1]) ] - } - | tSTAR mlhs_node tCOMMA mlhs_post - { - result = [ @builder.splat(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.splat(val[0]) ] - } - | tSTAR tCOMMA mlhs_post - { - result = [ @builder.splat(val[0]), - *val[2] ] - } - - mlhs_item: mlhs_node - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_head: mlhs_item tCOMMA - { - result = [ val[0] ] - } - | mlhs_head mlhs_item tCOMMA - { - result = val[0] << val[1] - } - - mlhs_post: mlhs_item - { - result = [ val[0] ] - } - | mlhs_post tCOMMA mlhs_item - { - result = val[0] << val[2] - } - - mlhs_node: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - lhs: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - cname: tIDENTIFIER - { - diagnostic :error, :module_name_const, nil, val[0] - } - | tCONSTANT - - cpath: tCOLON3 cname - { - result = @builder.const_global(val[0], val[1]) - } - | cname - { - result = @builder.const(val[0]) - } - | primary_value tCOLON2 cname - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - - fname: tIDENTIFIER | tCONSTANT | tFID - | op - | reswords - - fsym: fname - { - result = @builder.symbol(val[0]) - } - | symbol - - fitem: fsym - | dsym - - undef_list: fitem - { - result = [ val[0] ] - } - | undef_list tCOMMA - { - @lexer.state = :expr_fname - } - fitem - { - result = val[0] << val[3] - } - - op: tPIPE | tCARET | tAMPER2 | tCMP | tEQ | tEQQ - | tMATCH | tNMATCH | tGT | tGEQ | tLT | tLEQ - | tNEQ | tLSHFT | tRSHFT | tPLUS | tMINUS | tSTAR2 - | tSTAR | tDIVIDE | tPERCENT | tPOW | tBANG | tTILDE - | tUPLUS | tUMINUS | tAREF | tASET | tDSTAR | tBACK_REF2 - - reswords: k__LINE__ | k__FILE__ | k__ENCODING__ | klBEGIN | klEND - | kALIAS | kAND | kBEGIN | kBREAK | kCASE - | kCLASS | kDEF | kDEFINED | kDO | kELSE - | kELSIF | kEND | kENSURE | kFALSE | kFOR - | kIN | kMODULE | kNEXT | kNIL | kNOT - | kOR | kREDO | kRESCUE | kRETRY | kRETURN - | kSELF | kSUPER | kTHEN | kTRUE | kUNDEF - | kWHEN | kYIELD | kIF | kUNLESS | kWHILE - | kUNTIL - - arg: lhs tEQL arg - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.assign(val[0], val[1], rescue_) - } - | var_lhs tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.op_assign(val[0], val[1], rescue_) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN arg - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN arg - { - const = @builder.const_op_assignable( - @builder.const_fetch(val[0], val[1], val[2])) - result = @builder.op_assign(const, val[3], val[4]) - } - | tCOLON3 tCONSTANT tOP_ASGN arg - { - const = @builder.const_op_assignable( - @builder.const_global(val[0], val[1])) - result = @builder.op_assign(const, val[2], val[3]) - } - | backref tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | arg tDOT2 arg - { - result = @builder.range_inclusive(val[0], val[1], val[2]) - } - | arg tDOT3 arg - { - result = @builder.range_exclusive(val[0], val[1], val[2]) - } - | arg tPLUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMINUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tSTAR2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tDIVIDE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPERCENT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPOW arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tUMINUS_NUM tINTEGER tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.integer(val[1]), - val[2], val[3])) - } - | tUMINUS_NUM tFLOAT tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.float(val[1]), - val[2], val[3])) - } - | tUPLUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | tUMINUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tPIPE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCARET arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tAMPER2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCMP arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tNEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMATCH arg - { - result = @builder.match_op(val[0], val[1], val[2]) - } - | arg tNMATCH arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tBANG arg - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | tTILDE arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tLSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tRSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tANDOP arg - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | arg tOROP arg - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kDEFINED opt_nl arg - { - result = @builder.keyword_cmd(:defined?, val[0], nil, [ val[2] ], nil) - } - - | arg tEH arg opt_nl tCOLON arg - { - result = @builder.ternary(val[0], val[1], - val[2], val[4], val[5]) - } - | primary - - arg_value: arg - - aref_args: none - | args trailer - | args tCOMMA assocs trailer - { - result = val[0] << @builder.associate(nil, val[2], nil) - } - | assocs trailer - { - result = [ @builder.associate(nil, val[0], nil) ] - } - - paren_args: tLPAREN2 opt_call_args rparen - { - result = val - } - - opt_paren_args: # nothing - { - result = [ nil, [], nil ] - } - | paren_args - - opt_call_args: # nothing - { - result = [] - } - | call_args - | args tCOMMA - | args tCOMMA assocs tCOMMA - { - result = val[0] << @builder.associate(nil, val[2], nil) - } - | assocs tCOMMA - { - result = [ @builder.associate(nil, val[0], nil) ] - } - - call_args: command - { - result = [ val[0] ] - } - | args opt_block_arg - { - result = val[0].concat(val[1]) - } - | assocs opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil) ] - result.concat(val[1]) - } - | args tCOMMA assocs opt_block_arg - { - assocs = @builder.associate(nil, val[2], nil) - result = val[0] << assocs - result.concat(val[3]) - } - | block_arg - { - result = [ val[0] ] - } - - command_args: { - result = @lexer.cmdarg.dup - @lexer.cmdarg.push(true) - } - call_args - { - @lexer.cmdarg = val[0] - - result = val[1] - } - - block_arg: tAMPER arg_value - { - result = @builder.block_pass(val[0], val[1]) - } - - opt_block_arg: tCOMMA block_arg - { - result = [ val[1] ] - } - | # nothing - { - result = [] - } - - args: arg_value - { - result = [ val[0] ] - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - | args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - - mrhs: args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - - primary: literal - | strings - | xstring - | regexp - | words - | qwords - | symbols - | qsymbols - | var_ref - | backref - | tFID - { - result = @builder.call_method(nil, nil, val[0]) - } - | kBEGIN - { - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - } - bodystmt kEND - { - @lexer.cmdarg = val[1] - - result = @builder.begin_keyword(val[0], val[2], val[3]) - } - | tLPAREN_ARG - { - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - } - expr - { - @lexer.state = :expr_endarg - } - opt_nl tRPAREN - { - @lexer.cmdarg = val[1] - - result = @builder.begin(val[0], val[2], val[5]) - } - | tLPAREN_ARG - { - @lexer.state = :expr_endarg - } - opt_nl tRPAREN - { - result = @builder.begin(val[0], nil, val[3]) - } - | tLPAREN compstmt tRPAREN - { - result = @builder.begin(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - | tCOLON3 tCONSTANT - { - result = @builder.const_global(val[0], val[1]) - } - | tLBRACK aref_args tRBRACK - { - result = @builder.array(val[0], val[1], val[2]) - } - | tLBRACE assoc_list tRCURLY - { - result = @builder.associate(val[0], val[1], val[2]) - } - | kRETURN - { - result = @builder.keyword_cmd(:return, val[0]) - } - | kYIELD tLPAREN2 call_args rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], val[2], val[3]) - } - | kYIELD tLPAREN2 rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], [], val[2]) - } - | kYIELD - { - result = @builder.keyword_cmd(:yield, val[0]) - } - | kDEFINED opt_nl tLPAREN2 expr rparen - { - result = @builder.keyword_cmd(:defined?, val[0], - val[2], [ val[3] ], val[4]) - } - | kNOT tLPAREN2 expr rparen - { - result = @builder.not_op(val[0], val[1], val[2], val[3]) - } - | kNOT tLPAREN2 rparen - { - result = @builder.not_op(val[0], val[1], nil, val[2]) - } - | fcall brace_block - { - method_call = @builder.call_method(nil, nil, val[0]) - - begin_t, args, body, end_t = val[1] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | method_call - | method_call brace_block - { - begin_t, args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, args, body, end_t) - } - | tLAMBDA lambda - { - lambda_call = @builder.call_lambda(val[0]) - - args, (begin_t, body, end_t) = val[1] - result = @builder.block(lambda_call, - begin_t, args, body, end_t) - } - | kIF expr_value then compstmt if_tail kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, val[5]) - } - | kUNLESS expr_value then compstmt opt_else kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - else_, else_t, - val[3], val[5]) - } - | kWHILE - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:while, val[0], val[2], val[3], - val[5], val[6]) - } - | kUNTIL - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:until, val[0], val[2], val[3], - val[5], val[6]) - } - | kCASE expr_value opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[3] - - result = @builder.case(val[0], val[1], - when_bodies, else_t, else_body, - val[4]) - } - | kCASE opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[2] - - result = @builder.case(val[0], nil, - when_bodies, else_t, else_body, - val[3]) - } - | kFOR for_var kIN - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.for(val[0], val[1], - val[2], val[4], - val[5], val[7], val[8]) - } - | kCLASS cpath superclass - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :class_in_def, nil, val[0] - end - - lt_t, superclass = val[2] - result = @builder.def_class(val[0], val[1], - lt_t, superclass, - val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kCLASS tLSHFT expr term - { - result = @def_level - @def_level = 0 - - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - result = @builder.def_sclass(val[0], val[1], val[2], - val[5], val[6]) - - @lexer.pop_cmdarg - @static_env.unextend - - @def_level = val[4] - } - | kMODULE cpath - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :module_in_def, nil, val[0] - end - - result = @builder.def_module(val[0], val[1], - val[3], val[4]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kDEF fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_method(val[0], val[1], - val[3], val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kDEF singleton dot_or_colon - { - @lexer.state = :expr_fname - } - fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_singleton(val[0], val[1], val[2], - val[4], val[6], val[7], val[8]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kBREAK - { - result = @builder.keyword_cmd(:break, val[0]) - } - | kNEXT - { - result = @builder.keyword_cmd(:next, val[0]) - } - | kREDO - { - result = @builder.keyword_cmd(:redo, val[0]) - } - | kRETRY - { - result = @builder.keyword_cmd(:retry, val[0]) - } - - primary_value: primary - - then: term - | kTHEN - | term kTHEN - { - result = val[1] - } - - do: term - | kDO_COND - - if_tail: opt_else - | kELSIF expr_value then compstmt if_tail - { - else_t, else_ = val[4] - result = [ val[0], - @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, nil), - ] - } - - opt_else: none - | kELSE compstmt - { - result = val - } - - for_var: lhs - | mlhs - - f_marg: f_norm_arg - { - @static_env.declare val[0][0] - - result = @builder.arg(val[0]) - } - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_marg_list: f_marg - { - result = [ val[0] ] - } - | f_marg_list tCOMMA f_marg - { - result = val[0] << val[2] - } - - f_margs: f_marg_list - | f_marg_list tCOMMA tSTAR f_norm_arg - { - @static_env.declare val[3][0] - - result = val[0]. - push(@builder.restarg(val[2], val[3])) - } - | f_marg_list tCOMMA tSTAR f_norm_arg tCOMMA f_marg_list - { - @static_env.declare val[3][0] - - result = val[0]. - push(@builder.restarg(val[2], val[3])). - concat(val[5]) - } - | f_marg_list tCOMMA tSTAR - { - result = val[0]. - push(@builder.restarg(val[2])) - } - | f_marg_list tCOMMA tSTAR tCOMMA f_marg_list - { - result = val[0]. - push(@builder.restarg(val[2])). - concat(val[4]) - } - | tSTAR f_norm_arg - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - } - | tSTAR f_norm_arg tCOMMA f_marg_list - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.restarg(val[0]) ] - } - | tSTAR tCOMMA f_marg_list - { - result = [ @builder.restarg(val[0]), - *val[2] ] - } - - block_args_tail: f_block_kwarg tCOMMA f_kwrest opt_f_block_arg - { - result = val[0].concat(val[2]).concat(val[3]) - } - | f_block_kwarg opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_kwrest opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_block_arg - { - result = [ val[0] ] - } - -opt_block_args_tail: - tCOMMA block_args_tail - { - result = val[1] - } - | # nothing - { - result = [] - } - - block_param: f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_block_optarg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_block_args_tail - { - result = val[0].concat(val[1]) - } - | f_block_optarg tCOMMA f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_block_optarg opt_block_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_block_optarg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | block_args_tail - - opt_block_param: # nothing - { - result = @builder.args(nil, [], nil) - } - | block_param_def - { - @lexer.state = :expr_value - } - - block_param_def: tPIPE opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1], val[2]) - } - | tOROP - { - result = @builder.args(val[0], [], val[0]) - } - | tPIPE block_param opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - - opt_bv_decl: opt_nl - { - result = [] - } - | opt_nl tSEMI bv_decls opt_nl - { - result = val[2] - } - - bv_decls: bvar - { - result = [ val[0] ] - } - | bv_decls tCOMMA bvar - { - result = val[0] << val[2] - } - - bvar: tIDENTIFIER - { - result = @builder.shadowarg(val[0]) - } - | f_bad_arg - - lambda: { - @static_env.extend_dynamic - } - f_larglist lambda_body - { - result = [ val[1], val[2] ] - - @static_env.unextend - } - - f_larglist: tLPAREN2 f_args opt_bv_decl tRPAREN - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - | f_args - { - result = @builder.args(nil, val[0], nil) - } - - lambda_body: tLAMBEG compstmt tRCURLY - { - result = [ val[0], val[1], val[2] ] - } - | kDO_LAMBDA compstmt kEND - { - result = [ val[0], val[1], val[2] ] - } - - do_block: kDO_BLOCK - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - block_call: command do_block - { - begin_t, block_args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, block_args, body, end_t) - } - | block_call dot_or_colon operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | block_call dot_or_colon operation2 opt_paren_args brace_block - { - lparen_t, args, rparen_t = val[3] - method_call = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | block_call dot_or_colon operation2 command_args do_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - - method_call: fcall paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - } - | primary_value tDOT operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation2 paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation3 - { - result = @builder.call_method(val[0], val[1], val[2]) - } - | primary_value tDOT paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | kSUPER paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - } - | kSUPER - { - result = @builder.keyword_cmd(:zsuper, val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index(val[0], val[1], val[2], val[3]) - } - - brace_block: tLCURLY - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - | kDO - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - case_body: kWHEN args then compstmt cases - { - result = [ @builder.when(val[0], val[1], val[2], val[3]), - *val[4] ] - } - - cases: opt_else - { - result = [ val[0] ] - } - | case_body - - opt_rescue: kRESCUE exc_list exc_var then compstmt opt_rescue - { - assoc_t, exc_var = val[2] - - if val[1] - exc_list = @builder.array(nil, val[1], nil) - end - - result = [ @builder.rescue_body(val[0], - exc_list, assoc_t, exc_var, - val[3], val[4]), - *val[5] ] - } - | - { - result = [] - } - - exc_list: arg_value - { - result = [ val[0] ] - } - | mrhs - | none - - exc_var: tASSOC lhs - { - result = [ val[0], val[1] ] - } - | none - - opt_ensure: kENSURE compstmt - { - result = [ val[0], val[1] ] - } - | none - - literal: numeric - | symbol - | dsym - - strings: string - { - result = @builder.string_compose(nil, val[0], nil) - } - - string: string1 - { - result = [ val[0] ] - } - | string string1 - { - result = val[0] << val[1] - } - - string1: tSTRING_BEG string_contents tSTRING_END - { - result = @builder.string_compose(val[0], val[1], val[2]) - } - | tSTRING - { - result = @builder.string(val[0]) - } - | tCHARACTER - { - result = @builder.character(val[0]) - } - - xstring: tXSTRING_BEG xstring_contents tSTRING_END - { - result = @builder.xstring_compose(val[0], val[1], val[2]) - } - - regexp: tREGEXP_BEG regexp_contents tSTRING_END tREGEXP_OPT - { - opts = @builder.regexp_options(val[3]) - result = @builder.regexp_compose(val[0], val[1], val[2], opts) - } - - words: tWORDS_BEG word_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - word_list: # nothing - { - result = [] - } - | word_list word tSPACE - { - result = val[0] << @builder.word(val[1]) - } - - word: string_content - { - result = [ val[0] ] - } - | word string_content - { - result = val[0] << val[1] - } - - symbols: tSYMBOLS_BEG symbol_list tSTRING_END - { - result = @builder.symbols_compose(val[0], val[1], val[2]) - } - - symbol_list: # nothing - { - result = [] - } - | symbol_list word tSPACE - { - result = val[0] << @builder.word(val[1]) - } - - qwords: tQWORDS_BEG qword_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - qsymbols: tQSYMBOLS_BEG qsym_list tSTRING_END - { - result = @builder.symbols_compose(val[0], val[1], val[2]) - } - - qword_list: # nothing - { - result = [] - } - | qword_list tSTRING_CONTENT tSPACE - { - result = val[0] << @builder.string_internal(val[1]) - } - - qsym_list: # nothing - { - result = [] - } - | qsym_list tSTRING_CONTENT tSPACE - { - result = val[0] << @builder.symbol_internal(val[1]) - } - - string_contents: # nothing - { - result = [] - } - | string_contents string_content - { - result = val[0] << val[1] - } - -xstring_contents: # nothing - { - result = [] - } - | xstring_contents string_content - { - result = val[0] << val[1] - } - -regexp_contents: # nothing - { - result = [] - } - | regexp_contents string_content - { - result = val[0] << val[1] - } - - string_content: tSTRING_CONTENT - { - result = @builder.string_internal(val[0]) - } - | tSTRING_DVAR string_dvar - { - result = val[1] - } - | tSTRING_DBEG - { - @lexer.cond.push(false) - @lexer.cmdarg.push(false) - } - compstmt tSTRING_DEND - { - @lexer.cond.lexpop - @lexer.cmdarg.lexpop - - result = @builder.begin(val[0], val[2], val[3]) - } - - string_dvar: tGVAR - { - result = @builder.gvar(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - | backref - - - symbol: tSYMBOL - { - result = @builder.symbol(val[0]) - } - - dsym: tSYMBEG xstring_contents tSTRING_END - { - result = @builder.symbol_compose(val[0], val[1], val[2]) - } - - numeric: tINTEGER - { - result = @builder.integer(val[0]) - } - | tFLOAT - { - result = @builder.float(val[0]) - } - | tUMINUS_NUM tINTEGER =tLOWEST - { - result = @builder.negate(val[0], - @builder.integer(val[1])) - } - | tUMINUS_NUM tFLOAT =tLOWEST - { - result = @builder.negate(val[0], - @builder.float(val[1])) - } - - user_variable: tIDENTIFIER - { - result = @builder.ident(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tGVAR - { - result = @builder.gvar(val[0]) - } - | tCONSTANT - { - result = @builder.const(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - -keyword_variable: kNIL - { - result = @builder.nil(val[0]) - } - | kSELF - { - result = @builder.self(val[0]) - } - | kTRUE - { - result = @builder.true(val[0]) - } - | kFALSE - { - result = @builder.false(val[0]) - } - | k__FILE__ - { - result = @builder.__FILE__(val[0]) - } - | k__LINE__ - { - result = @builder.__LINE__(val[0]) - } - | k__ENCODING__ - { - result = @builder.__ENCODING__(val[0]) - } - - var_ref: user_variable - { - result = @builder.accessible(val[0]) - } - | keyword_variable - { - result = @builder.accessible(val[0]) - } - - var_lhs: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - - backref: tNTH_REF - { - result = @builder.nth_ref(val[0]) - } - | tBACK_REF - { - result = @builder.back_ref(val[0]) - } - - superclass: term - { - result = nil - } - | tLT - { - @lexer.state = :expr_value - } - expr_value term - { - result = [ val[0], val[2] ] - } - | error term - { - yyerrok - result = nil - } - - f_arglist: tLPAREN2 f_args rparen - { - result = @builder.args(val[0], val[1], val[2]) - - @lexer.state = :expr_value - } - | f_args term - { - result = @builder.args(nil, val[0], nil) - } - - args_tail: f_kwarg tCOMMA f_kwrest opt_f_block_arg - { - result = val[0].concat(val[2]).concat(val[3]) - } - | f_kwarg opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_kwrest opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_block_arg - { - result = [ val[0] ] - } - - opt_args_tail: tCOMMA args_tail - { - result = val[1] - } - | # nothing - { - result = [] - } - - f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_optarg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_optarg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_optarg opt_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | args_tail - { - result = val[0] - } - | # nothing - { - result = [] - } - - f_bad_arg: tCONSTANT - { - diagnostic :error, :argument_const, nil, val[0] - } - | tIVAR - { - diagnostic :error, :argument_ivar, nil, val[0] - } - | tGVAR - { - diagnostic :error, :argument_gvar, nil, val[0] - } - | tCVAR - { - diagnostic :error, :argument_cvar, nil, val[0] - } - - f_norm_arg: f_bad_arg - | tIDENTIFIER - - f_arg_item: f_norm_arg - { - @static_env.declare val[0][0] - - result = @builder.arg(val[0]) - } - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_arg: f_arg_item - { - result = [ val[0] ] - } - | f_arg tCOMMA f_arg_item - { - result = val[0] << val[2] - } - - f_kw: tLABEL arg_value - { - check_kwarg_name(val[0]) - - @static_env.declare val[0][0] - - result = @builder.kwoptarg(val[0], val[1]) - } - - f_block_kw: tLABEL primary_value - { - check_kwarg_name(val[0]) - - @static_env.declare val[0][0] - - result = @builder.kwoptarg(val[0], val[1]) - } - - f_block_kwarg: f_block_kw - { - result = [ val[0] ] - } - | f_block_kwarg tCOMMA f_block_kw - { - result = val[0] << val[2] - } - - f_kwarg: f_kw - { - result = [ val[0] ] - } - | f_kwarg tCOMMA f_kw - { - result = val[0] << val[2] - } - - kwrest_mark: tPOW | tDSTAR - - f_kwrest: kwrest_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = [ @builder.kwrestarg(val[0], val[1]) ] - } - | kwrest_mark - { - result = [ @builder.kwrestarg(val[0]) ] - } - - f_opt: tIDENTIFIER tEQL arg_value - { - @static_env.declare val[0][0] - - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_opt: tIDENTIFIER tEQL primary_value - { - @static_env.declare val[0][0] - - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_optarg: f_block_opt - { - result = [ val[0] ] - } - | f_block_optarg tCOMMA f_block_opt - { - result = val[0] << val[2] - } - - f_optarg: f_opt - { - result = [ val[0] ] - } - | f_optarg tCOMMA f_opt - { - result = val[0] << val[2] - } - - restarg_mark: tSTAR2 | tSTAR - - f_rest_arg: restarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - } - | restarg_mark - { - result = [ @builder.restarg(val[0]) ] - } - - blkarg_mark: tAMPER2 | tAMPER - - f_block_arg: blkarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = @builder.blockarg(val[0], val[1]) - } - - opt_f_block_arg: tCOMMA f_block_arg - { - result = [ val[1] ] - } - | - { - result = [] - } - - singleton: var_ref - | tLPAREN2 expr rparen - { - result = val[1] - } - - assoc_list: # nothing - { - result = [] - } - | assocs trailer - - assocs: assoc - { - result = [ val[0] ] - } - | assocs tCOMMA assoc - { - result = val[0] << val[2] - } - - assoc: arg_value tASSOC arg_value - { - result = @builder.pair(val[0], val[1], val[2]) - } - | tLABEL arg_value - { - result = @builder.pair_keyword(val[0], val[1]) - } - | tDSTAR arg_value - { - result = @builder.kwsplat(val[0], val[1]) - } - - operation: tIDENTIFIER | tCONSTANT | tFID - operation2: tIDENTIFIER | tCONSTANT | tFID | op - operation3: tIDENTIFIER | tFID | op - dot_or_colon: tDOT | tCOLON2 - opt_terms: | terms - opt_nl: | tNL - rparen: opt_nl tRPAREN - { - result = val[1] - } - rbracket: opt_nl tRBRACK - { - result = val[1] - } - trailer: | tNL | tCOMMA - - term: tSEMI - { - yyerrok - } - | tNL - - terms: term - | terms tSEMI - - none: # nothing - { - result = nil - } -end - ----- header - -require 'parser' - -Parser.check_for_encoding_support - ----- inner - - def version - 20 - end - - def default_encoding - Encoding::UTF_8 - end diff --git a/test/racc/assets/ruby21.y b/test/racc/assets/ruby21.y deleted file mode 100644 index 2ac94afb0c..0000000000 --- a/test/racc/assets/ruby21.y +++ /dev/null @@ -1,2359 +0,0 @@ -# Copyright (c) 2013 Peter Zotov <whitequark@whitequark.org> -# -# Parts of the source are derived from ruby_parser: -# Copyright (c) Ryan Davis, seattle.rb -# -# MIT License -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class Parser::Ruby21 - -token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS - kTHEN kELSIF kELSE kCASE kWHEN kWHILE kUNTIL kFOR kBREAK kNEXT - kREDO kRETRY kIN kDO kDO_COND kDO_BLOCK kDO_LAMBDA kRETURN kYIELD kSUPER - kSELF kNIL kTRUE kFALSE kAND kOR kNOT kIF_MOD kUNLESS_MOD kWHILE_MOD - kUNTIL_MOD kRESCUE_MOD kALIAS kDEFINED klBEGIN klEND k__LINE__ - k__FILE__ k__ENCODING__ tIDENTIFIER tFID tGVAR tIVAR tCONSTANT - tLABEL tCVAR tNTH_REF tBACK_REF tSTRING_CONTENT tINTEGER tFLOAT - tREGEXP_END tUPLUS tUMINUS tUMINUS_NUM tPOW tCMP tEQ tEQQ tNEQ - tGEQ tLEQ tANDOP tOROP tMATCH tNMATCH tDOT tDOT2 tDOT3 tAREF - tASET tLSHFT tRSHFT tCOLON2 tCOLON3 tOP_ASGN tASSOC tLPAREN - tLPAREN2 tRPAREN tLPAREN_ARG tLBRACK tLBRACK2 tRBRACK tLBRACE - tLBRACE_ARG tSTAR tSTAR2 tAMPER tAMPER2 tTILDE tPERCENT tDIVIDE - tDSTAR tPLUS tMINUS tLT tGT tPIPE tBANG tCARET tLCURLY tRCURLY - tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG tREGEXP_OPT - tWORDS_BEG tQWORDS_BEG tSYMBOLS_BEG tQSYMBOLS_BEG tSTRING_DBEG - tSTRING_DVAR tSTRING_END tSTRING_DEND tSTRING tSYMBOL - tNL tEH tCOLON tCOMMA tSPACE tSEMI tLAMBDA tLAMBEG tCHARACTER - tRATIONAL tIMAGINARY - -prechigh - right tBANG tTILDE tUPLUS - right tPOW - right tUMINUS_NUM tUMINUS - left tSTAR2 tDIVIDE tPERCENT - left tPLUS tMINUS - left tLSHFT tRSHFT - left tAMPER2 - left tPIPE tCARET - left tGT tGEQ tLT tLEQ - nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH - left tANDOP - left tOROP - nonassoc tDOT2 tDOT3 - right tEH tCOLON - left kRESCUE_MOD - right tEQL tOP_ASGN - nonassoc kDEFINED - right kNOT - left kOR kAND - nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD - nonassoc tLBRACE_ARG - nonassoc tLOWEST -preclow - -rule - - program: top_compstmt - - top_compstmt: top_stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - top_stmts: # nothing - { - result = [] - } - | top_stmt - { - result = [ val[0] ] - } - | top_stmts terms top_stmt - { - result = val[0] << val[2] - } - | error top_stmt - { - result = [ val[1] ] - } - - top_stmt: stmt - | klBEGIN tLCURLY top_compstmt tRCURLY - { - result = @builder.preexe(val[0], val[1], val[2], val[3]) - } - - bodystmt: compstmt opt_rescue opt_else opt_ensure - { - rescue_bodies = val[1] - else_t, else_ = val[2] - ensure_t, ensure_ = val[3] - - if rescue_bodies.empty? && !else_.nil? - diagnostic :warning, :useless_else, nil, else_t - end - - result = @builder.begin_body(val[0], - rescue_bodies, - else_t, else_, - ensure_t, ensure_) - } - - compstmt: stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - stmts: # nothing - { - result = [] - } - | stmt_or_begin - { - result = [ val[0] ] - } - | stmts terms stmt_or_begin - { - result = val[0] << val[2] - } - | error stmt - { - result = [ val[1] ] - } - - stmt_or_begin: stmt - | klBEGIN tLCURLY top_compstmt tRCURLY - { - diagnostic :error, :begin_in_method, nil, val[0] - } - - stmt: kALIAS fitem - { - @lexer.state = :expr_fname - } - fitem - { - result = @builder.alias(val[0], val[1], val[3]) - } - | kALIAS tGVAR tGVAR - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.gvar(val[2])) - } - | kALIAS tGVAR tBACK_REF - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.back_ref(val[2])) - } - | kALIAS tGVAR tNTH_REF - { - diagnostic :error, :nth_ref_alias, nil, val[2] - } - | kUNDEF undef_list - { - result = @builder.undef_method(val[0], val[1]) - } - | stmt kIF_MOD expr_value - { - result = @builder.condition_mod(val[0], nil, - val[1], val[2]) - } - | stmt kUNLESS_MOD expr_value - { - result = @builder.condition_mod(nil, val[0], - val[1], val[2]) - } - | stmt kWHILE_MOD expr_value - { - result = @builder.loop_mod(:while, val[0], val[1], val[2]) - } - | stmt kUNTIL_MOD expr_value - { - result = @builder.loop_mod(:until, val[0], val[1], val[2]) - } - | stmt kRESCUE_MOD stmt - { - rescue_body = @builder.rescue_body(val[1], - nil, nil, nil, - nil, val[2]) - - result = @builder.begin_body(val[0], [ rescue_body ]) - } - | klEND tLCURLY compstmt tRCURLY - { - result = @builder.postexe(val[0], val[1], val[2], val[3]) - } - | command_asgn - | mlhs tEQL command_call - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN command_call - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | backref tOP_ASGN command_call - { - @builder.op_assign(val[0], val[1], val[2]) - } - | lhs tEQL mrhs - { - result = @builder.assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | mlhs tEQL mrhs_arg - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | expr - - command_asgn: lhs tEQL command_call - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL command_asgn - { - result = @builder.assign(val[0], val[1], val[2]) - } - - expr: command_call - | expr kAND expr - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | expr kOR expr - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kNOT opt_nl expr - { - result = @builder.not_op(val[0], nil, val[2], nil) - } - | tBANG command_call - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | arg - - expr_value: expr - - command_call: command - | block_command - - block_command: block_call - | block_call dot_or_colon operation2 command_args - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - - cmd_brace_block: tLBRACE_ARG - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - fcall: operation - - command: fcall command_args =tLOWEST - { - result = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - } - | fcall command_args cmd_brace_block - { - method_call = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - - begin_t, args, body, end_t = val[2] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tDOT operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - | primary_value tDOT operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tCOLON2 operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - | primary_value tCOLON2 operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | kSUPER command_args - { - result = @builder.keyword_cmd(:super, val[0], - nil, val[1], nil) - } - | kYIELD command_args - { - result = @builder.keyword_cmd(:yield, val[0], - nil, val[1], nil) - } - | kRETURN call_args - { - result = @builder.keyword_cmd(:return, val[0], - nil, val[1], nil) - } - | kBREAK call_args - { - result = @builder.keyword_cmd(:break, val[0], - nil, val[1], nil) - } - | kNEXT call_args - { - result = @builder.keyword_cmd(:next, val[0], - nil, val[1], nil) - } - - mlhs: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_inner: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - mlhs_basic: mlhs_head - | mlhs_head mlhs_item - { - result = val[0]. - push(val[1]) - } - | mlhs_head tSTAR mlhs_node - { - result = val[0]. - push(@builder.splat(val[1], val[2])) - } - | mlhs_head tSTAR mlhs_node tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1], val[2])). - concat(val[4]) - } - | mlhs_head tSTAR - { - result = val[0]. - push(@builder.splat(val[1])) - } - | mlhs_head tSTAR tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1])). - concat(val[3]) - } - | tSTAR mlhs_node - { - result = [ @builder.splat(val[0], val[1]) ] - } - | tSTAR mlhs_node tCOMMA mlhs_post - { - result = [ @builder.splat(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.splat(val[0]) ] - } - | tSTAR tCOMMA mlhs_post - { - result = [ @builder.splat(val[0]), - *val[2] ] - } - - mlhs_item: mlhs_node - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_head: mlhs_item tCOMMA - { - result = [ val[0] ] - } - | mlhs_head mlhs_item tCOMMA - { - result = val[0] << val[1] - } - - mlhs_post: mlhs_item - { - result = [ val[0] ] - } - | mlhs_post tCOMMA mlhs_item - { - result = val[0] << val[2] - } - - mlhs_node: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - lhs: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - cname: tIDENTIFIER - { - diagnostic :error, :module_name_const, nil, val[0] - } - | tCONSTANT - - cpath: tCOLON3 cname - { - result = @builder.const_global(val[0], val[1]) - } - | cname - { - result = @builder.const(val[0]) - } - | primary_value tCOLON2 cname - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - - fname: tIDENTIFIER | tCONSTANT | tFID - | op - | reswords - - fsym: fname - { - result = @builder.symbol(val[0]) - } - | symbol - - fitem: fsym - | dsym - - undef_list: fitem - { - result = [ val[0] ] - } - | undef_list tCOMMA - { - @lexer.state = :expr_fname - } - fitem - { - result = val[0] << val[3] - } - - op: tPIPE | tCARET | tAMPER2 | tCMP | tEQ | tEQQ - | tMATCH | tNMATCH | tGT | tGEQ | tLT | tLEQ - | tNEQ | tLSHFT | tRSHFT | tPLUS | tMINUS | tSTAR2 - | tSTAR | tDIVIDE | tPERCENT | tPOW | tBANG | tTILDE - | tUPLUS | tUMINUS | tAREF | tASET | tDSTAR | tBACK_REF2 - - reswords: k__LINE__ | k__FILE__ | k__ENCODING__ | klBEGIN | klEND - | kALIAS | kAND | kBEGIN | kBREAK | kCASE - | kCLASS | kDEF | kDEFINED | kDO | kELSE - | kELSIF | kEND | kENSURE | kFALSE | kFOR - | kIN | kMODULE | kNEXT | kNIL | kNOT - | kOR | kREDO | kRESCUE | kRETRY | kRETURN - | kSELF | kSUPER | kTHEN | kTRUE | kUNDEF - | kWHEN | kYIELD | kIF | kUNLESS | kWHILE - | kUNTIL - - arg: lhs tEQL arg - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.assign(val[0], val[1], rescue_) - } - | var_lhs tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.op_assign(val[0], val[1], rescue_) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN arg - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN arg - { - const = @builder.const_op_assignable( - @builder.const_fetch(val[0], val[1], val[2])) - result = @builder.op_assign(const, val[3], val[4]) - } - | tCOLON3 tCONSTANT tOP_ASGN arg - { - const = @builder.const_op_assignable( - @builder.const_global(val[0], val[1])) - result = @builder.op_assign(const, val[2], val[3]) - } - | backref tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | arg tDOT2 arg - { - result = @builder.range_inclusive(val[0], val[1], val[2]) - } - | arg tDOT3 arg - { - result = @builder.range_exclusive(val[0], val[1], val[2]) - } - | arg tPLUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMINUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tSTAR2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tDIVIDE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPERCENT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPOW arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tUMINUS_NUM simple_numeric tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - val[1], val[2], val[3])) - } - | tUPLUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | tUMINUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tPIPE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCARET arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tAMPER2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCMP arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tNEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMATCH arg - { - result = @builder.match_op(val[0], val[1], val[2]) - } - | arg tNMATCH arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tBANG arg - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | tTILDE arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tLSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tRSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tANDOP arg - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | arg tOROP arg - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kDEFINED opt_nl arg - { - result = @builder.keyword_cmd(:defined?, val[0], nil, [ val[2] ], nil) - } - - | arg tEH arg opt_nl tCOLON arg - { - result = @builder.ternary(val[0], val[1], - val[2], val[4], val[5]) - } - | primary - - arg_value: arg - - aref_args: none - | args trailer - | args tCOMMA assocs trailer - { - result = val[0] << @builder.associate(nil, val[2], nil) - } - | assocs trailer - { - result = [ @builder.associate(nil, val[0], nil) ] - } - - paren_args: tLPAREN2 opt_call_args rparen - { - result = val - } - - opt_paren_args: # nothing - { - result = [ nil, [], nil ] - } - | paren_args - - opt_call_args: # nothing - { - result = [] - } - | call_args - | args tCOMMA - | args tCOMMA assocs tCOMMA - { - result = val[0] << @builder.associate(nil, val[2], nil) - } - | assocs tCOMMA - { - result = [ @builder.associate(nil, val[0], nil) ] - } - - call_args: command - { - result = [ val[0] ] - } - | args opt_block_arg - { - result = val[0].concat(val[1]) - } - | assocs opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil) ] - result.concat(val[1]) - } - | args tCOMMA assocs opt_block_arg - { - assocs = @builder.associate(nil, val[2], nil) - result = val[0] << assocs - result.concat(val[3]) - } - | block_arg - { - result = [ val[0] ] - } - - command_args: { - result = @lexer.cmdarg.dup - @lexer.cmdarg.push(true) - } - call_args - { - @lexer.cmdarg = val[0] - - result = val[1] - } - - block_arg: tAMPER arg_value - { - result = @builder.block_pass(val[0], val[1]) - } - - opt_block_arg: tCOMMA block_arg - { - result = [ val[1] ] - } - | # nothing - { - result = [] - } - - args: arg_value - { - result = [ val[0] ] - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - | args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - - mrhs_arg: mrhs - { - result = @builder.array(nil, val[0], nil) - } - | arg_value - - mrhs: args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - - primary: literal - | strings - | xstring - | regexp - | words - | qwords - | symbols - | qsymbols - | var_ref - | backref - | tFID - { - result = @builder.call_method(nil, nil, val[0]) - } - | kBEGIN - { - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - } - bodystmt kEND - { - @lexer.cmdarg = val[1] - - result = @builder.begin_keyword(val[0], val[2], val[3]) - } - | tLPAREN_ARG - { - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - } - expr - { - @lexer.state = :expr_endarg - } - opt_nl tRPAREN - { - @lexer.cmdarg = val[1] - - result = @builder.begin(val[0], val[2], val[5]) - } - | tLPAREN_ARG - { - @lexer.state = :expr_endarg - } - opt_nl tRPAREN - { - result = @builder.begin(val[0], nil, val[3]) - } - | tLPAREN compstmt tRPAREN - { - result = @builder.begin(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - | tCOLON3 tCONSTANT - { - result = @builder.const_global(val[0], val[1]) - } - | tLBRACK aref_args tRBRACK - { - result = @builder.array(val[0], val[1], val[2]) - } - | tLBRACE assoc_list tRCURLY - { - result = @builder.associate(val[0], val[1], val[2]) - } - | kRETURN - { - result = @builder.keyword_cmd(:return, val[0]) - } - | kYIELD tLPAREN2 call_args rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], val[2], val[3]) - } - | kYIELD tLPAREN2 rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], [], val[2]) - } - | kYIELD - { - result = @builder.keyword_cmd(:yield, val[0]) - } - | kDEFINED opt_nl tLPAREN2 expr rparen - { - result = @builder.keyword_cmd(:defined?, val[0], - val[2], [ val[3] ], val[4]) - } - | kNOT tLPAREN2 expr rparen - { - result = @builder.not_op(val[0], val[1], val[2], val[3]) - } - | kNOT tLPAREN2 rparen - { - result = @builder.not_op(val[0], val[1], nil, val[2]) - } - | fcall brace_block - { - method_call = @builder.call_method(nil, nil, val[0]) - - begin_t, args, body, end_t = val[1] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | method_call - | method_call brace_block - { - begin_t, args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, args, body, end_t) - } - | tLAMBDA lambda - { - lambda_call = @builder.call_lambda(val[0]) - - args, (begin_t, body, end_t) = val[1] - result = @builder.block(lambda_call, - begin_t, args, body, end_t) - } - | kIF expr_value then compstmt if_tail kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, val[5]) - } - | kUNLESS expr_value then compstmt opt_else kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - else_, else_t, - val[3], val[5]) - } - | kWHILE - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:while, val[0], val[2], val[3], - val[5], val[6]) - } - | kUNTIL - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:until, val[0], val[2], val[3], - val[5], val[6]) - } - | kCASE expr_value opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[3] - - result = @builder.case(val[0], val[1], - when_bodies, else_t, else_body, - val[4]) - } - | kCASE opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[2] - - result = @builder.case(val[0], nil, - when_bodies, else_t, else_body, - val[3]) - } - | kFOR for_var kIN - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.for(val[0], val[1], - val[2], val[4], - val[5], val[7], val[8]) - } - | kCLASS cpath superclass - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :class_in_def, nil, val[0] - end - - lt_t, superclass = val[2] - result = @builder.def_class(val[0], val[1], - lt_t, superclass, - val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kCLASS tLSHFT expr term - { - result = @def_level - @def_level = 0 - - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - result = @builder.def_sclass(val[0], val[1], val[2], - val[5], val[6]) - - @lexer.pop_cmdarg - @static_env.unextend - - @def_level = val[4] - } - | kMODULE cpath - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :module_in_def, nil, val[0] - end - - result = @builder.def_module(val[0], val[1], - val[3], val[4]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kDEF fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_method(val[0], val[1], - val[3], val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kDEF singleton dot_or_colon - { - @lexer.state = :expr_fname - } - fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_singleton(val[0], val[1], val[2], - val[4], val[6], val[7], val[8]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kBREAK - { - result = @builder.keyword_cmd(:break, val[0]) - } - | kNEXT - { - result = @builder.keyword_cmd(:next, val[0]) - } - | kREDO - { - result = @builder.keyword_cmd(:redo, val[0]) - } - | kRETRY - { - result = @builder.keyword_cmd(:retry, val[0]) - } - - primary_value: primary - - then: term - | kTHEN - | term kTHEN - { - result = val[1] - } - - do: term - | kDO_COND - - if_tail: opt_else - | kELSIF expr_value then compstmt if_tail - { - else_t, else_ = val[4] - result = [ val[0], - @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, nil), - ] - } - - opt_else: none - | kELSE compstmt - { - result = val - } - - for_var: lhs - | mlhs - - f_marg: f_norm_arg - { - result = @builder.arg(val[0]) - } - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_marg_list: f_marg - { - result = [ val[0] ] - } - | f_marg_list tCOMMA f_marg - { - result = val[0] << val[2] - } - - f_margs: f_marg_list - | f_marg_list tCOMMA tSTAR f_norm_arg - { - result = val[0]. - push(@builder.restarg(val[2], val[3])) - } - | f_marg_list tCOMMA tSTAR f_norm_arg tCOMMA f_marg_list - { - result = val[0]. - push(@builder.restarg(val[2], val[3])). - concat(val[5]) - } - | f_marg_list tCOMMA tSTAR - { - result = val[0]. - push(@builder.restarg(val[2])) - } - | f_marg_list tCOMMA tSTAR tCOMMA f_marg_list - { - result = val[0]. - push(@builder.restarg(val[2])). - concat(val[4]) - } - | tSTAR f_norm_arg - { - result = [ @builder.restarg(val[0], val[1]) ] - } - | tSTAR f_norm_arg tCOMMA f_marg_list - { - result = [ @builder.restarg(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.restarg(val[0]) ] - } - | tSTAR tCOMMA f_marg_list - { - result = [ @builder.restarg(val[0]), - *val[2] ] - } - - block_args_tail: f_block_kwarg tCOMMA f_kwrest opt_f_block_arg - { - result = val[0].concat(val[2]).concat(val[3]) - } - | f_block_kwarg opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_kwrest opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_block_arg - { - result = [ val[0] ] - } - -opt_block_args_tail: - tCOMMA block_args_tail - { - result = val[1] - } - | # nothing - { - result = [] - } - - block_param: f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_block_optarg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_block_args_tail - { - result = val[0].concat(val[1]) - } - | f_block_optarg tCOMMA f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_block_optarg opt_block_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_block_optarg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | block_args_tail - - opt_block_param: # nothing - { - result = @builder.args(nil, [], nil) - } - | block_param_def - { - @lexer.state = :expr_value - } - - block_param_def: tPIPE opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1], val[2]) - } - | tOROP - { - result = @builder.args(val[0], [], val[0]) - } - | tPIPE block_param opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - - opt_bv_decl: opt_nl - { - result = [] - } - | opt_nl tSEMI bv_decls opt_nl - { - result = val[2] - } - - bv_decls: bvar - { - result = [ val[0] ] - } - | bv_decls tCOMMA bvar - { - result = val[0] << val[2] - } - - bvar: tIDENTIFIER - { - result = @builder.shadowarg(val[0]) - } - | f_bad_arg - - lambda: { - @static_env.extend_dynamic - } - f_larglist - { - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - } - lambda_body - { - @lexer.cmdarg = val[2] - @lexer.cmdarg.lexpop - - result = [ val[1], val[3] ] - - @static_env.unextend - } - - f_larglist: tLPAREN2 f_args opt_bv_decl tRPAREN - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - | f_args - { - result = @builder.args(nil, val[0], nil) - } - - lambda_body: tLAMBEG compstmt tRCURLY - { - result = [ val[0], val[1], val[2] ] - } - | kDO_LAMBDA compstmt kEND - { - result = [ val[0], val[1], val[2] ] - } - - do_block: kDO_BLOCK - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - block_call: command do_block - { - begin_t, block_args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, block_args, body, end_t) - } - | block_call dot_or_colon operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | block_call dot_or_colon operation2 opt_paren_args brace_block - { - lparen_t, args, rparen_t = val[3] - method_call = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | block_call dot_or_colon operation2 command_args do_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - - method_call: fcall paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - } - | primary_value tDOT operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation2 paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation3 - { - result = @builder.call_method(val[0], val[1], val[2]) - } - | primary_value tDOT paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | kSUPER paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - } - | kSUPER - { - result = @builder.keyword_cmd(:zsuper, val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index(val[0], val[1], val[2], val[3]) - } - - brace_block: tLCURLY - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - | kDO - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - case_body: kWHEN args then compstmt cases - { - result = [ @builder.when(val[0], val[1], val[2], val[3]), - *val[4] ] - } - - cases: opt_else - { - result = [ val[0] ] - } - | case_body - - opt_rescue: kRESCUE exc_list exc_var then compstmt opt_rescue - { - assoc_t, exc_var = val[2] - - if val[1] - exc_list = @builder.array(nil, val[1], nil) - end - - result = [ @builder.rescue_body(val[0], - exc_list, assoc_t, exc_var, - val[3], val[4]), - *val[5] ] - } - | - { - result = [] - } - - exc_list: arg_value - { - result = [ val[0] ] - } - | mrhs - | none - - exc_var: tASSOC lhs - { - result = [ val[0], val[1] ] - } - | none - - opt_ensure: kENSURE compstmt - { - result = [ val[0], val[1] ] - } - | none - - literal: numeric - | symbol - | dsym - - strings: string - { - result = @builder.string_compose(nil, val[0], nil) - } - - string: string1 - { - result = [ val[0] ] - } - | string string1 - { - result = val[0] << val[1] - } - - string1: tSTRING_BEG string_contents tSTRING_END - { - result = @builder.string_compose(val[0], val[1], val[2]) - } - | tSTRING - { - result = @builder.string(val[0]) - } - | tCHARACTER - { - result = @builder.character(val[0]) - } - - xstring: tXSTRING_BEG xstring_contents tSTRING_END - { - result = @builder.xstring_compose(val[0], val[1], val[2]) - } - - regexp: tREGEXP_BEG regexp_contents tSTRING_END tREGEXP_OPT - { - opts = @builder.regexp_options(val[3]) - result = @builder.regexp_compose(val[0], val[1], val[2], opts) - } - - words: tWORDS_BEG word_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - word_list: # nothing - { - result = [] - } - | word_list word tSPACE - { - result = val[0] << @builder.word(val[1]) - } - - word: string_content - { - result = [ val[0] ] - } - | word string_content - { - result = val[0] << val[1] - } - - symbols: tSYMBOLS_BEG symbol_list tSTRING_END - { - result = @builder.symbols_compose(val[0], val[1], val[2]) - } - - symbol_list: # nothing - { - result = [] - } - | symbol_list word tSPACE - { - result = val[0] << @builder.word(val[1]) - } - - qwords: tQWORDS_BEG qword_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - qsymbols: tQSYMBOLS_BEG qsym_list tSTRING_END - { - result = @builder.symbols_compose(val[0], val[1], val[2]) - } - - qword_list: # nothing - { - result = [] - } - | qword_list tSTRING_CONTENT tSPACE - { - result = val[0] << @builder.string_internal(val[1]) - } - - qsym_list: # nothing - { - result = [] - } - | qsym_list tSTRING_CONTENT tSPACE - { - result = val[0] << @builder.symbol_internal(val[1]) - } - - string_contents: # nothing - { - result = [] - } - | string_contents string_content - { - result = val[0] << val[1] - } - -xstring_contents: # nothing - { - result = [] - } - | xstring_contents string_content - { - result = val[0] << val[1] - } - -regexp_contents: # nothing - { - result = [] - } - | regexp_contents string_content - { - result = val[0] << val[1] - } - - string_content: tSTRING_CONTENT - { - result = @builder.string_internal(val[0]) - } - | tSTRING_DVAR string_dvar - { - result = val[1] - } - | tSTRING_DBEG - { - @lexer.cond.push(false) - @lexer.cmdarg.push(false) - } - compstmt tSTRING_DEND - { - @lexer.cond.lexpop - @lexer.cmdarg.lexpop - - result = @builder.begin(val[0], val[2], val[3]) - } - - string_dvar: tGVAR - { - result = @builder.gvar(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - | backref - - - symbol: tSYMBOL - { - result = @builder.symbol(val[0]) - } - - dsym: tSYMBEG xstring_contents tSTRING_END - { - result = @builder.symbol_compose(val[0], val[1], val[2]) - } - - numeric: simple_numeric - { - result = val[0] - } - | tUMINUS_NUM simple_numeric =tLOWEST - { - result = @builder.negate(val[0], val[1]) - } - - simple_numeric: tINTEGER - { - result = @builder.integer(val[0]) - } - | tFLOAT - { - result = @builder.float(val[0]) - } - | tRATIONAL - { - result = @builder.rational(val[0]) - } - | tIMAGINARY - { - result = @builder.complex(val[0]) - } - - user_variable: tIDENTIFIER - { - result = @builder.ident(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tGVAR - { - result = @builder.gvar(val[0]) - } - | tCONSTANT - { - result = @builder.const(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - -keyword_variable: kNIL - { - result = @builder.nil(val[0]) - } - | kSELF - { - result = @builder.self(val[0]) - } - | kTRUE - { - result = @builder.true(val[0]) - } - | kFALSE - { - result = @builder.false(val[0]) - } - | k__FILE__ - { - result = @builder.__FILE__(val[0]) - } - | k__LINE__ - { - result = @builder.__LINE__(val[0]) - } - | k__ENCODING__ - { - result = @builder.__ENCODING__(val[0]) - } - - var_ref: user_variable - { - result = @builder.accessible(val[0]) - } - | keyword_variable - { - result = @builder.accessible(val[0]) - } - - var_lhs: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - - backref: tNTH_REF - { - result = @builder.nth_ref(val[0]) - } - | tBACK_REF - { - result = @builder.back_ref(val[0]) - } - - superclass: term - { - result = nil - } - | tLT - { - @lexer.state = :expr_value - } - expr_value term - { - result = [ val[0], val[2] ] - } - | error term - { - yyerrok - result = nil - } - - f_arglist: tLPAREN2 f_args rparen - { - result = @builder.args(val[0], val[1], val[2]) - - @lexer.state = :expr_value - } - | { - result = @lexer.in_kwarg - @lexer.in_kwarg = true - } - f_args term - { - @lexer.in_kwarg = val[0] - result = @builder.args(nil, val[1], nil) - } - - - args_tail: f_kwarg tCOMMA f_kwrest opt_f_block_arg - { - result = val[0].concat(val[2]).concat(val[3]) - } - | f_kwarg opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_kwrest opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_block_arg - { - result = [ val[0] ] - } - - opt_args_tail: tCOMMA args_tail - { - result = val[1] - } - | # nothing - { - result = [] - } - - f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_optarg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_optarg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_optarg opt_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | args_tail - { - result = val[0] - } - | # nothing - { - result = [] - } - - f_bad_arg: tCONSTANT - { - diagnostic :error, :argument_const, nil, val[0] - } - | tIVAR - { - diagnostic :error, :argument_ivar, nil, val[0] - } - | tGVAR - { - diagnostic :error, :argument_gvar, nil, val[0] - } - | tCVAR - { - diagnostic :error, :argument_cvar, nil, val[0] - } - - f_norm_arg: f_bad_arg - | tIDENTIFIER - { - @static_env.declare val[0][0] - - result = val[0] - } - - f_arg_item: f_norm_arg - { - result = @builder.arg(val[0]) - } - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_arg: f_arg_item - { - result = [ val[0] ] - } - | f_arg tCOMMA f_arg_item - { - result = val[0] << val[2] - } - - f_label: tLABEL - { - check_kwarg_name(val[0]) - - @static_env.declare val[0][0] - - result = val[0] - } - - f_kw: f_label arg_value - { - result = @builder.kwoptarg(val[0], val[1]) - } - | f_label - { - result = @builder.kwarg(val[0]) - } - - f_block_kw: f_label primary_value - { - result = @builder.kwoptarg(val[0], val[1]) - } - | f_label - { - result = @builder.kwarg(val[0]) - } - - f_block_kwarg: f_block_kw - { - result = [ val[0] ] - } - | f_block_kwarg tCOMMA f_block_kw - { - result = val[0] << val[2] - } - - f_kwarg: f_kw - { - result = [ val[0] ] - } - | f_kwarg tCOMMA f_kw - { - result = val[0] << val[2] - } - - kwrest_mark: tPOW | tDSTAR - - f_kwrest: kwrest_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = [ @builder.kwrestarg(val[0], val[1]) ] - } - | kwrest_mark - { - result = [ @builder.kwrestarg(val[0]) ] - } - - f_opt: f_norm_arg tEQL arg_value - { - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_opt: f_norm_arg tEQL primary_value - { - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_optarg: f_block_opt - { - result = [ val[0] ] - } - | f_block_optarg tCOMMA f_block_opt - { - result = val[0] << val[2] - } - - f_optarg: f_opt - { - result = [ val[0] ] - } - | f_optarg tCOMMA f_opt - { - result = val[0] << val[2] - } - - restarg_mark: tSTAR2 | tSTAR - - f_rest_arg: restarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - } - | restarg_mark - { - result = [ @builder.restarg(val[0]) ] - } - - blkarg_mark: tAMPER2 | tAMPER - - f_block_arg: blkarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = @builder.blockarg(val[0], val[1]) - } - - opt_f_block_arg: tCOMMA f_block_arg - { - result = [ val[1] ] - } - | - { - result = [] - } - - singleton: var_ref - | tLPAREN2 expr rparen - { - result = val[1] - } - - assoc_list: # nothing - { - result = [] - } - | assocs trailer - - assocs: assoc - { - result = [ val[0] ] - } - | assocs tCOMMA assoc - { - result = val[0] << val[2] - } - - assoc: arg_value tASSOC arg_value - { - result = @builder.pair(val[0], val[1], val[2]) - } - | tLABEL arg_value - { - result = @builder.pair_keyword(val[0], val[1]) - } - | tDSTAR arg_value - { - result = @builder.kwsplat(val[0], val[1]) - } - - operation: tIDENTIFIER | tCONSTANT | tFID - operation2: tIDENTIFIER | tCONSTANT | tFID | op - operation3: tIDENTIFIER | tFID | op - dot_or_colon: tDOT | tCOLON2 - opt_terms: | terms - opt_nl: | tNL - rparen: opt_nl tRPAREN - { - result = val[1] - } - rbracket: opt_nl tRBRACK - { - result = val[1] - } - trailer: | tNL | tCOMMA - - term: tSEMI - { - yyerrok - } - | tNL - - terms: term - | terms tSEMI - - none: # nothing - { - result = nil - } -end - ----- header - -require 'parser' - -Parser.check_for_encoding_support - ----- inner - - def version - 21 - end - - def default_encoding - Encoding::UTF_8 - end diff --git a/test/racc/assets/ruby22.y b/test/racc/assets/ruby22.y deleted file mode 100644 index 751c0e866b..0000000000 --- a/test/racc/assets/ruby22.y +++ /dev/null @@ -1,2381 +0,0 @@ -# Copyright (c) 2013 Peter Zotov <whitequark@whitequark.org> -# -# Parts of the source are derived from ruby_parser: -# Copyright (c) Ryan Davis, seattle.rb -# -# MIT License -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class Parser::Ruby22 - -token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS - kTHEN kELSIF kELSE kCASE kWHEN kWHILE kUNTIL kFOR kBREAK kNEXT - kREDO kRETRY kIN kDO kDO_COND kDO_BLOCK kDO_LAMBDA kRETURN kYIELD kSUPER - kSELF kNIL kTRUE kFALSE kAND kOR kNOT kIF_MOD kUNLESS_MOD kWHILE_MOD - kUNTIL_MOD kRESCUE_MOD kALIAS kDEFINED klBEGIN klEND k__LINE__ - k__FILE__ k__ENCODING__ tIDENTIFIER tFID tGVAR tIVAR tCONSTANT - tLABEL tCVAR tNTH_REF tBACK_REF tSTRING_CONTENT tINTEGER tFLOAT - tREGEXP_END tUPLUS tUMINUS tUMINUS_NUM tPOW tCMP tEQ tEQQ tNEQ - tGEQ tLEQ tANDOP tOROP tMATCH tNMATCH tDOT tDOT2 tDOT3 tAREF - tASET tLSHFT tRSHFT tCOLON2 tCOLON3 tOP_ASGN tASSOC tLPAREN - tLPAREN2 tRPAREN tLPAREN_ARG tLBRACK tLBRACK2 tRBRACK tLBRACE - tLBRACE_ARG tSTAR tSTAR2 tAMPER tAMPER2 tTILDE tPERCENT tDIVIDE - tDSTAR tPLUS tMINUS tLT tGT tPIPE tBANG tCARET tLCURLY tRCURLY - tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG tREGEXP_OPT - tWORDS_BEG tQWORDS_BEG tSYMBOLS_BEG tQSYMBOLS_BEG tSTRING_DBEG - tSTRING_DVAR tSTRING_END tSTRING_DEND tSTRING tSYMBOL - tNL tEH tCOLON tCOMMA tSPACE tSEMI tLAMBDA tLAMBEG tCHARACTER - tRATIONAL tIMAGINARY tLABEL_END - -prechigh - right tBANG tTILDE tUPLUS - right tPOW - right tUMINUS_NUM tUMINUS - left tSTAR2 tDIVIDE tPERCENT - left tPLUS tMINUS - left tLSHFT tRSHFT - left tAMPER2 - left tPIPE tCARET - left tGT tGEQ tLT tLEQ - nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH - left tANDOP - left tOROP - nonassoc tDOT2 tDOT3 - right tEH tCOLON - left kRESCUE_MOD - right tEQL tOP_ASGN - nonassoc kDEFINED - right kNOT - left kOR kAND - nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD - nonassoc tLBRACE_ARG - nonassoc tLOWEST -preclow - -rule - - program: top_compstmt - - top_compstmt: top_stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - top_stmts: # nothing - { - result = [] - } - | top_stmt - { - result = [ val[0] ] - } - | top_stmts terms top_stmt - { - result = val[0] << val[2] - } - | error top_stmt - { - result = [ val[1] ] - } - - top_stmt: stmt - | klBEGIN tLCURLY top_compstmt tRCURLY - { - result = @builder.preexe(val[0], val[1], val[2], val[3]) - } - - bodystmt: compstmt opt_rescue opt_else opt_ensure - { - rescue_bodies = val[1] - else_t, else_ = val[2] - ensure_t, ensure_ = val[3] - - if rescue_bodies.empty? && !else_.nil? - diagnostic :warning, :useless_else, nil, else_t - end - - result = @builder.begin_body(val[0], - rescue_bodies, - else_t, else_, - ensure_t, ensure_) - } - - compstmt: stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - stmts: # nothing - { - result = [] - } - | stmt_or_begin - { - result = [ val[0] ] - } - | stmts terms stmt_or_begin - { - result = val[0] << val[2] - } - | error stmt - { - result = [ val[1] ] - } - - stmt_or_begin: stmt - | klBEGIN tLCURLY top_compstmt tRCURLY - { - diagnostic :error, :begin_in_method, nil, val[0] - } - - stmt: kALIAS fitem - { - @lexer.state = :expr_fname - } - fitem - { - result = @builder.alias(val[0], val[1], val[3]) - } - | kALIAS tGVAR tGVAR - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.gvar(val[2])) - } - | kALIAS tGVAR tBACK_REF - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.back_ref(val[2])) - } - | kALIAS tGVAR tNTH_REF - { - diagnostic :error, :nth_ref_alias, nil, val[2] - } - | kUNDEF undef_list - { - result = @builder.undef_method(val[0], val[1]) - } - | stmt kIF_MOD expr_value - { - result = @builder.condition_mod(val[0], nil, - val[1], val[2]) - } - | stmt kUNLESS_MOD expr_value - { - result = @builder.condition_mod(nil, val[0], - val[1], val[2]) - } - | stmt kWHILE_MOD expr_value - { - result = @builder.loop_mod(:while, val[0], val[1], val[2]) - } - | stmt kUNTIL_MOD expr_value - { - result = @builder.loop_mod(:until, val[0], val[1], val[2]) - } - | stmt kRESCUE_MOD stmt - { - rescue_body = @builder.rescue_body(val[1], - nil, nil, nil, - nil, val[2]) - - result = @builder.begin_body(val[0], [ rescue_body ]) - } - | klEND tLCURLY compstmt tRCURLY - { - result = @builder.postexe(val[0], val[1], val[2], val[3]) - } - | command_asgn - | mlhs tEQL command_call - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN command_call - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | backref tOP_ASGN command_call - { - @builder.op_assign(val[0], val[1], val[2]) - } - | lhs tEQL mrhs - { - result = @builder.assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | mlhs tEQL mrhs_arg - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | expr - - command_asgn: lhs tEQL command_call - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL command_asgn - { - result = @builder.assign(val[0], val[1], val[2]) - } - - expr: command_call - | expr kAND expr - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | expr kOR expr - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kNOT opt_nl expr - { - result = @builder.not_op(val[0], nil, val[2], nil) - } - | tBANG command_call - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | arg - - expr_value: expr - - command_call: command - | block_command - - block_command: block_call - | block_call dot_or_colon operation2 command_args - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - - cmd_brace_block: tLBRACE_ARG - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - fcall: operation - - command: fcall command_args =tLOWEST - { - result = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - } - | fcall command_args cmd_brace_block - { - method_call = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - - begin_t, args, body, end_t = val[2] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tDOT operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - | primary_value tDOT operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tCOLON2 operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - | primary_value tCOLON2 operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | kSUPER command_args - { - result = @builder.keyword_cmd(:super, val[0], - nil, val[1], nil) - } - | kYIELD command_args - { - result = @builder.keyword_cmd(:yield, val[0], - nil, val[1], nil) - } - | kRETURN call_args - { - result = @builder.keyword_cmd(:return, val[0], - nil, val[1], nil) - } - | kBREAK call_args - { - result = @builder.keyword_cmd(:break, val[0], - nil, val[1], nil) - } - | kNEXT call_args - { - result = @builder.keyword_cmd(:next, val[0], - nil, val[1], nil) - } - - mlhs: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_inner: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - mlhs_basic: mlhs_head - | mlhs_head mlhs_item - { - result = val[0]. - push(val[1]) - } - | mlhs_head tSTAR mlhs_node - { - result = val[0]. - push(@builder.splat(val[1], val[2])) - } - | mlhs_head tSTAR mlhs_node tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1], val[2])). - concat(val[4]) - } - | mlhs_head tSTAR - { - result = val[0]. - push(@builder.splat(val[1])) - } - | mlhs_head tSTAR tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1])). - concat(val[3]) - } - | tSTAR mlhs_node - { - result = [ @builder.splat(val[0], val[1]) ] - } - | tSTAR mlhs_node tCOMMA mlhs_post - { - result = [ @builder.splat(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.splat(val[0]) ] - } - | tSTAR tCOMMA mlhs_post - { - result = [ @builder.splat(val[0]), - *val[2] ] - } - - mlhs_item: mlhs_node - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_head: mlhs_item tCOMMA - { - result = [ val[0] ] - } - | mlhs_head mlhs_item tCOMMA - { - result = val[0] << val[1] - } - - mlhs_post: mlhs_item - { - result = [ val[0] ] - } - | mlhs_post tCOMMA mlhs_item - { - result = val[0] << val[2] - } - - mlhs_node: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - lhs: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - cname: tIDENTIFIER - { - diagnostic :error, :module_name_const, nil, val[0] - } - | tCONSTANT - - cpath: tCOLON3 cname - { - result = @builder.const_global(val[0], val[1]) - } - | cname - { - result = @builder.const(val[0]) - } - | primary_value tCOLON2 cname - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - - fname: tIDENTIFIER | tCONSTANT | tFID - | op - | reswords - - fsym: fname - { - result = @builder.symbol(val[0]) - } - | symbol - - fitem: fsym - | dsym - - undef_list: fitem - { - result = [ val[0] ] - } - | undef_list tCOMMA - { - @lexer.state = :expr_fname - } - fitem - { - result = val[0] << val[3] - } - - op: tPIPE | tCARET | tAMPER2 | tCMP | tEQ | tEQQ - | tMATCH | tNMATCH | tGT | tGEQ | tLT | tLEQ - | tNEQ | tLSHFT | tRSHFT | tPLUS | tMINUS | tSTAR2 - | tSTAR | tDIVIDE | tPERCENT | tPOW | tBANG | tTILDE - | tUPLUS | tUMINUS | tAREF | tASET | tDSTAR | tBACK_REF2 - - reswords: k__LINE__ | k__FILE__ | k__ENCODING__ | klBEGIN | klEND - | kALIAS | kAND | kBEGIN | kBREAK | kCASE - | kCLASS | kDEF | kDEFINED | kDO | kELSE - | kELSIF | kEND | kENSURE | kFALSE | kFOR - | kIN | kMODULE | kNEXT | kNIL | kNOT - | kOR | kREDO | kRESCUE | kRETRY | kRETURN - | kSELF | kSUPER | kTHEN | kTRUE | kUNDEF - | kWHEN | kYIELD | kIF | kUNLESS | kWHILE - | kUNTIL - - arg: lhs tEQL arg - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.assign(val[0], val[1], rescue_) - } - | var_lhs tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.op_assign(val[0], val[1], rescue_) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN arg - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN arg - { - const = @builder.const_op_assignable( - @builder.const_fetch(val[0], val[1], val[2])) - result = @builder.op_assign(const, val[3], val[4]) - } - | tCOLON3 tCONSTANT tOP_ASGN arg - { - const = @builder.const_op_assignable( - @builder.const_global(val[0], val[1])) - result = @builder.op_assign(const, val[2], val[3]) - } - | backref tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | arg tDOT2 arg - { - result = @builder.range_inclusive(val[0], val[1], val[2]) - } - | arg tDOT3 arg - { - result = @builder.range_exclusive(val[0], val[1], val[2]) - } - | arg tPLUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMINUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tSTAR2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tDIVIDE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPERCENT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPOW arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tUMINUS_NUM simple_numeric tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - val[1], val[2], val[3])) - } - | tUPLUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | tUMINUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tPIPE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCARET arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tAMPER2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCMP arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tNEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMATCH arg - { - result = @builder.match_op(val[0], val[1], val[2]) - } - | arg tNMATCH arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tBANG arg - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | tTILDE arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tLSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tRSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tANDOP arg - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | arg tOROP arg - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kDEFINED opt_nl arg - { - result = @builder.keyword_cmd(:defined?, val[0], nil, [ val[2] ], nil) - } - - # Note: MRI eventually came to rely on disambiguation based on - # the lexer state, but it is too contrived with the Ragel lexer, - # so we kept this approach. See ruby/ruby@b0c03f63e5 for - # the initial commit, and ruby/ruby@23352f62a for MRI revert, - # which we decided not to track. - | arg tEH - { - @lexer.push_cond - @lexer.cond.push(true) - } - arg opt_nl tCOLON - { - @lexer.pop_cond - } - arg - { - result = @builder.ternary(val[0], val[1], - val[3], val[5], val[7]) - } - | primary - - arg_value: arg - - aref_args: none - | args trailer - | args tCOMMA assocs trailer - { - result = val[0] << @builder.associate(nil, val[2], nil) - } - | assocs trailer - { - result = [ @builder.associate(nil, val[0], nil) ] - } - - paren_args: tLPAREN2 opt_call_args rparen - { - result = val - } - - opt_paren_args: # nothing - { - result = [ nil, [], nil ] - } - | paren_args - - opt_call_args: # nothing - { - result = [] - } - | call_args - | args tCOMMA - | args tCOMMA assocs tCOMMA - { - result = val[0] << @builder.associate(nil, val[2], nil) - } - | assocs tCOMMA - { - result = [ @builder.associate(nil, val[0], nil) ] - } - - call_args: command - { - result = [ val[0] ] - } - | args opt_block_arg - { - result = val[0].concat(val[1]) - } - | assocs opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil) ] - result.concat(val[1]) - } - | args tCOMMA assocs opt_block_arg - { - assocs = @builder.associate(nil, val[2], nil) - result = val[0] << assocs - result.concat(val[3]) - } - | block_arg - { - result = [ val[0] ] - } - - command_args: { - result = @lexer.cmdarg.dup - @lexer.cmdarg.push(true) - } - call_args - { - @lexer.cmdarg = val[0] - - result = val[1] - } - - block_arg: tAMPER arg_value - { - result = @builder.block_pass(val[0], val[1]) - } - - opt_block_arg: tCOMMA block_arg - { - result = [ val[1] ] - } - | # nothing - { - result = [] - } - - args: arg_value - { - result = [ val[0] ] - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - | args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - - mrhs_arg: mrhs - { - result = @builder.array(nil, val[0], nil) - } - | arg_value - - mrhs: args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - - primary: literal - | strings - | xstring - | regexp - | words - | qwords - | symbols - | qsymbols - | var_ref - | backref - | tFID - { - result = @builder.call_method(nil, nil, val[0]) - } - | kBEGIN - { - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - } - bodystmt kEND - { - @lexer.cmdarg = val[1] - - result = @builder.begin_keyword(val[0], val[2], val[3]) - } - | tLPAREN_ARG - { - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - } - expr - { - @lexer.state = :expr_endarg - } - opt_nl tRPAREN - { - @lexer.cmdarg = val[1] - - result = @builder.begin(val[0], val[2], val[5]) - } - | tLPAREN_ARG - { - @lexer.state = :expr_endarg - } - opt_nl tRPAREN - { - result = @builder.begin(val[0], nil, val[3]) - } - | tLPAREN compstmt tRPAREN - { - result = @builder.begin(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - | tCOLON3 tCONSTANT - { - result = @builder.const_global(val[0], val[1]) - } - | tLBRACK aref_args tRBRACK - { - result = @builder.array(val[0], val[1], val[2]) - } - | tLBRACE assoc_list tRCURLY - { - result = @builder.associate(val[0], val[1], val[2]) - } - | kRETURN - { - result = @builder.keyword_cmd(:return, val[0]) - } - | kYIELD tLPAREN2 call_args rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], val[2], val[3]) - } - | kYIELD tLPAREN2 rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], [], val[2]) - } - | kYIELD - { - result = @builder.keyword_cmd(:yield, val[0]) - } - | kDEFINED opt_nl tLPAREN2 expr rparen - { - result = @builder.keyword_cmd(:defined?, val[0], - val[2], [ val[3] ], val[4]) - } - | kNOT tLPAREN2 expr rparen - { - result = @builder.not_op(val[0], val[1], val[2], val[3]) - } - | kNOT tLPAREN2 rparen - { - result = @builder.not_op(val[0], val[1], nil, val[2]) - } - | fcall brace_block - { - method_call = @builder.call_method(nil, nil, val[0]) - - begin_t, args, body, end_t = val[1] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | method_call - | method_call brace_block - { - begin_t, args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, args, body, end_t) - } - | tLAMBDA lambda - { - lambda_call = @builder.call_lambda(val[0]) - - args, (begin_t, body, end_t) = val[1] - result = @builder.block(lambda_call, - begin_t, args, body, end_t) - } - | kIF expr_value then compstmt if_tail kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, val[5]) - } - | kUNLESS expr_value then compstmt opt_else kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - else_, else_t, - val[3], val[5]) - } - | kWHILE - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:while, val[0], val[2], val[3], - val[5], val[6]) - } - | kUNTIL - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:until, val[0], val[2], val[3], - val[5], val[6]) - } - | kCASE expr_value opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[3] - - result = @builder.case(val[0], val[1], - when_bodies, else_t, else_body, - val[4]) - } - | kCASE opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[2] - - result = @builder.case(val[0], nil, - when_bodies, else_t, else_body, - val[3]) - } - | kFOR for_var kIN - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.for(val[0], val[1], - val[2], val[4], - val[5], val[7], val[8]) - } - | kCLASS cpath superclass - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :class_in_def, nil, val[0] - end - - lt_t, superclass = val[2] - result = @builder.def_class(val[0], val[1], - lt_t, superclass, - val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kCLASS tLSHFT expr term - { - result = @def_level - @def_level = 0 - - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - result = @builder.def_sclass(val[0], val[1], val[2], - val[5], val[6]) - - @lexer.pop_cmdarg - @static_env.unextend - - @def_level = val[4] - } - | kMODULE cpath - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :module_in_def, nil, val[0] - end - - result = @builder.def_module(val[0], val[1], - val[3], val[4]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kDEF fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_method(val[0], val[1], - val[3], val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kDEF singleton dot_or_colon - { - @lexer.state = :expr_fname - } - fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_singleton(val[0], val[1], val[2], - val[4], val[6], val[7], val[8]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kBREAK - { - result = @builder.keyword_cmd(:break, val[0]) - } - | kNEXT - { - result = @builder.keyword_cmd(:next, val[0]) - } - | kREDO - { - result = @builder.keyword_cmd(:redo, val[0]) - } - | kRETRY - { - result = @builder.keyword_cmd(:retry, val[0]) - } - - primary_value: primary - - then: term - | kTHEN - | term kTHEN - { - result = val[1] - } - - do: term - | kDO_COND - - if_tail: opt_else - | kELSIF expr_value then compstmt if_tail - { - else_t, else_ = val[4] - result = [ val[0], - @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, nil), - ] - } - - opt_else: none - | kELSE compstmt - { - result = val - } - - for_var: lhs - | mlhs - - f_marg: f_norm_arg - { - result = @builder.arg(val[0]) - } - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_marg_list: f_marg - { - result = [ val[0] ] - } - | f_marg_list tCOMMA f_marg - { - result = val[0] << val[2] - } - - f_margs: f_marg_list - | f_marg_list tCOMMA tSTAR f_norm_arg - { - result = val[0]. - push(@builder.restarg(val[2], val[3])) - } - | f_marg_list tCOMMA tSTAR f_norm_arg tCOMMA f_marg_list - { - result = val[0]. - push(@builder.restarg(val[2], val[3])). - concat(val[5]) - } - | f_marg_list tCOMMA tSTAR - { - result = val[0]. - push(@builder.restarg(val[2])) - } - | f_marg_list tCOMMA tSTAR tCOMMA f_marg_list - { - result = val[0]. - push(@builder.restarg(val[2])). - concat(val[4]) - } - | tSTAR f_norm_arg - { - result = [ @builder.restarg(val[0], val[1]) ] - } - | tSTAR f_norm_arg tCOMMA f_marg_list - { - result = [ @builder.restarg(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.restarg(val[0]) ] - } - | tSTAR tCOMMA f_marg_list - { - result = [ @builder.restarg(val[0]), - *val[2] ] - } - - block_args_tail: f_block_kwarg tCOMMA f_kwrest opt_f_block_arg - { - result = val[0].concat(val[2]).concat(val[3]) - } - | f_block_kwarg opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_kwrest opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_block_arg - { - result = [ val[0] ] - } - -opt_block_args_tail: - tCOMMA block_args_tail - { - result = val[1] - } - | # nothing - { - result = [] - } - - block_param: f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_block_optarg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_block_args_tail - { - result = val[0].concat(val[1]) - } - | f_block_optarg tCOMMA f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_block_optarg opt_block_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_block_optarg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | block_args_tail - - opt_block_param: # nothing - { - result = @builder.args(nil, [], nil) - } - | block_param_def - { - @lexer.state = :expr_value - } - - block_param_def: tPIPE opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1], val[2]) - } - | tOROP - { - result = @builder.args(val[0], [], val[0]) - } - | tPIPE block_param opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - - opt_bv_decl: opt_nl - { - result = [] - } - | opt_nl tSEMI bv_decls opt_nl - { - result = val[2] - } - - bv_decls: bvar - { - result = [ val[0] ] - } - | bv_decls tCOMMA bvar - { - result = val[0] << val[2] - } - - bvar: tIDENTIFIER - { - result = @builder.shadowarg(val[0]) - } - | f_bad_arg - - lambda: { - @static_env.extend_dynamic - } - f_larglist - { - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - } - lambda_body - { - @lexer.cmdarg = val[2] - @lexer.cmdarg.lexpop - - result = [ val[1], val[3] ] - - @static_env.unextend - } - - f_larglist: tLPAREN2 f_args opt_bv_decl tRPAREN - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - | f_args - { - result = @builder.args(nil, val[0], nil) - } - - lambda_body: tLAMBEG compstmt tRCURLY - { - result = [ val[0], val[1], val[2] ] - } - | kDO_LAMBDA compstmt kEND - { - result = [ val[0], val[1], val[2] ] - } - - do_block: kDO_BLOCK - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - block_call: command do_block - { - begin_t, block_args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, block_args, body, end_t) - } - | block_call dot_or_colon operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | block_call dot_or_colon operation2 opt_paren_args brace_block - { - lparen_t, args, rparen_t = val[3] - method_call = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | block_call dot_or_colon operation2 command_args do_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - - method_call: fcall paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - } - | primary_value tDOT operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation2 paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation3 - { - result = @builder.call_method(val[0], val[1], val[2]) - } - | primary_value tDOT paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | kSUPER paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - } - | kSUPER - { - result = @builder.keyword_cmd(:zsuper, val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index(val[0], val[1], val[2], val[3]) - } - - brace_block: tLCURLY - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - | kDO - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - case_body: kWHEN args then compstmt cases - { - result = [ @builder.when(val[0], val[1], val[2], val[3]), - *val[4] ] - } - - cases: opt_else - { - result = [ val[0] ] - } - | case_body - - opt_rescue: kRESCUE exc_list exc_var then compstmt opt_rescue - { - assoc_t, exc_var = val[2] - - if val[1] - exc_list = @builder.array(nil, val[1], nil) - end - - result = [ @builder.rescue_body(val[0], - exc_list, assoc_t, exc_var, - val[3], val[4]), - *val[5] ] - } - | - { - result = [] - } - - exc_list: arg_value - { - result = [ val[0] ] - } - | mrhs - | none - - exc_var: tASSOC lhs - { - result = [ val[0], val[1] ] - } - | none - - opt_ensure: kENSURE compstmt - { - result = [ val[0], val[1] ] - } - | none - - literal: numeric - | symbol - | dsym - - strings: string - { - result = @builder.string_compose(nil, val[0], nil) - } - - string: string1 - { - result = [ val[0] ] - } - | string string1 - { - result = val[0] << val[1] - } - - string1: tSTRING_BEG string_contents tSTRING_END - { - result = @builder.string_compose(val[0], val[1], val[2]) - } - | tSTRING - { - result = @builder.string(val[0]) - } - | tCHARACTER - { - result = @builder.character(val[0]) - } - - xstring: tXSTRING_BEG xstring_contents tSTRING_END - { - result = @builder.xstring_compose(val[0], val[1], val[2]) - } - - regexp: tREGEXP_BEG regexp_contents tSTRING_END tREGEXP_OPT - { - opts = @builder.regexp_options(val[3]) - result = @builder.regexp_compose(val[0], val[1], val[2], opts) - } - - words: tWORDS_BEG word_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - word_list: # nothing - { - result = [] - } - | word_list word tSPACE - { - result = val[0] << @builder.word(val[1]) - } - - word: string_content - { - result = [ val[0] ] - } - | word string_content - { - result = val[0] << val[1] - } - - symbols: tSYMBOLS_BEG symbol_list tSTRING_END - { - result = @builder.symbols_compose(val[0], val[1], val[2]) - } - - symbol_list: # nothing - { - result = [] - } - | symbol_list word tSPACE - { - result = val[0] << @builder.word(val[1]) - } - - qwords: tQWORDS_BEG qword_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - qsymbols: tQSYMBOLS_BEG qsym_list tSTRING_END - { - result = @builder.symbols_compose(val[0], val[1], val[2]) - } - - qword_list: # nothing - { - result = [] - } - | qword_list tSTRING_CONTENT tSPACE - { - result = val[0] << @builder.string_internal(val[1]) - } - - qsym_list: # nothing - { - result = [] - } - | qsym_list tSTRING_CONTENT tSPACE - { - result = val[0] << @builder.symbol_internal(val[1]) - } - - string_contents: # nothing - { - result = [] - } - | string_contents string_content - { - result = val[0] << val[1] - } - -xstring_contents: # nothing - { - result = [] - } - | xstring_contents string_content - { - result = val[0] << val[1] - } - -regexp_contents: # nothing - { - result = [] - } - | regexp_contents string_content - { - result = val[0] << val[1] - } - - string_content: tSTRING_CONTENT - { - result = @builder.string_internal(val[0]) - } - | tSTRING_DVAR string_dvar - { - result = val[1] - } - | tSTRING_DBEG - { - @lexer.cond.push(false) - @lexer.cmdarg.push(false) - } - compstmt tSTRING_DEND - { - @lexer.cond.lexpop - @lexer.cmdarg.lexpop - - result = @builder.begin(val[0], val[2], val[3]) - } - - string_dvar: tGVAR - { - result = @builder.gvar(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - | backref - - - symbol: tSYMBOL - { - result = @builder.symbol(val[0]) - } - - dsym: tSYMBEG xstring_contents tSTRING_END - { - result = @builder.symbol_compose(val[0], val[1], val[2]) - } - - numeric: simple_numeric - { - result = val[0] - } - | tUMINUS_NUM simple_numeric =tLOWEST - { - result = @builder.negate(val[0], val[1]) - } - - simple_numeric: tINTEGER - { - result = @builder.integer(val[0]) - } - | tFLOAT - { - result = @builder.float(val[0]) - } - | tRATIONAL - { - result = @builder.rational(val[0]) - } - | tIMAGINARY - { - result = @builder.complex(val[0]) - } - - user_variable: tIDENTIFIER - { - result = @builder.ident(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tGVAR - { - result = @builder.gvar(val[0]) - } - | tCONSTANT - { - result = @builder.const(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - -keyword_variable: kNIL - { - result = @builder.nil(val[0]) - } - | kSELF - { - result = @builder.self(val[0]) - } - | kTRUE - { - result = @builder.true(val[0]) - } - | kFALSE - { - result = @builder.false(val[0]) - } - | k__FILE__ - { - result = @builder.__FILE__(val[0]) - } - | k__LINE__ - { - result = @builder.__LINE__(val[0]) - } - | k__ENCODING__ - { - result = @builder.__ENCODING__(val[0]) - } - - var_ref: user_variable - { - result = @builder.accessible(val[0]) - } - | keyword_variable - { - result = @builder.accessible(val[0]) - } - - var_lhs: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - - backref: tNTH_REF - { - result = @builder.nth_ref(val[0]) - } - | tBACK_REF - { - result = @builder.back_ref(val[0]) - } - - superclass: term - { - result = nil - } - | tLT - { - @lexer.state = :expr_value - } - expr_value term - { - result = [ val[0], val[2] ] - } - | error term - { - yyerrok - result = nil - } - - f_arglist: tLPAREN2 f_args rparen - { - result = @builder.args(val[0], val[1], val[2]) - - @lexer.state = :expr_value - } - | { - result = @lexer.in_kwarg - @lexer.in_kwarg = true - } - f_args term - { - @lexer.in_kwarg = val[0] - result = @builder.args(nil, val[1], nil) - } - - args_tail: f_kwarg tCOMMA f_kwrest opt_f_block_arg - { - result = val[0].concat(val[2]).concat(val[3]) - } - | f_kwarg opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_kwrest opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_block_arg - { - result = [ val[0] ] - } - - opt_args_tail: tCOMMA args_tail - { - result = val[1] - } - | # nothing - { - result = [] - } - - f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_optarg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_optarg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_optarg opt_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | args_tail - { - result = val[0] - } - | # nothing - { - result = [] - } - - f_bad_arg: tCONSTANT - { - diagnostic :error, :argument_const, nil, val[0] - } - | tIVAR - { - diagnostic :error, :argument_ivar, nil, val[0] - } - | tGVAR - { - diagnostic :error, :argument_gvar, nil, val[0] - } - | tCVAR - { - diagnostic :error, :argument_cvar, nil, val[0] - } - - f_norm_arg: f_bad_arg - | tIDENTIFIER - { - @static_env.declare val[0][0] - - result = val[0] - } - - f_arg_asgn: f_norm_arg - { - result = val[0] - } - - f_arg_item: f_arg_asgn - { - result = @builder.arg(val[0]) - } - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_arg: f_arg_item - { - result = [ val[0] ] - } - | f_arg tCOMMA f_arg_item - { - result = val[0] << val[2] - } - - f_label: tLABEL - { - check_kwarg_name(val[0]) - - @static_env.declare val[0][0] - - result = val[0] - } - - f_kw: f_label arg_value - { - result = @builder.kwoptarg(val[0], val[1]) - } - | f_label - { - result = @builder.kwarg(val[0]) - } - - f_block_kw: f_label primary_value - { - result = @builder.kwoptarg(val[0], val[1]) - } - | f_label - { - result = @builder.kwarg(val[0]) - } - - f_block_kwarg: f_block_kw - { - result = [ val[0] ] - } - | f_block_kwarg tCOMMA f_block_kw - { - result = val[0] << val[2] - } - - f_kwarg: f_kw - { - result = [ val[0] ] - } - | f_kwarg tCOMMA f_kw - { - result = val[0] << val[2] - } - - kwrest_mark: tPOW | tDSTAR - - f_kwrest: kwrest_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = [ @builder.kwrestarg(val[0], val[1]) ] - } - | kwrest_mark - { - result = [ @builder.kwrestarg(val[0]) ] - } - - f_opt: f_arg_asgn tEQL arg_value - { - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_opt: f_arg_asgn tEQL primary_value - { - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_optarg: f_block_opt - { - result = [ val[0] ] - } - | f_block_optarg tCOMMA f_block_opt - { - result = val[0] << val[2] - } - - f_optarg: f_opt - { - result = [ val[0] ] - } - | f_optarg tCOMMA f_opt - { - result = val[0] << val[2] - } - - restarg_mark: tSTAR2 | tSTAR - - f_rest_arg: restarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - } - | restarg_mark - { - result = [ @builder.restarg(val[0]) ] - } - - blkarg_mark: tAMPER2 | tAMPER - - f_block_arg: blkarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = @builder.blockarg(val[0], val[1]) - } - - opt_f_block_arg: tCOMMA f_block_arg - { - result = [ val[1] ] - } - | - { - result = [] - } - - singleton: var_ref - | tLPAREN2 expr rparen - { - result = val[1] - } - - assoc_list: # nothing - { - result = [] - } - | assocs trailer - - assocs: assoc - { - result = [ val[0] ] - } - | assocs tCOMMA assoc - { - result = val[0] << val[2] - } - - assoc: arg_value tASSOC arg_value - { - result = @builder.pair(val[0], val[1], val[2]) - } - | tLABEL arg_value - { - result = @builder.pair_keyword(val[0], val[1]) - } - | tSTRING_BEG string_contents tLABEL_END arg_value - { - result = @builder.pair_quoted(val[0], val[1], val[2], val[3]) - } - | tDSTAR arg_value - { - result = @builder.kwsplat(val[0], val[1]) - } - - operation: tIDENTIFIER | tCONSTANT | tFID - operation2: tIDENTIFIER | tCONSTANT | tFID | op - operation3: tIDENTIFIER | tFID | op - dot_or_colon: tDOT | tCOLON2 - opt_terms: | terms - opt_nl: | tNL - rparen: opt_nl tRPAREN - { - result = val[1] - } - rbracket: opt_nl tRBRACK - { - result = val[1] - } - trailer: | tNL | tCOMMA - - term: tSEMI - { - yyerrok - } - | tNL - - terms: term - | terms tSEMI - - none: # nothing - { - result = nil - } -end - ----- header - -require 'parser' - -Parser.check_for_encoding_support - ----- inner - - def version - 22 - end - - def default_encoding - Encoding::UTF_8 - end diff --git a/test/racc/assets/scan.y b/test/racc/assets/scan.y deleted file mode 100644 index 709254ed66..0000000000 --- a/test/racc/assets/scan.y +++ /dev/null @@ -1,72 +0,0 @@ -class P - -rule - - a: A - { - # comment test - - # comment test - - # string - @sstring = 'squote string' - @dstring = 'dquote string' - - # regexp - @regexp = /some regexp with spaces/ - - # gvar - /regexp/ === 'some regexp matches to this string' - @pre_match = $` - @matched = $& - @post_match = $' - @m = $~ - - # braces - @array = [] - [1,2,3].each {|i| - @array.push i - } - 3.times { @array.push 10 } - } - -end - ----- inner - - def parse - @sstring = @dstring = nil - @regexp = nil - @pre_match = @matched = @post_match = @m = nil - - @src = [[:A, 'A'], [false, '$']] - do_parse - - assert_equal 'squote string', @sstring - assert_equal 'dquote string', @dstring - assert_equal(/some regexp with spaces/, @regexp) - assert_equal 'some ', @pre_match - assert_equal 'regexp', @matched - assert_equal ' matches to this string', @post_match - assert_instance_of MatchData, @m - end - - def assert_equal(ok, data) - unless ok == data - raise "expected <#{ok.inspect}> but is <#{data.inspect}>" - end - end - - def assert_instance_of(klass, obj) - unless obj.instance_of?(klass) - raise "expected #{klass} but is #{obj.class}" - end - end - - def next_token - @src.shift - end - ----- footer - -P.new.parse diff --git a/test/racc/assets/syntax.y b/test/racc/assets/syntax.y deleted file mode 100644 index 727f74a29d..0000000000 --- a/test/racc/assets/syntax.y +++ /dev/null @@ -1,50 +0,0 @@ -# -# racc syntax checker -# - -class M1::M2::ParserClass < S1::S2::SuperClass - - token A - | B C - - convert - A '5' - end - - prechigh - left B - preclow - - start target - - expect 0 - -rule - - target: A B C - { - print 'abc' - } - | B C A - | C B A - { - print 'cba' - } - | cont - - cont : A c2 B c2 C - - c2 : C C C C C - -end - ----- inner - - junk code !!!! - -kjaljlajrlaolanbla /// %%% (*((( token rule -akiurtlajluealjflaj @@@@ end end end end __END__ - laieu2o879urkq96ga(Q#*&%Q# - #&lkji END - - q395q?/// liutjqlkr7 diff --git a/test/racc/assets/tp_plus.y b/test/racc/assets/tp_plus.y deleted file mode 100644 index 388ed1302d..0000000000 --- a/test/racc/assets/tp_plus.y +++ /dev/null @@ -1,622 +0,0 @@ -# Released under an MIT License (http://www.opensource.org/licenses/MIT) -# By Jay Strybis (https://github.com/unreal) - -class TPPlus::Parser -token ASSIGN AT_SYM COMMENT JUMP IO_METHOD INPUT OUTPUT -token NUMREG POSREG VREG SREG TIME_SEGMENT ARG UALM -token MOVE DOT TO AT TERM OFFSET SKIP GROUP -token SEMICOLON NEWLINE STRING -token REAL DIGIT WORD EQUAL -token EEQUAL NOTEQUAL GTE LTE LT GT BANG -token PLUS MINUS STAR SLASH DIV AND OR MOD -token IF ELSE END UNLESS FOR IN WHILE -token WAIT_FOR WAIT_UNTIL TIMEOUT AFTER -token FANUC_USE SET_SKIP_CONDITION NAMESPACE -token CASE WHEN INDIRECT POSITION -token EVAL TIMER TIMER_METHOD RAISE ABORT -token POSITION_DATA TRUE_FALSE RUN TP_HEADER PAUSE -token LPAREN RPAREN COLON COMMA LBRACK RBRACK LBRACE RBRACE -token LABEL ADDRESS -token false - -prechigh - right BANG - left STAR SLASH DIV MOD - left PLUS MINUS - left GT GTE LT LTE - left EEQUAL NOTEQUAL - left AND - left OR - right EQUAL -preclow - -rule - program - #: statements { @interpreter.nodes = val[0].flatten } - : statements { @interpreter.nodes = val[0] } - | - ; - - - statements - : statement terminator { - result = [val[0]] - result << val[1] unless val[1].nil? - } - | statements statement terminator { - result = val[0] << val[1] - result << val[2] unless val[2].nil? - } - ; - - block - : NEWLINE statements { result = val[1] } - ; - - optional_newline - : NEWLINE - | - ; - - statement - : comment - | definition - | namespace - #| assignment - | motion_statement - #| jump - #| io_method - | label_definition - | address - | conditional - | inline_conditional - | forloop - | while_loop - #| program_call - | use_statement - | set_skip_statement - | wait_statement - | case_statement - | fanuc_eval - | timer_method - | position_data - | raise - | tp_header_definition - | empty_stmt - | PAUSE { result = PauseNode.new } - | ABORT { result = AbortNode.new } - ; - - empty_stmt - : NEWLINE { result = EmptyStmtNode.new() } - ; - - tp_header_definition - : TP_HEADER EQUAL tp_header_value { result = HeaderNode.new(val[0],val[2]) } - ; - - tp_header_value - : STRING - | TRUE_FALSE - ; - - raise - : RAISE var_or_indirect { result = RaiseNode.new(val[1]) } - ; - - timer_method - : TIMER_METHOD var_or_indirect { result = TimerMethodNode.new(val[0],val[1]) } - ; - - fanuc_eval - : EVAL STRING { result = EvalNode.new(val[1]) } - ; - - wait_statement - : WAIT_FOR LPAREN indirectable COMMA STRING RPAREN - { result = WaitForNode.new(val[2], val[4]) } - | WAIT_UNTIL LPAREN expression RPAREN - { result = WaitUntilNode.new(val[2], nil) } - | WAIT_UNTIL LPAREN expression RPAREN DOT wait_modifier - { result = WaitUntilNode.new(val[2],val[5]) } - | WAIT_UNTIL LPAREN expression RPAREN DOT wait_modifier DOT wait_modifier - { result = WaitUntilNode.new(val[2],val[5].merge(val[7])) } - ; - - wait_modifier - : timeout_modifier - | after_modifier - ; - - timeout_modifier - : swallow_newlines TIMEOUT LPAREN label RPAREN - { result = { label: val[3] } } - ; - - after_modifier - : swallow_newlines AFTER LPAREN indirectable COMMA STRING RPAREN - { result = { timeout: [val[3],val[5]] } } - ; - - label - : LABEL { result = val[0] } - ; - - use_statement - : FANUC_USE indirectable { result = UseNode.new(val[0],val[1]) } - ; - - # set_skip_condition x - set_skip_statement - : SET_SKIP_CONDITION expression { result = SetSkipNode.new(val[1]) } - ; - - program_call - : WORD LPAREN args RPAREN { result = CallNode.new(val[0],val[2]) } - | RUN WORD LPAREN args RPAREN { result = CallNode.new(val[1],val[3],async: true) } - ; - - args - : arg { result = [val[0]] } - | args COMMA arg { result = val[0] << val[2] } - | { result = [] } - ; - - arg - : number - | var - | string - | address - ; - - string - : STRING { result = StringNode.new(val[0]) } - ; - - io_method - : IO_METHOD var_or_indirect { result = IOMethodNode.new(val[0],val[1]) } - | IO_METHOD LPAREN var_or_indirect RPAREN - { result = IOMethodNode.new(val[0],val[2]) } - | IO_METHOD LPAREN var_or_indirect COMMA number COMMA STRING RPAREN - { result = IOMethodNode.new(val[0],val[2],{ pulse_time: val[4], pulse_units: val[6] }) } - ; - - var_or_indirect - : var - | indirect_thing - ; - - - jump - : JUMP label { result = JumpNode.new(val[1]) } - ; - - conditional - : IF expression block else_block END - { result = ConditionalNode.new("if",val[1],val[2],val[3]) } - | UNLESS expression block else_block END - { result = ConditionalNode.new("unless",val[1],val[2],val[3]) } - ; - - forloop - : FOR var IN LPAREN minmax_val TO minmax_val RPAREN block END - { result = ForNode.new(val[1],val[4],val[6],val[8]) } - ; - - while_loop - : WHILE expression block END { result = WhileNode.new(val[1],val[2]) } - ; - - minmax_val - : integer - | var - ; - - namespace - : NAMESPACE WORD block END { result = NamespaceNode.new(val[1],val[2]) } - ; - - case_statement - : CASE var swallow_newlines - case_conditions - case_else - END { result = CaseNode.new(val[1],val[3],val[4]) } - ; - - case_conditions - : case_condition { result = val } - | case_conditions case_condition - { result = val[0] << val[1] << val[2] } - ; - - case_condition - : WHEN case_allowed_condition swallow_newlines case_allowed_statement - terminator { result = CaseConditionNode.new(val[1],val[3]) } - ; - - case_allowed_condition - : number - | var - ; - - case_else - : ELSE swallow_newlines case_allowed_statement terminator - { result = CaseConditionNode.new(nil,val[2]) } - | - ; - - case_allowed_statement - : program_call - | jump - ; - - inline_conditional - : inlineable - | inlineable IF expression { result = InlineConditionalNode.new(val[1], val[2], val[0]) } - | inlineable UNLESS expression { result = InlineConditionalNode.new(val[1], val[2], val[0]) } - ; - - inlineable - : jump - | assignment - | io_method - | program_call - ; - - else_block - : ELSE block { result = val[1] } - | { result = [] } - ; - - motion_statement - : MOVE DOT swallow_newlines TO LPAREN var RPAREN motion_modifiers - { result = MotionNode.new(val[0],val[5],val[7]) } - ; - - motion_modifiers - : motion_modifier { result = val } - | motion_modifiers motion_modifier - { result = val[0] << val[1] } - ; - - motion_modifier - : DOT swallow_newlines AT LPAREN speed RPAREN - { result = SpeedNode.new(val[4]) } - | DOT swallow_newlines TERM LPAREN valid_terminations RPAREN - { result = TerminationNode.new(val[4]) } - | DOT swallow_newlines OFFSET LPAREN var RPAREN - { result = OffsetNode.new(val[2],val[4]) } - | DOT swallow_newlines TIME_SEGMENT LPAREN time COMMA time_seg_actions RPAREN - { result = TimeNode.new(val[2],val[4],val[6]) } - | DOT swallow_newlines SKIP LPAREN label optional_lpos_arg RPAREN - { result = SkipNode.new(val[4],val[5]) } - ; - - valid_terminations - : integer - | var - | MINUS DIGIT { - raise Racc::ParseError, sprintf("\ninvalid termination type: (%s)", val[1]) if val[1] != 1 - - result = DigitNode.new(val[1].to_i * -1) - } - ; - - optional_lpos_arg - : COMMA var { result = val[1] } - | - ; - - indirectable - : number - | var - ; - - time_seg_actions - : program_call - | io_method - ; - - time - : var - | number - ; - - speed - : indirectable COMMA STRING { result = { speed: val[0], units: val[2] } } - | STRING { result = { speed: val[0], units: nil } } - ; - - label_definition - : label { result = LabelDefinitionNode.new(val[0]) }#@interpreter.add_label(val[1]) } - ; - - definition - : WORD ASSIGN definable { result = DefinitionNode.new(val[0],val[2]) } - ; - - assignment - : var_or_indirect EQUAL expression { result = AssignmentNode.new(val[0],val[2]) } - | var_or_indirect PLUS EQUAL expression { result = AssignmentNode.new( - val[0], - ExpressionNode.new(val[0],"+",val[3]) - ) - } - | var_or_indirect MINUS EQUAL expression { result = AssignmentNode.new( - val[0], - ExpressionNode.new(val[0],"-",val[3]) - ) - } - ; - - var - : var_without_namespaces - | var_with_namespaces - ; - - var_without_namespaces - : WORD { result = VarNode.new(val[0]) } - | WORD var_method_modifiers { result = VarMethodNode.new(val[0],val[1]) } - ; - - var_with_namespaces - : namespaces var_without_namespaces - { result = NamespacedVarNode.new(val[0],val[1]) } - ; - - var_method_modifiers - : var_method_modifier { result = val[0] } - | var_method_modifiers var_method_modifier - { result = val[0].merge(val[1]) } - ; - - var_method_modifier - : DOT swallow_newlines WORD { result = { method: val[2] } } - | DOT swallow_newlines GROUP LPAREN integer RPAREN - { result = { group: val[4] } } - ; - - namespaces - : ns { result = [val[0]] } - | namespaces ns { result = val[0] << val[1] } - ; - - ns - : WORD COLON COLON { result = val[0] } - ; - - - expression - : unary_expression - | binary_expression - ; - - unary_expression - : factor { result = val[0] } - | address - | BANG factor { result = ExpressionNode.new(val[1], "!", nil) } - ; - - binary_expression - : expression operator expression - { result = ExpressionNode.new(val[0], val[1], val[2]) } - ; - - operator - : EEQUAL { result = "==" } - | NOTEQUAL { result = "<>" } - | LT { result = "<" } - | GT { result = ">" } - | GTE { result = ">=" } - | LTE { result = "<=" } - | PLUS { result = "+" } - | MINUS { result = "-" } - | OR { result = "||" } - | STAR { result = "*" } - | SLASH { result = "/" } - | DIV { result = "DIV" } - | MOD { result = "%" } - | AND { result = "&&" } - ; - - factor - : number - | signed_number - | var - | indirect_thing - | paren_expr - ; - - paren_expr - : LPAREN expression RPAREN { result = ParenExpressionNode.new(val[1]) } - ; - - indirect_thing - : INDIRECT LPAREN STRING COMMA indirectable RPAREN - { result = IndirectNode.new(val[2].to_sym, val[4]) } - ; - - signed_number - : sign DIGIT { - val[1] = val[1].to_i * -1 if val[0] == "-" - result = DigitNode.new(val[1]) - } - | sign REAL { val[1] = val[1].to_f * -1 if val[0] == "-"; result = RealNode.new(val[1]) } - ; - - sign - : MINUS { result = "-" } - ; - - number - : integer - | REAL { result = RealNode.new(val[0]) } - ; - - integer - : DIGIT { result = DigitNode.new(val[0]) } - ; - - definable - : numreg - | output - | input - | posreg - | position - | vreg - | number - | signed_number - | argument - | timer - | ualm - | sreg - ; - - - sreg - : SREG LBRACK DIGIT RBRACK { result = StringRegisterNode.new(val[2].to_i) } - ; - - ualm - : UALM LBRACK DIGIT RBRACK { result = UserAlarmNode.new(val[2].to_i) } - ; - - timer - : TIMER LBRACK DIGIT RBRACK { result = TimerNode.new(val[2].to_i) } - ; - - argument - : ARG LBRACK DIGIT RBRACK { result = ArgumentNode.new(val[2].to_i) } - ; - - vreg - : VREG LBRACK DIGIT RBRACK { result = VisionRegisterNode.new(val[2].to_i) } - ; - - position - : POSITION LBRACK DIGIT RBRACK { result = PositionNode.new(val[2].to_i) } - ; - - numreg - : NUMREG LBRACK DIGIT RBRACK { result = NumregNode.new(val[2].to_i) } - ; - - posreg - : POSREG LBRACK DIGIT RBRACK { result = PosregNode.new(val[2].to_i) } - ; - - output - : OUTPUT LBRACK DIGIT RBRACK { result = IONode.new(val[0], val[2].to_i) } - ; - - input - : INPUT LBRACK DIGIT RBRACK { result = IONode.new(val[0], val[2].to_i) } - ; - - address - : ADDRESS { result = AddressNode.new(val[0]) } - ; - - comment - : COMMENT { result = CommentNode.new(val[0]) } - ; - - terminator - : NEWLINE { result = TerminatorNode.new } - | comment optional_newline { result = val[0] } - # ^-- consume newlines or else we will get an extra space from EmptyStmt in the output - | false - | - ; - - swallow_newlines - : NEWLINE { result = TerminatorNode.new } - | - ; - - position_data - : POSITION_DATA sn hash sn END - { result = PositionDataNode.new(val[2]) } - ; - - sn - : swallow_newlines - ; - - hash - : LBRACE sn hash_attributes sn RBRACE { result = val[2] } - | LBRACE sn RBRACE { result = {} } - ; - - hash_attributes - : hash_attribute { result = val[0] } - | hash_attributes COMMA sn hash_attribute - { result = val[0].merge(val[3]) } - ; - - hash_attribute - : STRING COLON hash_value { result = { val[0].to_sym => val[2] } } - ; - - hash_value - : STRING - | hash - | array - | optional_sign DIGIT { val[1] = val[1].to_i * -1 if val[0] == "-"; result = val[1] } - | optional_sign REAL { val[1] = val[1].to_f * -1 if val[0] == "-"; result = val[1] } - | TRUE_FALSE { result = val[0] == "true" } - ; - - optional_sign - : sign - | - ; - - array - : LBRACK sn array_values sn RBRACK { result = val[2] } - ; - - array_values - : array_value { result = val } - | array_values COMMA sn array_value { result = val[0] << val[3] } - ; - - array_value - : hash_value - ; - - -end - ----- inner - - include TPPlus::Nodes - - attr_reader :interpreter - def initialize(scanner, interpreter = TPPlus::Interpreter.new) - @scanner = scanner - @interpreter = interpreter - super() - end - - def next_token - t = @scanner.next_token - @interpreter.line_count += 1 if t && t[0] == :NEWLINE - - #puts t.inspect - t - end - - def parse - #@yydebug =true - - do_parse - @interpreter - end - - def on_error(t, val, vstack) - raise ParseError, sprintf("Parse error on line #{@scanner.tok_line} column #{@scanner.tok_col}: %s (%s)", - val.inspect, token_to_str(t) || '?') - end - - class ParseError < StandardError ; end diff --git a/test/racc/assets/twowaysql.y b/test/racc/assets/twowaysql.y deleted file mode 100644 index d3bc748d3a..0000000000 --- a/test/racc/assets/twowaysql.y +++ /dev/null @@ -1,278 +0,0 @@ -# Copyright 2008-2015 Takuto Wada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -class TwoWaySQL::Parser - -rule - -sql : stmt_list - { - result = RootNode.new( val[0] ) - } - -stmt_list : - { - result = [] - } - | stmt_list stmt - { - result.push val[1] - } - -stmt : primary - | if_stmt - | begin_stmt - -begin_stmt : BEGIN stmt_list END - { - result = BeginNode.new( val[1] ) - } - -if_stmt : IF sub_stmt else_stmt END - { - result = IfNode.new( val[0][1], val[1], val[2] ) - } - -else_stmt : ELSE sub_stmt - { - result = val[1] - } - | - { - result = nil - } - -sub_stmt : and_stmt - | or_stmt - | stmt_list - -and_stmt : AND stmt_list - { - result = SubStatementNode.new( val[0][1], val[1] ) - } - -or_stmt : OR stmt_list - { - result = SubStatementNode.new( val[0][1], val[1] ) - } - -primary : IDENT - { - result = LiteralNode.new( val[0][1] ) - } - | STRING_LITERAL - { - result = LiteralNode.new( val[0][1] ) - } - | AND - { - result = LiteralNode.new( val[0][1] ) - } - | OR - { - result = LiteralNode.new( val[0][1] ) - } - | SPACES - { - result = WhiteSpaceNode.new( val[0][1], @preserve_space ) - } - | COMMA - { - result = LiteralNode.new( val[0][1] ) - } - | LPAREN - { - result = LiteralNode.new( val[0][1] ) - } - | RPAREN - { - result = LiteralNode.new( val[0][1] ) - } - | QUESTION - { - @num_questions += 1 - result = QuestionNode.new( @num_questions ) - } - | ACTUAL_COMMENT - { - result = ActualCommentNode.new( val[0][1] , val[0][2] ) - } - | bind_var - | embed_var - -bind_var : BIND_VARIABLE STRING_LITERAL - { - result = BindVariableNode.new( val[0][1] ) - } - | BIND_VARIABLE SPACES STRING_LITERAL - { - result = BindVariableNode.new( val[0][1] ) - } - | BIND_VARIABLE IDENT - { - result = BindVariableNode.new( val[0][1] ) - } - | BIND_VARIABLE SPACES IDENT - { - result = BindVariableNode.new( val[0][1] ) - } - | PAREN_BIND_VARIABLE - { - result = ParenBindVariableNode.new( val[0][1] ) - } - -embed_var : EMBED_VARIABLE IDENT - { - result = EmbedVariableNode.new( val[0][1] ) - } - | EMBED_VARIABLE SPACES IDENT - { - result = EmbedVariableNode.new( val[0][1] ) - } - -end - - ----- inner - -require 'strscan' - -def initialize(opts={}) - opts = { - :debug => false, - :preserve_space => true, - :preserve_comment => false - }.merge(opts) - @yydebug = opts[:debug] - @preserve_space = opts[:preserve_space] - @preserve_comment = opts[:preserve_comment] - @num_questions = 0 -end - - -PAREN_EXAMPLE = '\([^\)]+\)' -BEGIN_BIND_VARIABLE = '(\/|\#)\*([^\*]+)\*\1' -BIND_VARIABLE_PATTERN = /\A#{BEGIN_BIND_VARIABLE}\s*/ -PAREN_BIND_VARIABLE_PATTERN = /\A#{BEGIN_BIND_VARIABLE}\s*#{PAREN_EXAMPLE}/ -EMBED_VARIABLE_PATTERN = /\A(\/|\#)\*\$([^\*]+)\*\1\s*/ - -CONDITIONAL_PATTERN = /\A(\/|\#)\*(IF)\s+([^\*]+)\s*\*\1/ -BEGIN_END_PATTERN = /\A(\/|\#)\*(BEGIN|END)\s*\*\1/ -STRING_LITERAL_PATTERN = /\A(\'(?:[^\']+|\'\')*\')/ ## quoted string -SPLIT_TOKEN_PATTERN = /\A(\S+?)(?=\s*(?:(?:\/|\#)\*|-{2,}|\(|\)|\,))/ ## stop on delimiters --,/*,#*,',',(,) -LITERAL_PATTERN = /\A([^;\s]+)/ -SPACES_PATTERN = /\A(\s+)/ -QUESTION_PATTERN = /\A\?/ -COMMA_PATTERN = /\A\,/ -LPAREN_PATTERN = /\A\(/ -RPAREN_PATTERN = /\A\)/ -ACTUAL_COMMENT_PATTERN = /\A(\/|\#)\*(\s{1,}(?:.*?))\*\1/m ## start with spaces -SEMICOLON_AT_INPUT_END_PATTERN = /\A\;\s*\Z/ -UNMATCHED_COMMENT_START_PATTERN = /\A(?:(?:\/|\#)\*)/ - -#TODO: remove trailing spaces for S2Dao compatibility, but this spec sometimes causes SQL bugs... -ELSE_PATTERN = /\A\-{2,}\s*ELSE\s*/ -AND_PATTERN = /\A(\ *AND)\b/i -OR_PATTERN = /\A(\ *OR)\b/i - - -def parse( io ) - @q = [] - io.each_line(nil) do |whole| - @s = StringScanner.new(whole) - end - scan_str - - # @q.push [ false, nil ] - @q.push [ false, [@s.pos, nil] ] - - ## call racc's private parse method - do_parse -end - - -## called by racc -def next_token - @q.shift -end - - -def scan_str - until @s.eos? do - case - when @s.scan(AND_PATTERN) - @q.push [ :AND, [@s.pos, @s[1]] ] - when @s.scan(OR_PATTERN) - @q.push [ :OR, [@s.pos, @s[1]] ] - when @s.scan(SPACES_PATTERN) - @q.push [ :SPACES, [@s.pos, @s[1]] ] - when @s.scan(QUESTION_PATTERN) - @q.push [ :QUESTION, [@s.pos, nil] ] - when @s.scan(COMMA_PATTERN) - @q.push [ :COMMA, [@s.pos, ','] ] - when @s.scan(LPAREN_PATTERN) - @q.push [ :LPAREN, [@s.pos, '('] ] - when @s.scan(RPAREN_PATTERN) - @q.push [ :RPAREN, [@s.pos, ')'] ] - when @s.scan(ELSE_PATTERN) - @q.push [ :ELSE, [@s.pos, nil] ] - when @s.scan(ACTUAL_COMMENT_PATTERN) - @q.push [ :ACTUAL_COMMENT, [@s.pos, @s[1], @s[2]] ] if @preserve_comment - when @s.scan(BEGIN_END_PATTERN) - @q.push [ @s[2].intern, [@s.pos, nil] ] - when @s.scan(CONDITIONAL_PATTERN) - @q.push [ @s[2].intern, [@s.pos, @s[3]] ] - when @s.scan(EMBED_VARIABLE_PATTERN) - @q.push [ :EMBED_VARIABLE, [@s.pos, @s[2]] ] - when @s.scan(PAREN_BIND_VARIABLE_PATTERN) - @q.push [ :PAREN_BIND_VARIABLE, [@s.pos, @s[2]] ] - when @s.scan(BIND_VARIABLE_PATTERN) - @q.push [ :BIND_VARIABLE, [@s.pos, @s[2]] ] - when @s.scan(STRING_LITERAL_PATTERN) - @q.push [ :STRING_LITERAL, [@s.pos, @s[1]] ] - when @s.scan(SPLIT_TOKEN_PATTERN) - @q.push [ :IDENT, [@s.pos, @s[1]] ] - when @s.scan(UNMATCHED_COMMENT_START_PATTERN) ## unmatched comment start, '/*','#*' - raise Racc::ParseError, "unmatched comment. line:[#{line_no(@s.pos)}], str:[#{@s.rest}]" - when @s.scan(LITERAL_PATTERN) ## other string token - @q.push [ :IDENT, [@s.pos, @s[1]] ] - when @s.scan(SEMICOLON_AT_INPUT_END_PATTERN) - #drop semicolon at input end - else - raise Racc::ParseError, "syntax error at or near line:[#{line_no(@s.pos)}], str:[#{@s.rest}]" - end - end -end - - -## override racc's default on_error method -def on_error(t, v, vstack) - ## cursor in value-stack is an array of two items, - ## that have position value as 0th item. like [731, "ctx[:limit] "] - cursor = vstack.find do |tokens| - tokens.size == 2 and tokens[0].kind_of?(Fixnum) - end - pos = cursor[0] - line = line_no(pos) - rest = @s.string[pos .. -1] - raise Racc::ParseError, "syntax error at or near line:[#{line}], str:[#{rest}]" -end - - -def line_no(pos) - lines = 0 - scanned = @s.string[0..(pos)] - scanned.each_line { lines += 1 } - lines -end diff --git a/test/racc/assets/unterm.y b/test/racc/assets/unterm.y deleted file mode 100644 index 518acc7f31..0000000000 --- a/test/racc/assets/unterm.y +++ /dev/null @@ -1,5 +0,0 @@ -# unterminated action - -class A -rule - a: A { diff --git a/test/racc/assets/useless.y b/test/racc/assets/useless.y deleted file mode 100644 index 3f172e341c..0000000000 --- a/test/racc/assets/useless.y +++ /dev/null @@ -1,12 +0,0 @@ - - -class A -token A B C X -rule - -targ : A list B - | A B C - -list: list X - -end diff --git a/test/racc/assets/yyerr.y b/test/racc/assets/yyerr.y deleted file mode 100644 index 9faae89a79..0000000000 --- a/test/racc/assets/yyerr.y +++ /dev/null @@ -1,46 +0,0 @@ -# -# yyerror/yyerrok/yyaccept test -# - -class A -rule - -target: a b c - -a: - { - yyerror - raise ArgumentError, "yyerror failed" - } - | error - -b: - { - yyerrok - } - -c: - { - yyaccept - raise ArgumentError, "yyaccept failed" - } - -end - ----- inner - - def parse - do_parse - end - - def next_token - [false, '$end'] - end - - def on_error( *args ) - $stderr.puts "on_error called: args=#{args.inspect}" - end - ----- footer - -A.new.parse diff --git a/test/racc/bench.y b/test/racc/bench.y deleted file mode 100644 index c6ba136201..0000000000 --- a/test/racc/bench.y +++ /dev/null @@ -1,36 +0,0 @@ -class BenchmarkParser - -rule - - target: a a a a a a a a a a; - a: b b b b b b b b b b; - b: c c c c c c c c c c; - c: d d d d d d d d d d; - d: e e e e e e e e e e; - -end - ----- inner - -def initialize - @old = [ :e, 'e' ] - @i = 0 -end - -def next_token - return [false, '$'] if @i >= 10_0000 - @i += 1 - @old -end - -def parse - do_parse -end - ----- footer - -require 'benchmark' - -Benchmark.bm do |x| - x.report { BenchmarkParser.new.parse } -end diff --git a/test/racc/helper.rb b/test/racc/helper.rb deleted file mode 100644 index 146beb5a73..0000000000 --- a/test/racc/helper.rb +++ /dev/null @@ -1,115 +0,0 @@ -verbose = $VERBOSE -$VERBOSE = true -begin - -require 'test/unit' -begin - require_relative './lib/core_assertions' - Test::Unit::TestCase.include Test::Unit::CoreAssertions -rescue LoadError -end -require 'racc/static' -require 'fileutils' -require 'tempfile' -require 'timeout' - -module Racc - class TestCase < Test::Unit::TestCase - PROJECT_DIR = File.expand_path(File.join(File.dirname(__FILE__), '..')) - - test_dir = File.join(PROJECT_DIR, 'test') - test_dir = File.join(PROJECT_DIR, 'racc') unless File.exist?(test_dir) - TEST_DIR = test_dir - racc = File.join(PROJECT_DIR, 'bin', 'racc') - racc = File.join(PROJECT_DIR, '..', 'libexec', 'racc') unless File.exist?(racc) - RACC = racc - ASSET_DIR = File.join(TEST_DIR, 'assets') # test grammars - REGRESS_DIR = File.join(TEST_DIR, 'regress') # known-good generated outputs - - INC = [ - File.join(PROJECT_DIR, 'lib'), - File.join(PROJECT_DIR, 'ext'), - ].join(':') - - def setup - @TEMP_DIR = Dir.mktmpdir("racc") - @OUT_DIR = File.join(@TEMP_DIR, 'out') - @TAB_DIR = File.join(@TEMP_DIR, 'tab') # generated parsers go here - @LOG_DIR = File.join(@TEMP_DIR, 'log') - @ERR_DIR = File.join(@TEMP_DIR, 'err') - FileUtils.mkdir_p([@OUT_DIR, @TAB_DIR, @LOG_DIR, @ERR_DIR]) - FileUtils.cp File.join(TEST_DIR, "src.intp"), @TEMP_DIR - end - - def teardown - FileUtils.rm_f(File.join(@TEMP_DIR, "src.intp")) - FileUtils.rm_rf([@OUT_DIR, @TAB_DIR, @LOG_DIR, @ERR_DIR, @TEMP_DIR]) - end - - def assert_compile(asset, args = [], **opt) - file = File.basename(asset, '.y') - args = ([args].flatten) + [ - "#{ASSET_DIR}/#{file}.y", - '-Do', - "-O#{@OUT_DIR}/#{file}", - "-o#{@TAB_DIR}/#{file}", - ] - racc(*args, **opt) - end - - def assert_debugfile(asset, ok) - file = File.basename(asset, '.y') - Dir.chdir(@LOG_DIR) do - File.foreach("#{file}.y") do |line| - line.strip! - case line - when /sr/ then assert_equal "sr#{ok[0]}", line - when /rr/ then assert_equal "rr#{ok[1]}", line - when /un/ then assert_equal "un#{ok[2]}", line - when /ur/ then assert_equal "ur#{ok[3]}", line - when /ex/ then assert_equal "ex#{ok[4]}", line - else - raise TestFailed, 'racc outputs unknown debug report???' - end - end - end - end - - def assert_exec(asset) - lib_path = File.expand_path("../../lib", __FILE__) - file = File.basename(asset, '.y') - ruby "-I#{lib_path}", "#{@TAB_DIR}/#{file}" - end - - def strip_version(source) - source.sub(/This file is automatically generated by Racc \d+\.\d+\.\d+/, '') - end - - def assert_output_unchanged(asset) - file = File.basename(asset, '.y') - - # Code to re-generate the expectation files - # File.write("#{REGRESS_DIR}/#{file}", File.read("#{@TAB_DIR}/#{file}")) - - expected = File.read("#{REGRESS_DIR}/#{file}") - actual = File.read("#{@TAB_DIR}/#{file}") - result = (strip_version(expected) == strip_version(actual)) - - assert(result, "Output of test/assets/#{file}.y differed from " \ - "expectation. Try compiling it and diff with test/regress/#{file}.") - end - - def racc(*arg, **opt) - lib_path = File.expand_path("../../lib", __FILE__) - ruby "-I#{lib_path}", "-S", RACC, *arg, **opt - end - - def ruby(*arg, **opt) - assert_ruby_status(["-C", @TEMP_DIR, *arg], **opt) - end - end -end - -ensure -$VERBOSE = verbose -end diff --git a/test/racc/infini.y b/test/racc/infini.y deleted file mode 100644 index 88b1e1e93b..0000000000 --- a/test/racc/infini.y +++ /dev/null @@ -1,8 +0,0 @@ - -class I - -rule - -list: list X - -end diff --git a/test/racc/regress/README.txt b/test/racc/regress/README.txt deleted file mode 100644 index dcab73260d..0000000000 --- a/test/racc/regress/README.txt +++ /dev/null @@ -1,7 +0,0 @@ -These files are "known-good" compiler output, generated from a stable version of -Racc. Whenever Racc is refactored, or changes are made which should not affect the -compiler output, running "rake test" checks that the compiler output is exactly -the same as these files. - -If a change is made which *should* change the compiler output, these files will -have to be regenerated from the source in test/assets, and the results committed. diff --git a/test/racc/regress/cadenza b/test/racc/regress/cadenza deleted file mode 100644 index dafce3c9f3..0000000000 --- a/test/racc/regress/cadenza +++ /dev/null @@ -1,796 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - -# racc_parser.rb : generated by racc - -module Cadenza - class RaccParser < Racc::Parser - -module_eval(<<'...end cadenza.y/module_eval...', 'cadenza.y', 171) - -...end cadenza.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 37, 89, 65, 66, 20, 21, 22, 23, 24, 17, - 106, 37, 3, 76, 4, 3, 75, 4, 50, 37, - 29, 68, 65, 66, 33, 67, 34, 110, 9, 74, - 35, 9, 37, 36, 71, 33, 38, 34, 77, 78, - 79, 35, 72, 33, 36, 34, 37, 38, 3, 35, - 39, 83, 36, 54, 55, 38, 33, 89, 34, 37, - 90, 3, 35, 43, 9, 36, 85, 103, 38, 108, - 33, 109, 34, 56, 57, 111, 35, 9, 3, 36, - 46, 122, 38, 33, 112, 34, 113, 78, 79, 35, - 114, 3, 36, 4, 9, 38, 20, 21, 22, 23, - 24, 20, 21, 22, 23, 24, 115, 9, 65, 66, - 65, 66, 29, 54, 55, 120, 107, 29, 20, 21, - 22, 23, 24, 20, 21, 22, 23, 24, 20, 21, - 22, 23, 24, 3, 29, 39, 3, 121, 4, 29, - 3, 3, 43, 46, 29, 3, 124, 87, 125, 9, - 54, 55, 9, 56, 57, 128, 9, 9, 3, 103, - 116, 9, 20, 21, 22, 23, 24, 20, 21, 22, - 23, 24, 131, 3, 9, 116, 56, 57, 29, 3, - 89, 116, nil, 29, 20, 21, 22, 23, 24, 9, - 20, 21, 22, 23, 24, 9, 56, 57, 56, 57, - 29, 20, 21, 22, 23, 24, 29, 58, 59, 60, - 61, 62, 63, 56, 57, 56, 57, 29, 58, 59, - 60, 61, 62, 63, 20, 21, 22, 23, 24, 20, - 21, 22, 23, 24, 20, 21, 22, 23, 24, 20, - 21, 22, 23, 24, 20, 21, 22, 23, 24, 20, - 21, 22, 23, 24, 20, 21, 22, 23, 24, 20, - 21, 22, 23, 24, 20, 21, 22, 23, 24, 20, - 21, 22, 23, 24, 20, 21, 22, 23, 24, 65, - 66 ] - -racc_action_check = [ - 4, 73, 69, 69, 37, 37, 37, 37, 37, 1, - 69, 39, 0, 38, 0, 2, 38, 2, 17, 43, - 37, 32, 31, 31, 4, 31, 4, 73, 0, 37, - 4, 2, 46, 4, 35, 39, 4, 39, 39, 39, - 39, 39, 36, 43, 39, 43, 87, 39, 5, 43, - 5, 43, 43, 26, 26, 43, 46, 52, 46, 116, - 53, 6, 46, 6, 5, 46, 46, 67, 46, 71, - 87, 72, 87, 27, 27, 75, 87, 6, 7, 87, - 7, 87, 87, 116, 76, 116, 77, 116, 116, 116, - 78, 8, 116, 8, 7, 116, 3, 3, 3, 3, - 3, 20, 20, 20, 20, 20, 79, 8, 70, 70, - 51, 51, 3, 93, 93, 83, 70, 20, 24, 24, - 24, 24, 24, 33, 33, 33, 33, 33, 34, 34, - 34, 34, 34, 41, 24, 41, 42, 85, 42, 33, - 45, 48, 45, 48, 34, 49, 103, 49, 105, 41, - 94, 94, 42, 95, 95, 122, 45, 48, 81, 125, - 81, 49, 65, 65, 65, 65, 65, 66, 66, 66, - 66, 66, 126, 82, 81, 82, 96, 96, 65, 118, - 129, 118, nil, 66, 89, 89, 89, 89, 89, 82, - 108, 108, 108, 108, 108, 118, 97, 97, 98, 98, - 89, 124, 124, 124, 124, 124, 108, 28, 28, 28, - 28, 28, 28, 99, 99, 100, 100, 124, 64, 64, - 64, 64, 64, 64, 29, 29, 29, 29, 29, 54, - 54, 54, 54, 54, 55, 55, 55, 55, 55, 56, - 56, 56, 56, 56, 57, 57, 57, 57, 57, 58, - 58, 58, 58, 58, 59, 59, 59, 59, 59, 60, - 60, 60, 60, 60, 61, 61, 61, 61, 61, 62, - 62, 62, 62, 62, 63, 63, 63, 63, 63, 123, - 123 ] - -racc_action_pointer = [ - -12, 9, -9, 93, -3, 24, 37, 54, 67, nil, - nil, nil, nil, nil, nil, nil, nil, 18, nil, nil, - 98, nil, nil, nil, 115, nil, 44, 62, 194, 221, - nil, 2, -4, 120, 125, 31, 39, 1, 10, 8, - nil, 109, 112, 16, nil, 116, 29, nil, 117, 121, - nil, 90, 55, 52, 226, 231, 236, 241, 246, 251, - 256, 261, 266, 271, 205, 159, 164, 64, nil, -18, - 88, 35, 43, -1, nil, 47, 56, 58, 62, 78, - nil, 134, 149, 87, nil, 109, nil, 43, nil, 181, - nil, nil, nil, 104, 141, 142, 165, 185, 187, 202, - 204, nil, nil, 124, nil, 125, nil, nil, 187, nil, - nil, nil, nil, nil, nil, nil, 56, nil, 155, nil, - nil, nil, 127, 259, 198, 156, 144, nil, nil, 178, - nil, nil ] - -racc_action_default = [ - -2, -70, -1, -70, -70, -70, -70, -70, -70, -60, - -61, -62, -63, -64, -65, -66, -68, -70, -67, -69, - -5, -7, -8, -9, -70, -11, -14, -17, -24, -70, - -26, -33, -70, -70, -70, -70, -70, -70, -70, -70, - -41, -70, -70, -70, -48, -70, -70, -52, -70, -70, - 132, -3, -6, -70, -70, -70, -70, -70, -70, -70, - -70, -70, -70, -70, -25, -70, -70, -70, -35, -70, - -70, -70, -70, -70, -54, -70, -70, -70, -70, -70, - -42, -70, -70, -70, -49, -70, -53, -70, -57, -70, - -10, -12, -13, -15, -16, -18, -19, -20, -21, -22, - -23, -27, -28, -29, -31, -34, -36, -37, -70, -50, - -55, -58, -59, -38, -39, -40, -70, -44, -70, -43, - -47, -51, -70, -4, -70, -70, -70, -45, -56, -30, - -32, -46 ] - -racc_goto_table = [ - 19, 40, 18, 32, 104, 52, 51, 1, 2, 64, - 47, 91, 92, 41, 45, 48, 49, 44, 42, 69, - 70, 105, 73, 51, 53, 95, 96, 97, 98, 99, - 100, 93, 94, 101, 102, 88, nil, 80, nil, 19, - nil, 18, nil, 19, nil, 18, 19, 19, 18, 18, - 82, 86, nil, nil, 81, nil, 84, nil, nil, nil, - nil, nil, 130, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 123, nil, 117, 119, nil, - 19, nil, 18, nil, nil, nil, nil, nil, nil, 118, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 126, 129, - 51, nil, nil, nil, 127, nil, 19, nil, 18 ] - -racc_goto_check = [ - 27, 16, 28, 6, 11, 3, 4, 1, 2, 9, - 22, 5, 5, 2, 2, 2, 2, 19, 15, 4, - 4, 12, 3, 4, 6, 8, 8, 8, 8, 8, - 8, 7, 7, 10, 10, 25, nil, 16, nil, 27, - nil, 28, nil, 27, nil, 28, 27, 27, 28, 28, - 2, 22, nil, nil, 15, nil, 19, nil, nil, nil, - nil, nil, 11, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 4, nil, 16, 16, nil, - 27, nil, 28, nil, nil, nil, nil, nil, nil, 2, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 6, 3, - 4, nil, nil, nil, 16, nil, 27, nil, 28 ] - -racc_goto_pointer = [ - nil, 7, 8, -15, -14, -43, 0, -25, -33, -20, - -32, -63, -46, nil, nil, 13, -4, nil, nil, 11, - nil, nil, 3, nil, nil, -14, nil, -2, 0 ] - -racc_goto_default = [ - nil, nil, nil, nil, 31, 25, nil, 26, 27, 28, - 30, nil, nil, 10, 5, nil, nil, 11, 6, nil, - 12, 7, nil, 14, 8, nil, 13, 16, 15 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 42, :_reduce_none, - 0, 42, :_reduce_2, - 1, 44, :_reduce_3, - 3, 44, :_reduce_4, - 1, 46, :_reduce_5, - 2, 46, :_reduce_6, - 1, 46, :_reduce_7, - 1, 46, :_reduce_8, - 1, 46, :_reduce_9, - 3, 46, :_reduce_10, - 1, 48, :_reduce_none, - 3, 48, :_reduce_12, - 3, 48, :_reduce_13, - 1, 49, :_reduce_none, - 3, 49, :_reduce_15, - 3, 49, :_reduce_16, - 1, 50, :_reduce_none, - 3, 50, :_reduce_18, - 3, 50, :_reduce_19, - 3, 50, :_reduce_20, - 3, 50, :_reduce_21, - 3, 50, :_reduce_22, - 3, 50, :_reduce_23, - 1, 51, :_reduce_none, - 2, 51, :_reduce_25, - 1, 45, :_reduce_none, - 3, 45, :_reduce_27, - 3, 45, :_reduce_28, - 1, 52, :_reduce_29, - 3, 52, :_reduce_30, - 1, 53, :_reduce_31, - 3, 53, :_reduce_32, - 1, 47, :_reduce_none, - 3, 47, :_reduce_34, - 3, 54, :_reduce_35, - 4, 55, :_reduce_36, - 4, 55, :_reduce_37, - 3, 56, :_reduce_38, - 3, 57, :_reduce_39, - 3, 57, :_reduce_40, - 2, 58, :_reduce_41, - 3, 58, :_reduce_42, - 4, 58, :_reduce_43, - 4, 58, :_reduce_44, - 5, 58, :_reduce_45, - 6, 59, :_reduce_46, - 3, 60, :_reduce_47, - 2, 61, :_reduce_48, - 3, 61, :_reduce_49, - 4, 62, :_reduce_50, - 3, 63, :_reduce_51, - 2, 64, :_reduce_52, - 3, 64, :_reduce_53, - 3, 65, :_reduce_54, - 4, 65, :_reduce_55, - 3, 66, :_reduce_56, - 3, 67, :_reduce_57, - 4, 68, :_reduce_58, - 4, 68, :_reduce_59, - 1, 69, :_reduce_60, - 1, 69, :_reduce_none, - 1, 69, :_reduce_none, - 1, 69, :_reduce_none, - 1, 69, :_reduce_none, - 1, 69, :_reduce_none, - 1, 43, :_reduce_66, - 2, 43, :_reduce_67, - 1, 43, :_reduce_68, - 2, 43, :_reduce_69 ] - -racc_reduce_n = 70 - -racc_shift_n = 132 - -racc_token_table = { - false => 0, - :error => 1, - "," => 2, - :IDENTIFIER => 3, - :INTEGER => 4, - :REAL => 5, - :STRING => 6, - "(" => 7, - ")" => 8, - "*" => 9, - "/" => 10, - "+" => 11, - "-" => 12, - :OP_EQ => 13, - :OP_NEQ => 14, - :OP_LEQ => 15, - :OP_GEQ => 16, - ">" => 17, - "<" => 18, - :NOT => 19, - :AND => 20, - :OR => 21, - ":" => 22, - "|" => 23, - :VAR_OPEN => 24, - :VAR_CLOSE => 25, - :STMT_OPEN => 26, - :IF => 27, - :STMT_CLOSE => 28, - :UNLESS => 29, - :ELSE => 30, - :ENDIF => 31, - :ENDUNLESS => 32, - :FOR => 33, - :IN => 34, - :ENDFOR => 35, - :BLOCK => 36, - :ENDBLOCK => 37, - :END => 38, - :EXTENDS => 39, - :TEXT_BLOCK => 40 } - -racc_nt_base = 41 - -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", - "\",\"", - "IDENTIFIER", - "INTEGER", - "REAL", - "STRING", - "\"(\"", - "\")\"", - "\"*\"", - "\"/\"", - "\"+\"", - "\"-\"", - "OP_EQ", - "OP_NEQ", - "OP_LEQ", - "OP_GEQ", - "\">\"", - "\"<\"", - "NOT", - "AND", - "OR", - "\":\"", - "\"|\"", - "VAR_OPEN", - "VAR_CLOSE", - "STMT_OPEN", - "IF", - "STMT_CLOSE", - "UNLESS", - "ELSE", - "ENDIF", - "ENDUNLESS", - "FOR", - "IN", - "ENDFOR", - "BLOCK", - "ENDBLOCK", - "END", - "EXTENDS", - "TEXT_BLOCK", - "$start", - "target", - "document", - "parameter_list", - "logical_expression", - "primary_expression", - "filtered_expression", - "multiplicative_expression", - "additive_expression", - "boolean_expression", - "inverse_expression", - "filter", - "filter_list", - "inject_statement", - "if_tag", - "else_tag", - "end_if_tag", - "if_block", - "for_tag", - "end_for_tag", - "for_block", - "block_tag", - "end_block_tag", - "block_block", - "generic_block_tag", - "end_generic_block_tag", - "generic_block", - "extends_statement", - "document_component" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -# reduce 1 omitted - -module_eval(<<'.,.,', 'cadenza.y', 12) - def _reduce_2(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 16) - def _reduce_3(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 17) - def _reduce_4(val, _values, result) - result = val[0].push(val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 22) - def _reduce_5(val, _values, result) - result = VariableNode.new(val[0].value) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 23) - def _reduce_6(val, _values, result) - result = VariableNode.new(val[0].value, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 24) - def _reduce_7(val, _values, result) - result = ConstantNode.new(val[0].value) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 25) - def _reduce_8(val, _values, result) - result = ConstantNode.new(val[0].value) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 26) - def _reduce_9(val, _values, result) - result = ConstantNode.new(val[0].value) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 27) - def _reduce_10(val, _values, result) - result = val[1] - result - end -.,., - -# reduce 11 omitted - -module_eval(<<'.,.,', 'cadenza.y', 32) - def _reduce_12(val, _values, result) - result = OperationNode.new(val[0], "*", val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 33) - def _reduce_13(val, _values, result) - result = OperationNode.new(val[0], "/", val[2]) - result - end -.,., - -# reduce 14 omitted - -module_eval(<<'.,.,', 'cadenza.y', 38) - def _reduce_15(val, _values, result) - result = OperationNode.new(val[0], "+", val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 39) - def _reduce_16(val, _values, result) - result = OperationNode.new(val[0], "-", val[2]) - result - end -.,., - -# reduce 17 omitted - -module_eval(<<'.,.,', 'cadenza.y', 44) - def _reduce_18(val, _values, result) - result = OperationNode.new(val[0], "==", val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 45) - def _reduce_19(val, _values, result) - result = OperationNode.new(val[0], "!=", val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 46) - def _reduce_20(val, _values, result) - result = OperationNode.new(val[0], "<=", val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 47) - def _reduce_21(val, _values, result) - result = OperationNode.new(val[0], ">=", val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 48) - def _reduce_22(val, _values, result) - result = OperationNode.new(val[0], ">", val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 49) - def _reduce_23(val, _values, result) - result = OperationNode.new(val[0], "<", val[2]) - result - end -.,., - -# reduce 24 omitted - -module_eval(<<'.,.,', 'cadenza.y', 54) - def _reduce_25(val, _values, result) - result = BooleanInverseNode.new(val[1]) - result - end -.,., - -# reduce 26 omitted - -module_eval(<<'.,.,', 'cadenza.y', 59) - def _reduce_27(val, _values, result) - result = OperationNode.new(val[0], "and", val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 60) - def _reduce_28(val, _values, result) - result = OperationNode.new(val[0], "or", val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 64) - def _reduce_29(val, _values, result) - result = FilterNode.new(val[0].value) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 65) - def _reduce_30(val, _values, result) - result = FilterNode.new(val[0].value, val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 69) - def _reduce_31(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 70) - def _reduce_32(val, _values, result) - result = val[0].push(val[2]) - result - end -.,., - -# reduce 33 omitted - -module_eval(<<'.,.,', 'cadenza.y', 75) - def _reduce_34(val, _values, result) - result = FilteredValueNode.new(val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 79) - def _reduce_35(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 83) - def _reduce_36(val, _values, result) - open_scope!; result = val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 84) - def _reduce_37(val, _values, result) - open_scope!; result = BooleanInverseNode.new(val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 88) - def _reduce_38(val, _values, result) - result = close_scope!; open_scope! - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 92) - def _reduce_39(val, _values, result) - result = close_scope! - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 93) - def _reduce_40(val, _values, result) - result = close_scope! - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 97) - def _reduce_41(val, _values, result) - result = IfNode.new(val[0], val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 98) - def _reduce_42(val, _values, result) - result = IfNode.new(val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 99) - def _reduce_43(val, _values, result) - result = IfNode.new(val[0], val[1], val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 100) - def _reduce_44(val, _values, result) - result = IfNode.new(val[0], val[2], val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 101) - def _reduce_45(val, _values, result) - result = IfNode.new(val[0], val[2], val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 105) - def _reduce_46(val, _values, result) - open_scope!; result = [val[2].value, val[4]] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 109) - def _reduce_47(val, _values, result) - result = close_scope! - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 114) - def _reduce_48(val, _values, result) - result = ForNode.new(VariableNode.new(val[0].first), val[0].last, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 115) - def _reduce_49(val, _values, result) - result = ForNode.new(VariableNode.new(val[0].first), val[0].last, val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 119) - def _reduce_50(val, _values, result) - result = open_block_scope!(val[2].value) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 123) - def _reduce_51(val, _values, result) - result = close_block_scope! - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 128) - def _reduce_52(val, _values, result) - result = BlockNode.new(val[0], val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 129) - def _reduce_53(val, _values, result) - result = BlockNode.new(val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 133) - def _reduce_54(val, _values, result) - open_scope!; result = [val[1].value, []] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 134) - def _reduce_55(val, _values, result) - open_scope!; result = [val[1].value, val[2]] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 138) - def _reduce_56(val, _values, result) - result = close_scope! - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 142) - def _reduce_57(val, _values, result) - result = GenericBlockNode.new(val[0].first, val[2], val[0].last) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 146) - def _reduce_58(val, _values, result) - result = val[2].value - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 147) - def _reduce_59(val, _values, result) - result = VariableNode.new(val[2].value) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 151) - def _reduce_60(val, _values, result) - result = TextNode.new(val[0].value) - result - end -.,., - -# reduce 61 omitted - -# reduce 62 omitted - -# reduce 63 omitted - -# reduce 64 omitted - -# reduce 65 omitted - -module_eval(<<'.,.,', 'cadenza.y', 160) - def _reduce_66(val, _values, result) - push val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 161) - def _reduce_67(val, _values, result) - push val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 162) - def _reduce_68(val, _values, result) - document.extends = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 163) - def _reduce_69(val, _values, result) - document.extends = val[1] - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class RaccParser -end # module Cadenza diff --git a/test/racc/regress/cast b/test/racc/regress/cast deleted file mode 100644 index 1892c73e01..0000000000 --- a/test/racc/regress/cast +++ /dev/null @@ -1,3428 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - - -require 'set' - -# Error classes -module C - class ParseError < StandardError; end -end - -# Local variables: -# mode: ruby -# end: -module C - class Parser < Racc::Parser - -module_eval(<<'...end cast.y/module_eval...', 'cast.y', 564) - # A.1.9 -- Preprocessing numbers -- skip - # A.1.8 -- Header names -- skip - - # A.1.7 -- Puncuators -- we don't bother with {##,#,%:,%:%:} since - # we don't do preprocessing - @@punctuators = %r'\+\+|-[->]|&&|\|\||\.\.\.|(?:<<|>>|[<>=!*/%+\-&^|])=?|[\[\](){}.~?:;,]' - @@digraphs = %r'<[:%]|[:%]>' - - # A.1.6 -- String Literals -- simple for us because we don't decode - # the string (and indeed accept some illegal strings) - @@string_literal = %r'L?"(?:[^\\]|\\.)*?"'m - - # A.1.5 -- Constants - @@decimal_floating_constant = %r'(?:(?:\d*\.\d+|\d+\.)(?:e[-+]?\d+)?|\d+e[-+]?\d+)[fl]?'i - @@hexadecimal_floating_constant = %r'0x(?:(?:[0-9a-f]*\.[0-9a-f]+|[0-9a-f]+\.)|[0-9a-f]+)p[-+]?\d+[fl]?'i - - @@integer_constant = %r'(?:[1-9][0-9]*|0x[0-9a-f]+|0[0-7]*)(?:ul?l?|ll?u?)?'i - @@floating_constant = %r'#{@@decimal_floating_constant}|#{@@hexadecimal_floating_constant}' - @@enumeration_constant = %r'[a-zA-Z_\\][a-zA-Z_\\0-9]*' - @@character_constant = %r"L?'(?:[^\\]|\\.)+?'" - # (note that as with string-literals, we accept some illegal - # character-constants) - - # A.1.4 -- Universal character names -- skip - - # A.1.3 -- Identifiers -- skip, since an identifier is lexically - # identical to an enumeration constant - - # A.1.2 Keywords - keywords = %w'auto break case char const continue default do -double else enum extern float for goto if inline int long register -restrict return short signed sizeof static struct switch typedef union - unsigned void volatile while _Bool _Complex _Imaginary' - @@keywords = %r"#{keywords.join('|')}" - - def initialize - @type_names = ::Set.new - - @warning_proc = lambda{} - @pos = C::Node::Pos.new(nil, 1, 0) - end - def initialize_copy(x) - @pos = x.pos.dup - @type_names = x.type_names.dup - end - attr_accessor :pos, :type_names - - def parse(str) - if str.respond_to? :read - str = str.read - end - @str = str - begin - prepare_lexer(str) - return do_parse - rescue ParseError => e - e.set_backtrace(caller) - raise - end - end - - # - # Error handler, as used by racc. - # - def on_error(error_token_id, error_value, value_stack) - if error_value == '$' - parse_error @pos, "unexpected EOF" - else - parse_error(error_value.pos, - "parse error on #{token_to_str(error_token_id)} (#{error_value.val})") - end - end - - def self.feature(name) - attr_writer "#{name}_enabled" - class_eval <<-EOS - def enable_#{name} - @#{name}_enabled = true - end - def #{name}_enabled? - @#{name}_enabled - end - EOS - end - private_class_method :feature - - # - # Allow blocks in parentheses as expressions, as per the gcc - # extension. [http://rubyurl.com/iB7] - # - feature :block_expressions - - private # --------------------------------------------------------- - - class Token - attr_accessor :pos, :val - def initialize(pos, val) - @pos = pos - @val = val - end - end - def eat(str) - lines = str.split(/\r\n|[\r\n]/, -1) - if lines.length == 1 - @pos.col_num += lines[0].length - else - @pos.line_num += lines.length - 1 - @pos.col_num = lines[-1].length - end - end - - # - # Make a Declaration from the given specs and declarators. - # - def make_declaration(pos, specs, declarators) - specs.all?{|x| x.is_a?(Symbol) || x.is_a?(Type)} or raise specs.map{|x| x.class}.inspect - decl = Declaration.new_at(pos, nil, declarators) - - # set storage class - storage_classes = specs.find_all do |x| - [:typedef, :extern, :static, :auto, :register].include? x - end - # 6.7.1p2: at most, one storage-class specifier may be given in - # the declaration specifiers in a declaration - storage_classes.length <= 1 or - begin - if declarators.length == 0 - for_name = '' - else - for_name = "for `#{declarators[0].name}'" - end - parse_error pos, "multiple or duplicate storage classes given #{for_name}'" - end - decl.storage = storage_classes[0] - - # set type (specifiers, qualifiers) - decl.type = make_direct_type(pos, specs) - - # set function specifiers - decl.inline = specs.include?(:inline) - - # look for new type names - if decl.typedef? - decl.declarators.each do |d| - if d.name - @type_names << d.name - end - end - end - - return decl - end - - def make_function_def(pos, specs, func_declarator, decl_list, defn) - add_decl_type(func_declarator, make_direct_type(pos, specs)) - - # get types from decl_list if necessary - function = func_declarator.indirect_type - function.is_a? Function or - parse_error pos, "non function type for function `#{func_declarator.name}'" - params = function.params - if decl_list - params.all?{|p| p.type.nil?} or - parse_error pos, "both prototype and declaration list given for `#{func_declarator.name}'" - decl_list.each do |declaration| - declaration.declarators.each do |declarator| - param = params.find{|p| p.name == declarator.name} or - parse_error pos, "no parameter named #{declarator.name}" - if declarator.indirect_type - param.type = declarator.indirect_type - param.type.direct_type = declaration.type.dup - else - param.type = declaration.type.dup - end - end - end - params.all?{|p| p.type} or - begin - s = params.find_all{|p| p.type.nil?}.map{|p| "`#{p.name}'"}.join(' and ') - parse_error pos, "types missing for parameters #{s}" - end - end - - fd = FunctionDef.new_at(pos, - function.detach, - func_declarator.name, - defn, - :no_prototype => !decl_list.nil?) - - # set storage class - # 6.9.1p4: only extern or static allowed - specs.each do |s| - [:typedef, :auto, :register].include?(s) and - "`#{s}' illegal for function" - end - storage_classes = specs.find_all do |s| - s == :extern || s == :static - end - # 6.7.1p2: at most, one storage-class specifier may be given in - # the declaration specifiers in a declaration - storage_classes.length <= 1 or - "multiple or duplicate storage classes given for `#{func_declarator.name}'" - fd.storage = storage_classes[0] if storage_classes[0] - - # set function specifiers - # 6.7.4p5 'inline' can be repeated - fd.inline = specs.include?(:inline) - - return fd - end - - # - # Make a direct type from the list of type specifiers and type - # qualifiers. - # - def make_direct_type(pos, specs) - specs_order = [:signed, :unsigned, :short, :long, :double, :void, - :char, :int, :float, :_Bool, :_Complex, :_Imaginary] - - type_specs = specs.find_all do |x| - specs_order.include?(x) || !x.is_a?(Symbol) - end - type_specs.sort! do |a, b| - (specs_order.index(a)||100) <=> (specs_order.index(b)||100) - end - - # set type specifiers - # 6.7.2p2: the specifier list should be one of these - type = - case type_specs - when [:void] - Void.new - when [:char] - Char.new - when [:signed, :char] - Char.new :signed => true - when [:unsigned, :char] - Char.new :signed => false - when [:short], [:signed, :short], [:short, :int], - [:signed, :short, :int] - Int.new :longness => -1 - when [:unsigned, :short], [:unsigned, :short, :int] - Int.new :unsigned => true, :longness => -1 - when [:int], [:signed], [:signed, :int] - Int.new - when [:unsigned], [:unsigned, :int] - Int.new :unsigned => true - when [:long], [:signed, :long], [:long, :int], - [:signed, :long, :int] - Int.new :longness => 1 - when [:unsigned, :long], [:unsigned, :long, :int] - Int.new :longness => 1, :unsigned => true - when [:long, :long], [:signed, :long, :long], - [:long, :long, :int], [:signed, :long, :long, :int] - Int.new :longness => 2 - when [:unsigned, :long, :long], [:unsigned, :long, :long, :int] - Int.new :longness => 2, :unsigned => true - when [:float] - Float.new - when [:double] - Float.new :longness => 1 - when [:long, :double] - Float.new :longness => 2 - when [:_Bool] - Bool.new - when [:float, :_Complex] - Complex.new - when [:double, :_Complex] - Complex.new :longness => 1 - when [:long, :double, :_Complex] - Complex.new :longness => 2 - when [:float, :_Imaginary] - Imaginary.new - when [:double, :_Imaginary] - Imaginary.new :longness => 1 - when [:long, :double, :_Imaginary] - Imaginary.new :longness => 2 - else - if type_specs.length == 1 && - [CustomType, Struct, Union, Enum].any?{|c| type_specs[0].is_a? c} - type_specs[0] - else - if type_specs == [] - parse_error pos, "no type specifiers given" - else - parse_error pos, "invalid type specifier combination: #{type_specs.join(' ')}" - end - end - end - type.pos ||= pos - - # set type qualifiers - # 6.7.3p4: type qualifiers can be repeated - type.const = specs.any?{|x| x.equal? :const } - type.restrict = specs.any?{|x| x.equal? :restrict} - type.volatile = specs.any?{|x| x.equal? :volatile} - - return type - end - - def make_parameter(pos, specs, indirect_type, name) - type = indirect_type - if type - type.direct_type = make_direct_type(pos, specs) - else - type = make_direct_type(pos, specs) - end - [:typedef, :extern, :static, :auto, :inline].each do |sym| - specs.include? sym and - parse_error pos, "parameter `#{declarator.name}' declared `#{sym}'" - end - return Parameter.new_at(pos, type, name, - :register => specs.include?(:register)) - end - - def add_type_quals(type, quals) - type.const = quals.include?(:const ) - type.restrict = quals.include?(:restrict) - type.volatile = quals.include?(:volatile) - return type - end - - # - # Add te given type as the "most direct" type to the given - # declarator. Return the declarator. - # - def add_decl_type(declarator, type) - if declarator.indirect_type - declarator.indirect_type.direct_type = type - else - declarator.indirect_type = type - end - return declarator - end - - def param_list(params, var_args) - if params.length == 1 && - params[0].type.is_a?(Void) && - params[0].name.nil? - return NodeArray[] - elsif params.empty? - return nil - else - return params - end - end - - def parse_error(pos, str) - raise ParseError, "#{pos}: #{str}" - end - -...end cast.y/module_eval... -##### State transition tables begin ### - -clist = [ -'99,100,65,103,108,109,120,312,61,110,111,112,113,114,115,116,117,77', -'48,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,31,32,33,34,35', -'36,37,72,281,128,49,38,196,391,123,124,126,127,129,130,131,132,183,277', -'83,273,84,238,288,293,88,196,72,290,38,274,184,372,373,386,239,240,289', -'294,71,241,242,50,147,148,149,150,99,100,65,193,108,109,120,50,281,110', -'111,112,113,114,115,116,117,71,50,10,11,12,13,14,15,16,17,18,19,20,21', -'22,23,24,25,26,31,32,33,34,35,36,37,56,366,128,89,38,50,169,123,124', -'126,127,129,130,131,132,99,100,65,88,108,109,120,88,88,110,111,112,113', -'114,115,116,117,346,349,238,59,68,48,365,195,50,147,148,149,150,38,347', -'239,240,69,178,283,196,312,366,243,244,48,262,88,128,185,38,263,284', -'123,124,126,127,129,130,131,132,99,100,65,49,108,109,120,38,50,110,111', -'112,113,114,115,116,117,281,365,309,440,249,250,49,238,50,147,148,149', -'150,313,379,196,227,439,178,413,239,240,88,196,50,48,50,196,128,187', -'38,191,196,123,124,126,127,129,130,131,132,99,100,65,50,108,109,120', -'416,428,110,111,112,113,114,115,116,117,255,256,192,196,196,197,49,198', -'50,147,148,149,150,228,229,230,231,232,233,234,235,236,237,43,199,48', -'241,242,128,202,38,241,242,123,124,126,127,129,130,131,132,99,100,65', -'50,108,109,120,375,376,110,111,112,113,114,115,116,117,196,196,205,377', -'387,427,49,433,50,147,148,149,150,196,388,196,437,196,206,445,209,447', -'450,43,251,48,196,252,128,196,38,196,196,123,124,126,127,129,130,131', -'132,99,100,65,50,108,109,120,454,253,110,111,112,113,114,115,116,117', -'196,34,35,36,243,244,49,49,50,147,148,149,150,34,35,36,243,244,254,49', -'245,246,247,248,67,48,243,244,128,268,38,243,244,123,124,126,127,129', -'130,131,132,99,100,65,50,108,109,120,249,250,110,111,112,113,114,115', -'116,117,245,246,247,248,271,272,49,275,50,147,148,149,150,245,246,247', -'248,285,296,192,303,307,308,314,315,277,50,50,128,50,38,353,355,123', -'124,126,127,129,130,131,132,99,100,65,50,108,109,120,357,50,110,111', -'112,113,114,115,116,117,378,389,390,251,281,252,49,253,50,147,148,149', -'150,254,395,396,397,398,399,405,406,384,384,423,424,425,426,442,128', -',38,,,123,124,126,127,129,130,131,132,99,100,65,50,108,109,120,,,110', -'111,112,113,114,115,116,117,,,,,,,,,50,147,148,149,150,,,,,,,,,,,,,', -',,128,,38,,,123,124,126,127,129,130,131,132,99,100,65,,108,109,120,', -',110,111,112,113,114,115,116,117,,,,,,,,,50,147,148,149,150,,,,,,,,', -',,,,,,,128,,38,,,123,124,126,127,129,130,131,132,99,100,65,,108,109', -'120,,,110,111,112,113,114,115,116,117,,,,,,,,,50,147,148,149,150,,,', -',,,,,,,,,,,,128,,38,,,123,124,126,127,129,130,131,132,99,100,65,,108', -'109,120,,,110,111,112,113,114,115,116,117,,,,,,,,,50,147,148,149,150', -',,,,,,,,,,,,,,,128,,38,,,123,124,126,127,129,130,131,132,99,100,65,', -'108,109,120,,,110,111,112,113,114,115,116,117,,,,,,,,,50,147,148,149', -'150,,,,,,,,,,,,,,,,128,,38,,,123,124,126,127,129,130,131,132,99,100', -'65,,108,109,120,,,110,111,112,113,114,115,116,117,,,,,,,,,50,147,148', -'149,150,,,,,,,,,,,,,,,,128,,38,,,123,124,126,127,129,130,131,132,99', -'100,65,,108,109,120,,,110,111,112,113,114,115,116,117,,,,,,,,,50,147', -'148,149,150,,,,,,,,,,,,,,,,128,,38,,,123,124,126,127,129,130,131,132', -'99,100,65,,108,109,120,,,110,111,112,113,114,115,116,117,,,,,,,,,50', -'147,148,149,150,,,,,,,,,,,,,,,,128,,38,,,123,124,126,127,129,130,131', -'132,99,100,65,,108,109,120,,,110,111,112,113,114,115,116,117,,,,,,,', -',50,147,148,149,150,,,,,,,,,,,,,,,,128,,38,,,123,124,126,127,129,130', -'131,132,99,100,65,,108,109,120,,,110,111,112,113,114,115,116,117,,,', -',,,,,50,147,148,149,150,,,,,,,,,,,,,,,,128,,38,,,123,124,126,127,129', -'130,131,132,99,100,65,,108,109,120,,,110,111,112,113,114,115,116,117', -',,,,,,,,50,147,148,149,150,,,,,,,,,,,,,,,,128,,38,,,123,124,126,127', -'129,130,131,132,99,100,65,,108,109,120,,,110,111,112,113,114,115,116', -'117,,,,,,,,,50,147,148,149,150,,,,,,,,,,,,,,,,128,,38,,,123,124,126', -'127,129,130,131,132,99,100,65,,108,109,120,,,110,111,112,113,114,115', -'116,117,,,,,,,,,50,147,148,149,150,,,,,,,,,,,,,,,,128,,38,,,123,124', -'126,127,129,130,131,132,99,100,65,,108,109,120,,,110,111,112,113,114', -'115,116,117,154,,,,120,,,,50,147,148,149,150,,,,,,,215,,,,,,,,,128,', -'38,,,123,124,126,127,129,130,131,132,,,128,,,,,123,124,126,127,129,130', -'131,132,214,,,,,216,217,218,219,,50,147,148,149,150,65,,,,120,,,,,,50', -'147,148,149,150,154,,,,120,,,15,16,17,18,19,20,21,22,23,24,25,26,31', -'32,33,34,35,36,,,,128,,38,,,123,124,126,127,129,130,131,132,262,,128', -',,263,,123,124,126,127,129,130,131,132,,,,,,,,,,,50,147,148,149,150', -'65,,,,120,,,,,,50,147,148,149,150,,,,,,,,15,16,17,18,19,20,21,22,23', -'24,25,26,31,32,33,34,35,36,,,,128,,38,,,123,124,126,127,129,130,131', -'132,,,,,,,,,65,,,,120,,,,,,,,,,,,,50,147,148,149,150,15,16,17,18,19', -'20,21,22,23,24,25,26,31,32,33,34,35,36,,,,128,,38,,,123,124,126,127', -'129,130,131,132,154,,,,120,,,,,,,,,384,,,,120,,,,,,,,50,147,148,149', -'150,,,,,,,,,,,,,,128,,,,,123,124,126,127,129,130,131,132,128,,,,,123', -'124,126,127,129,130,131,132,154,392,,,120,,,,,,,,50,147,148,149,150', -'154,,,,120,,,,50,147,148,149,150,,,,,,,,,,,,262,,128,,,263,,123,124', -'126,127,129,130,131,132,,,262,,128,,,263,,123,124,126,127,129,130,131', -'132,154,,,,120,,,,50,147,148,149,150,,,154,453,,,120,,,,,,50,147,148', -'149,150,,,,,,,,,,,,,,128,,,,,123,124,126,127,129,130,131,132,262,,128', -',208,263,120,123,124,126,127,129,130,131,132,,,,,,,,,,,50,147,148,149', -'150,,,,,,,,,,,50,147,148,149,150,128,,,,,123,124,126,127,129,130,131', -'132,,,,,,,,,,,,,,,,305,,120,,,,,,,,50,147,148,149,150,10,11,12,13,14', -'15,16,17,18,19,20,21,22,23,24,25,26,31,32,33,34,35,36,37,,,128,,38,', -',123,124,126,127,129,130,131,132,381,,120,,,,,,,,,,,383,,120,,,,,,,', -',,50,147,148,149,150,,,,,,,,,,,,128,,,,,123,124,126,127,129,130,131', -'132,128,,412,,120,123,124,126,127,129,130,131,132,,,,,,,,,,,,,50,147', -'148,149,150,,,,,,,,,50,147,148,149,150,128,,,,,123,124,126,127,129,130', -'131,132,120,,,,,,,,,,,,,120,,160,,,,,,,,,,50,147,148,149,150,,,,34,35', -'36,,,159,161,,,,,123,124,126,127,129,130,131,132,128,,,,220,123,124', -'126,127,129,130,131,132,,,,,220,,,,,,,,50,147,148,149,150,,,,,,,,,50', -'147,148,149,150,128,,,,,123,124,126,127,129,130,131,132,128,,,,120,123', -'124,126,127,129,130,131,132,,,,,224,,,,,,,,50,147,148,149,150,,,,,,', -',,50,147,148,149,150,128,,,,,123,124,126,127,129,130,131,132,128,,,', -',123,124,126,127,129,130,131,132,,,120,,,,,,,,,,50,147,148,149,150,266', -',,,120,,,,50,147,148,149,150,,,,,,34,35,36,,,265,267,,,,120,123,124', -'126,127,129,130,131,132,34,35,36,,,,128,,,,120,123,124,126,127,129,130', -'131,132,,,,,,,50,147,148,149,150,128,,,,120,123,124,126,127,129,130', -'131,132,,50,147,148,149,150,128,,,,120,123,124,126,127,129,130,131,132', -',,,,,,50,147,148,149,150,128,,,,120,123,124,126,127,129,130,131,132', -',50,147,148,149,150,128,,,,120,123,124,126,127,129,130,131,132,,,,,', -',50,147,148,149,150,128,,,,120,123,124,126,127,129,130,131,132,,50,147', -'148,149,150,128,,,,,123,124,126,127,129,130,131,132,,,,,,,50,147,148', -'149,150,128,,,,,123,124,126,127,129,130,131,132,,50,147,148,149,150', -',,,,,,120,318,,,,,,,,,,,,50,147,148,149,150,15,16,17,18,19,20,21,22', -'23,24,25,26,31,32,33,34,35,36,,,,128,,38,,120,123,124,126,127,129,130', -'131,132,,,,,120,,,,,,,,,,,,,,,,,,,,,50,147,148,149,150,128,,,,,123,124', -'126,127,129,130,131,132,128,,,,120,123,124,126,127,129,130,131,132,', -',,,120,,,,,,,,50,147,148,149,150,,,,,,,,,50,147,148,149,150,128,,,,', -'123,124,126,127,129,130,131,132,128,,,,120,123,124,126,127,129,130,131', -'132,,,,,120,,,,,,,,50,147,148,149,150,,,,,,,,,50,147,148,149,150,128', -',,,,123,124,126,127,129,130,131,132,128,,,,120,123,124,126,127,129,130', -'131,132,,,,,120,,,,,,,,50,147,148,149,150,,,,,,,,,50,147,148,149,150', -'128,,,,,123,124,126,127,129,130,131,132,128,,,,120,123,124,126,127,129', -'130,131,132,,,,,120,,,,,,,,50,147,148,149,150,,,,,,,,,50,147,148,149', -'150,128,,,,,123,124,126,127,129,130,131,132,128,,,,120,123,124,126,127', -'129,130,131,132,,,,,120,,,,,,,,50,147,148,149,150,,,,,,,,,50,147,148', -'149,150,128,,,,,123,124,126,127,129,130,131,132,128,,,,120,123,124,126', -'127,129,130,131,132,,,,,120,,,,,,,,50,147,148,149,150,,,,,,,,,50,147', -'148,149,150,128,,,,,123,124,126,127,129,130,131,132,128,,,,120,123,124', -'126,127,129,130,131,132,,,,,120,,,,,,,,50,147,148,149,150,,,,,,,,,50', -'147,148,149,150,128,,,,,123,124,126,127,129,130,131,132,128,,,,120,123', -'124,126,127,129,130,131,132,,,,,120,,,,,,,,50,147,148,149,150,,,,,,', -',,50,147,148,149,150,128,,,,,123,124,126,127,129,130,131,132,128,,,', -'120,123,124,126,127,129,130,131,132,,,,,120,,,,,,,,50,147,148,149,150', -',,,,,,,,50,147,148,149,150,128,,,,,123,124,126,127,129,130,131,132,128', -',,,120,123,124,126,127,129,130,131,132,,,,,120,,,,,,,,50,147,148,149', -'150,,,,,,,,,50,147,148,149,150,128,,,,,123,124,126,127,129,130,131,132', -'128,,,,,123,124,126,127,129,130,131,132,120,,,,,,,,,,,,50,147,148,149', -'150,120,,,,,,,,50,147,148,149,150,,,,34,35,36,,,,128,,,,,123,124,126', -'127,129,130,131,132,,,,368,369,,,,120,123,124,126,127,129,130,131,132', -',,,,,120,,,50,147,148,149,150,,,,,,,,,,,,,50,147,148,149,150,128,,,', -',123,124,126,127,129,130,131,132,401,402,,,,120,123,124,126,127,129', -'130,131,132,,,,,120,415,,,,,,50,147,148,149,150,,,,,,,,,,50,147,148', -'149,150,128,,,,,123,124,126,127,129,130,131,132,128,,,,,123,124,126', -'127,129,130,131,132,120,418,,,,,,,,,,,50,147,148,149,150,,,,,,,,,50', -'147,148,149,150,,,,,,,,,,128,,,,,123,124,126,127,129,130,131,132,,,', -',,,,,,,,,120,,,,,,,,,,,,,50,147,148,149,150,15,16,17,18,19,20,21,22', -'23,24,25,26,31,32,33,34,35,36,,,,128,,38,,120,123,124,126,127,129,130', -'131,132,,,,,120,430,,,,,,,,,,,,,,,,,,,,50,147,148,149,150,128,,,,,123', -'124,126,127,129,130,131,132,128,,,,,123,124,126,127,129,130,131,132', -'120,432,,,,,,,,,,,50,147,148,149,150,120,436,,,,,,,50,147,148,149,150', -',,,,,,,,,128,,,,,123,124,126,127,129,130,131,132,,,,,128,,,,,123,124', -'126,127,129,130,131,132,120,444,,,,,,,50,147,148,149,150,,,,,,,,,,,', -',50,147,148,149,150,,,,,,,,,,128,,,,,123,124,126,127,129,130,131,132', -',,,,,,,,,,,,,,,,,277,364,,,,,,,50,147,148,149,150,10,11,12,13,14,15', -'16,17,18,19,20,21,22,23,24,25,26,31,32,33,34,35,36,37,281,164,49,,38', -',,,,,,,,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,31,32,33', -'34,35,36,37,,,,50,38,,,,,,,,,,,,,,,39,,,,,,,,,,,,,,,,,,,,,50,10,11,12', -'13,14,15,16,17,18,19,20,21,22,23,24,25,26,31,32,33,34,35,36,37,65,,', -',38,,,,,,,,,,,,67,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26', -'31,32,33,34,35,36,37,65,,,,38,,,,,,,,,,,,,10,11,12,13,14,15,16,17,18', -'19,20,21,22,23,24,25,26,31,32,33,34,35,36,37,173,,,,38,,,,,,,,,,,,,', -',,,15,16,17,18,19,20,21,22,23,24,25,26,31,32,33,34,35,36,282,,,,,38', -',,,,,,,,,,,,,,,15,16,17,18,19,20,21,22,23,24,25,26,31,32,33,34,35,36', -'287,,,,,38,,,,,,,,,,,,,,,,15,16,17,18,19,20,21,22,23,24,25,26,31,32', -'33,34,35,36,312,364,,,,38,,,,,,,,10,11,12,13,14,15,16,17,18,19,20,21', -'22,23,24,25,26,31,32,33,34,35,36,37,281,404,49,,38,,,,,,,,,10,11,12', -'13,14,15,16,17,18,19,20,21,22,23,24,25,26,31,32,33,34,35,36,37,,,,,38', -'10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,31,32,33,34,35,36', -'37,,,,,38,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,31,32,33', -'34,35,36,37,,,,,38,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26', -'31,32,33,34,35,36,37,,,,,38,10,11,12,13,14,15,16,17,18,19,20,21,22,23', -'24,25,26,31,32,33,34,35,36,37,,,,,38,10,11,12,13,14,15,16,17,18,19,20', -'21,22,23,24,25,26,31,32,33,34,35,36,37,,,,,38,10,11,12,13,14,15,16,17', -'18,19,20,21,22,23,24,25,26,31,32,33,34,35,36,37,,,,359,38,15,16,17,18', -'19,20,21,22,23,24,25,26,31,32,33,34,35,36,,,,,,38,15,16,17,18,19,20', -'21,22,23,24,25,26,31,32,33,34,35,36,,,,,,38,15,16,17,18,19,20,21,22', -'23,24,25,26,31,32,33,34,35,36,,,,,,38,15,16,17,18,19,20,21,22,23,24', -'25,26,31,32,33,34,35,36,,,,,,38,15,16,17,18,19,20,21,22,23,24,25,26', -'31,32,33,34,35,36,,,,,,38' ] - racc_action_table = arr = ::Array.new(4321, 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 = [ -'65,65,65,65,65,65,65,210,39,65,65,65,65,65,65,65,65,55,45,65,65,65,65', -'65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,46,210,65', -'210,65,316,345,65,65,65,65,65,65,65,65,85,276,57,163,58,135,182,186', -'59,345,70,184,114,163,85,289,294,316,135,135,182,186,46,136,136,65,65', -'65,65,65,102,102,102,102,102,102,102,45,276,102,102,102,102,102,102', -'102,102,70,114,102,102,102,102,102,102,102,102,102,102,102,102,102,102', -'102,102,102,102,102,102,102,102,102,102,30,280,102,60,102,276,73,102', -'102,102,102,102,102,102,102,112,112,112,184,112,112,112,289,294,112', -'112,112,112,112,112,112,112,257,260,330,33,42,48,280,107,102,102,102', -'102,102,30,257,330,330,42,80,175,107,311,361,137,137,80,260,84,112,87', -'112,260,175,112,112,112,112,112,112,112,112,187,187,187,48,187,187,187', -'33,30,187,187,187,187,187,187,187,187,311,361,207,419,139,139,80,331', -'112,112,112,112,112,211,304,207,133,419,284,380,331,331,89,211,48,284', -'33,304,187,98,187,100,380,187,187,187,187,187,187,187,187,191,191,191', -'80,191,191,191,382,411,191,191,191,191,191,191,191,191,144,144,101,382', -'411,109,284,110,187,187,187,187,187,133,133,133,133,133,133,133,133', -'133,133,5,111,5,332,332,191,113,191,333,333,191,191,191,191,191,191', -'191,191,192,192,192,284,192,192,192,300,301,192,192,192,192,192,192', -'192,192,300,301,115,302,317,410,5,414,191,191,191,191,191,302,317,410', -'417,414,116,429,119,431,435,66,140,66,417,141,192,429,192,431,435,192', -'192,192,192,192,192,192,192,296,296,296,5,296,296,296,443,142,296,296', -'296,296,296,296,296,296,443,49,49,49,334,334,66,49,192,192,192,192,192', -'74,74,74,335,335,143,74,138,138,138,138,151,69,336,336,296,158,296,337', -'337,296,296,296,296,296,296,296,296,375,375,375,66,375,375,375,340,340', -'375,375,375,375,375,375,375,375,338,338,338,338,161,162,69,165,296,296', -'296,296,296,339,339,339,339,177,188,200,201,203,204,212,213,167,216', -'217,375,263,375,264,267,375,375,375,375,375,375,375,375,376,376,376', -'69,376,376,376,270,274,376,376,376,376,376,376,376,376,303,324,325,341', -'167,342,167,343,375,375,375,375,375,344,351,354,356,362,363,367,369', -'389,390,400,402,403,407,427,376,,376,,,376,376,376,376,376,376,376,376', -'377,377,377,167,377,377,377,,,377,377,377,377,377,377,377,377,,,,,,', -',,376,376,376,376,376,,,,,,,,,,,,,,,,377,,377,,,377,377,377,377,377', -'377,377,377,415,415,415,,415,415,415,,,415,415,415,415,415,415,415,415', -',,,,,,,,377,377,377,377,377,,,,,,,,,,,,,,,,415,,415,,,415,415,415,415', -'415,415,415,415,418,418,418,,418,418,418,,,418,418,418,418,418,418,418', -'418,,,,,,,,,415,415,415,415,415,,,,,,,,,,,,,,,,418,,418,,,418,418,418', -'418,418,418,418,418,426,426,426,,426,426,426,,,426,426,426,426,426,426', -'426,426,,,,,,,,,418,418,418,418,418,,,,,,,,,,,,,,,,426,,426,,,426,426', -'426,426,426,426,426,426,430,430,430,,430,430,430,,,430,430,430,430,430', -'430,430,430,,,,,,,,,426,426,426,426,426,,,,,,,,,,,,,,,,430,,430,,,430', -'430,430,430,430,430,430,430,432,432,432,,432,432,432,,,432,432,432,432', -'432,432,432,432,,,,,,,,,430,430,430,430,430,,,,,,,,,,,,,,,,432,,432', -',,432,432,432,432,432,432,432,432,433,433,433,,433,433,433,,,433,433', -'433,433,433,433,433,433,,,,,,,,,432,432,432,432,432,,,,,,,,,,,,,,,,433', -',433,,,433,433,433,433,433,433,433,433,436,436,436,,436,436,436,,,436', -'436,436,436,436,436,436,436,,,,,,,,,433,433,433,433,433,,,,,,,,,,,,', -',,,436,,436,,,436,436,436,436,436,436,436,436,437,437,437,,437,437,437', -',,437,437,437,437,437,437,437,437,,,,,,,,,436,436,436,436,436,,,,,,', -',,,,,,,,,437,,437,,,437,437,437,437,437,437,437,437,444,444,444,,444', -'444,444,,,444,444,444,444,444,444,444,444,,,,,,,,,437,437,437,437,437', -',,,,,,,,,,,,,,,444,,444,,,444,444,444,444,444,444,444,444,445,445,445', -',445,445,445,,,445,445,445,445,445,445,445,445,,,,,,,,,444,444,444,444', -'444,,,,,,,,,,,,,,,,445,,445,,,445,445,445,445,445,445,445,445,447,447', -'447,,447,447,447,,,447,447,447,447,447,447,447,447,,,,,,,,,445,445,445', -'445,445,,,,,,,,,,,,,,,,447,,447,,,447,447,447,447,447,447,447,447,450', -'450,450,,450,450,450,,,450,450,450,450,450,450,450,450,,,,,,,,,447,447', -'447,447,447,,,,,,,,,,,,,,,,450,,450,,,450,450,450,450,450,450,450,450', -'454,454,454,,454,454,454,,,454,454,454,454,454,454,454,454,67,,,,67', -',,,450,450,450,450,450,,,,,,,122,,,,,,,,,454,,454,,,454,454,454,454', -'454,454,454,454,,,67,,,,,67,67,67,67,67,67,67,67,122,,,,,122,122,122', -'122,,454,454,454,454,454,120,,,,120,,,,,,67,67,67,67,67,154,,,,154,', -',120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120', -'120,,,,120,,120,,,120,120,120,120,120,120,120,120,154,,154,,,154,,154', -'154,154,154,154,154,154,154,,,,,,,,,,,120,120,120,120,120,220,,,,220', -',,,,,154,154,154,154,154,,,,,,,,220,220,220,220,220,220,220,220,220', -'220,220,220,220,220,220,220,220,220,,,,220,,220,,,220,220,220,220,220', -'220,220,220,,,,,,,,,224,,,,224,,,,,,,,,,,,,220,220,220,220,220,224,224', -'224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,,,,224', -',224,,,224,224,224,224,224,224,224,224,258,,,,258,,,,,,,,,315,,,,315', -',,,,,,,224,224,224,224,224,,,,,,,,,,,,,,258,,,,,258,258,258,258,258', -'258,258,258,315,,,,,315,315,315,315,315,315,315,315,347,347,,,347,,', -',,,,,258,258,258,258,258,384,,,,384,,,,315,315,315,315,315,,,,,,,,,', -',,347,,347,,,347,,347,347,347,347,347,347,347,347,,,384,,384,,,384,', -'384,384,384,384,384,384,384,384,393,,,,393,,,,347,347,347,347,347,,', -'439,439,,,439,,,,,,384,384,384,384,384,,,,,,,,,,,,,,393,,,,,393,393', -'393,393,393,393,393,393,439,,439,,117,439,117,439,439,439,439,439,439', -'439,439,,,,,,,,,,,393,393,393,393,393,,,,,,,,,,,439,439,439,439,439', -'117,,,,,117,117,117,117,117,117,117,117,,,,,,,,,,,,,,,,202,,202,,,,', -',,,117,117,117,117,117,202,202,202,202,202,202,202,202,202,202,202,202', -'202,202,202,202,202,202,202,202,202,202,202,202,,,202,,202,,,202,202', -'202,202,202,202,202,202,305,,305,,,,,,,,,,,306,,306,,,,,,,,,,202,202', -'202,202,202,,,,,,,,,,,,305,,,,,305,305,305,305,305,305,305,305,306,', -'379,,379,306,306,306,306,306,306,306,306,,,,,,,,,,,,,305,305,305,305', -'305,,,,,,,,,306,306,306,306,306,379,,,,,379,379,379,379,379,379,379', -'379,71,,,,,,,,,,,,,99,,71,,,,,,,,,,379,379,379,379,379,,,,71,71,71,', -',71,71,,,,,71,71,71,71,71,71,71,71,99,,,,123,99,99,99,99,99,99,99,99', -',,,,124,,,,,,,,71,71,71,71,71,,,,,,,,,99,99,99,99,99,123,,,,,123,123', -'123,123,123,123,123,123,124,,,,125,124,124,124,124,124,124,124,124,', -',,,126,,,,,,,,123,123,123,123,123,,,,,,,,,124,124,124,124,124,125,,', -',,125,125,125,125,125,125,125,125,126,,,,,126,126,126,126,126,126,126', -'126,,,157,,,,,,,,,,125,125,125,125,125,157,,,,160,,,,126,126,126,126', -'126,,,,,,157,157,157,,,157,157,,,,178,157,157,157,157,157,157,157,157', -'160,160,160,,,,160,,,,185,160,160,160,160,160,160,160,160,,,,,,,157', -'157,157,157,157,178,,,,196,178,178,178,178,178,178,178,178,,160,160', -'160,160,160,185,,,,197,185,185,185,185,185,185,185,185,,,,,,,178,178', -'178,178,178,196,,,,198,196,196,196,196,196,196,196,196,,185,185,185', -'185,185,197,,,,199,197,197,197,197,197,197,197,197,,,,,,,196,196,196', -'196,196,198,,,,214,198,198,198,198,198,198,198,198,,197,197,197,197', -'197,199,,,,,199,199,199,199,199,199,199,199,,,,,,,198,198,198,198,198', -'214,,,,,214,214,214,214,214,214,214,214,,199,199,199,199,199,,,,,,,215', -'215,,,,,,,,,,,,214,214,214,214,214,215,215,215,215,215,215,215,215,215', -'215,215,215,215,215,215,215,215,215,,,,215,,215,,226,215,215,215,215', -'215,215,215,215,,,,,238,,,,,,,,,,,,,,,,,,,,,215,215,215,215,215,226', -',,,,226,226,226,226,226,226,226,226,238,,,,239,238,238,238,238,238,238', -'238,238,,,,,240,,,,,,,,226,226,226,226,226,,,,,,,,,238,238,238,238,238', -'239,,,,,239,239,239,239,239,239,239,239,240,,,,241,240,240,240,240,240', -'240,240,240,,,,,242,,,,,,,,239,239,239,239,239,,,,,,,,,240,240,240,240', -'240,241,,,,,241,241,241,241,241,241,241,241,242,,,,243,242,242,242,242', -'242,242,242,242,,,,,244,,,,,,,,241,241,241,241,241,,,,,,,,,242,242,242', -'242,242,243,,,,,243,243,243,243,243,243,243,243,244,,,,245,244,244,244', -'244,244,244,244,244,,,,,246,,,,,,,,243,243,243,243,243,,,,,,,,,244,244', -'244,244,244,245,,,,,245,245,245,245,245,245,245,245,246,,,,247,246,246', -'246,246,246,246,246,246,,,,,248,,,,,,,,245,245,245,245,245,,,,,,,,,246', -'246,246,246,246,247,,,,,247,247,247,247,247,247,247,247,248,,,,249,248', -'248,248,248,248,248,248,248,,,,,250,,,,,,,,247,247,247,247,247,,,,,', -',,,248,248,248,248,248,249,,,,,249,249,249,249,249,249,249,249,250,', -',,251,250,250,250,250,250,250,250,250,,,,,252,,,,,,,,249,249,249,249', -'249,,,,,,,,,250,250,250,250,250,251,,,,,251,251,251,251,251,251,251', -'251,252,,,,253,252,252,252,252,252,252,252,252,,,,,254,,,,,,,,251,251', -'251,251,251,,,,,,,,,252,252,252,252,252,253,,,,,253,253,253,253,253', -'253,253,253,254,,,,255,254,254,254,254,254,254,254,254,,,,,256,,,,,', -',,253,253,253,253,253,,,,,,,,,254,254,254,254,254,255,,,,,255,255,255', -'255,255,255,255,255,256,,,,262,256,256,256,256,256,256,256,256,,,,,266', -',,,,,,,255,255,255,255,255,,,,,,,,,256,256,256,256,256,262,,,,,262,262', -'262,262,262,262,262,262,266,,,,,266,266,266,266,266,266,266,266,269', -',,,,,,,,,,,262,262,262,262,262,281,,,,,,,,266,266,266,266,266,,,,269', -'269,269,,,,269,,,,,269,269,269,269,269,269,269,269,,,,281,281,,,,285', -'281,281,281,281,281,281,281,281,,,,,,365,,,269,269,269,269,269,,,,,', -',,,,,,,281,281,281,281,281,285,,,,,285,285,285,285,285,285,285,285,365', -'365,,,,378,365,365,365,365,365,365,365,365,,,,,381,381,,,,,,285,285', -'285,285,285,,,,,,,,,,365,365,365,365,365,378,,,,,378,378,378,378,378', -'378,378,378,381,,,,,381,381,381,381,381,381,381,381,383,383,,,,,,,,', -',,378,378,378,378,378,,,,,,,,,381,381,381,381,381,,,,,,,,,,383,,,,,383', -'383,383,383,383,383,383,383,,,,,,,,,,,,,388,,,,,,,,,,,,,383,383,383', -'383,383,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388', -'388,388,388,,,,388,,388,,391,388,388,388,388,388,388,388,388,,,,,412', -'412,,,,,,,,,,,,,,,,,,,,388,388,388,388,388,391,,,,,391,391,391,391,391', -'391,391,391,412,,,,,412,412,412,412,412,412,412,412,413,413,,,,,,,,', -',,391,391,391,391,391,416,416,,,,,,,412,412,412,412,412,,,,,,,,,,413', -',,,,413,413,413,413,413,413,413,413,,,,,416,,,,,416,416,416,416,416', -'416,416,416,428,428,,,,,,,413,413,413,413,413,,,,,,,,,,,,,416,416,416', -'416,416,,,,,,,,,,428,,,,,428,428,428,428,428,428,428,428,,,,,,,,,,,', -',,,,,,277,277,,,,,,,428,428,428,428,428,277,277,277,277,277,277,277', -'277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277', -'277,72,277,,277,,,,,,,,,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72', -'72,72,72,72,72,72,72,72,72,,,,277,72,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,', -',,,,,72,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,41,,,,1,,,,', -',,,,,,,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41', -'41,41,41,41,62,,,,41,,,,,,,,,,,,,62,62,62,62,62,62,62,62,62,62,62,62', -'62,62,62,62,62,62,62,62,62,62,62,62,78,,,,62,,,,,,,,,,,,,,,,,78,78,78', -'78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,172,,,,,78,,,,,,,,,,,,', -',,,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172', -'172,181,,,,,172,,,,,,,,,,,,,,,,181,181,181,181,181,181,181,181,181,181', -'181,181,181,181,181,181,181,181,312,312,,,,181,,,,,,,,312,312,312,312', -'312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312', -'312,312,312,312,366,312,,312,,,,,,,,,366,366,366,366,366,366,366,366', -'366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,,,,', -'366,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,,,,0,6,6,6,6,6', -'6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,,,,,6,7,7,7,7,7,7,7,7,7,7,7,7', -'7,7,7,7,7,7,7,7,7,7,7,7,,,,,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8', -'8,8,8,8,8,,,,,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,,,,', -'9,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275', -'275,275,275,275,275,275,275,,,,275,275,56,56,56,56,56,56,56,56,56,56', -'56,56,56,56,56,56,56,56,,,,,,56,77,77,77,77,77,77,77,77,77,77,77,77', -'77,77,77,77,77,77,,,,,,77,81,81,81,81,81,81,81,81,81,81,81,81,81,81', -'81,81,81,81,,,,,,81,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82', -'82,82,,,,,,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83', -',,,,,83' ] - racc_action_check = arr = ::Array.new(4321, 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 = [ - 4005, 3703, nil, nil, nil, 295, 4034, 4063, 4092, 4121, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 126, nil, nil, 161, nil, nil, nil, nil, nil, 8, - nil, 3744, 160, nil, nil, 9, 34, nil, 159, 354, - nil, nil, nil, nil, nil, 12, 4174, 55, 57, -20, - 129, nil, 3785, nil, nil, -3, 353, 1318, nil, 411, - 59, 2026, 3638, 127, 366, nil, nil, 4198, 3825, nil, - 179, 4222, 4246, 4270, 104, 52, nil, 171, nil, 157, - nil, nil, nil, nil, nil, nil, nil, nil, 248, 2039, - 250, 279, 85, nil, nil, nil, nil, 163, nil, 275, - 277, 294, 143, 299, 20, 332, 348, 1795, nil, 267, - 1389, nil, 1333, 2082, 2095, 2138, 2151, nil, nil, nil, - nil, nil, nil, 216, nil, 15, 24, 123, 350, 156, - 305, 293, 314, 340, 205, nil, nil, nil, nil, nil, - nil, 398, nil, nil, 1404, nil, nil, 2205, 377, nil, - 2224, 410, 448, 51, nil, 440, nil, 469, nil, nil, - nil, nil, 3864, nil, nil, 175, nil, 468, 2248, nil, - nil, 3903, 58, nil, 63, 2267, 59, 201, 469, nil, - nil, 259, 317, nil, nil, nil, 2291, 2310, 2334, 2353, - 470, 460, 1864, 467, 468, nil, nil, 216, nil, nil, - -2, 224, 466, 467, 2377, 2441, 393, 394, nil, nil, - 1475, nil, nil, nil, 1539, nil, 2484, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 2497, 2540, - 2553, 2596, 2609, 2652, 2665, 2708, 2721, 2764, 2777, 2820, - 2833, 2876, 2889, 2932, 2945, 2988, 3001, 157, 1595, nil, - 143, nil, 3044, 396, 437, nil, 3057, 438, nil, 3109, - 454, nil, nil, nil, 416, 4150, 50, 3601, nil, nil, - 123, 3126, nil, nil, 237, 3169, nil, nil, nil, 67, - nil, nil, nil, nil, 68, nil, 375, nil, nil, nil, - 317, 318, 330, 502, 228, 1918, 1931, nil, nil, nil, - nil, 175, 3939, nil, nil, 1608, 28, 331, nil, nil, - nil, nil, nil, nil, 502, 503, nil, nil, nil, nil, - 117, 180, 248, 253, 336, 348, 358, 363, 388, 401, - 374, 458, 445, 446, 451, 47, nil, 1664, nil, nil, - nil, 478, nil, nil, 479, nil, 480, nil, nil, nil, - nil, 176, 518, 519, nil, 3183, 3976, 483, nil, 484, - nil, nil, nil, nil, nil, 433, 491, 549, 3226, 1974, - 233, 3239, 262, 3291, 1681, nil, nil, nil, 3355, 527, - 528, 3398, nil, 1737, nil, nil, nil, nil, nil, nil, - 487, nil, 488, 526, nil, nil, nil, 526, nil, nil, - 332, 263, 3411, 3463, 334, 607, 3480, 343, 665, 218, - nil, nil, nil, nil, nil, nil, 723, 531, 3532, 346, - 781, 348, 839, 897, nil, 349, 955, 1013, nil, 1752, - nil, nil, nil, 375, 1071, 1129, nil, 1187, nil, nil, - 1245, nil, nil, nil, 1303, nil, nil, nil, nil, nil ] - -racc_action_default = [ - -265, -265, -1, -3, -4, -265, -53, -55, -57, -59, - -64, -65, -66, -67, -68, -69, -70, -71, -72, -73, - -74, -75, -76, -77, -78, -79, -80, -81, -82, -83, - -265, -89, -90, -265, -115, -116, -117, -118, -166, -265, - -2, -62, -265, -51, -60, -265, -120, -121, -265, -136, - -258, -52, -54, -56, -58, -86, -265, -88, -107, -265, - -110, 460, -265, -6, -7, -265, -265, -265, -50, -265, - -119, -265, -265, -265, -135, -138, -139, -265, -265, -91, - -265, -95, -97, -265, -265, -265, -111, -113, -262, -265, - -5, -8, -9, -10, -11, -12, -13, -14, -179, -265, - -265, -83, -265, -20, -21, -23, -24, -265, -26, -265, - -265, -265, -265, -265, -265, -265, -265, -265, -180, -181, - -265, -184, -198, -265, -265, -265, -265, -204, -205, -206, - -207, -208, -209, -210, -212, -216, -219, -222, -227, -230, - -232, -234, -236, -238, -240, -242, -255, -259, -260, -261, - -264, -62, -63, -167, -265, -179, -61, -265, -265, -126, - -265, -205, -265, -265, -134, -141, -143, -147, -148, -122, - -137, -140, -265, -85, -92, -265, -98, -100, -265, -94, - -96, -265, -265, -104, -265, -265, -265, -265, -265, -210, - -257, -265, -265, -19, -22, -25, -265, -265, -265, -265, - -265, -265, -265, -265, -265, -45, -46, -265, -48, -263, - -151, -265, -265, -265, -265, -265, -265, -265, -190, -191, - -265, -199, -200, -201, -265, -202, -265, -244, -245, -246, - -247, -248, -249, -250, -251, -252, -253, -254, -265, -265, - -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, - -265, -265, -265, -265, -265, -265, -265, -265, -265, -171, - -265, -175, -265, -265, -265, -124, -265, -205, -125, -265, - -265, -131, -132, -133, -265, -265, -152, -265, -145, -146, - -154, -265, -84, -93, -265, -265, -102, -87, -103, -265, - -106, -112, -114, -108, -265, -15, -265, -17, -18, -256, - -265, -265, -265, -265, -265, -265, -265, -44, -49, -47, - -150, -152, -265, -182, -183, -265, -265, -265, -187, -194, - -196, -197, -188, -189, -265, -265, -243, -213, -214, -215, - -217, -218, -220, -221, -223, -224, -225, -226, -228, -229, - -231, -233, -235, -237, -239, -265, -168, -265, -170, -174, - -176, -265, -178, -123, -265, -130, -265, -128, -149, -142, - -144, -153, -265, -265, -165, -265, -265, -265, -159, -205, - -99, -101, -105, -109, -16, -265, -265, -265, -265, -265, - -265, -265, -265, -265, -265, -211, -185, -186, -265, -265, - -203, -265, -169, -265, -173, -177, -129, -127, -155, -164, - -265, -157, -205, -265, -163, -158, -161, -27, -29, -30, - -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, - -195, -241, -172, -156, -160, -162, -265, -265, -265, -265, - -265, -265, -265, -265, -39, -265, -265, -265, -43, -265, - -192, -28, -31, -265, -265, -265, -35, -265, -37, -38, - -265, -41, -42, -193, -265, -33, -34, -36, -40, -32 ] - -racc_goto_table = [ - 47, 152, 57, 162, 75, 60, 70, 319, 153, 5, - 5, 257, 158, 176, 174, 51, 52, 53, 54, 76, - 393, 291, 279, 361, 74, 55, 82, 1, 58, 170, - 62, 104, 179, 180, 190, 223, 63, 101, 102, 41, - 47, 76, 188, 47, 171, 64, 157, 82, 82, 78, - 156, 82, 82, 82, 213, 85, 175, 90, 361, 163, - 98, 47, 2, 40, 47, 310, 91, 168, 194, 105, - 172, 210, 330, 331, 101, 47, 181, 332, 333, 360, - 182, 167, 338, 339, 200, 186, 204, 350, 317, 340, - 82, 334, 335, 336, 337, 153, 341, 98, 264, 342, - 151, 270, 343, 151, 344, 226, 105, 98, 174, 203, - nil, nil, 393, 190, 177, 212, nil, 174, nil, 81, - 190, 286, 276, nil, nil, nil, 291, 171, 292, nil, - 76, 291, nil, nil, nil, 269, nil, 299, nil, nil, - 81, 81, 82, nil, 81, 81, 81, nil, 327, 328, - 329, 82, nil, nil, 324, nil, 320, nil, 325, 200, - nil, nil, 47, 200, 200, 311, 210, 326, nil, nil, - 201, 210, nil, nil, nil, 210, nil, nil, nil, nil, - 420, nil, 98, 81, nil, 82, 98, 98, nil, nil, - 82, nil, 348, nil, 82, nil, nil, 190, nil, 153, - nil, 278, nil, nil, nil, 351, 306, 354, nil, nil, - 356, 322, 323, nil, nil, 212, nil, 370, nil, 212, - 190, nil, 367, nil, nil, 385, nil, nil, 371, nil, - nil, nil, 276, nil, nil, 81, nil, 70, nil, 171, - nil, 419, nil, nil, 81, 295, nil, nil, nil, 297, - 298, nil, nil, nil, nil, nil, nil, nil, 352, nil, - nil, nil, nil, nil, nil, nil, nil, 311, 200, 358, - nil, 47, 47, nil, nil, nil, nil, nil, 81, 47, - nil, 394, nil, 81, 167, nil, 167, 81, 153, nil, - nil, 98, nil, nil, nil, nil, nil, 403, nil, nil, - nil, nil, nil, nil, 207, nil, 400, 211, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 177, nil, - nil, 167, nil, nil, nil, 153, 421, 422, nil, 320, - nil, nil, nil, nil, 153, nil, nil, nil, nil, 210, - nil, nil, nil, nil, nil, nil, nil, 200, 200, 200, - nil, nil, nil, nil, 374, nil, nil, nil, 82, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 98, 98, 98, 394, nil, 167, nil, nil, nil, nil, - 153, nil, nil, nil, 300, 301, 302, 200, nil, 304, - 200, nil, nil, nil, nil, nil, nil, nil, 200, nil, - nil, 316, 200, nil, 200, 200, nil, 211, 200, 200, - 98, 211, nil, 98, nil, nil, 200, 200, nil, 200, - nil, 98, 200, nil, nil, 98, 200, 98, 98, nil, - nil, 98, 98, 407, 408, 409, nil, nil, 189, 98, - 98, nil, 98, 345, nil, 98, nil, nil, nil, 98, - nil, 81, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 221, 222, 189, 225, nil, nil, nil, nil, - nil, nil, nil, 434, nil, nil, 438, nil, nil, nil, - nil, nil, nil, nil, 441, nil, nil, nil, 446, nil, - 448, 449, 380, 382, 451, 452, nil, nil, nil, nil, - nil, nil, 455, 456, nil, 457, nil, nil, 458, nil, - nil, nil, 459, nil, nil, nil, nil, 189, nil, nil, - nil, nil, nil, nil, 189, 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, nil, 410, 411, nil, 414, nil, - 417, nil, nil, nil, nil, nil, nil, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, nil, nil, nil, nil, 429, - 431, 189, nil, 435, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 443, nil, nil, nil, nil, - nil, nil, nil, nil, 189, 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, 189, 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, 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, - 189 ] - -racc_goto_check = [ - 15, 27, 17, 43, 39, 17, 40, 59, 42, 5, - 5, 50, 42, 35, 32, 5, 5, 5, 5, 24, - 51, 37, 47, 49, 41, 15, 24, 1, 15, 39, - 7, 19, 33, 33, 73, 62, 8, 17, 18, 6, - 15, 24, 16, 15, 24, 4, 41, 24, 24, 31, - 26, 24, 24, 24, 48, 36, 34, 8, 49, 44, - 15, 15, 2, 2, 15, 47, 4, 15, 19, 4, - 31, 33, 63, 63, 17, 15, 31, 64, 64, 46, - 36, 5, 66, 66, 17, 36, 17, 53, 58, 67, - 24, 65, 65, 65, 65, 42, 68, 15, 42, 69, - 6, 42, 70, 6, 71, 74, 4, 15, 32, 15, - nil, nil, 51, 73, 6, 8, nil, 32, nil, 23, - 73, 16, 39, nil, nil, nil, 37, 24, 16, nil, - 24, 37, nil, nil, nil, 41, nil, 42, nil, nil, - 23, 23, 24, nil, 23, 23, 23, nil, 62, 62, - 62, 24, nil, nil, 48, nil, 42, nil, 48, 17, - nil, nil, 15, 17, 17, 39, 33, 42, nil, nil, - 9, 33, nil, nil, nil, 33, nil, nil, nil, nil, - 59, nil, 15, 23, nil, 24, 15, 15, nil, nil, - 24, nil, 27, nil, 24, nil, nil, 73, nil, 42, - nil, 6, nil, nil, nil, 16, 4, 42, nil, nil, - 42, 15, 15, nil, nil, 8, nil, 35, nil, 8, - 73, nil, 42, nil, nil, 62, nil, nil, 16, nil, - nil, nil, 39, nil, nil, 23, nil, 40, nil, 24, - nil, 50, nil, nil, 23, 9, nil, nil, nil, 9, - 9, nil, nil, nil, nil, nil, nil, nil, 15, nil, - nil, nil, nil, nil, nil, nil, nil, 39, 17, 15, - nil, 15, 15, nil, nil, nil, nil, nil, 23, 15, - nil, 27, nil, 23, 5, nil, 5, 23, 42, nil, - nil, 15, nil, nil, nil, nil, nil, 43, nil, nil, - nil, nil, nil, nil, 20, nil, 42, 20, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 6, nil, - nil, 5, nil, nil, nil, 42, 73, 27, nil, 42, - nil, nil, nil, nil, 42, nil, nil, nil, nil, 33, - nil, nil, nil, nil, nil, nil, nil, 17, 17, 17, - nil, nil, nil, nil, 9, nil, nil, nil, 24, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 15, 15, 15, 27, nil, 5, nil, nil, nil, nil, - 42, nil, nil, nil, 20, 20, 20, 17, nil, 20, - 17, nil, nil, nil, nil, nil, nil, nil, 17, nil, - nil, 20, 17, nil, 17, 17, nil, 20, 17, 17, - 15, 20, nil, 15, nil, nil, 17, 17, nil, 17, - nil, 15, 17, nil, nil, 15, 17, 15, 15, nil, - nil, 15, 15, 9, 9, 9, nil, nil, 60, 15, - 15, nil, 15, 20, nil, 15, nil, nil, nil, 15, - nil, 23, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 60, 60, 60, 60, nil, nil, nil, nil, - nil, nil, nil, 9, nil, nil, 9, nil, nil, nil, - nil, nil, nil, nil, 9, nil, nil, nil, 9, nil, - 9, 9, 20, 20, 9, 9, nil, nil, nil, nil, - nil, nil, 9, 9, nil, 9, nil, nil, 9, nil, - nil, nil, 9, nil, nil, nil, nil, 60, nil, nil, - nil, nil, nil, nil, 60, 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, nil, 20, 20, nil, 20, nil, - 20, nil, nil, nil, nil, nil, nil, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, nil, nil, nil, nil, 20, - 20, 60, nil, 20, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 20, nil, nil, nil, nil, - nil, nil, nil, nil, 60, 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, 60, 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, 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, - 60 ] - -racc_goto_pointer = [ - nil, 27, 62, nil, 4, 9, 34, -11, -5, 58, - nil, nil, nil, nil, nil, -5, -57, -28, -27, -34, - 187, nil, nil, 63, -30, nil, -19, -66, nil, nil, - nil, -7, -64, -49, -24, -67, -4, -163, nil, -45, - -39, -25, -59, -69, -13, nil, -196, -145, -66, -253, - -143, -327, nil, -173, nil, nil, nil, nil, -127, -208, - 339, nil, -90, -169, -166, -154, -167, -162, -156, -154, - -152, -151, nil, -65, -28 ] - -racc_goto_default = [ - nil, nil, nil, 3, 4, 66, 73, nil, 93, 106, - 92, 94, 95, 96, 97, 155, nil, 29, nil, nil, - 107, 42, 6, 7, 8, 9, 44, 259, 27, 28, - 30, nil, 79, 80, nil, nil, nil, 86, 87, 45, - 46, nil, 146, 363, nil, 165, 166, 362, 321, 280, - nil, 258, 260, 261, 121, 118, 119, 122, nil, nil, - 133, 125, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, nil ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 92, :_reduce_1, - 2, 92, :_reduce_2, - 1, 93, :_reduce_3, - 1, 93, :_reduce_4, - 4, 94, :_reduce_5, - 3, 94, :_reduce_6, - 1, 98, :_reduce_7, - 2, 98, :_reduce_8, - 1, 100, :_reduce_9, - 1, 100, :_reduce_10, - 1, 100, :_reduce_11, - 1, 100, :_reduce_12, - 1, 100, :_reduce_13, - 1, 100, :_reduce_14, - 3, 101, :_reduce_15, - 4, 101, :_reduce_16, - 3, 101, :_reduce_17, - 3, 101, :_reduce_18, - 3, 99, :_reduce_19, - 2, 99, :_reduce_20, - 1, 109, :_reduce_21, - 2, 109, :_reduce_22, - 1, 110, :_reduce_23, - 1, 110, :_reduce_24, - 2, 102, :_reduce_25, - 1, 102, :_reduce_26, - 5, 103, :_reduce_27, - 7, 103, :_reduce_28, - 5, 103, :_reduce_29, - 5, 104, :_reduce_30, - 7, 104, :_reduce_31, - 9, 104, :_reduce_32, - 8, 104, :_reduce_33, - 8, 104, :_reduce_34, - 7, 104, :_reduce_35, - 8, 104, :_reduce_36, - 7, 104, :_reduce_37, - 7, 104, :_reduce_38, - 6, 104, :_reduce_39, - 8, 104, :_reduce_40, - 7, 104, :_reduce_41, - 7, 104, :_reduce_42, - 6, 104, :_reduce_43, - 3, 105, :_reduce_44, - 2, 105, :_reduce_45, - 2, 105, :_reduce_46, - 3, 105, :_reduce_47, - 2, 105, :_reduce_48, - 3, 105, :_reduce_49, - 3, 95, :_reduce_50, - 2, 95, :_reduce_51, - 2, 96, :_reduce_52, - 1, 96, :_reduce_53, - 2, 96, :_reduce_54, - 1, 96, :_reduce_55, - 2, 96, :_reduce_56, - 1, 96, :_reduce_57, - 2, 96, :_reduce_58, - 1, 96, :_reduce_59, - 1, 112, :_reduce_60, - 3, 112, :_reduce_61, - 1, 117, :_reduce_62, - 3, 117, :_reduce_63, - 1, 113, :_reduce_64, - 1, 113, :_reduce_65, - 1, 113, :_reduce_66, - 1, 113, :_reduce_67, - 1, 113, :_reduce_68, - 1, 114, :_reduce_69, - 1, 114, :_reduce_70, - 1, 114, :_reduce_71, - 1, 114, :_reduce_72, - 1, 114, :_reduce_73, - 1, 114, :_reduce_74, - 1, 114, :_reduce_75, - 1, 114, :_reduce_76, - 1, 114, :_reduce_77, - 1, 114, :_reduce_78, - 1, 114, :_reduce_79, - 1, 114, :_reduce_80, - 1, 114, :_reduce_81, - 1, 114, :_reduce_82, - 1, 114, :_reduce_83, - 5, 119, :_reduce_84, - 4, 119, :_reduce_85, - 2, 119, :_reduce_86, - 5, 119, :_reduce_87, - 2, 119, :_reduce_88, - 1, 121, :_reduce_89, - 1, 121, :_reduce_90, - 1, 122, :_reduce_91, - 2, 122, :_reduce_92, - 3, 123, :_reduce_93, - 2, 124, :_reduce_94, - 1, 124, :_reduce_95, - 2, 124, :_reduce_96, - 1, 124, :_reduce_97, - 1, 125, :_reduce_98, - 3, 125, :_reduce_99, - 1, 126, :_reduce_100, - 3, 126, :_reduce_101, - 2, 126, :_reduce_102, - 5, 120, :_reduce_103, - 4, 120, :_reduce_104, - 6, 120, :_reduce_105, - 5, 120, :_reduce_106, - 2, 120, :_reduce_107, - 5, 120, :_reduce_108, - 6, 120, :_reduce_109, - 2, 120, :_reduce_110, - 1, 127, :_reduce_111, - 3, 127, :_reduce_112, - 1, 128, :_reduce_113, - 3, 128, :_reduce_114, - 1, 115, :_reduce_115, - 1, 115, :_reduce_116, - 1, 115, :_reduce_117, - 1, 116, :_reduce_118, - 2, 97, :_reduce_119, - 1, 97, :_reduce_120, - 1, 131, :_reduce_121, - 3, 131, :_reduce_122, - 5, 131, :_reduce_123, - 4, 131, :_reduce_124, - 4, 131, :_reduce_125, - 3, 131, :_reduce_126, - 6, 131, :_reduce_127, - 5, 131, :_reduce_128, - 6, 131, :_reduce_129, - 5, 131, :_reduce_130, - 4, 131, :_reduce_131, - 4, 131, :_reduce_132, - 4, 131, :_reduce_133, - 3, 131, :_reduce_134, - 2, 130, :_reduce_135, - 1, 130, :_reduce_136, - 3, 130, :_reduce_137, - 2, 130, :_reduce_138, - 1, 132, :_reduce_139, - 2, 132, :_reduce_140, - 1, 134, :_reduce_141, - 3, 134, :_reduce_142, - 1, 136, :_reduce_143, - 3, 136, :_reduce_144, - 2, 137, :_reduce_145, - 2, 137, :_reduce_146, - 1, 137, :_reduce_147, - 1, 135, :_reduce_148, - 3, 135, :_reduce_149, - 2, 139, :_reduce_150, - 1, 139, :_reduce_151, - 1, 138, :_reduce_152, - 2, 138, :_reduce_153, - 1, 138, :_reduce_154, - 3, 140, :_reduce_155, - 4, 140, :_reduce_156, - 3, 140, :_reduce_157, - 3, 140, :_reduce_158, - 2, 140, :_reduce_159, - 4, 140, :_reduce_160, - 3, 140, :_reduce_161, - 4, 140, :_reduce_162, - 3, 140, :_reduce_163, - 3, 140, :_reduce_164, - 2, 140, :_reduce_165, - 1, 108, :_reduce_166, - 1, 118, :_reduce_167, - 3, 118, :_reduce_168, - 4, 118, :_reduce_169, - 2, 141, :_reduce_170, - 1, 141, :_reduce_171, - 4, 141, :_reduce_172, - 3, 141, :_reduce_173, - 2, 142, :_reduce_174, - 1, 143, :_reduce_175, - 2, 143, :_reduce_176, - 3, 144, :_reduce_177, - 2, 144, :_reduce_178, - 1, 145, :_reduce_179, - 1, 145, :_reduce_180, - 1, 145, :_reduce_181, - 3, 145, :_reduce_182, - 3, 145, :_reduce_183, - 1, 148, :_reduce_184, - 4, 148, :_reduce_185, - 4, 148, :_reduce_186, - 3, 148, :_reduce_187, - 3, 148, :_reduce_188, - 3, 148, :_reduce_189, - 2, 148, :_reduce_190, - 2, 148, :_reduce_191, - 6, 148, :_reduce_192, - 7, 148, :_reduce_193, - 1, 149, :_reduce_194, - 3, 149, :_reduce_195, - 1, 150, :_reduce_196, - 1, 150, :_reduce_197, - 1, 151, :_reduce_198, - 2, 151, :_reduce_199, - 2, 151, :_reduce_200, - 2, 151, :_reduce_201, - 2, 151, :_reduce_202, - 4, 151, :_reduce_203, - 1, 152, :_reduce_204, - 1, 152, :_reduce_205, - 1, 152, :_reduce_206, - 1, 152, :_reduce_207, - 1, 152, :_reduce_208, - 1, 152, :_reduce_209, - 1, 153, :_reduce_210, - 4, 153, :_reduce_211, - 1, 154, :_reduce_212, - 3, 154, :_reduce_213, - 3, 154, :_reduce_214, - 3, 154, :_reduce_215, - 1, 155, :_reduce_216, - 3, 155, :_reduce_217, - 3, 155, :_reduce_218, - 1, 156, :_reduce_219, - 3, 156, :_reduce_220, - 3, 156, :_reduce_221, - 1, 157, :_reduce_222, - 3, 157, :_reduce_223, - 3, 157, :_reduce_224, - 3, 157, :_reduce_225, - 3, 157, :_reduce_226, - 1, 158, :_reduce_227, - 3, 158, :_reduce_228, - 3, 158, :_reduce_229, - 1, 159, :_reduce_230, - 3, 159, :_reduce_231, - 1, 160, :_reduce_232, - 3, 160, :_reduce_233, - 1, 161, :_reduce_234, - 3, 161, :_reduce_235, - 1, 162, :_reduce_236, - 3, 162, :_reduce_237, - 1, 163, :_reduce_238, - 3, 163, :_reduce_239, - 1, 164, :_reduce_240, - 5, 164, :_reduce_241, - 1, 133, :_reduce_242, - 3, 133, :_reduce_243, - 1, 165, :_reduce_244, - 1, 165, :_reduce_245, - 1, 165, :_reduce_246, - 1, 165, :_reduce_247, - 1, 165, :_reduce_248, - 1, 165, :_reduce_249, - 1, 165, :_reduce_250, - 1, 165, :_reduce_251, - 1, 165, :_reduce_252, - 1, 165, :_reduce_253, - 1, 165, :_reduce_254, - 1, 111, :_reduce_255, - 3, 111, :_reduce_256, - 1, 107, :_reduce_257, - 1, 106, :_reduce_258, - 1, 146, :_reduce_259, - 1, 146, :_reduce_260, - 1, 146, :_reduce_261, - 1, 129, :_reduce_262, - 2, 147, :_reduce_263, - 1, 147, :_reduce_264 ] - -racc_reduce_n = 265 - -racc_shift_n = 460 - -racc_token_table = { - false => 0, - :error => 1, - :COLON => 2, - :CASE => 3, - :DEFAULT => 4, - :LBRACE => 5, - :RBRACE => 6, - :SEMICOLON => 7, - :IF => 8, - :LPAREN => 9, - :RPAREN => 10, - :ELSE => 11, - :SWITCH => 12, - :WHILE => 13, - :DO => 14, - :FOR => 15, - :GOTO => 16, - :CONTINUE => 17, - :BREAK => 18, - :RETURN => 19, - :COMMA => 20, - :EQ => 21, - :TYPEDEF => 22, - :EXTERN => 23, - :STATIC => 24, - :AUTO => 25, - :REGISTER => 26, - :VOID => 27, - :CHAR => 28, - :SHORT => 29, - :INT => 30, - :LONG => 31, - :FLOAT => 32, - :DOUBLE => 33, - :SIGNED => 34, - :UNSIGNED => 35, - :BOOL => 36, - :COMPLEX => 37, - :IMAGINARY => 38, - :STRUCT => 39, - :UNION => 40, - :ENUM => 41, - :CONST => 42, - :RESTRICT => 43, - :VOLATILE => 44, - :INLINE => 45, - :LBRACKET => 46, - :RBRACKET => 47, - :MUL => 48, - :ELLIPSIS => 49, - :TYPENAME => 50, - :DOT => 51, - :ARROW => 52, - :INC => 53, - :DEC => 54, - :SIZEOF => 55, - :AND => 56, - :ADD => 57, - :SUB => 58, - :NOT => 59, - :BANG => 60, - :DIV => 61, - :MOD => 62, - :LSHIFT => 63, - :RSHIFT => 64, - :LT => 65, - :GT => 66, - :LEQ => 67, - :GEQ => 68, - :EQEQ => 69, - :NEQ => 70, - :XOR => 71, - :OR => 72, - :ANDAND => 73, - :OROR => 74, - :QUESTION => 75, - :MULEQ => 76, - :DIVEQ => 77, - :MODEQ => 78, - :ADDEQ => 79, - :SUBEQ => 80, - :LSHIFTEQ => 81, - :RSHIFTEQ => 82, - :ANDEQ => 83, - :XOREQ => 84, - :OREQ => 85, - :ID => 86, - :ICON => 87, - :FCON => 88, - :CCON => 89, - :SCON => 90 } - -racc_nt_base = 91 - -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", - "COLON", - "CASE", - "DEFAULT", - "LBRACE", - "RBRACE", - "SEMICOLON", - "IF", - "LPAREN", - "RPAREN", - "ELSE", - "SWITCH", - "WHILE", - "DO", - "FOR", - "GOTO", - "CONTINUE", - "BREAK", - "RETURN", - "COMMA", - "EQ", - "TYPEDEF", - "EXTERN", - "STATIC", - "AUTO", - "REGISTER", - "VOID", - "CHAR", - "SHORT", - "INT", - "LONG", - "FLOAT", - "DOUBLE", - "SIGNED", - "UNSIGNED", - "BOOL", - "COMPLEX", - "IMAGINARY", - "STRUCT", - "UNION", - "ENUM", - "CONST", - "RESTRICT", - "VOLATILE", - "INLINE", - "LBRACKET", - "RBRACKET", - "MUL", - "ELLIPSIS", - "TYPENAME", - "DOT", - "ARROW", - "INC", - "DEC", - "SIZEOF", - "AND", - "ADD", - "SUB", - "NOT", - "BANG", - "DIV", - "MOD", - "LSHIFT", - "RSHIFT", - "LT", - "GT", - "LEQ", - "GEQ", - "EQEQ", - "NEQ", - "XOR", - "OR", - "ANDAND", - "OROR", - "QUESTION", - "MULEQ", - "DIVEQ", - "MODEQ", - "ADDEQ", - "SUBEQ", - "LSHIFTEQ", - "RSHIFTEQ", - "ANDEQ", - "XOREQ", - "OREQ", - "ID", - "ICON", - "FCON", - "CCON", - "SCON", - "$start", - "translation_unit", - "external_declaration", - "function_definition", - "declaration", - "declaration_specifiers", - "declarator", - "declaration_list", - "compound_statement", - "statement", - "labeled_statement", - "expression_statement", - "selection_statement", - "iteration_statement", - "jump_statement", - "identifier", - "constant_expression", - "typedef_name", - "block_item_list", - "block_item", - "expression", - "init_declarator_list", - "storage_class_specifier", - "type_specifier", - "type_qualifier", - "function_specifier", - "init_declarator", - "initializer", - "struct_or_union_specifier", - "enum_specifier", - "struct_or_union", - "struct_declaration_list", - "struct_declaration", - "specifier_qualifier_list", - "struct_declarator_list", - "struct_declarator", - "enumerator_list", - "enumerator", - "enumeration_constant", - "pointer", - "direct_declarator", - "type_qualifier_list", - "assignment_expression", - "parameter_type_list", - "identifier_list", - "parameter_list", - "parameter_declaration", - "abstract_declarator", - "type_name", - "direct_abstract_declarator", - "initializer_list", - "designation", - "designator_list", - "designator", - "primary_expression", - "constant", - "string_literal", - "postfix_expression", - "argument_expression_list", - "argument_expression", - "unary_expression", - "unary_operator", - "cast_expression", - "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", - "assignment_operator" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'cast.y', 32) - def _reduce_1(val, _values, result) - result = TranslationUnit.new_at(val[0].pos, NodeChain[val[0]]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 33) - def _reduce_2(val, _values, result) - result = val[0]; result.entities << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 37) - def _reduce_3(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 38) - def _reduce_4(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 42) - def _reduce_5(val, _values, result) - result = make_function_def(val[0][0], val[0][1], val[1], val[2], val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 43) - def _reduce_6(val, _values, result) - result = make_function_def(val[0][0], val[0][1], val[1], nil , val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 47) - def _reduce_7(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 48) - def _reduce_8(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 54) - def _reduce_9(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 55) - def _reduce_10(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 56) - def _reduce_11(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 57) - def _reduce_12(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 58) - def _reduce_13(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 59) - def _reduce_14(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 63) - def _reduce_15(val, _values, result) - val[2].labels.unshift(PlainLabel.new_at(val[0].pos, val[0].val)); result = val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 64) - def _reduce_16(val, _values, result) - val[3].labels.unshift(Case .new_at(val[0].pos, val[1] )); result = val[3] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 65) - def _reduce_17(val, _values, result) - val[2].labels.unshift(Default .new_at(val[0].pos )); result = val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 67) - def _reduce_18(val, _values, result) - val[2].labels.unshift(PlainLabel.new_at(val[0].pos, val[0].name)); result = val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 71) - def _reduce_19(val, _values, result) - result = Block.new_at(val[0].pos, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 72) - def _reduce_20(val, _values, result) - result = Block.new_at(val[0].pos ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 76) - def _reduce_21(val, _values, result) - result = NodeChain[val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 77) - def _reduce_22(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 81) - def _reduce_23(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 82) - def _reduce_24(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 86) - def _reduce_25(val, _values, result) - result = ExpressionStatement.new_at(val[0].pos, val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 87) - def _reduce_26(val, _values, result) - result = ExpressionStatement.new_at(val[0].pos ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 91) - def _reduce_27(val, _values, result) - result = If .new_at(val[0].pos, val[2], val[4] ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 92) - def _reduce_28(val, _values, result) - result = If .new_at(val[0].pos, val[2], val[4], val[6]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 93) - def _reduce_29(val, _values, result) - result = Switch.new_at(val[0].pos, val[2], val[4] ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 97) - def _reduce_30(val, _values, result) - result = While.new_at(val[0].pos, val[2], val[4] ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 98) - def _reduce_31(val, _values, result) - result = While.new_at(val[0].pos, val[4], val[1], :do => true ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 99) - def _reduce_32(val, _values, result) - result = For.new_at(val[0].pos, val[2], val[4], val[6], val[8]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 100) - def _reduce_33(val, _values, result) - result = For.new_at(val[0].pos, val[2], val[4], nil , val[7]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 101) - def _reduce_34(val, _values, result) - result = For.new_at(val[0].pos, val[2], nil , val[5], val[7]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 102) - def _reduce_35(val, _values, result) - result = For.new_at(val[0].pos, val[2], nil , nil , val[6]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 103) - def _reduce_36(val, _values, result) - result = For.new_at(val[0].pos, nil , val[3], val[5], val[7]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 104) - def _reduce_37(val, _values, result) - result = For.new_at(val[0].pos, nil , val[3], nil , val[6]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 105) - def _reduce_38(val, _values, result) - result = For.new_at(val[0].pos, nil , nil , val[4], val[6]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 106) - def _reduce_39(val, _values, result) - result = For.new_at(val[0].pos, nil , nil , nil , val[5]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 107) - def _reduce_40(val, _values, result) - result = For.new_at(val[0].pos, val[2], val[3], val[5], val[7]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 108) - def _reduce_41(val, _values, result) - result = For.new_at(val[0].pos, val[2], val[3], nil , val[6]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 109) - def _reduce_42(val, _values, result) - result = For.new_at(val[0].pos, val[2], nil , val[4], val[6]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 110) - def _reduce_43(val, _values, result) - result = For.new_at(val[0].pos, val[2], nil , nil , val[5]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 114) - def _reduce_44(val, _values, result) - result = Goto .new_at(val[0].pos, val[1].val) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 115) - def _reduce_45(val, _values, result) - result = Continue.new_at(val[0].pos ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 116) - def _reduce_46(val, _values, result) - result = Break .new_at(val[0].pos ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 117) - def _reduce_47(val, _values, result) - result = Return .new_at(val[0].pos, val[1] ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 118) - def _reduce_48(val, _values, result) - result = Return .new_at(val[0].pos ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 120) - def _reduce_49(val, _values, result) - result = Goto .new_at(val[0].pos, val[1].name) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 126) - def _reduce_50(val, _values, result) - result = make_declaration(val[0][0], val[0][1], val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 127) - def _reduce_51(val, _values, result) - result = make_declaration(val[0][0], val[0][1], NodeArray[]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 131) - def _reduce_52(val, _values, result) - val[1][1] << val[0][1]; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 132) - def _reduce_53(val, _values, result) - result = [val[0][0], [val[0][1]]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 133) - def _reduce_54(val, _values, result) - val[1][1] << val[0][1]; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 134) - def _reduce_55(val, _values, result) - result = [val[0][0], [val[0][1]]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 135) - def _reduce_56(val, _values, result) - val[1][1] << val[0][1]; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 136) - def _reduce_57(val, _values, result) - result = [val[0][0], [val[0][1]]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 137) - def _reduce_58(val, _values, result) - val[1][1] << val[0][1]; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 138) - def _reduce_59(val, _values, result) - result = [val[0][0], [val[0][1]]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 142) - def _reduce_60(val, _values, result) - result = NodeArray[val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 143) - def _reduce_61(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 147) - def _reduce_62(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 148) - def _reduce_63(val, _values, result) - val[0].init = val[2]; result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 152) - def _reduce_64(val, _values, result) - result = [val[0].pos, :typedef ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 153) - def _reduce_65(val, _values, result) - result = [val[0].pos, :extern ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 154) - def _reduce_66(val, _values, result) - result = [val[0].pos, :static ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 155) - def _reduce_67(val, _values, result) - result = [val[0].pos, :auto ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 156) - def _reduce_68(val, _values, result) - result = [val[0].pos, :register] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 160) - def _reduce_69(val, _values, result) - result = [val[0].pos, :void ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 161) - def _reduce_70(val, _values, result) - result = [val[0].pos, :char ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 162) - def _reduce_71(val, _values, result) - result = [val[0].pos, :short ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 163) - def _reduce_72(val, _values, result) - result = [val[0].pos, :int ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 164) - def _reduce_73(val, _values, result) - result = [val[0].pos, :long ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 165) - def _reduce_74(val, _values, result) - result = [val[0].pos, :float ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 166) - def _reduce_75(val, _values, result) - result = [val[0].pos, :double ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 167) - def _reduce_76(val, _values, result) - result = [val[0].pos, :signed ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 168) - def _reduce_77(val, _values, result) - result = [val[0].pos, :unsigned ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 169) - def _reduce_78(val, _values, result) - result = [val[0].pos, :_Bool ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 170) - def _reduce_79(val, _values, result) - result = [val[0].pos, :_Complex ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 171) - def _reduce_80(val, _values, result) - result = [val[0].pos, :_Imaginary] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 172) - def _reduce_81(val, _values, result) - result = [val[0].pos, val[0] ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 173) - def _reduce_82(val, _values, result) - result = [val[0].pos, val[0] ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 174) - def _reduce_83(val, _values, result) - result = [val[0].pos, val[0] ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 178) - def _reduce_84(val, _values, result) - result = val[0][1].new_at(val[0][0], val[1].val, val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 179) - def _reduce_85(val, _values, result) - result = val[0][1].new_at(val[0][0], nil , val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 180) - def _reduce_86(val, _values, result) - result = val[0][1].new_at(val[0][0], val[1].val, nil ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 182) - def _reduce_87(val, _values, result) - result = val[0][1].new_at(val[0][0], val[1].name, val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 183) - def _reduce_88(val, _values, result) - result = val[0][1].new_at(val[0][0], val[1].name, nil ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 187) - def _reduce_89(val, _values, result) - result = [val[0].pos, Struct] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 188) - def _reduce_90(val, _values, result) - result = [val[0].pos, Union ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 192) - def _reduce_91(val, _values, result) - result = NodeArray[val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 193) - def _reduce_92(val, _values, result) - val[0] << val[1]; result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 197) - def _reduce_93(val, _values, result) - result = make_declaration(val[0][0], val[0][1], val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 201) - def _reduce_94(val, _values, result) - val[1][1] << val[0][1]; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 202) - def _reduce_95(val, _values, result) - result = [val[0][0], [val[0][1]]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 203) - def _reduce_96(val, _values, result) - val[1][1] << val[0][1]; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 204) - def _reduce_97(val, _values, result) - result = [val[0][0], [val[0][1]]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 208) - def _reduce_98(val, _values, result) - result = NodeArray[val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 209) - def _reduce_99(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 213) - def _reduce_100(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 214) - def _reduce_101(val, _values, result) - result = val[0]; val[0].num_bits = val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 215) - def _reduce_102(val, _values, result) - result = Declarator.new_at(val[0].pos, :num_bits => val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 219) - def _reduce_103(val, _values, result) - result = Enum.new_at(val[0].pos, val[1].val, val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 220) - def _reduce_104(val, _values, result) - result = Enum.new_at(val[0].pos, nil , val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 221) - def _reduce_105(val, _values, result) - result = Enum.new_at(val[0].pos, val[1].val, val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 222) - def _reduce_106(val, _values, result) - result = Enum.new_at(val[0].pos, nil , val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 223) - def _reduce_107(val, _values, result) - result = Enum.new_at(val[0].pos, val[1].val, nil ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 225) - def _reduce_108(val, _values, result) - result = Enum.new_at(val[0].pos, val[1].name, val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 226) - def _reduce_109(val, _values, result) - result = Enum.new_at(val[0].pos, val[1].name, val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 227) - def _reduce_110(val, _values, result) - result = Enum.new_at(val[0].pos, val[1].name, nil ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 231) - def _reduce_111(val, _values, result) - result = NodeArray[val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 232) - def _reduce_112(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 236) - def _reduce_113(val, _values, result) - result = Enumerator.new_at(val[0].pos, val[0].val, nil ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 237) - def _reduce_114(val, _values, result) - result = Enumerator.new_at(val[0].pos, val[0].val, val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 241) - def _reduce_115(val, _values, result) - result = [val[0].pos, :const ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 242) - def _reduce_116(val, _values, result) - result = [val[0].pos, :restrict] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 243) - def _reduce_117(val, _values, result) - result = [val[0].pos, :volatile] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 247) - def _reduce_118(val, _values, result) - result = [val[0].pos, :inline] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 251) - def _reduce_119(val, _values, result) - result = add_decl_type(val[1], val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 252) - def _reduce_120(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 256) - def _reduce_121(val, _values, result) - result = Declarator.new_at(val[0].pos, nil, val[0].val) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 257) - def _reduce_122(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 258) - def _reduce_123(val, _values, result) - result = add_decl_type(val[0], Array.new_at(val[0].pos )) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 259) - def _reduce_124(val, _values, result) - result = add_decl_type(val[0], Array.new_at(val[0].pos )) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 260) - def _reduce_125(val, _values, result) - result = add_decl_type(val[0], Array.new_at(val[0].pos, nil, val[2])) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 261) - def _reduce_126(val, _values, result) - result = add_decl_type(val[0], Array.new_at(val[0].pos )) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 262) - def _reduce_127(val, _values, result) - result = add_decl_type(val[0], Array.new_at(val[0].pos )) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 263) - def _reduce_128(val, _values, result) - result = add_decl_type(val[0], Array.new_at(val[0].pos )) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 264) - def _reduce_129(val, _values, result) - result = add_decl_type(val[0], Array.new_at(val[0].pos )) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 265) - def _reduce_130(val, _values, result) - result = add_decl_type(val[0], Array.new_at(val[0].pos )) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 266) - def _reduce_131(val, _values, result) - result = add_decl_type(val[0], Array.new_at(val[0].pos )) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 267) - def _reduce_132(val, _values, result) - result = add_decl_type(val[0], Function.new_at(val[0].pos, nil, param_list(*val[2]), :var_args => val[2][1])) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 268) - def _reduce_133(val, _values, result) - result = add_decl_type(val[0], Function.new_at(val[0].pos, nil, val[2])) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 269) - def _reduce_134(val, _values, result) - result = add_decl_type(val[0], Function.new_at(val[0].pos )) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 273) - def _reduce_135(val, _values, result) - result = add_type_quals(Pointer.new_at(val[0].pos), val[1][1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 274) - def _reduce_136(val, _values, result) - result = Pointer.new_at(val[0].pos) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 275) - def _reduce_137(val, _values, result) - p = add_type_quals(Pointer.new_at(val[0].pos), val[1][1]); val[2].direct_type = p; result = val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 276) - def _reduce_138(val, _values, result) - p = Pointer.new_at(val[0].pos) ; val[1].direct_type = p; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 280) - def _reduce_139(val, _values, result) - result = [val[0][0], [val[0][1]]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 281) - def _reduce_140(val, _values, result) - val[0][1] << val[1][1]; result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 285) - def _reduce_141(val, _values, result) - result = [val[0], false] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 286) - def _reduce_142(val, _values, result) - result = [val[0], true ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 290) - def _reduce_143(val, _values, result) - result = NodeArray[val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 291) - def _reduce_144(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 295) - def _reduce_145(val, _values, result) - ind_type = val[1].indirect_type and ind_type.detach - result = make_parameter(val[0][0], val[0][1], ind_type, val[1].name) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 297) - def _reduce_146(val, _values, result) - result = make_parameter(val[0][0], val[0][1], val[1] , nil ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 298) - def _reduce_147(val, _values, result) - result = make_parameter(val[0][0], val[0][1], nil , nil ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 302) - def _reduce_148(val, _values, result) - result = NodeArray[Parameter.new_at(val[0].pos, nil, val[0].val)] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 303) - def _reduce_149(val, _values, result) - result = val[0] << Parameter.new_at(val[2].pos, nil, val[2].val) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 307) - def _reduce_150(val, _values, result) - val[1].direct_type = make_direct_type(val[0][0], val[0][1]); result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 308) - def _reduce_151(val, _values, result) - result = make_direct_type(val[0][0], val[0][1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 312) - def _reduce_152(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 313) - def _reduce_153(val, _values, result) - val[1].direct_type = val[0]; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 314) - def _reduce_154(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 318) - def _reduce_155(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 319) - def _reduce_156(val, _values, result) - val[0].direct_type = Array.new_at(val[0].pos, nil, val[2]); result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 320) - def _reduce_157(val, _values, result) - val[0].direct_type = Array.new_at(val[0].pos, nil, nil ); result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 321) - def _reduce_158(val, _values, result) - result = Array.new_at(val[0].pos, nil, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 322) - def _reduce_159(val, _values, result) - result = Array.new_at(val[0].pos ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 323) - def _reduce_160(val, _values, result) - val[0].direct_type = Array.new_at(val[0].pos); result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 324) - def _reduce_161(val, _values, result) - result = Array.new_at(val[0].pos) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 325) - def _reduce_162(val, _values, result) - val[0].direct_type = Function.new_at(val[0].pos, nil, param_list(*val[2]), val[2][1]); result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 326) - def _reduce_163(val, _values, result) - val[0].direct_type = Function.new_at(val[0].pos ); result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 327) - def _reduce_164(val, _values, result) - result = Function.new_at(val[0].pos, nil, param_list(*val[1]), val[1][1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 328) - def _reduce_165(val, _values, result) - result = Function.new_at(val[0].pos ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 334) - def _reduce_166(val, _values, result) - result = CustomType.new_at(val[0].pos, val[0].val) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 338) - def _reduce_167(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 339) - def _reduce_168(val, _values, result) - result = CompoundLiteral.new_at(val[0].pos, nil, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 340) - def _reduce_169(val, _values, result) - result = CompoundLiteral.new_at(val[0].pos, nil, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 344) - def _reduce_170(val, _values, result) - result = NodeArray[MemberInit.new_at(val[0][0] , val[0][1], val[1])] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 345) - def _reduce_171(val, _values, result) - result = NodeArray[MemberInit.new_at(val[0].pos, nil , val[0])] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 346) - def _reduce_172(val, _values, result) - result = val[0] << MemberInit.new_at(val[2][0] , val[2][1], val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 347) - def _reduce_173(val, _values, result) - result = val[0] << MemberInit.new_at(val[2].pos, nil , val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 351) - def _reduce_174(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 355) - def _reduce_175(val, _values, result) - result = val[0]; val[0][1] = NodeArray[val[0][1]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 356) - def _reduce_176(val, _values, result) - result = val[0]; val[0][1] << val[1][1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 360) - def _reduce_177(val, _values, result) - result = [val[1].pos, val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 361) - def _reduce_178(val, _values, result) - result = [val[1].pos, Member.new_at(val[1].pos, val[1].val)] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 367) - def _reduce_179(val, _values, result) - result = Variable.new_at(val[0].pos, val[0].val) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 368) - def _reduce_180(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 369) - def _reduce_181(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 371) - def _reduce_182(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 372) - def _reduce_183(val, _values, result) - block_expressions_enabled? or parse_error val[0].pos, "compound statement found where expression expected" - result = BlockExpression.new(val[1]); result.pos = val[0].pos - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 377) - def _reduce_184(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 378) - def _reduce_185(val, _values, result) - result = Index .new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 379) - def _reduce_186(val, _values, result) - result = Call .new_at(val[0].pos, val[0], val[2] ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 380) - def _reduce_187(val, _values, result) - result = Call .new_at(val[0].pos, val[0], NodeArray[]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 381) - def _reduce_188(val, _values, result) - result = Dot .new_at(val[0].pos, val[0], Member.new(val[2].val)) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 382) - def _reduce_189(val, _values, result) - result = Arrow .new_at(val[0].pos, val[0], Member.new(val[2].val)) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 383) - def _reduce_190(val, _values, result) - result = PostInc .new_at(val[0].pos, val[0] ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 384) - def _reduce_191(val, _values, result) - result = PostDec .new_at(val[0].pos, val[0] ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 385) - def _reduce_192(val, _values, result) - result = CompoundLiteral.new_at(val[0].pos, val[1], val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 386) - def _reduce_193(val, _values, result) - result = CompoundLiteral.new_at(val[0].pos, val[1], val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 390) - def _reduce_194(val, _values, result) - result = NodeArray[val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 391) - def _reduce_195(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 395) - def _reduce_196(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 396) - def _reduce_197(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 400) - def _reduce_198(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 401) - def _reduce_199(val, _values, result) - result = PreInc.new_at(val[0].pos, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 402) - def _reduce_200(val, _values, result) - result = PreDec.new_at(val[0].pos, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 403) - def _reduce_201(val, _values, result) - result = val[0][0].new_at(val[0][1], val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 404) - def _reduce_202(val, _values, result) - result = Sizeof.new_at(val[0].pos, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 405) - def _reduce_203(val, _values, result) - result = Sizeof.new_at(val[0].pos, val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 409) - def _reduce_204(val, _values, result) - result = [Address , val[0].pos] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 410) - def _reduce_205(val, _values, result) - result = [Dereference, val[0].pos] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 411) - def _reduce_206(val, _values, result) - result = [Positive , val[0].pos] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 412) - def _reduce_207(val, _values, result) - result = [Negative , val[0].pos] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 413) - def _reduce_208(val, _values, result) - result = [BitNot , val[0].pos] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 414) - def _reduce_209(val, _values, result) - result = [Not , val[0].pos] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 418) - def _reduce_210(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 419) - def _reduce_211(val, _values, result) - result = Cast.new_at(val[0].pos, val[1], val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 423) - def _reduce_212(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 424) - def _reduce_213(val, _values, result) - result = Multiply.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 425) - def _reduce_214(val, _values, result) - result = Divide .new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 426) - def _reduce_215(val, _values, result) - result = Mod .new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 430) - def _reduce_216(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 431) - def _reduce_217(val, _values, result) - result = Add .new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 432) - def _reduce_218(val, _values, result) - result = Subtract.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 436) - def _reduce_219(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 437) - def _reduce_220(val, _values, result) - result = ShiftLeft .new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 438) - def _reduce_221(val, _values, result) - result = ShiftRight.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 442) - def _reduce_222(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 443) - def _reduce_223(val, _values, result) - result = Less.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 444) - def _reduce_224(val, _values, result) - result = More.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 445) - def _reduce_225(val, _values, result) - result = LessOrEqual.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 446) - def _reduce_226(val, _values, result) - result = MoreOrEqual.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 450) - def _reduce_227(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 451) - def _reduce_228(val, _values, result) - result = Equal .new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 452) - def _reduce_229(val, _values, result) - result = NotEqual.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 456) - def _reduce_230(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 457) - def _reduce_231(val, _values, result) - result = BitAnd.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 461) - def _reduce_232(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 462) - def _reduce_233(val, _values, result) - result = BitXor.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 466) - def _reduce_234(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 467) - def _reduce_235(val, _values, result) - result = BitOr.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 471) - def _reduce_236(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 472) - def _reduce_237(val, _values, result) - result = And.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 476) - def _reduce_238(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 477) - def _reduce_239(val, _values, result) - result = Or.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 481) - def _reduce_240(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 482) - def _reduce_241(val, _values, result) - result = Conditional.new_at(val[0].pos, val[0], val[2], val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 486) - def _reduce_242(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 487) - def _reduce_243(val, _values, result) - result = val[1].new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 491) - def _reduce_244(val, _values, result) - result = Assign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 492) - def _reduce_245(val, _values, result) - result = MultiplyAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 493) - def _reduce_246(val, _values, result) - result = DivideAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 494) - def _reduce_247(val, _values, result) - result = ModAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 495) - def _reduce_248(val, _values, result) - result = AddAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 496) - def _reduce_249(val, _values, result) - result = SubtractAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 497) - def _reduce_250(val, _values, result) - result = ShiftLeftAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 498) - def _reduce_251(val, _values, result) - result = ShiftRightAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 499) - def _reduce_252(val, _values, result) - result = BitAndAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 500) - def _reduce_253(val, _values, result) - result = BitXorAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 501) - def _reduce_254(val, _values, result) - result = BitOrAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 505) - def _reduce_255(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 507) - def _reduce_256(val, _values, result) - if val[0].is_a? Comma - if val[2].is_a? Comma - val[0].exprs.push(*val[2].exprs) - else - val[0].exprs << val[2] - end - result = val[0] - else - if val[2].is_a? Comma - val[2].exprs.unshift(val[0]) - val[2].pos = val[0].pos - result = val[2] - else - result = Comma.new_at(val[0].pos, NodeArray[val[0], val[2]]) - end - end - - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 527) - def _reduce_257(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 542) - def _reduce_258(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 546) - def _reduce_259(val, _values, result) - result = val[0].val; result.pos = val[0].pos - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 547) - def _reduce_260(val, _values, result) - result = val[0].val; result.pos = val[0].pos - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 550) - def _reduce_261(val, _values, result) - result = val[0].val; result.pos = val[0].pos - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 554) - def _reduce_262(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 559) - def _reduce_263(val, _values, result) - val[0].val << val[1].val.val; result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 560) - def _reduce_264(val, _values, result) - result = val[0].val; result.pos = val[0].pos - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module C diff --git a/test/racc/regress/csspool b/test/racc/regress/csspool deleted file mode 100644 index a3d14a9b34..0000000000 --- a/test/racc/regress/csspool +++ /dev/null @@ -1,2314 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' -module CSSPool - module CSS - class Parser < Racc::Parser - -module_eval(<<'...end csspool.y/module_eval...', 'csspool.y', 670) - -def numeric thing - thing = thing.gsub(/[^\d.]/, '') - Integer(thing) rescue Float(thing) -end - -def interpret_identifier s - interpret_escapes s -end - -def interpret_uri s - interpret_escapes s.match(/^url\((.*)\)$/mui)[1].strip.match(/^(['"]?)((?:\\.|.)*)\1$/mu)[2] -end - -def interpret_string_no_quote s - interpret_escapes s.match(/^(.*)\)$/mu)[1].strip.match(/^(['"]?)((?:\\.|.)*)\1$/mu)[2] -end - -def interpret_string s - interpret_escapes s.match(/^(['"])((?:\\.|.)*)\1$/mu)[2] -end - -def interpret_escapes s - token_exp = /\\(?:([0-9a-fA-F]{1,6}(?:\r\n|\s)?)|(.))/mu - return s.gsub(token_exp) do |escape_sequence| - if !$1.nil? - code = $1.chomp.to_i 16 - code = 0xFFFD if code > 0x10FFFF - next [code].pack('U') - end - next '' if $2 == "\n" - next $2 - end -end - -# override racc's on_error so we can have context in our error messages -def on_error(t, val, vstack) - errcontext = (@ss.pre_match[-10..-1] || @ss.pre_match) + - @ss.matched + @ss.post_match[0..9] - line_number = @ss.pre_match.lines.count - raise ParseError, sprintf("parse error on value %s (%s) " + - "on line %s around \"%s\"", - val.inspect, token_to_str(t) || '?', - line_number, errcontext) -end - -def before_pos(val) - # don't include leading whitespace - return current_pos - val.last.length + val.last[/\A\s*/].size -end - -def after_pos(val) - # don't include trailing whitespace - return current_pos - val.last[/\s*\z/].size -end - -# charpos will work with multibyte strings but is not available until ruby 2 -def current_pos - @ss.respond_to?('charpos') ? @ss.charpos : @ss.pos -end -...end csspool.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 9, 10, 137, 129, 37, 31, 55, 139, 130, 39, - 45, 47, 45, 47, 123, 9, 10, 103, 3, 37, - 31, 98, 229, 103, 39, 45, 47, 230, 124, 125, - 224, 20, 113, 56, 37, 31, 23, 114, 104, 39, - 45, 47, 245, 27, 104, 11, 20, 126, 48, 25, - 48, 23, 242, 29, 138, 244, 38, 46, 27, 46, - 11, 108, 113, 48, 25, 9, 10, 114, 29, 37, - 31, 38, 46, 223, 39, 45, 47, 49, 48, 115, - 9, 10, 108, 113, 37, 31, 38, 46, 114, 39, - 45, 47, 55, 339, 243, 155, 20, 108, 113, 37, - 31, 23, 107, 114, 39, 45, 47, 231, 27, 115, - 11, 20, 232, 48, 25, 55, 23, 59, 29, 56, - 344, 38, 46, 27, 340, 11, 20, 53, 48, 25, - 115, 23, 345, 29, 37, 31, 38, 46, 27, 39, - 45, 47, 56, 48, 25, 115, -28, 105, 29, 37, - 31, 38, 46, 116, 39, 45, 47, 250, 75, 120, - 251, 20, 108, 113, 37, 31, 23, 118, 114, 39, - 45, 47, 121, 27, 74, 73, 20, 313, 48, 25, - 314, 23, 128, 29, 108, 113, 38, 46, 27, 215, - 114, 20, 131, 48, 25, 75, 23, 136, 29, 37, - 64, 38, 46, 27, 39, 45, 47, 92, 48, 25, - 115, 74, 73, 29, 37, 31, 38, 46, 77, 39, - 45, 47, 148, 94, 103, 156, 20, -89, 83, 37, - 31, 23, 115, 87, 39, 45, 47, 160, 27, 85, - 153, 20, 151, 48, 25, 104, 23, 84, 29, 157, - 158, 38, 46, 27, 163, 252, 20, 151, 48, 25, - 201, 23, 164, 29, 37, 31, 38, 46, 27, 39, - 45, 47, 203, 48, 25, 188, 202, 59, 29, 37, - 165, 38, 46, 187, 39, 45, 47, 201, 204, 166, - 184, 83, 288, 198, 287, 190, 197, 192, 191, 193, - 194, 195, 85, 202, 37, 45, 47, 37, 48, 39, - 45, 47, 39, 45, 47, 167, 38, 46, 168, 83, - 170, 113, 210, 48, 181, 186, 114, 185, 196, 37, - 85, 38, 46, 92, 39, 45, 47, 203, 84, 150, - 152, 151, 289, 48, 290, 292, 163, 291, 48, 94, - -33, 48, 46, 204, 169, 199, 38, 46, 37, 38, - 46, 200, -33, 39, 45, 47, 92, 188, 115, 59, - 294, 258, 293, 48, 296, 187, 295, 298, 260, 297, - 212, 38, 46, 83, 216, 198, 259, 190, 197, 192, - 191, 193, 194, 195, 85, 45, 47, 45, 47, 45, - 47, 217, 48, 218, 219, 188, 108, 59, 285, 108, - 38, 46, 170, 187, 225, 226, 181, 186, 233, 185, - 196, 83, 129, 198, 234, 190, 197, 192, 191, 193, - 194, 195, 85, 48, 163, 48, 255, 48, 256, 155, - 263, 169, 46, 188, 46, 59, 46, 264, 168, 265, - 170, 187, 266, 92, 181, 186, 92, 185, 196, 83, - 92, 198, 92, 190, 197, 192, 191, 193, 194, 195, - 85, 198, 278, 190, 197, 192, 191, 193, 194, 195, - 279, 188, 281, 59, 241, 235, 236, 237, 170, 187, - 286, 229, 181, 186, 231, 185, 196, 83, 163, 198, - 300, 190, 197, 192, 191, 193, 194, 195, 85, 301, - 302, 238, 239, 240, 303, 306, 307, 255, 141, 188, - 75, 59, 322, 163, 185, 168, 170, 187, 312, 317, - 181, 186, 143, 185, 196, 83, 319, 198, 323, 190, - 197, 192, 191, 193, 194, 195, 85, 324, 325, 145, - 326, 327, 328, 329, 330, 331, 144, 188, 146, 59, - 147, 332, 142, 333, 170, 187, 334, 306, 181, 186, - 163, 185, 196, 83, 338, 198, 163, 190, 197, 192, - 191, 193, 194, 195, 85, 346, 319, 319, 163, 351, - 306, 163, 319, 357, 359, 188, nil, 59, nil, nil, - nil, nil, 170, 187, nil, nil, 181, 186, nil, 185, - 196, 83, nil, 198, nil, 190, 197, 192, 191, 193, - 194, 195, 85, 272, nil, 83, nil, 198, nil, 190, - 197, 192, 191, 193, 194, 195, nil, nil, nil, nil, - 170, nil, nil, nil, 181, 186, nil, 185, 196, 272, - nil, 83, nil, 198, nil, 190, 197, 192, 191, 193, - 194, 195, 272, nil, 83, nil, 198, nil, 190, 197, - 192, 191, 193, 194, 195, 272, nil, 83, nil, 198, - nil, 190, 197, 192, 191, 193, 194, 195, 272, nil, - 83, nil, 198, nil, 190, 197, 192, 191, 193, 194, - 195, 272, nil, 83, nil, 198, nil, 190, 197, 192, - 191, 193, 194, 195 ] - -racc_action_check = [ - 2, 2, 47, 38, 2, 2, 10, 47, 38, 2, - 2, 2, 35, 35, 34, 5, 5, 26, 1, 5, - 5, 26, 128, 217, 5, 5, 5, 128, 34, 34, - 112, 2, 210, 10, 31, 31, 2, 210, 26, 31, - 31, 31, 143, 2, 217, 2, 5, 34, 2, 2, - 35, 5, 142, 2, 47, 143, 2, 2, 5, 35, - 5, 110, 110, 5, 5, 6, 6, 110, 5, 6, - 6, 5, 5, 112, 6, 6, 6, 3, 31, 210, - 7, 7, 221, 221, 7, 7, 31, 31, 221, 7, - 7, 7, 58, 309, 142, 58, 6, 28, 28, 12, - 12, 6, 28, 28, 12, 12, 12, 131, 6, 110, - 6, 7, 131, 6, 6, 11, 7, 11, 6, 58, - 315, 6, 6, 7, 309, 7, 12, 9, 7, 7, - 221, 12, 315, 7, 13, 13, 7, 7, 12, 13, - 13, 13, 11, 12, 12, 28, 20, 27, 12, 14, - 14, 12, 12, 29, 14, 14, 14, 149, 20, 32, - 149, 13, 30, 30, 15, 15, 13, 30, 30, 15, - 15, 15, 33, 13, 20, 20, 14, 269, 13, 13, - 269, 14, 37, 13, 100, 100, 13, 13, 14, 100, - 100, 15, 39, 14, 14, 157, 15, 46, 14, 19, - 19, 14, 14, 15, 19, 19, 19, 25, 15, 15, - 30, 157, 157, 15, 21, 21, 15, 15, 21, 21, - 21, 21, 53, 25, 99, 67, 19, 99, 22, 24, - 24, 19, 100, 24, 24, 24, 24, 71, 19, 22, - 57, 21, 57, 19, 19, 99, 21, 22, 19, 70, - 70, 19, 19, 21, 75, 154, 24, 154, 21, 21, - 90, 24, 76, 21, 64, 64, 21, 21, 24, 64, - 64, 64, 91, 24, 24, 83, 90, 83, 24, 121, - 78, 24, 24, 83, 121, 121, 121, 206, 91, 79, - 83, 83, 235, 83, 235, 83, 83, 83, 83, 83, - 83, 83, 83, 206, 122, 41, 41, 144, 64, 122, - 122, 122, 144, 144, 144, 80, 64, 64, 81, 166, - 83, 92, 92, 121, 83, 83, 92, 83, 83, 146, - 166, 121, 121, 92, 146, 146, 146, 207, 166, 54, - 54, 54, 236, 41, 236, 237, 270, 237, 122, 92, - 270, 144, 41, 207, 82, 86, 122, 122, 302, 144, - 144, 88, 270, 302, 302, 302, 94, 171, 92, 171, - 238, 171, 238, 146, 239, 171, 239, 240, 171, 240, - 97, 146, 146, 171, 101, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 171, 42, 42, 43, 43, 44, - 44, 102, 302, 105, 106, 223, 108, 223, 223, 109, - 302, 302, 171, 223, 114, 117, 171, 171, 137, 171, - 171, 223, 138, 223, 139, 223, 223, 223, 223, 223, - 223, 223, 223, 42, 147, 43, 161, 44, 162, 172, - 175, 176, 42, 261, 43, 261, 44, 177, 179, 183, - 223, 261, 185, 201, 223, 223, 202, 223, 223, 261, - 203, 261, 204, 261, 261, 261, 261, 261, 261, 261, - 261, 189, 208, 189, 189, 189, 189, 189, 189, 189, - 209, 285, 214, 285, 140, 140, 140, 140, 261, 285, - 224, 233, 261, 261, 234, 261, 261, 285, 243, 285, - 245, 285, 285, 285, 285, 285, 285, 285, 285, 246, - 247, 140, 140, 140, 248, 249, 251, 254, 48, 286, - 255, 286, 286, 256, 266, 267, 285, 286, 268, 280, - 285, 285, 48, 285, 285, 286, 284, 286, 287, 286, - 286, 286, 286, 286, 286, 286, 286, 288, 289, 48, - 290, 291, 292, 293, 294, 295, 48, 322, 48, 322, - 48, 296, 48, 297, 286, 322, 298, 299, 286, 286, - 304, 286, 286, 322, 306, 322, 312, 322, 322, 322, - 322, 322, 322, 322, 322, 316, 320, 321, 335, 337, - 338, 340, 349, 350, 358, 353, nil, 353, nil, nil, - nil, nil, 322, 353, nil, nil, 322, 322, nil, 322, - 322, 353, nil, 353, nil, 353, 353, 353, 353, 353, - 353, 353, 353, 186, nil, 186, nil, 186, nil, 186, - 186, 186, 186, 186, 186, 186, nil, nil, nil, nil, - 353, nil, nil, nil, 353, 353, nil, 353, 353, 272, - nil, 272, nil, 272, nil, 272, 272, 272, 272, 272, - 272, 272, 313, nil, 313, nil, 313, nil, 313, 313, - 313, 313, 313, 313, 313, 314, nil, 314, nil, 314, - nil, 314, 314, 314, 314, 314, 314, 314, 344, nil, - 344, nil, 344, nil, 344, 344, 344, 344, 344, 344, - 344, 345, nil, 345, nil, 345, nil, 345, 345, 345, - 345, 345, 345, 345 ] - -racc_action_pointer = [ - nil, 18, -2, 77, nil, 13, 63, 78, nil, 123, - 2, 111, 93, 128, 143, 158, nil, nil, nil, 193, - 140, 208, 208, nil, 223, 189, 11, 141, 92, 144, - 157, 28, 150, 164, 7, 0, nil, 124, -3, 134, - nil, 293, 383, 385, 387, nil, 191, -4, 512, nil, - nil, nil, nil, 217, 334, nil, nil, 235, 88, nil, - nil, nil, nil, nil, 258, nil, nil, 215, nil, nil, - 241, 231, nil, nil, nil, 247, 252, nil, 271, 281, - 308, 311, 347, 271, nil, nil, 345, nil, 352, nil, - 224, 236, 315, nil, 348, nil, nil, 370, nil, 218, - 179, 375, 393, nil, nil, 394, 394, nil, 401, 404, - 56, nil, 23, nil, 408, nil, nil, 405, nil, nil, - nil, 273, 298, nil, nil, nil, nil, nil, 16, nil, - nil, 101, nil, nil, nil, nil, nil, 360, 416, 366, - 470, nil, 46, 36, 301, nil, 323, 427, nil, 152, - nil, nil, nil, nil, 250, nil, nil, 177, nil, nil, - nil, 400, 432, nil, nil, nil, 299, nil, nil, nil, - nil, 363, 432, nil, nil, 433, 434, 440, nil, 441, - nil, nil, nil, 430, nil, 444, 605, nil, nil, 449, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 435, 438, 442, 444, nil, 251, 301, 453, 461, - 26, nil, nil, nil, 472, nil, nil, 17, nil, nil, - nil, 77, nil, 401, 440, nil, nil, nil, nil, nil, - nil, nil, nil, 485, 488, 288, 338, 341, 366, 370, - 373, nil, nil, 491, nil, 481, 490, 502, 495, 509, - nil, 510, nil, nil, 481, 502, 516, nil, nil, nil, - nil, 439, nil, nil, nil, nil, 468, 518, 509, 155, - 339, nil, 631, nil, nil, nil, nil, nil, nil, nil, - 510, nil, nil, nil, 504, 477, 515, 524, 533, 534, - 536, 537, 538, 539, 540, 541, 547, 549, 552, 561, - nil, nil, 352, nil, 563, nil, 566, nil, nil, 74, - nil, nil, 569, 644, 657, 109, 566, nil, nil, nil, - 554, 555, 553, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 581, nil, 570, 584, nil, - 584, nil, nil, nil, 670, 683, nil, nil, nil, 560, - 574, nil, nil, 591, nil, nil, nil, nil, 575, nil ] - -racc_action_default = [ - -1, -229, -10, -229, -2, -6, -7, -8, -9, -229, - -229, -229, -41, -42, -43, -44, -45, -46, -47, -33, - -23, -229, -229, -55, -229, -229, -89, -229, -229, -229, - -229, -229, -229, -103, -105, -111, -112, -115, -229, -120, - -119, -124, -125, -126, -127, -132, -229, -229, -229, 360, - -3, -4, -5, -229, -229, -15, -16, -229, -229, -228, - -37, -38, -39, -40, -32, -48, -49, -229, -99, -21, - -229, -229, -35, -26, -27, -33, -229, -53, -229, -57, - -58, -59, -60, -229, -198, -214, -229, -62, -229, -64, - -65, -66, -229, -71, -229, -73, -74, -229, -82, -85, - -229, -229, -91, -92, -93, -229, -229, -95, -160, -165, - -166, -167, -229, -174, -229, -176, -96, -229, -98, -100, - -101, -229, -229, -106, -107, -108, -109, -110, -229, -117, - -121, -229, -128, -129, -130, -131, -133, -115, -229, -229, - -229, -147, -229, -229, -229, -152, -229, -33, -11, -229, - -13, -14, -20, -18, -229, -227, -50, -28, -51, -35, - -29, -25, -229, -32, -52, -54, -229, -197, -194, -213, - -36, -182, -183, -184, -185, -186, -187, -188, -189, -190, - -191, -192, -193, -229, -196, -200, -229, -212, -216, -229, - -218, -219, -220, -221, -222, -223, -224, -225, -226, -61, - -63, -229, -229, -229, -229, -67, -68, -69, -229, -229, - -229, -72, -81, -84, -229, -87, -88, -89, -83, -94, - -161, -164, -163, -229, -229, -175, -97, -102, -104, -116, - -123, -118, -122, -229, -229, -229, -229, -229, -229, -229, - -229, -146, -148, -33, -149, -229, -229, -114, -229, -156, - -12, -229, -17, -22, -24, -229, -33, -56, -177, -178, - -179, -229, -181, -215, -211, -195, -229, -209, -229, -202, - -205, -208, -229, -217, -76, -78, -75, -77, -70, -79, - -229, -86, -90, -162, -173, -229, -229, -229, -229, -229, - -229, -229, -229, -229, -229, -229, -229, -229, -229, -156, - -150, -151, -229, -153, -33, -157, -158, -19, -34, -229, - -180, -199, -33, -229, -229, -229, -229, -80, -168, -172, - -173, -173, -229, -134, -135, -136, -137, -138, -139, -140, - -141, -142, -143, -144, -145, -33, -113, -229, -229, -30, - -33, -201, -203, -204, -229, -229, -210, -169, -170, -173, - -229, -154, -159, -229, -206, -207, -171, -155, -229, -31 ] - -racc_goto_table = [ - 81, 248, 183, 68, 106, 91, 117, 271, 78, 246, - 273, 247, 82, 69, 209, 161, 97, 89, 268, 304, - 90, 119, 54, 57, 220, 221, 318, 60, 61, 62, - 63, 354, 355, 1, 65, 127, 76, 2, 149, 86, - 58, 132, 133, 134, 135, 4, 70, 159, 50, 51, - 52, 308, 67, 66, 119, 88, 208, 282, 227, 162, - 228, 122, 347, 348, 140, 352, 261, 311, nil, 335, - 154, nil, 207, nil, 211, nil, 214, nil, nil, nil, - nil, nil, nil, nil, 205, nil, 222, 206, nil, 213, - 262, 356, nil, 271, nil, nil, nil, nil, nil, nil, - nil, nil, 254, nil, 316, 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, 249, 280, nil, 271, 271, nil, nil, nil, nil, - nil, nil, 284, nil, 81, 342, 343, nil, nil, nil, - 253, nil, 257, nil, nil, nil, 82, 336, nil, nil, - nil, nil, nil, nil, 267, 271, 271, 247, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 310, 274, 275, 276, 277, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 283, nil, nil, - nil, nil, nil, nil, 320, 321, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 299, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 309, 349, nil, nil, nil, nil, nil, nil, nil, nil, - 267, nil, nil, nil, 315, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 358, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 337, nil, - nil, 267, 267, nil, nil, nil, 341, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 350, - nil, nil, 267, 267, 353 ] - -racc_goto_check = [ - 35, 62, 18, 17, 51, 41, 51, 77, 32, 58, - 77, 58, 36, 12, 46, 15, 48, 39, 82, 68, - 40, 55, 8, 8, 70, 70, 73, 7, 7, 7, - 7, 84, 84, 1, 7, 61, 7, 3, 9, 7, - 10, 61, 61, 61, 61, 2, 11, 14, 2, 2, - 2, 16, 27, 28, 55, 38, 42, 52, 56, 17, - 57, 59, 73, 73, 63, 69, 74, 81, nil, 68, - 8, nil, 41, nil, 41, nil, 51, nil, nil, nil, - nil, nil, nil, nil, 39, nil, 51, 40, nil, 48, - 18, 73, nil, 77, nil, nil, nil, nil, nil, nil, - nil, nil, 15, nil, 82, 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, 17, 46, nil, 77, 77, nil, nil, nil, nil, - nil, nil, 18, nil, 35, 82, 82, nil, nil, nil, - 12, nil, 32, nil, nil, nil, 36, 62, nil, nil, - nil, nil, nil, nil, 35, 77, 77, 58, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 18, 41, 41, 41, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 51, nil, nil, - nil, nil, nil, nil, 18, 18, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 17, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 17, 18, nil, nil, nil, nil, nil, nil, nil, nil, - 35, nil, nil, nil, 17, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 18, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 17, nil, - nil, 35, 35, nil, nil, nil, 17, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 17, - nil, nil, 35, 35, 17 ] - -racc_goto_pointer = [ - nil, 33, 43, 37, nil, nil, nil, 15, 12, -16, - 29, 26, -7, nil, -24, -57, -204, -16, -81, nil, - nil, nil, nil, nil, nil, nil, nil, 33, 34, nil, - nil, nil, -14, nil, nil, -22, -10, nil, 30, -8, - -5, -20, -36, nil, nil, nil, -78, nil, -10, nil, - nil, -24, -160, nil, nil, -10, -63, -62, -135, 27, - nil, 0, -145, 17, nil, nil, nil, nil, -230, -273, - -84, nil, nil, -258, -105, nil, nil, -179, nil, nil, - nil, -199, -168, nil, -313, nil ] - -racc_goto_default = [ - nil, nil, nil, nil, 5, 6, 7, 8, nil, nil, - 172, nil, nil, 71, nil, nil, 72, nil, nil, 180, - 12, 13, 14, 15, 16, 17, 18, nil, nil, 19, - 21, 22, nil, 79, 80, 179, 176, 24, nil, nil, - nil, nil, nil, 93, 95, 96, 111, 26, nil, 99, - 100, nil, 101, 102, 28, 30, 32, 33, 34, nil, - 35, 36, nil, 40, 41, 42, 43, 44, nil, 305, - 110, 109, 112, nil, nil, 171, 173, 174, 175, 177, - 178, 182, nil, 269, 270, 189 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 0, 63, :_reduce_1, - 2, 61, :_reduce_2, - 2, 62, :_reduce_none, - 2, 62, :_reduce_none, - 2, 62, :_reduce_none, - 1, 62, :_reduce_none, - 1, 62, :_reduce_none, - 1, 62, :_reduce_none, - 1, 62, :_reduce_none, - 0, 62, :_reduce_none, - 3, 64, :_reduce_11, - 4, 65, :_reduce_12, - 3, 65, :_reduce_13, - 2, 68, :_reduce_none, - 1, 68, :_reduce_15, - 1, 68, :_reduce_16, - 4, 66, :_reduce_17, - 3, 66, :_reduce_18, - 3, 69, :_reduce_19, - 1, 69, :_reduce_20, - 1, 71, :_reduce_21, - 3, 71, :_reduce_22, - 0, 71, :_reduce_23, - 3, 72, :_reduce_24, - 2, 72, :_reduce_25, - 1, 73, :_reduce_26, - 1, 73, :_reduce_27, - 0, 73, :_reduce_28, - 1, 74, :_reduce_29, - 5, 76, :_reduce_30, - 8, 76, :_reduce_31, - 1, 77, :_reduce_32, - 0, 77, :_reduce_33, - 3, 75, :_reduce_34, - 0, 75, :_reduce_35, - 1, 79, :_reduce_36, - 2, 67, :_reduce_none, - 2, 67, :_reduce_none, - 2, 67, :_reduce_none, - 2, 67, :_reduce_none, - 1, 67, :_reduce_none, - 1, 67, :_reduce_none, - 1, 67, :_reduce_none, - 1, 67, :_reduce_none, - 1, 81, :_reduce_none, - 1, 81, :_reduce_none, - 1, 81, :_reduce_none, - 1, 87, :_reduce_none, - 1, 87, :_reduce_none, - 3, 84, :_reduce_50, - 3, 89, :_reduce_51, - 3, 85, :_reduce_52, - 2, 85, :_reduce_53, - 3, 90, :_reduce_54, - 1, 91, :_reduce_55, - 3, 92, :_reduce_56, - 1, 92, :_reduce_57, - 1, 93, :_reduce_none, - 1, 93, :_reduce_none, - 1, 93, :_reduce_none, - 3, 86, :_reduce_61, - 2, 86, :_reduce_62, - 3, 97, :_reduce_63, - 1, 98, :_reduce_64, - 1, 98, :_reduce_65, - 1, 98, :_reduce_66, - 1, 102, :_reduce_67, - 1, 102, :_reduce_68, - 1, 102, :_reduce_69, - 3, 101, :_reduce_70, - 1, 101, :_reduce_71, - 2, 99, :_reduce_72, - 1, 100, :_reduce_none, - 1, 100, :_reduce_none, - 3, 104, :_reduce_75, - 3, 104, :_reduce_76, - 3, 105, :_reduce_77, - 3, 105, :_reduce_78, - 3, 103, :_reduce_79, - 4, 103, :_reduce_80, - 3, 82, :_reduce_none, - 2, 82, :_reduce_none, - 3, 107, :_reduce_83, - 2, 108, :_reduce_none, - 1, 108, :_reduce_none, - 3, 109, :_reduce_86, - 2, 109, :_reduce_87, - 2, 110, :_reduce_88, - 0, 112, :_reduce_none, - 3, 112, :_reduce_90, - 1, 112, :_reduce_none, - 1, 113, :_reduce_none, - 1, 113, :_reduce_93, - 3, 83, :_reduce_94, - 2, 83, :_reduce_95, - 2, 114, :_reduce_96, - 3, 80, :_reduce_97, - 2, 80, :_reduce_98, - 1, 88, :_reduce_99, - 2, 115, :_reduce_100, - 2, 115, :_reduce_101, - 3, 116, :_reduce_102, - 1, 116, :_reduce_103, - 3, 117, :_reduce_104, - 1, 117, :_reduce_none, - 1, 119, :_reduce_106, - 1, 119, :_reduce_107, - 1, 119, :_reduce_108, - 1, 119, :_reduce_109, - 2, 118, :_reduce_110, - 1, 118, :_reduce_111, - 1, 118, :_reduce_112, - 3, 122, :_reduce_113, - 1, 122, :_reduce_none, - 1, 123, :_reduce_115, - 3, 123, :_reduce_116, - 2, 123, :_reduce_117, - 3, 123, :_reduce_118, - 1, 120, :_reduce_119, - 1, 120, :_reduce_120, - 2, 120, :_reduce_121, - 3, 120, :_reduce_122, - 3, 120, :_reduce_123, - 1, 121, :_reduce_124, - 1, 121, :_reduce_125, - 1, 121, :_reduce_126, - 1, 121, :_reduce_127, - 2, 121, :_reduce_128, - 2, 121, :_reduce_129, - 2, 121, :_reduce_130, - 2, 121, :_reduce_131, - 1, 124, :_reduce_132, - 2, 125, :_reduce_133, - 5, 126, :_reduce_134, - 5, 126, :_reduce_135, - 5, 126, :_reduce_136, - 5, 126, :_reduce_137, - 5, 126, :_reduce_138, - 5, 126, :_reduce_139, - 5, 126, :_reduce_140, - 5, 126, :_reduce_141, - 5, 126, :_reduce_142, - 5, 126, :_reduce_143, - 5, 126, :_reduce_144, - 5, 126, :_reduce_145, - 3, 126, :_reduce_146, - 2, 127, :_reduce_147, - 3, 127, :_reduce_148, - 3, 127, :_reduce_149, - 4, 127, :_reduce_150, - 4, 127, :_reduce_151, - 2, 127, :_reduce_152, - 4, 127, :_reduce_153, - 6, 127, :_reduce_154, - 7, 127, :_reduce_155, - 0, 128, :_reduce_none, - 1, 128, :_reduce_none, - 1, 129, :_reduce_none, - 3, 129, :_reduce_none, - 1, 130, :_reduce_none, - 2, 130, :_reduce_none, - 3, 111, :_reduce_none, - 2, 111, :_reduce_none, - 2, 111, :_reduce_none, - 1, 111, :_reduce_none, - 1, 111, :_reduce_none, - 1, 131, :_reduce_167, - 4, 106, :_reduce_168, - 5, 106, :_reduce_169, - 5, 106, :_reduce_170, - 6, 106, :_reduce_171, - 1, 133, :_reduce_172, - 0, 133, :_reduce_173, - 1, 132, :_reduce_174, - 2, 132, :_reduce_175, - 1, 132, :_reduce_176, - 1, 134, :_reduce_none, - 1, 134, :_reduce_none, - 1, 134, :_reduce_none, - 3, 78, :_reduce_180, - 2, 78, :_reduce_181, - 1, 78, :_reduce_182, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 2, 95, :_reduce_194, - 3, 95, :_reduce_195, - 2, 95, :_reduce_196, - 2, 94, :_reduce_197, - 1, 94, :_reduce_198, - 3, 141, :_reduce_none, - 1, 141, :_reduce_none, - 4, 140, :_reduce_201, - 1, 142, :_reduce_none, - 3, 142, :_reduce_203, - 3, 142, :_reduce_204, - 1, 143, :_reduce_none, - 4, 143, :_reduce_206, - 4, 143, :_reduce_207, - 1, 144, :_reduce_208, - 1, 144, :_reduce_209, - 3, 144, :_reduce_210, - 2, 139, :_reduce_211, - 1, 139, :_reduce_212, - 2, 96, :_reduce_213, - 1, 96, :_reduce_214, - 2, 138, :_reduce_215, - 1, 138, :_reduce_216, - 2, 137, :_reduce_217, - 1, 137, :_reduce_218, - 1, 137, :_reduce_219, - 1, 137, :_reduce_220, - 1, 137, :_reduce_221, - 1, 137, :_reduce_222, - 1, 137, :_reduce_223, - 1, 136, :_reduce_224, - 1, 145, :_reduce_225, - 1, 145, :_reduce_226, - 2, 70, :_reduce_227, - 1, 70, :_reduce_228 ] - -racc_reduce_n = 229 - -racc_shift_n = 360 - -racc_token_table = { - false => 0, - :error => 1, - :CHARSET_SYM => 2, - :IMPORT_SYM => 3, - :STRING => 4, - :SEMI => 5, - :IDENT => 6, - :S => 7, - :COMMA => 8, - :LBRACE => 9, - :RBRACE => 10, - :STAR => 11, - :HASH => 12, - :LSQUARE => 13, - :RSQUARE => 14, - :EQUAL => 15, - :INCLUDES => 16, - :DASHMATCH => 17, - :LPAREN => 18, - :RPAREN => 19, - :FUNCTION => 20, - :GREATER => 21, - :PLUS => 22, - :SLASH => 23, - :NUMBER => 24, - :MINUS => 25, - :LENGTH => 26, - :PERCENTAGE => 27, - :ANGLE => 28, - :TIME => 29, - :FREQ => 30, - :URI => 31, - :IMPORTANT_SYM => 32, - :MEDIA_SYM => 33, - :NOT => 34, - :ONLY => 35, - :AND => 36, - :NTH_PSEUDO_CLASS => 37, - :DOCUMENT_QUERY_SYM => 38, - :FUNCTION_NO_QUOTE => 39, - :TILDE => 40, - :PREFIXMATCH => 41, - :SUFFIXMATCH => 42, - :SUBSTRINGMATCH => 43, - :NOT_PSEUDO_CLASS => 44, - :KEYFRAMES_SYM => 45, - :MATCHES_PSEUDO_CLASS => 46, - :NAMESPACE_SYM => 47, - :MOZ_PSEUDO_ELEMENT => 48, - :RESOLUTION => 49, - :COLON => 50, - :SUPPORTS_SYM => 51, - :OR => 52, - :VARIABLE_NAME => 53, - :CALC_SYM => 54, - :FONTFACE_SYM => 55, - :UNICODE_RANGE => 56, - :RATIO => 57, - "|" => 58, - "." => 59 } - -racc_nt_base = 60 - -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", - "CHARSET_SYM", - "IMPORT_SYM", - "STRING", - "SEMI", - "IDENT", - "S", - "COMMA", - "LBRACE", - "RBRACE", - "STAR", - "HASH", - "LSQUARE", - "RSQUARE", - "EQUAL", - "INCLUDES", - "DASHMATCH", - "LPAREN", - "RPAREN", - "FUNCTION", - "GREATER", - "PLUS", - "SLASH", - "NUMBER", - "MINUS", - "LENGTH", - "PERCENTAGE", - "ANGLE", - "TIME", - "FREQ", - "URI", - "IMPORTANT_SYM", - "MEDIA_SYM", - "NOT", - "ONLY", - "AND", - "NTH_PSEUDO_CLASS", - "DOCUMENT_QUERY_SYM", - "FUNCTION_NO_QUOTE", - "TILDE", - "PREFIXMATCH", - "SUFFIXMATCH", - "SUBSTRINGMATCH", - "NOT_PSEUDO_CLASS", - "KEYFRAMES_SYM", - "MATCHES_PSEUDO_CLASS", - "NAMESPACE_SYM", - "MOZ_PSEUDO_ELEMENT", - "RESOLUTION", - "COLON", - "SUPPORTS_SYM", - "OR", - "VARIABLE_NAME", - "CALC_SYM", - "FONTFACE_SYM", - "UNICODE_RANGE", - "RATIO", - "\"|\"", - "\".\"", - "$start", - "document", - "stylesheet", - "@1", - "charset", - "import", - "namespace", - "body", - "import_location", - "medium", - "ident", - "media_query_list", - "media_query", - "optional_only_or_not", - "media_type", - "optional_and_exprs", - "media_expr", - "optional_space", - "expr", - "resolution", - "ruleset", - "conditional_rule", - "keyframes_rule", - "fontface_rule", - "media", - "document_query", - "supports", - "body_in_media", - "empty_ruleset", - "start_media", - "start_document_query", - "start_document_query_pos", - "url_match_fns", - "url_match_fn", - "function_no_quote", - "function", - "uri", - "start_supports", - "supports_condition_root", - "supports_negation", - "supports_conjunction_or_disjunction", - "supports_condition_in_parens", - "supports_condition", - "supports_declaration_condition", - "supports_conjunction", - "supports_disjunction", - "declaration_internal", - "start_keyframes_rule", - "keyframes_blocks", - "keyframes_block", - "start_keyframes_block", - "declarations", - "keyframes_selectors", - "keyframes_selector", - "start_fontface_rule", - "start_selector", - "selectors", - "selector", - "simple_selector", - "combinator", - "element_name", - "hcap", - "simple_selectors", - "ident_with_namespace", - "hash", - "class", - "attrib", - "pseudo", - "any_number_of_idents", - "multiple_idents", - "one_or_more_semis", - "declaration", - "property", - "prio", - "operator", - "term", - "ratio", - "numeric", - "string", - "hexcolor", - "calc", - "uranges", - "calc_sum", - "calc_product", - "calc_value", - "unary_operator" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'csspool.y', 26) - def _reduce_1(val, _values, result) - @handler.start_document - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 28) - def _reduce_2(val, _values, result) - @handler.end_document - result - end -.,., - -# reduce 3 omitted - -# reduce 4 omitted - -# reduce 5 omitted - -# reduce 6 omitted - -# reduce 7 omitted - -# reduce 8 omitted - -# reduce 9 omitted - -# reduce 10 omitted - -module_eval(<<'.,.,', 'csspool.y', 41) - def _reduce_11(val, _values, result) - @handler.charset interpret_string(val[1]), {} - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 45) - def _reduce_12(val, _values, result) - @handler.import_style val[2], val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 48) - def _reduce_13(val, _values, result) - @handler.import_style [], val[1] - - result - end -.,., - -# reduce 14 omitted - -module_eval(<<'.,.,', 'csspool.y', 53) - def _reduce_15(val, _values, result) - result = Terms::String.new interpret_string val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 54) - def _reduce_16(val, _values, result) - result = Terms::URI.new interpret_uri val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 58) - def _reduce_17(val, _values, result) - @handler.namespace val[1], val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 61) - def _reduce_18(val, _values, result) - @handler.namespace nil, val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 66) - def _reduce_19(val, _values, result) - result = val[0] << MediaType.new(val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 69) - def _reduce_20(val, _values, result) - result = [MediaType.new(val[0])] - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 73) - def _reduce_21(val, _values, result) - result = MediaQueryList.new([ val[0] ]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 74) - def _reduce_22(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 75) - def _reduce_23(val, _values, result) - result = MediaQueryList.new - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 78) - def _reduce_24(val, _values, result) - result = MediaQuery.new(val[0], val[1], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 79) - def _reduce_25(val, _values, result) - result = MediaQuery.new(nil, val[0], val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 82) - def _reduce_26(val, _values, result) - result = :only - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 83) - def _reduce_27(val, _values, result) - result = :not - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 84) - def _reduce_28(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 87) - def _reduce_29(val, _values, result) - result = MediaType.new(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 90) - def _reduce_30(val, _values, result) - result = MediaType.new(val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 91) - def _reduce_31(val, _values, result) - result = MediaFeature.new(val[2], val[6][0]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 94) - def _reduce_32(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 95) - def _reduce_33(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 98) - def _reduce_34(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 99) - def _reduce_35(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 103) - def _reduce_36(val, _values, result) - unit = val.first.gsub(/[\s\d.]/, '') - number = numeric(val.first) - result = Terms::Resolution.new(number, unit) - - result - end -.,., - -# reduce 37 omitted - -# reduce 38 omitted - -# reduce 39 omitted - -# reduce 40 omitted - -# reduce 41 omitted - -# reduce 42 omitted - -# reduce 43 omitted - -# reduce 44 omitted - -# reduce 45 omitted - -# reduce 46 omitted - -# reduce 47 omitted - -# reduce 48 omitted - -# reduce 49 omitted - -module_eval(<<'.,.,', 'csspool.y', 128) - def _reduce_50(val, _values, result) - @handler.end_media val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 132) - def _reduce_51(val, _values, result) - result = val[1] - @handler.start_media result - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 137) - def _reduce_52(val, _values, result) - @handler.end_document_query(before_pos(val), after_pos(val)) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 138) - def _reduce_53(val, _values, result) - @handler.end_document_query(before_pos(val), after_pos(val)) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 142) - def _reduce_54(val, _values, result) - @handler.start_document_query(val[1], after_pos(val)) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 147) - def _reduce_55(val, _values, result) - @handler.node_start_pos = before_pos(val) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 152) - def _reduce_56(val, _values, result) - result = [val[0], val[2]].flatten - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 155) - def _reduce_57(val, _values, result) - result = val - - result - end -.,., - -# reduce 58 omitted - -# reduce 59 omitted - -# reduce 60 omitted - -module_eval(<<'.,.,', 'csspool.y', 164) - def _reduce_61(val, _values, result) - @handler.end_supports - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 165) - def _reduce_62(val, _values, result) - @handler.end_supports - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 169) - def _reduce_63(val, _values, result) - @handler.start_supports val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 173) - def _reduce_64(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 174) - def _reduce_65(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 175) - def _reduce_66(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 178) - def _reduce_67(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 179) - def _reduce_68(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 180) - def _reduce_69(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 183) - def _reduce_70(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 184) - def _reduce_71(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 187) - def _reduce_72(val, _values, result) - result = val.join('') - result - end -.,., - -# reduce 73 omitted - -# reduce 74 omitted - -module_eval(<<'.,.,', 'csspool.y', 194) - def _reduce_75(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 195) - def _reduce_76(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 198) - def _reduce_77(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 199) - def _reduce_78(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 202) - def _reduce_79(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 203) - def _reduce_80(val, _values, result) - result = val.join('') - result - end -.,., - -# reduce 81 omitted - -# reduce 82 omitted - -module_eval(<<'.,.,', 'csspool.y', 211) - def _reduce_83(val, _values, result) - @handler.start_keyframes_rule val[1] - - result - end -.,., - -# reduce 84 omitted - -# reduce 85 omitted - -module_eval(<<'.,.,', 'csspool.y', 219) - def _reduce_86(val, _values, result) - @handler.end_keyframes_block - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 220) - def _reduce_87(val, _values, result) - @handler.end_keyframes_block - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 224) - def _reduce_88(val, _values, result) - @handler.start_keyframes_block val[0] - - result - end -.,., - -# reduce 89 omitted - -module_eval(<<'.,.,', 'csspool.y', 229) - def _reduce_90(val, _values, result) - result = val[0] + ', ' + val[2] - - result - end -.,., - -# reduce 91 omitted - -# reduce 92 omitted - -module_eval(<<'.,.,', 'csspool.y', 235) - def _reduce_93(val, _values, result) - result = val[0].strip - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 238) - def _reduce_94(val, _values, result) - @handler.end_fontface_rule - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 239) - def _reduce_95(val, _values, result) - @handler.end_fontface_rule - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 243) - def _reduce_96(val, _values, result) - @handler.start_fontface_rule - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 248) - def _reduce_97(val, _values, result) - @handler.end_selector val.first - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 251) - def _reduce_98(val, _values, result) - @handler.end_selector val.first - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 256) - def _reduce_99(val, _values, result) - start = @handler.start_selector([]) - @handler.end_selector(start) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 261) - def _reduce_100(val, _values, result) - result = val.last - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 263) - def _reduce_101(val, _values, result) - @handler.start_selector val.first - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 269) - def _reduce_102(val, _values, result) - sel = Selector.new(val.first, {}) - result = [sel].concat(val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 274) - def _reduce_103(val, _values, result) - result = [Selector.new(val.first, {})] - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 280) - def _reduce_104(val, _values, result) - val.flatten! - val[2].combinator = val.delete_at 1 - result = val - - result - end -.,., - -# reduce 105 omitted - -module_eval(<<'.,.,', 'csspool.y', 287) - def _reduce_106(val, _values, result) - result = :s - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 288) - def _reduce_107(val, _values, result) - result = :> - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 289) - def _reduce_108(val, _values, result) - result = :+ - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 290) - def _reduce_109(val, _values, result) - result = :~ - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 294) - def _reduce_110(val, _values, result) - selector = val.first - selector.additional_selectors = val.last - result = [selector] - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 298) - def _reduce_111(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 301) - def _reduce_112(val, _values, result) - ss = Selectors::Simple.new nil, nil - ss.additional_selectors = val.flatten - result = [ss] - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 307) - def _reduce_113(val, _values, result) - result = [val[0], val[2]].flatten - result - end -.,., - -# reduce 114 omitted - -module_eval(<<'.,.,', 'csspool.y', 311) - def _reduce_115(val, _values, result) - result = [interpret_identifier(val[0]), nil] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 312) - def _reduce_116(val, _values, result) - result = [interpret_identifier(val[2]), interpret_identifier(val[0])] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 313) - def _reduce_117(val, _values, result) - result = [interpret_identifier(val[1]), nil] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 314) - def _reduce_118(val, _values, result) - result = [interpret_identifier(val[2]), '*'] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 317) - def _reduce_119(val, _values, result) - result = Selectors::Type.new val.first[0], nil, val.first[1] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 318) - def _reduce_120(val, _values, result) - result = Selectors::Universal.new val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 319) - def _reduce_121(val, _values, result) - result = Selectors::Universal.new val[1] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 320) - def _reduce_122(val, _values, result) - result = Selectors::Universal.new val[2], nil, val[0] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 321) - def _reduce_123(val, _values, result) - result = Selectors::Universal.new val[2], nil, interpret_identifier(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 324) - def _reduce_124(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 325) - def _reduce_125(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 326) - def _reduce_126(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 327) - def _reduce_127(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 328) - def _reduce_128(val, _values, result) - result = val.flatten - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 329) - def _reduce_129(val, _values, result) - result = val.flatten - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 330) - def _reduce_130(val, _values, result) - result = val.flatten - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 331) - def _reduce_131(val, _values, result) - result = val.flatten - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 335) - def _reduce_132(val, _values, result) - result = Selectors::Id.new interpret_identifier val.first.sub(/^#/, '') - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 339) - def _reduce_133(val, _values, result) - result = Selectors::Class.new interpret_identifier val.last - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 344) - def _reduce_134(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::EQUALS, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 352) - def _reduce_135(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::EQUALS, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 360) - def _reduce_136(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::INCLUDES, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 368) - def _reduce_137(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::INCLUDES, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 376) - def _reduce_138(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::DASHMATCH, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 384) - def _reduce_139(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::DASHMATCH, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 392) - def _reduce_140(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::PREFIXMATCH, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 400) - def _reduce_141(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::PREFIXMATCH, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 408) - def _reduce_142(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::SUFFIXMATCH, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 416) - def _reduce_143(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::SUFFIXMATCH, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 424) - def _reduce_144(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::SUBSTRINGMATCH, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 432) - def _reduce_145(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::SUBSTRINGMATCH, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 440) - def _reduce_146(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - nil, - Selectors::Attribute::SET, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 450) - def _reduce_147(val, _values, result) - result = Selectors::pseudo interpret_identifier(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 453) - def _reduce_148(val, _values, result) - result = Selectors::PseudoElement.new( - interpret_identifier(val[2]) - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 458) - def _reduce_149(val, _values, result) - result = Selectors::PseudoClass.new( - interpret_identifier(val[1].sub(/\($/, '')), - '' - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 464) - def _reduce_150(val, _values, result) - result = Selectors::PseudoClass.new( - interpret_identifier(val[1].sub(/\($/, '')), - interpret_identifier(val[2]) - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 470) - def _reduce_151(val, _values, result) - result = Selectors::PseudoClass.new( - 'not', - val[2].first.to_s - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 476) - def _reduce_152(val, _values, result) - result = Selectors::PseudoClass.new( - interpret_identifier(val[1].sub(/\(.*/, '')), - interpret_identifier(val[1].sub(/.*\(/, '').sub(/\).*/, '')) - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 482) - def _reduce_153(val, _values, result) - result = Selectors::PseudoClass.new( - val[1].split('(').first.strip, - val[2].join(', ') - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 488) - def _reduce_154(val, _values, result) - result = Selectors::PseudoElement.new( - interpret_identifier(val[1].sub(/\($/, '')) - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 493) - def _reduce_155(val, _values, result) - result = Selectors::PseudoElement.new( - interpret_identifier(val[2].sub(/\($/, '')) - ) - - result - end -.,., - -# reduce 156 omitted - -# reduce 157 omitted - -# reduce 158 omitted - -# reduce 159 omitted - -# reduce 160 omitted - -# reduce 161 omitted - -# reduce 162 omitted - -# reduce 163 omitted - -# reduce 164 omitted - -# reduce 165 omitted - -# reduce 166 omitted - -module_eval(<<'.,.,', 'csspool.y', 519) - def _reduce_167(val, _values, result) - @handler.property val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 523) - def _reduce_168(val, _values, result) - result = Declaration.new(val.first, val[2], val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 525) - def _reduce_169(val, _values, result) - result = Declaration.new(val.first, val[3], val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 527) - def _reduce_170(val, _values, result) - result = Declaration.new(val.first, val[3], val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 529) - def _reduce_171(val, _values, result) - result = Declaration.new(val.first, val[4], val[5]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 532) - def _reduce_172(val, _values, result) - result = true - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 533) - def _reduce_173(val, _values, result) - result = false - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 536) - def _reduce_174(val, _values, result) - result = interpret_identifier val[0] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 537) - def _reduce_175(val, _values, result) - result = interpret_identifier val.join - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 538) - def _reduce_176(val, _values, result) - result = interpret_identifier val[0] - result - end -.,., - -# reduce 177 omitted - -# reduce 178 omitted - -# reduce 179 omitted - -module_eval(<<'.,.,', 'csspool.y', 547) - def _reduce_180(val, _values, result) - result = [val.first, val.last].flatten - val.last.first.operator = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 550) - def _reduce_181(val, _values, result) - result = val.flatten - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 551) - def _reduce_182(val, _values, result) - result = val - result - end -.,., - -# reduce 183 omitted - -# reduce 184 omitted - -# reduce 185 omitted - -# reduce 186 omitted - -# reduce 187 omitted - -# reduce 188 omitted - -# reduce 189 omitted - -# reduce 190 omitted - -# reduce 191 omitted - -# reduce 192 omitted - -# reduce 193 omitted - -module_eval(<<'.,.,', 'csspool.y', 567) - def _reduce_194(val, _values, result) - result = val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 569) - def _reduce_195(val, _values, result) - name = interpret_identifier val.first.sub(/\($/, '') - if name == 'rgb' - result = Terms::Rgb.new(*val[1]) - else - result = Terms::Function.new name, val[1] - end - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 577) - def _reduce_196(val, _values, result) - name = interpret_identifier val.first.sub(/\($/, '') - result = Terms::Function.new name - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 582) - def _reduce_197(val, _values, result) - result = val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 584) - def _reduce_198(val, _values, result) - parts = val.first.split('(') - name = interpret_identifier parts.first - result = Terms::Function.new(name, [Terms::String.new(interpret_string_no_quote(parts.last))]) - - result - end -.,., - -# reduce 199 omitted - -# reduce 200 omitted - -module_eval(<<'.,.,', 'csspool.y', 595) - def _reduce_201(val, _values, result) - result = Terms::Math.new(val.first.split('(').first, val[1]) - - result - end -.,., - -# reduce 202 omitted - -module_eval(<<'.,.,', 'csspool.y', 601) - def _reduce_203(val, _values, result) - val.insert(1, ' '); result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 602) - def _reduce_204(val, _values, result) - val.insert(1, ' '); result = val.join('') - result - end -.,., - -# reduce 205 omitted - -module_eval(<<'.,.,', 'csspool.y', 606) - def _reduce_206(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 607) - def _reduce_207(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 610) - def _reduce_208(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 611) - def _reduce_209(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 612) - def _reduce_210(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 615) - def _reduce_211(val, _values, result) - result = val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 616) - def _reduce_212(val, _values, result) - result = Terms::Hash.new val.first.sub(/^#/, '') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 619) - def _reduce_213(val, _values, result) - result = val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 620) - def _reduce_214(val, _values, result) - result = Terms::URI.new interpret_uri val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 623) - def _reduce_215(val, _values, result) - result = val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 624) - def _reduce_216(val, _values, result) - result = Terms::String.new interpret_string val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 628) - def _reduce_217(val, _values, result) - result = val[1] - val[1].unary_operator = val.first - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 632) - def _reduce_218(val, _values, result) - result = Terms::Number.new numeric val.first - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 635) - def _reduce_219(val, _values, result) - result = Terms::Number.new numeric(val.first), nil, '%' - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 638) - def _reduce_220(val, _values, result) - unit = val.first.gsub(/[\s\d.]/, '') - result = Terms::Number.new numeric(val.first), nil, unit - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 642) - def _reduce_221(val, _values, result) - unit = val.first.gsub(/[\s\d.]/, '') - result = Terms::Number.new numeric(val.first), nil, unit - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 646) - def _reduce_222(val, _values, result) - unit = val.first.gsub(/[\s\d.]/, '') - result = Terms::Number.new numeric(val.first), nil, unit - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 650) - def _reduce_223(val, _values, result) - unit = val.first.gsub(/[\s\d.]/, '') - result = Terms::Number.new numeric(val.first), nil, unit - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 656) - def _reduce_224(val, _values, result) - result = Terms::Ratio.new(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 660) - def _reduce_225(val, _values, result) - result = :minus - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 661) - def _reduce_226(val, _values, result) - result = :plus - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 664) - def _reduce_227(val, _values, result) - result = val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 665) - def _reduce_228(val, _values, result) - result = Terms::Ident.new interpret_identifier val.first - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser - end # module CSS -end # module CSSPool diff --git a/test/racc/regress/edtf b/test/racc/regress/edtf deleted file mode 100644 index 5947931260..0000000000 --- a/test/racc/regress/edtf +++ /dev/null @@ -1,1794 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - -require 'strscan' - -module EDTF - class Parser < Racc::Parser - -module_eval(<<'...end edtf.y/module_eval...', 'edtf.y', 468) - - @defaults = { - :level => 2, - :debug => false - }.freeze - - class << self; attr_reader :defaults; end - - attr_reader :options - - def initialize(options = {}) - @options = Parser.defaults.merge(options) - end - - def debug? - !!(options[:debug] || ENV['DEBUG']) - end - - def parse(input) - parse!(input) - rescue => e - warn e.message if debug? - nil - end - - def parse!(input) - @yydebug = debug? - @src = StringScanner.new(input) - do_parse - end - - def on_error(tid, value, stack) - raise ArgumentError, - "failed to parse date: unexpected '#{value}' at #{stack.inspect}" - end - - def apply_uncertainty(date, uncertainty, scope = nil) - uncertainty.each do |u| - scope.nil? ? date.send(u) : date.send(u, scope) - end - date - end - - alias uoa apply_uncertainty - - def next_token - case - when @src.eos? - nil - # when @src.scan(/\s+/) - # ignore whitespace - when @src.scan(/\(/) - ['(', @src.matched] - # when @src.scan(/\)\?~-/) - # [:PUA, [:uncertain!, :approximate!]] - # when @src.scan(/\)\?-/) - # [:PUA, [:uncertain!]] - # when @src.scan(/\)~-/) - # [:PUA, [:approximate!]] - when @src.scan(/\)/) - [')', @src.matched] - when @src.scan(/\[/) - ['[', @src.matched] - when @src.scan(/\]/) - [']', @src.matched] - when @src.scan(/\{/) - ['{', @src.matched] - when @src.scan(/\}/) - ['}', @src.matched] - when @src.scan(/T/) - [:T, @src.matched] - when @src.scan(/Z/) - [:Z, @src.matched] - when @src.scan(/\?~/) - [:UA, [:uncertain!, :approximate!]] - when @src.scan(/\?/) - [:UA, [:uncertain!]] - when @src.scan(/~/) - [:UA, [:approximate!]] - when @src.scan(/open/i) - [:OPEN, :open] - when @src.scan(/unkn?own/i) # matches 'unkown' typo too - [:UNKNOWN, :unknown] - when @src.scan(/u/) - [:U, @src.matched] - when @src.scan(/x/i) - [:X, @src.matched] - when @src.scan(/y/) - [:LONGYEAR, @src.matched] - when @src.scan(/e/) - [:E, @src.matched] - when @src.scan(/\+/) - ['+', @src.matched] - when @src.scan(/-\(/) - ['-(', @src.matched] - when @src.scan(/-/) - ['-', @src.matched] - when @src.scan(/:/) - [':', @src.matched] - when @src.scan(/\//) - ['/', @src.matched] - when @src.scan(/\s*\.\.\s*/) - [:DOTS, '..'] - when @src.scan(/\s*,\s*/) - [',', ','] - when @src.scan(/\^\w+/) - ['^', @src.matched[1..-1]] - when @src.scan(/\d/) - [@src.matched, @src.matched.to_i] - else @src.scan(/./) - [:UNMATCHED, @src.rest] - end - end - - -# -*- racc -*- -...end edtf.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 129, 128, 52, 111, 51, 112, 149, 208, 207, 57, - -50, 43, 45, 40, 55, 42, 54, 44, 43, 45, - 40, -48, 42, 53, 44, 64, 58, 46, 47, 48, - 49, 50, 128, 56, 46, 47, 48, 49, 50, 207, - 57, 65, 43, 45, 40, 55, 42, 157, 44, 43, - 45, 40, 55, 42, 214, 44, 92, 58, 46, 47, - 48, 49, 50, 66, 56, 46, 47, 48, 49, 50, - 25, 56, 26, 93, 94, 67, 108, 12, -65, 43, - 45, 40, -66, 42, 159, 44, 110, 33, 111, 34, - 112, 95, 36, 25, 141, 46, 47, 48, 49, 50, - 12, 58, 43, 45, 40, 101, 42, 103, 44, 104, - 96, 148, 55, 133, 147, 36, 124, 125, 46, 47, - 48, 49, 50, 87, 165, 111, 12, 112, 43, 45, - 40, 56, 42, 146, 44, 166, 111, 150, 112, 218, - 167, 36, 152, 153, 46, 47, 48, 49, 50, 87, - 108, 111, 12, 112, 43, 45, 40, 188, 42, 186, - 44, 187, 111, 190, 112, 154, 111, 36, 112, 156, - 46, 47, 48, 49, 50, 69, 158, 43, 45, 189, - 191, 42, 12, 44, 43, 45, 40, 200, 42, 201, - 44, 168, 177, 46, 47, 48, 49, 50, 233, 178, - 46, 47, 48, 49, 50, 12, 180, 43, 45, 40, - 111, 42, 112, 44, 232, 234, 111, 240, 112, 239, - 36, 192, 193, 46, 47, 48, 49, 50, 12, 202, - 43, 45, 40, 118, 42, 117, 44, 104, 118, 121, - 117, 209, 104, 36, 121, 210, 46, 47, 48, 49, - 50, 12, 212, 43, 45, 40, 244, 42, 239, 44, - 213, 43, 45, 40, 215, 42, 36, 44, 229, 46, - 47, 48, 49, 50, 180, 180, 236, 46, 47, 48, - 49, 50, 43, 45, 40, 253, 42, 254, 44, 43, - 45, 40, 255, 42, 258, 44, 261, 264, 46, 47, - 48, 49, 50, 124, 125, 46, 47, 48, 49, 50, - 43, 45, 40, 265, 42, 192, 44, 43, 45, 266, - 269, 42, 270, 44, 275, 280, 46, 47, 48, 49, - 50, 284, 285, 46, 47, 48, 49, 50, 43, 45, - 40, 286, 42, 290, 44, 43, 45, 292, 293, 42, - 295, 44, 296, 297, 46, 47, 48, 49, 50, 300, - 301, 46, 47, 48, 49, 50, 43, 45, 40, 180, - 42, 303, 44, 43, 45, 40, 304, 42, 305, 44, - 281, 306, 46, 47, 48, 49, 50, 307, 308, 46, - 47, 48, 49, 50, 43, 45, 175, 311, 42, 312, - 44, 43, 45, 40, 313, 42, 314, 44, 316, 317, - 46, 47, 48, 49, 50, 318, 319, 46, 47, 48, - 49, 50, 43, 45, nil, nil, 42, nil, 44, 43, - 45, nil, nil, 42, nil, 44, nil, nil, 46, 47, - 48, 49, 50, nil, nil, 46, 47, 48, 49, 50, - 172, 194, 170, nil, 171, nil, 173, 43, 45, 40, - nil, 42, nil, 44, nil, nil, 195, 196, 197, 198, - 199, nil, nil, 46, 47, 48, 49, 50, 43, 45, - 40, nil, 42, nil, 44, 43, 45, 40, nil, 42, - nil, 44, nil, nil, 46, 47, 48, 49, 50, nil, - nil, 46, 47, 48, 49, 50, 43, 45, 40, nil, - 42, nil, 44, 43, 45, nil, nil, 42, nil, 44, - nil, nil, 46, 47, 48, 49, 50, nil, nil, 46, - 47, 48, 49, 50, 43, 45, 40, nil, 42, nil, - 44, 43, 45, 40, nil, 42, nil, 44, nil, nil, - 46, 47, 48, 49, 50, nil, nil, 46, 47, 48, - 49, 50, 43, 45, 40, nil, 42, nil, 44, 43, - 45, 40, nil, 42, nil, 44, nil, nil, 46, 47, - 48, 49, 50, nil, nil, 46, 47, 48, 49, 50, - 43, 45, nil, nil, 42, nil, 44, 43, 45, 40, - nil, 42, nil, 44, nil, nil, 46, 47, 48, 49, - 50, nil, nil, 46, 47, 48, 49, 50, 43, 45, - 40, nil, 42, nil, 44, 43, 45, 273, nil, 42, - nil, 44, nil, nil, 46, 47, 48, 49, 50, nil, - nil, 46, 47, 48, 49, 50, 43, 45, 274, nil, - 42, nil, 44, 43, 45, 276, nil, 42, nil, 44, - nil, nil, 46, 47, 48, 49, 50, nil, nil, 46, - 47, 48, 49, 50, 43, 45, 40, nil, 42, nil, - 44, 43, 45, 40, nil, 42, nil, 44, nil, nil, - 46, 47, 48, 49, 50, nil, nil, 46, 47, 48, - 49, 50, 43, 45, 40, nil, 42, nil, 44, 43, - 45, 40, nil, 42, nil, 44, nil, nil, 46, 47, - 48, 49, 50, nil, nil, 46, 47, 48, 49, 50, - 43, 45, 40, nil, 42, nil, 44, 43, 45, 315, - nil, 42, nil, 44, nil, nil, 46, 47, 48, 49, - 50, 116, nil, 46, 47, 48, 49, 50, 118, 250, - 247, 118, 104, 117, 249, 104, 260, 121, nil, 281, - nil, nil, nil, nil, 251, nil, 118, 288, 117, 118, - 104, 117, 121, 104, 118, 121, 117, 118, 104, 117, - 121, 104, nil, 121, 118, 250, 247, nil, 104, nil, - 249, 118, 250, 247, nil, 104, nil, 249, nil, nil, - 251, nil, 118, 250, 117, nil, 104, 251, 249, 118, - 250, 310, nil, 104, nil, 249, nil, nil, 251, nil, - 172, 169, 170, nil, 171, 251, 173, 182, 184, nil, - 118, 181, 117, 183, 104, 118, 121, 117, 118, 104, - 117, 121, 104, 118, 121, 117, 118, 104, 117, 121, - 104, 118, 121, 117, nil, 104, nil, 121, 188, 271, - 186, 118, 187, 117, 272, 104, nil, 121 ] - -racc_action_check = [ - 63, 63, 5, 56, 1, 56, 73, 127, 127, 73, - 14, 63, 63, 63, 9, 63, 9, 63, 127, 127, - 127, 5, 127, 5, 127, 16, 73, 63, 63, 63, - 63, 63, 151, 9, 127, 127, 127, 127, 127, 224, - 10, 17, 151, 151, 151, 89, 151, 89, 151, 224, - 224, 224, 134, 224, 134, 224, 37, 10, 151, 151, - 151, 151, 151, 18, 89, 224, 224, 224, 224, 224, - 0, 134, 0, 37, 38, 22, 54, 0, 23, 0, - 0, 0, 24, 0, 91, 0, 54, 0, 54, 0, - 54, 38, 0, 67, 67, 0, 0, 0, 0, 0, - 67, 91, 67, 67, 67, 52, 67, 52, 67, 52, - 51, 72, 72, 66, 72, 67, 59, 60, 67, 67, - 67, 67, 67, 33, 98, 66, 33, 66, 33, 33, - 33, 72, 33, 71, 33, 98, 92, 74, 92, 147, - 98, 33, 77, 78, 33, 33, 33, 33, 33, 34, - 214, 147, 34, 147, 34, 34, 34, 112, 34, 112, - 34, 112, 214, 113, 214, 79, 93, 34, 93, 88, - 34, 34, 34, 34, 34, 26, 90, 26, 26, 113, - 113, 26, 87, 26, 87, 87, 87, 121, 87, 121, - 87, 99, 107, 26, 26, 26, 26, 26, 161, 108, - 87, 87, 87, 87, 87, 153, 109, 153, 153, 153, - 124, 153, 124, 153, 161, 161, 157, 166, 157, 166, - 153, 115, 116, 153, 153, 153, 153, 153, 154, 123, - 154, 154, 154, 58, 154, 58, 154, 58, 94, 58, - 94, 128, 94, 154, 94, 129, 154, 154, 154, 154, - 154, 265, 132, 265, 265, 265, 167, 265, 167, 265, - 133, 12, 12, 12, 144, 12, 265, 12, 158, 265, - 265, 265, 265, 265, 160, 162, 163, 12, 12, 12, - 12, 12, 13, 13, 13, 169, 13, 178, 13, 36, - 36, 36, 189, 36, 202, 36, 213, 218, 13, 13, - 13, 13, 13, 220, 222, 36, 36, 36, 36, 36, - 62, 62, 62, 225, 62, 230, 62, 64, 64, 232, - 236, 64, 238, 64, 245, 253, 62, 62, 62, 62, - 62, 256, 257, 64, 64, 64, 64, 64, 68, 68, - 68, 260, 68, 264, 68, 69, 69, 267, 268, 69, - 271, 69, 273, 274, 68, 68, 68, 68, 68, 280, - 281, 69, 69, 69, 69, 69, 70, 70, 70, 283, - 70, 284, 70, 75, 75, 75, 285, 75, 288, 75, - 290, 292, 70, 70, 70, 70, 70, 293, 295, 75, - 75, 75, 75, 75, 103, 103, 103, 300, 103, 304, - 103, 104, 104, 104, 307, 104, 308, 104, 311, 312, - 103, 103, 103, 103, 103, 313, 316, 104, 104, 104, - 104, 104, 111, 111, nil, nil, 111, nil, 111, 117, - 117, nil, nil, 117, nil, 117, nil, nil, 111, 111, - 111, 111, 111, nil, nil, 117, 117, 117, 117, 117, - 118, 118, 118, nil, 118, nil, 118, 126, 126, 126, - nil, 126, nil, 126, nil, nil, 118, 118, 118, 118, - 118, nil, nil, 126, 126, 126, 126, 126, 130, 130, - 130, nil, 130, nil, 130, 143, 143, 143, nil, 143, - nil, 143, nil, nil, 130, 130, 130, 130, 130, nil, - nil, 143, 143, 143, 143, 143, 145, 145, 145, nil, - 145, nil, 145, 146, 146, nil, nil, 146, nil, 146, - nil, nil, 145, 145, 145, 145, 145, nil, nil, 146, - 146, 146, 146, 146, 148, 148, 148, nil, 148, nil, - 148, 149, 149, 149, nil, 149, nil, 149, nil, nil, - 148, 148, 148, 148, 148, nil, nil, 149, 149, 149, - 149, 149, 150, 150, 150, nil, 150, nil, 150, 205, - 205, 205, nil, 205, nil, 205, nil, nil, 150, 150, - 150, 150, 150, nil, nil, 205, 205, 205, 205, 205, - 215, 215, nil, nil, 215, nil, 215, 216, 216, 216, - nil, 216, nil, 216, nil, nil, 215, 215, 215, 215, - 215, nil, nil, 216, 216, 216, 216, 216, 217, 217, - 217, nil, 217, nil, 217, 240, 240, 240, nil, 240, - nil, 240, nil, nil, 217, 217, 217, 217, 217, nil, - nil, 240, 240, 240, 240, 240, 244, 244, 244, nil, - 244, nil, 244, 247, 247, 247, nil, 247, nil, 247, - nil, nil, 244, 244, 244, 244, 244, nil, nil, 247, - 247, 247, 247, 247, 249, 249, 249, nil, 249, nil, - 249, 250, 250, 250, nil, 250, nil, 250, nil, nil, - 249, 249, 249, 249, 249, nil, nil, 250, 250, 250, - 250, 250, 251, 251, 251, nil, 251, nil, 251, 262, - 262, 262, nil, 262, nil, 262, nil, nil, 251, 251, - 251, 251, 251, nil, nil, 262, 262, 262, 262, 262, - 263, 263, 263, nil, 263, nil, 263, 310, 310, 310, - nil, 310, nil, 310, nil, nil, 263, 263, 263, 263, - 263, 57, nil, 310, 310, 310, 310, 310, 168, 168, - 168, 57, 168, 57, 168, 57, 212, 57, nil, 254, - nil, nil, nil, nil, 168, nil, 212, 261, 212, 254, - 212, 254, 212, 254, 95, 254, 95, 261, 95, 261, - 95, 261, nil, 261, 270, 270, 270, nil, 270, nil, - 270, 275, 275, 275, nil, 275, nil, 275, nil, nil, - 270, nil, 296, 296, 296, nil, 296, 275, 296, 297, - 297, 297, nil, 297, nil, 297, nil, nil, 296, nil, - 101, 101, 101, nil, 101, 297, 101, 110, 110, nil, - 125, 110, 125, 110, 125, 159, 125, 159, 190, 159, - 190, 159, 190, 191, 190, 191, 233, 191, 233, 191, - 233, 234, 233, 234, nil, 234, nil, 234, 239, 239, - 239, 255, 239, 255, 239, 255, nil, 255 ] - -racc_action_pointer = [ - 63, 4, nil, nil, nil, 0, nil, nil, nil, 2, - 26, nil, 245, 266, -11, nil, 21, 18, 49, nil, - nil, nil, 54, 78, 82, nil, 161, nil, nil, nil, - nil, nil, nil, 112, 138, nil, 273, 42, 60, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 110, 89, nil, 70, nil, -15, 745, 217, 102, - 103, nil, 294, -5, 301, nil, 107, 86, 322, 329, - 350, 129, 100, -5, 126, 357, nil, 117, 115, 137, - nil, nil, nil, nil, nil, nil, nil, 168, 142, 33, - 146, 70, 118, 148, 222, 768, nil, nil, 121, 176, - nil, 814, nil, 378, 385, nil, nil, 180, 193, 194, - 821, 406, 141, 149, nil, 209, 216, 413, 434, nil, - nil, 169, nil, 199, 192, 824, 441, 2, 235, 240, - 462, nil, 238, 254, 40, nil, nil, nil, nil, nil, - nil, nil, nil, 469, 260, 490, 497, 133, 518, 525, - 546, 26, nil, 191, 214, nil, nil, 198, 256, 829, - 262, 184, 263, 246, nil, nil, 199, 238, 742, 270, - nil, nil, nil, nil, nil, nil, nil, nil, 273, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 280, - 832, 837, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 282, nil, nil, 553, nil, nil, nil, nil, - nil, nil, 760, 282, 144, 574, 581, 602, 291, nil, - 289, nil, 290, nil, 33, 285, nil, nil, nil, nil, - 303, nil, 307, 840, 845, nil, 308, nil, 307, 852, - 609, nil, nil, nil, 630, 309, nil, 637, nil, 658, - 665, 686, nil, 307, 763, 855, 301, 302, nil, nil, - 335, 771, 693, 714, 329, 237, nil, 317, 318, nil, - 778, 335, nil, 337, 338, 785, nil, nil, nil, nil, - 341, 354, nil, 357, 359, 364, nil, nil, 372, nil, - 374, nil, 369, 375, nil, 370, 796, 803, nil, nil, - 382, nil, nil, nil, 369, nil, nil, 374, 388, nil, - 721, 390, 397, 403, nil, nil, 398, nil, nil, nil ] - -racc_action_default = [ - -176, -176, -1, -2, -3, -4, -5, -6, -7, -8, - -9, -10, -176, -176, -34, -35, -36, -37, -38, -39, - -40, -41, -176, -49, -51, -52, -176, -64, -67, -68, - -69, -70, -71, -176, -176, -107, -176, -109, -110, -111, - -128, -129, -130, -131, -132, -133, -134, -135, -136, -137, - -138, -176, -176, -76, -176, -112, -176, -176, -176, -8, - -9, -11, -176, -176, -176, -72, -176, -176, -55, -176, - -170, -176, -8, -9, -10, -176, -38, -176, -81, -86, - -87, -88, -90, -91, -92, -93, -94, -176, -176, -176, - -176, -176, -176, -176, -176, -176, 320, -12, -13, -176, - -16, -176, -31, -176, -176, -152, -27, -29, -176, -126, - -176, -176, -176, -176, -28, -30, -176, -176, -176, -153, - -160, -176, -162, -176, -176, -176, -176, -176, -176, -176, - -73, -174, -176, -176, -8, -47, -48, -49, -50, -51, - -53, -54, -58, -56, -176, -171, -176, -176, -98, -97, - -96, -176, -79, -176, -176, -95, -80, -176, -176, -176, - -126, -176, -126, -176, -14, -18, -176, -176, -176, -176, - -147, -148, -149, -150, -145, -151, -146, -114, -44, -59, - -127, -60, -61, -62, -63, -139, -140, -141, -142, -176, - -176, -176, -120, -45, -154, -155, -156, -157, -158, -159, - -161, -163, -176, -29, -30, -176, -26, -42, -77, -43, - -78, -175, -176, -176, -176, -176, -172, -74, -176, -101, - -176, -100, -176, -99, -176, -83, -84, -85, -89, -108, - -176, -113, -176, -176, -176, -117, -176, -19, -176, -176, - -176, -143, -20, -21, -176, -176, -32, -176, -164, -176, - -176, -176, -169, -176, -176, -115, -176, -176, -121, -102, - -176, -176, -75, -173, -44, -176, -116, -176, -176, -118, - -176, -176, -144, -176, -176, -176, -168, -165, -166, -167, - -176, -176, -106, -126, -176, -176, -105, -103, -176, -57, - -176, -82, -176, -176, -23, -176, -176, -176, -15, -33, - -176, -46, -119, -122, -176, -104, -124, -176, -176, -25, - -176, -176, -176, -176, -24, -22, -176, -123, -125, -17 ] - -racc_goto_table = [ - 70, 179, 130, 13, 228, 11, 248, 115, 123, 226, - 227, 113, 245, 5, 14, 9, 63, 11, 68, 10, - 18, 132, 22, 23, 71, 1, 24, 59, 237, 243, - 2, 60, 309, 309, 241, 241, 75, 75, 131, 77, - 88, 3, 4, 70, 162, 163, 6, 160, 161, 61, - 97, 89, 231, 98, 235, 91, 164, 99, 298, 100, - 242, 143, 102, 299, 15, 126, 127, 144, 16, 17, - 75, 142, 11, 145, 135, 204, 109, 174, 151, 203, - 136, 138, 134, 27, 217, 185, 10, 18, 28, 140, - 137, 174, 11, 139, 29, 30, 31, 32, 225, 90, - 155, 105, 59, nil, nil, nil, 60, 176, 248, 230, - nil, nil, nil, 248, 294, 228, nil, nil, nil, nil, - 131, 291, nil, nil, nil, nil, nil, nil, nil, 205, - 206, nil, nil, 211, 248, 248, nil, nil, nil, nil, - 256, 257, nil, nil, nil, nil, 142, nil, 216, nil, - nil, nil, nil, 262, 224, 223, 75, 75, nil, nil, - nil, nil, 259, 219, 220, 220, nil, nil, 221, 222, - nil, nil, nil, nil, nil, 302, nil, nil, nil, nil, - nil, nil, nil, 267, 268, nil, nil, nil, nil, 131, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 282, 283, nil, nil, 206, nil, - nil, 287, nil, nil, 185, nil, nil, nil, 185, 263, - 211, 174, nil, nil, nil, nil, nil, 206, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 277, 278, 279, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 211, 289, nil, 75, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 174 ] - -racc_goto_check = [ - 43, 45, 52, 23, 58, 11, 66, 26, 26, 57, - 57, 24, 16, 5, 30, 9, 23, 11, 42, 10, - 34, 24, 38, 40, 53, 1, 41, 9, 19, 19, - 2, 10, 22, 22, 25, 25, 23, 23, 43, 54, - 54, 3, 4, 43, 26, 26, 6, 24, 24, 7, - 12, 9, 45, 13, 45, 10, 14, 15, 17, 18, - 20, 42, 28, 29, 31, 23, 23, 53, 32, 33, - 23, 23, 11, 23, 39, 26, 44, 43, 23, 24, - 5, 30, 9, 46, 52, 43, 10, 34, 47, 38, - 40, 43, 11, 41, 48, 49, 50, 51, 56, 61, - 5, 65, 9, nil, nil, nil, 10, 23, 66, 26, - nil, nil, nil, 66, 16, 58, nil, nil, nil, nil, - 43, 57, nil, nil, nil, nil, nil, nil, nil, 23, - 23, nil, nil, 23, 66, 66, nil, nil, nil, nil, - 26, 26, nil, nil, nil, nil, 23, nil, 23, nil, - nil, nil, nil, 52, 23, 11, 23, 23, nil, nil, - nil, nil, 26, 9, 9, 9, nil, nil, 10, 10, - nil, nil, nil, nil, nil, 45, nil, nil, nil, nil, - nil, nil, nil, 26, 26, nil, nil, nil, nil, 43, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 26, 26, nil, nil, 23, nil, - nil, 26, nil, nil, 43, nil, nil, nil, 43, 23, - 23, 43, 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, 23, 23, 23, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 23, 23, nil, 23, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 43 ] - -racc_goto_pointer = [ - nil, 25, 30, 41, 42, 13, 46, 37, nil, 15, - 19, 5, -2, 1, -42, 5, -156, -217, 7, -138, - -107, nil, -264, 3, -45, -132, -50, nil, 10, -212, - 14, 64, 68, 69, 20, nil, nil, nil, 22, 7, - 23, 26, -8, -26, 22, -108, 83, 88, 94, 95, - 96, 97, -62, -2, 6, nil, -55, -144, -150, nil, - nil, 63, nil, nil, nil, 49, -162, nil ] - -racc_goto_default = [ - nil, nil, nil, nil, nil, 84, nil, 7, 8, 72, - 73, 74, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 238, 252, 62, 107, 106, nil, 114, nil, 246, - 86, nil, nil, nil, 76, 19, 20, 21, nil, nil, - 85, nil, nil, 41, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 78, 79, 80, 81, 82, - 83, 35, 37, 38, 39, 119, 120, 122 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 38, :_reduce_none, - 1, 38, :_reduce_none, - 1, 38, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 42, :_reduce_none, - 1, 42, :_reduce_none, - 1, 44, :_reduce_8, - 1, 44, :_reduce_9, - 1, 44, :_reduce_10, - 2, 45, :_reduce_11, - 3, 43, :_reduce_12, - 1, 49, :_reduce_none, - 2, 49, :_reduce_14, - 5, 50, :_reduce_15, - 1, 50, :_reduce_none, - 8, 55, :_reduce_17, - 1, 51, :_reduce_18, - 2, 51, :_reduce_19, - 2, 51, :_reduce_20, - 1, 57, :_reduce_none, - 5, 57, :_reduce_22, - 3, 56, :_reduce_23, - 5, 56, :_reduce_24, - 4, 56, :_reduce_25, - 4, 46, :_reduce_26, - 1, 61, :_reduce_none, - 1, 63, :_reduce_none, - 3, 47, :_reduce_29, - 3, 48, :_reduce_30, - 1, 52, :_reduce_none, - 1, 53, :_reduce_none, - 1, 54, :_reduce_none, - 1, 40, :_reduce_none, - 1, 40, :_reduce_none, - 1, 40, :_reduce_none, - 1, 40, :_reduce_none, - 1, 67, :_reduce_38, - 1, 67, :_reduce_none, - 1, 67, :_reduce_none, - 1, 67, :_reduce_none, - 4, 71, :_reduce_42, - 4, 71, :_reduce_43, - 4, 72, :_reduce_44, - 4, 73, :_reduce_45, - 7, 74, :_reduce_46, - 3, 68, :_reduce_47, - 1, 75, :_reduce_none, - 1, 75, :_reduce_none, - 1, 75, :_reduce_none, - 1, 75, :_reduce_none, - 1, 75, :_reduce_none, - 1, 76, :_reduce_none, - 1, 76, :_reduce_none, - 2, 69, :_reduce_55, - 3, 69, :_reduce_56, - 5, 79, :_reduce_57, - 2, 79, :_reduce_58, - 4, 70, :_reduce_59, - 2, 81, :_reduce_60, - 2, 81, :_reduce_61, - 2, 81, :_reduce_62, - 2, 81, :_reduce_63, - 1, 41, :_reduce_none, - 1, 41, :_reduce_none, - 1, 41, :_reduce_none, - 1, 41, :_reduce_none, - 1, 41, :_reduce_none, - 1, 41, :_reduce_none, - 1, 41, :_reduce_none, - 1, 41, :_reduce_none, - 2, 83, :_reduce_72, - 3, 88, :_reduce_73, - 4, 88, :_reduce_74, - 5, 88, :_reduce_75, - 2, 87, :_reduce_76, - 4, 86, :_reduce_77, - 4, 86, :_reduce_78, - 3, 84, :_reduce_79, - 3, 85, :_reduce_80, - 1, 91, :_reduce_81, - 5, 91, :_reduce_82, - 3, 91, :_reduce_83, - 3, 91, :_reduce_84, - 3, 91, :_reduce_85, - 1, 91, :_reduce_86, - 1, 91, :_reduce_87, - 1, 93, :_reduce_88, - 3, 93, :_reduce_89, - 1, 95, :_reduce_none, - 1, 95, :_reduce_none, - 1, 96, :_reduce_none, - 1, 96, :_reduce_none, - 1, 96, :_reduce_none, - 2, 92, :_reduce_95, - 2, 94, :_reduce_96, - 2, 94, :_reduce_97, - 2, 94, :_reduce_98, - 3, 97, :_reduce_99, - 3, 97, :_reduce_100, - 3, 97, :_reduce_101, - 5, 78, :_reduce_102, - 6, 78, :_reduce_103, - 7, 78, :_reduce_104, - 6, 78, :_reduce_105, - 6, 78, :_reduce_106, - 1, 77, :_reduce_none, - 4, 77, :_reduce_108, - 1, 98, :_reduce_109, - 1, 98, :_reduce_110, - 1, 98, :_reduce_111, - 2, 99, :_reduce_112, - 4, 100, :_reduce_113, - 4, 100, :_reduce_114, - 5, 100, :_reduce_115, - 5, 100, :_reduce_116, - 4, 101, :_reduce_117, - 5, 101, :_reduce_118, - 7, 101, :_reduce_119, - 4, 101, :_reduce_120, - 5, 101, :_reduce_121, - 7, 101, :_reduce_122, - 9, 101, :_reduce_123, - 7, 101, :_reduce_124, - 9, 101, :_reduce_125, - 0, 82, :_reduce_126, - 1, 82, :_reduce_none, - 1, 60, :_reduce_128, - 1, 60, :_reduce_none, - 1, 80, :_reduce_none, - 1, 80, :_reduce_none, - 1, 80, :_reduce_none, - 1, 80, :_reduce_none, - 1, 80, :_reduce_none, - 1, 80, :_reduce_none, - 1, 80, :_reduce_none, - 1, 80, :_reduce_none, - 1, 80, :_reduce_none, - 2, 62, :_reduce_139, - 2, 62, :_reduce_140, - 2, 62, :_reduce_141, - 2, 62, :_reduce_142, - 1, 58, :_reduce_none, - 2, 58, :_reduce_144, - 2, 102, :_reduce_145, - 2, 102, :_reduce_146, - 2, 102, :_reduce_147, - 2, 102, :_reduce_148, - 2, 102, :_reduce_149, - 2, 102, :_reduce_150, - 2, 65, :_reduce_none, - 1, 65, :_reduce_none, - 1, 103, :_reduce_none, - 2, 103, :_reduce_154, - 2, 103, :_reduce_155, - 2, 103, :_reduce_156, - 2, 103, :_reduce_157, - 2, 103, :_reduce_158, - 2, 103, :_reduce_159, - 1, 104, :_reduce_none, - 2, 104, :_reduce_161, - 1, 64, :_reduce_none, - 2, 64, :_reduce_163, - 1, 59, :_reduce_none, - 2, 59, :_reduce_165, - 2, 59, :_reduce_166, - 2, 59, :_reduce_167, - 2, 66, :_reduce_none, - 1, 66, :_reduce_none, - 1, 90, :_reduce_170, - 2, 90, :_reduce_171, - 3, 90, :_reduce_172, - 4, 90, :_reduce_173, - 1, 89, :_reduce_174, - 2, 89, :_reduce_175 ] - -racc_reduce_n = 176 - -racc_shift_n = 320 - -racc_token_table = { - false => 0, - :error => 1, - :T => 2, - :Z => 3, - :E => 4, - :X => 5, - :U => 6, - :UNKNOWN => 7, - :OPEN => 8, - :LONGYEAR => 9, - :UNMATCHED => 10, - :DOTS => 11, - :UA => 12, - :PUA => 13, - "-" => 14, - ":" => 15, - "2" => 16, - "4" => 17, - "0" => 18, - "+" => 19, - "1" => 20, - "/" => 21, - "3" => 22, - "^" => 23, - "[" => 24, - "]" => 25, - "{" => 26, - "}" => 27, - "," => 28, - "(" => 29, - ")" => 30, - "-(" => 31, - "5" => 32, - "6" => 33, - "7" => 34, - "8" => 35, - "9" => 36 } - -racc_nt_base = 37 - -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", - "T", - "Z", - "E", - "X", - "U", - "UNKNOWN", - "OPEN", - "LONGYEAR", - "UNMATCHED", - "DOTS", - "UA", - "PUA", - "\"-\"", - "\":\"", - "\"2\"", - "\"4\"", - "\"0\"", - "\"+\"", - "\"1\"", - "\"/\"", - "\"3\"", - "\"^\"", - "\"[\"", - "\"]\"", - "\"{\"", - "\"}\"", - "\",\"", - "\"(\"", - "\")\"", - "\"-(\"", - "\"5\"", - "\"6\"", - "\"7\"", - "\"8\"", - "\"9\"", - "$start", - "edtf", - "level_0_expression", - "level_1_expression", - "level_2_expression", - "date", - "date_time", - "positive_date", - "negative_date", - "year", - "year_month", - "year_month_day", - "time", - "base_time", - "zone_offset", - "hour", - "minute", - "second", - "midnight", - "zone_offset_hour", - "positive_zone_offset", - "d01_13", - "d01_59", - "digit", - "month", - "d01_12", - "day", - "d01_31", - "d00_23", - "d00_59", - "unspecified", - "level_1_interval", - "long_year_simple", - "season", - "unspecified_year", - "unspecified_month", - "unspecified_day", - "unspecified_day_and_month", - "level_1_start", - "level_1_end", - "partial_uncertain_or_approximate", - "partial_unspecified", - "long_year", - "positive_digit", - "season_number", - "ua", - "season_qualified", - "choice_list", - "inclusive_list", - "masked_precision", - "date_and_calendar", - "long_year_scientific", - "integer", - "int1_4", - "list", - "earlier", - "list_elements", - "later", - "list_element", - "atomic", - "consecutives", - "pua_base", - "pua_year", - "pua_year_month", - "pua_year_month_day", - "d01_23", - "d01_29", - "d01_30" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -# reduce 1 omitted - -# reduce 2 omitted - -# reduce 3 omitted - -# reduce 4 omitted - -# reduce 5 omitted - -# reduce 6 omitted - -# reduce 7 omitted - -module_eval(<<'.,.,', 'edtf.y', 54) - def _reduce_8(val, _values, result) - result = Date.new(val[0]).year_precision! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 55) - def _reduce_9(val, _values, result) - result = Date.new(*val.flatten).month_precision! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 56) - def _reduce_10(val, _values, result) - result = Date.new(*val.flatten).day_precision! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 59) - def _reduce_11(val, _values, result) - result = -val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 63) - def _reduce_12(val, _values, result) - result = DateTime.new(val[0].year, val[0].month, val[0].day, *val[2]) - result.skip_timezone = (val[2].length == 3) - - result - end -.,., - -# reduce 13 omitted - -module_eval(<<'.,.,', 'edtf.y', 68) - def _reduce_14(val, _values, result) - result = val.flatten - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 70) - def _reduce_15(val, _values, result) - result = val.values_at(0, 2, 4) - result - end -.,., - -# reduce 16 omitted - -module_eval(<<'.,.,', 'edtf.y', 73) - def _reduce_17(val, _values, result) - result = [24, 0, 0] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 75) - def _reduce_18(val, _values, result) - result = 0 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 76) - def _reduce_19(val, _values, result) - result = -1 * val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 77) - def _reduce_20(val, _values, result) - result = val[1] - result - end -.,., - -# reduce 21 omitted - -module_eval(<<'.,.,', 'edtf.y', 81) - def _reduce_22(val, _values, result) - result = 0 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 85) - def _reduce_23(val, _values, result) - result = Rational(val[0] * 60 + val[2], 1440) - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 86) - def _reduce_24(val, _values, result) - result = Rational(840, 1440) - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 87) - def _reduce_25(val, _values, result) - result = Rational(val[3], 1440) - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 91) - def _reduce_26(val, _values, result) - result = val.zip([1000,100,10,1]).reduce(0) { |s,(a,b)| s += a * b } - - result - end -.,., - -# reduce 27 omitted - -# reduce 28 omitted - -module_eval(<<'.,.,', 'edtf.y', 97) - def _reduce_29(val, _values, result) - result = [val[0], val[2]] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 104) - def _reduce_30(val, _values, result) - result = val[0] << val[2] - if result[2] > 31 || (result[2] > 30 && [2,4,6,9,11].include?(result[1])) || (result[2] > 29 && result[1] == 2) - raise ArgumentError, "invalid date (invalid days #{result[2]} for month #{result[1]})" - end - - result - end -.,., - -# reduce 31 omitted - -# reduce 32 omitted - -# reduce 33 omitted - -# reduce 34 omitted - -# reduce 35 omitted - -# reduce 36 omitted - -# reduce 37 omitted - -module_eval(<<'.,.,', 'edtf.y', 127) - def _reduce_38(val, _values, result) - result = Date.new(val[0][0]).year_precision! - result.unspecified.year[2,2] = val[0][1] - - result - end -.,., - -# reduce 39 omitted - -# reduce 40 omitted - -# reduce 41 omitted - -module_eval(<<'.,.,', 'edtf.y', 138) - def _reduce_42(val, _values, result) - result = [val[0,3].zip([1000,100,10]).reduce(0) { |s,(a,b)| s += a * b }, [false,true]] - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 142) - def _reduce_43(val, _values, result) - result = [val[0,2].zip([1000,100]).reduce(0) { |s,(a,b)| s += a * b }, [true, true]] - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 146) - def _reduce_44(val, _values, result) - result = Date.new(val[0]).unspecified!(:month) - result.precision = :month - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 151) - def _reduce_45(val, _values, result) - result = Date.new(*val[0]).unspecified!(:day) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 155) - def _reduce_46(val, _values, result) - result = Date.new(val[0]).unspecified!([:day,:month]) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 160) - def _reduce_47(val, _values, result) - result = Interval.new(val[0], val[2]) - - result - end -.,., - -# reduce 48 omitted - -# reduce 49 omitted - -# reduce 50 omitted - -# reduce 51 omitted - -# reduce 52 omitted - -# reduce 53 omitted - -# reduce 54 omitted - -module_eval(<<'.,.,', 'edtf.y', 171) - def _reduce_55(val, _values, result) - result = Date.new(val[1]) - result.precision = :year - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 176) - def _reduce_56(val, _values, result) - result = Date.new(-1 * val[2]) - result.precision = :year - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 183) - def _reduce_57(val, _values, result) - result = val.zip([10000,1000,100,10,1]).reduce(0) { |s,(a,b)| s += a * b } - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 185) - def _reduce_58(val, _values, result) - result = 10 * val[0] + val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 190) - def _reduce_59(val, _values, result) - result = Season.new(val[0], val[2]) - val[3].each { |ua| result.send(ua) } - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 194) - def _reduce_60(val, _values, result) - result = 21 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 195) - def _reduce_61(val, _values, result) - result = 22 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 196) - def _reduce_62(val, _values, result) - result = 23 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 197) - def _reduce_63(val, _values, result) - result = 24 - result - end -.,., - -# reduce 64 omitted - -# reduce 65 omitted - -# reduce 66 omitted - -# reduce 67 omitted - -# reduce 68 omitted - -# reduce 69 omitted - -# reduce 70 omitted - -# reduce 71 omitted - -module_eval(<<'.,.,', 'edtf.y', 215) - def _reduce_72(val, _values, result) - result = val[0]; result.qualifier = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 221) - def _reduce_73(val, _values, result) - result = Date.new(val[0].year * 10 ** val[2]).year_precision! - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 225) - def _reduce_74(val, _values, result) - result = Date.new(val[1] * 10 ** val[3]).year_precision! - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 229) - def _reduce_75(val, _values, result) - result = Date.new(-1 * val[2] * 10 ** val[4]).year_precision! - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 234) - def _reduce_76(val, _values, result) - result = val[0]; result.calendar = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 240) - def _reduce_77(val, _values, result) - d = val[0,3].zip([1000,100,10]).reduce(0) { |s,(a,b)| s += a * b } - result = EDTF::Decade.new(d) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 245) - def _reduce_78(val, _values, result) - d = val[0,2].zip([1000,100]).reduce(0) { |s,(a,b)| s += a * b } - result = EDTF::Century.new(d) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 251) - def _reduce_79(val, _values, result) - result = val[1].choice! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 253) - def _reduce_80(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 255) - def _reduce_81(val, _values, result) - result = EDTF::Set.new(val[0]).earlier! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 256) - def _reduce_82(val, _values, result) - result = EDTF::Set.new([val[0]] + val[2] + [val[4]]).earlier!.later! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 257) - def _reduce_83(val, _values, result) - result = EDTF::Set.new([val[0]] + val[2]).earlier! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 258) - def _reduce_84(val, _values, result) - result = EDTF::Set.new([val[0]] + [val[2]]).earlier!.later! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 259) - def _reduce_85(val, _values, result) - result = EDTF::Set.new(val[0] + [val[2]]).later! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 260) - def _reduce_86(val, _values, result) - result = EDTF::Set.new(*val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 261) - def _reduce_87(val, _values, result) - result = EDTF::Set.new(val[0]).later! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 264) - def _reduce_88(val, _values, result) - result = [val[0]].flatten - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 265) - def _reduce_89(val, _values, result) - result = val[0] + [val[2]].flatten - result - end -.,., - -# reduce 90 omitted - -# reduce 91 omitted - -# reduce 92 omitted - -# reduce 93 omitted - -# reduce 94 omitted - -module_eval(<<'.,.,', 'edtf.y', 277) - def _reduce_95(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 279) - def _reduce_96(val, _values, result) - result = Date.new(*val[0]).year_precision! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 280) - def _reduce_97(val, _values, result) - result = Date.new(*val[0]).month_precision! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 281) - def _reduce_98(val, _values, result) - result = Date.new(val[0]).year_precision! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 284) - def _reduce_99(val, _values, result) - result = (Date.new(val[0]).day_precision! .. Date.new(val[2]).day_precision!) - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 285) - def _reduce_100(val, _values, result) - result = (Date.new(val[0]).month_precision! .. Date.new(val[2]).month_precision!) - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 286) - def _reduce_101(val, _values, result) - result = (Date.new(val[0]).year_precision! .. Date.new(val[2]).year_precision!) - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 292) - def _reduce_102(val, _values, result) - result = Date.new(val[0][0], val[2], val[4]) - result.unspecified.year[2,2] = val[0][1] - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 297) - def _reduce_103(val, _values, result) - result = Date.new(val[0][0], 1, val[5]) - result.unspecified.year[2,2] = val[0][1] - result.unspecified!(:month) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 303) - def _reduce_104(val, _values, result) - result = Date.new(val[0][0], 1, 1) - result.unspecified.year[2,2] = val[0][1] - result.unspecified!([:month, :day]) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 309) - def _reduce_105(val, _values, result) - result = Date.new(val[0][0], val[2], 1) - result.unspecified.year[2,2] = val[0][1] - result.unspecified!(:day) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 315) - def _reduce_106(val, _values, result) - result = Date.new(val[0], 1, val[5]) - result.unspecified!(:month) - - result - end -.,., - -# reduce 107 omitted - -module_eval(<<'.,.,', 'edtf.y', 322) - def _reduce_108(val, _values, result) - result = uoa(val[1], val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 325) - def _reduce_109(val, _values, result) - result = val[0].year_precision! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 326) - def _reduce_110(val, _values, result) - result = val[0][0].month_precision! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 327) - def _reduce_111(val, _values, result) - result = val[0].day_precision! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 329) - def _reduce_112(val, _values, result) - result = uoa(Date.new(val[0]), val[1], :year) - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 333) - def _reduce_113(val, _values, result) - result = [uoa(val[0].change(:month => val[2]), val[3], [:month, :year])] - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 336) - def _reduce_114(val, _values, result) - result = [uoa(Date.new(val[0], val[2]), val[3], [:year, :month])] - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 339) - def _reduce_115(val, _values, result) - result = [uoa(Date.new(val[0], val[2]), val[4], [:month]), true] - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 342) - def _reduce_116(val, _values, result) - result = [uoa(val[0].change(:month => val[2]), val[4], [:month]), true] - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 348) - def _reduce_117(val, _values, result) - result = uoa(val[0][0].change(:day => val[2]), val[3], val[0][1] ? [:day] : nil) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 351) - def _reduce_118(val, _values, result) - result = uoa(val[0][0].change(:day => val[2]), val[4], [:day]) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 354) - def _reduce_119(val, _values, result) - result = uoa(uoa(Date.new(val[0], val[2], val[5]), val[4], :month), val[6], :day) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 357) - def _reduce_120(val, _values, result) - result = uoa(Date.new(val[0][0], val[0][1], val[2]), val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 360) - def _reduce_121(val, _values, result) - result = uoa(Date.new(val[0][0], val[0][1], val[2]), val[4], [:day]) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 363) - def _reduce_122(val, _values, result) - result = uoa(Date.new(val[0], val[2], val[4]), val[6], [:month, :day]) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 366) - def _reduce_123(val, _values, result) - result = Date.new(val[0], val[2], val[4]) - result = uoa(result, val[6], [:day]) - result = uoa(result, val[8], [:month, :day]) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 371) - def _reduce_124(val, _values, result) - result = val[0].change(:month => val[2], :day => val[4]) - result = uoa(result, val[6], [:month, :day]) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 375) - def _reduce_125(val, _values, result) - result = val[0].change(:month => val[2], :day => val[4]) - result = uoa(result, val[6], [:day]) - result = uoa(result, val[8], [:month, :day]) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 386) - def _reduce_126(val, _values, result) - result = [] - result - end -.,., - -# reduce 127 omitted - -module_eval(<<'.,.,', 'edtf.y', 390) - def _reduce_128(val, _values, result) - result = 0 - result - end -.,., - -# reduce 129 omitted - -# reduce 130 omitted - -# reduce 131 omitted - -# reduce 132 omitted - -# reduce 133 omitted - -# reduce 134 omitted - -# reduce 135 omitted - -# reduce 136 omitted - -# reduce 137 omitted - -# reduce 138 omitted - -module_eval(<<'.,.,', 'edtf.y', 396) - def _reduce_139(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 397) - def _reduce_140(val, _values, result) - result = 10 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 398) - def _reduce_141(val, _values, result) - result = 11 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 399) - def _reduce_142(val, _values, result) - result = 12 - result - end -.,., - -# reduce 143 omitted - -module_eval(<<'.,.,', 'edtf.y', 403) - def _reduce_144(val, _values, result) - result = 13 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 406) - def _reduce_145(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 407) - def _reduce_146(val, _values, result) - result = 10 + val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 408) - def _reduce_147(val, _values, result) - result = 20 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 409) - def _reduce_148(val, _values, result) - result = 21 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 410) - def _reduce_149(val, _values, result) - result = 22 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 411) - def _reduce_150(val, _values, result) - result = 23 - result - end -.,., - -# reduce 151 omitted - -# reduce 152 omitted - -# reduce 153 omitted - -module_eval(<<'.,.,', 'edtf.y', 419) - def _reduce_154(val, _values, result) - result = 24 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 420) - def _reduce_155(val, _values, result) - result = 25 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 421) - def _reduce_156(val, _values, result) - result = 26 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 422) - def _reduce_157(val, _values, result) - result = 27 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 423) - def _reduce_158(val, _values, result) - result = 28 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 424) - def _reduce_159(val, _values, result) - result = 29 - result - end -.,., - -# reduce 160 omitted - -module_eval(<<'.,.,', 'edtf.y', 428) - def _reduce_161(val, _values, result) - result = 30 - result - end -.,., - -# reduce 162 omitted - -module_eval(<<'.,.,', 'edtf.y', 432) - def _reduce_163(val, _values, result) - result = 31 - result - end -.,., - -# reduce 164 omitted - -module_eval(<<'.,.,', 'edtf.y', 436) - def _reduce_165(val, _values, result) - result = 30 + val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 437) - def _reduce_166(val, _values, result) - result = 40 + val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 438) - def _reduce_167(val, _values, result) - result = 50 + val[1] - result - end -.,., - -# reduce 168 omitted - -# reduce 169 omitted - -module_eval(<<'.,.,', 'edtf.y', 445) - def _reduce_170(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 446) - def _reduce_171(val, _values, result) - result = 10 * val[0] + val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 449) - def _reduce_172(val, _values, result) - result = val.zip([100,10,1]).reduce(0) { |s,(a,b)| s += a * b } - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 453) - def _reduce_173(val, _values, result) - result = val.zip([1000,100,10,1]).reduce(0) { |s,(a,b)| s += a * b } - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 457) - def _reduce_174(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 458) - def _reduce_175(val, _values, result) - result = 10 * val[0] + val[1] - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module EDTF diff --git a/test/racc/regress/huia b/test/racc/regress/huia deleted file mode 100644 index 0b75d39735..0000000000 --- a/test/racc/regress/huia +++ /dev/null @@ -1,1392 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' -module Huia - class Parser < Racc::Parser - -module_eval(<<'...end huia.y/module_eval...', 'huia.y', 211) - -attr_accessor :lexer, :scopes, :state - -def initialize lexer - @lexer = lexer - @state = [] - @scopes = [] - push_scope -end - -def ast - @ast ||= do_parse - @scopes.first -end - -def on_error t, val, vstack - line = lexer.line - col = lexer.column - message = "Unexpected #{token_to_str t} at #{lexer.filename} line #{line}:#{col}:\n\n" - - start = line - 5 > 0 ? line - 5 : 0 - i_size = line.to_s.size - (start..(start + 5)).each do |i| - message << sprintf("\t%#{i_size}d: %s\n", i, lexer.get_line(i)) - message << "\t#{' ' * i_size} #{'-' * (col - 1)}^\n" if i == line - end - - raise SyntaxError, message -end - -def next_token - nt = lexer.next_computed_token - # just use a state stack for now, we'll have to do something - # more sophisticated soon. - if nt && nt.first == :state - if nt.last - state.push << nt.last - else - state.pop - end - next_token - else - nt - end -end - -def push_scope - new_scope = Huia::AST::Scope.new scope - new_scope.file = lexer.filename - new_scope.line = lexer.line - new_scope.column = lexer.column - scopes.push new_scope - new_scope -end - -def pop_scope - scopes.pop -end - -def scope - scopes.last -end - -def binary left, right, method - node(:MethodCall, left, node(:CallSignature, method, [right])) -end - -def unary left, method - node(:MethodCall, left, node(:CallSignature, method)) -end - -def node type, *args - Huia::AST.const_get(type).new(*args).tap do |n| - n.file = lexer.filename - n.line = lexer.line - n.column = lexer.column - end -end -alias n node - -def allocate_local name - node(:Variable, name).tap do |n| - scope.allocate_local n - end -end - -def allocate_local_assignment name, value - node(:Assignment, name, value).tap do |n| - scope.allocate_local n - end -end - -def this_closure - allocate_local('@') -end - -def scope_instance - node(:ScopeInstance, scope) -end - -def constant name - return scope_instance if name == 'self' - node(:Constant, name) -end - -def to_string expr - node(:MethodCall, expr, node(:CallSignature, 'toString')) -end -...end huia.y/module_eval... -##### State transition tables begin ### - -clist = [ -'81,106,40,37,61,62,123,153,135,71,72,77,155,178,179,39,164,37,37,5,6', -'137,152,73,74,75,36,36,76,28,154,80,166,172,180,22,23,37,26,27,182,60', -'63,19,164,40,36,61,62,186,,33,71,72,77,,,134,39,133,129,37,5,6,,,73', -'74,75,,36,76,28,134,80,169,129,,22,23,,26,27,,60,63,19,,40,,61,62,,', -'33,71,72,77,,,,39,,,37,,,,,73,74,75,,36,76,28,,80,,,,22,23,,26,27,,60', -'63,19,,40,,61,62,,,33,71,72,77,,,,39,,,37,,,,,73,74,75,,36,76,28,,80', -',,,22,23,,26,27,,60,63,19,,40,,61,62,,,33,71,72,77,,,,39,,,37,,,,,73', -'74,75,,36,76,28,,80,,,,22,23,,26,27,,60,63,19,,40,,61,62,,,33,71,72', -'77,,114,,39,,,37,,,113,,73,74,75,,36,76,28,,80,,,,22,23,,26,27,,60,63', -'19,,40,,61,62,,,33,71,72,77,,,,39,,,37,,,,,73,74,75,,36,76,28,,80,,', -',22,23,,26,27,,60,63,19,,40,,61,62,,,33,71,72,77,,,,39,,,37,,,,,73,74', -'75,,36,76,28,,80,,,,22,23,,26,27,,60,63,19,,40,,61,62,,,33,71,72,77', -',,,39,,,37,,,,,73,74,75,,36,76,28,,80,,,,22,23,,26,27,,60,63,19,,40', -',61,62,,,33,71,72,77,,,,39,,,37,,,,,73,74,75,,36,76,28,,80,,,,22,23', -',26,27,,60,63,19,,40,,61,62,,,33,71,72,77,,,,39,,,37,,,,,73,74,75,,36', -'76,28,,80,,,,22,23,,26,27,,60,63,19,,40,,61,62,,,33,71,72,77,,,,39,', -',37,,,,,73,74,75,,36,76,28,,80,,,,22,23,,26,27,,60,63,19,,40,,61,62', -',,33,71,72,77,,,,39,,,37,,,,,73,74,75,,36,76,28,,80,,,,22,23,,26,27', -',60,63,19,,40,,61,62,,,33,71,72,77,,,,39,,,37,,,,,73,74,75,,36,76,28', -',80,,,,22,23,,26,27,,60,63,19,,40,,61,62,,,33,71,72,77,,,,39,,,37,,', -',,73,74,75,,36,76,28,,80,,,,22,23,,26,27,,60,63,19,,40,,61,62,,,33,71', -'72,77,,,,39,,,37,,,,,73,74,75,,36,76,28,,80,,,,22,23,,26,27,,60,63,19', -',40,,61,62,,,33,71,72,77,,,,39,,,37,,,,,73,74,75,,36,76,28,,80,,,,22', -'23,,26,27,,60,63,19,,40,,61,62,,,33,71,72,77,,,,39,,,37,,,,,73,74,75', -',36,76,28,,80,,,,22,23,,26,27,,60,63,19,,40,,61,62,,,33,71,72,77,,,', -'39,,,37,,,,,73,74,75,,36,76,28,,80,,,,22,23,,26,27,,60,63,19,,40,,61', -'62,,,33,71,72,77,,,,39,,,37,,,,,73,74,75,,36,76,28,,80,,,,22,23,,26', -'27,,60,63,19,,40,,61,62,,,33,71,72,77,,,,39,,,37,,,,,73,74,75,,36,76', -'28,,80,,,,22,23,,26,27,,60,63,19,,40,,61,62,,,33,71,72,77,,,,39,,,37', -',,,,73,74,75,,36,76,28,,80,,,,22,23,,26,27,,60,63,19,,40,,61,62,,,33', -'71,72,77,,,,39,,,37,,,,,73,74,75,,36,76,28,,80,,,,22,23,,26,27,,60,63', -'19,,40,,61,62,,,33,71,72,77,,,,39,,,37,,,,,73,74,75,,36,76,28,,80,,', -',22,23,,26,27,,60,63,19,,40,,61,62,,,33,71,72,77,,,,39,,,37,,,,,73,74', -'75,,36,76,28,,80,,,,22,23,,26,27,,60,63,19,,40,,61,62,,,33,71,72,77', -',,160,39,,,37,5,6,,,73,74,75,,36,76,28,,80,,,,22,23,,26,27,,60,63,19', -',40,,61,62,,,33,71,72,77,,,,39,,,37,,,,,73,74,75,,36,76,28,,80,,,,22', -'23,,26,27,,60,63,19,,40,,61,62,,,33,71,72,77,,,,39,,,37,,,,,73,74,75', -',36,76,28,,80,,,,22,23,,26,27,,60,63,19,,40,,61,62,,,33,71,72,77,,,', -'39,,,37,,,,,73,74,75,,36,76,28,,80,,,,22,23,,26,27,,60,63,19,,40,,61', -'62,,,33,71,72,77,,,,39,,,37,,,,,73,74,75,,36,76,28,,80,,,,22,23,,26', -'27,,60,63,19,,40,,61,62,,,33,71,72,77,,,,39,,,37,,,,,73,74,75,,36,76', -'28,,80,,,,22,23,,26,27,,60,63,19,,40,,61,62,,,33,71,72,77,,,160,39,', -',37,5,6,,,73,74,75,,36,76,28,,80,,,,22,23,,26,27,,60,63,19,,40,,61,62', -',,33,71,72,77,,,,39,,,37,,,,,73,74,75,,36,76,28,,80,,,,22,23,,26,27', -',60,63,19,85,86,87,88,,84,,33,89,,,,,84,91,5,6,85,86,87,88,,91,,,89', -',,,,84,,92,93,94,95,96,97,98,91,92,93,94,95,96,97,98,,90,,,,,,,,,92', -'93,94,95,96,97,98,,90,85,86,87,88,,,,,89,,,,,84,,85,86,87,88,156,,,91', -'89,,,,,84,,,,,,,,,91,,,92,93,94,95,96,97,98,,90,,,,,,,92,93,94,95,96', -'97,98,,90,85,86,87,88,,,,,89,,,,,84,,165,85,86,87,88,,,91,,89,,,,167', -'84,,,,,,,,,91,,92,93,94,95,96,97,98,,90,,,,,,,,92,93,94,95,96,97,98', -',90,85,86,87,88,,,,,89,,,,,84,,85,86,87,88,,,,91,89,,,,,84,,,,,,,,,91', -',,92,93,94,95,96,97,98,,90,,,,,,,92,93,94,95,96,97,98,,90,85,86,87,88', -',,,,89,,,,,84,,85,86,87,88,,,,91,89,,,,,84,,,,,,,,,91,,,92,93,94,95', -'96,97,98,,90,,,,,,,92,93,94,95,96,97,98,,90,85,86,87,88,,,,,89,,,,,84', -',85,86,87,88,,,,91,89,,,,,84,,,,,,,,,91,,,92,93,94,95,96,97,98,,90,', -',,,,,92,93,94,95,96,97,98,,90,85,86,87,88,,,,,89,,,,,84,,85,86,87,88', -',,,91,89,,,,,84,,,,,,,,,91,,,92,93,94,95,96,97,98,,90,,,,,,,92,93,94', -'95,96,97,98,,90,85,86,87,88,,,,,89,,160,,,84,,5,6,85,86,87,88,,91,,', -'89,,,,,84,,,,,,,,,91,92,93,94,95,96,97,98,,90,,,,,,,,,92,93,94,95,96', -'97,98,,90,85,86,87,88,,,,,89,,,,,84,,85,86,87,88,,,,91,89,,,,,84,,181', -',,,,,,91,,,92,93,94,95,96,97,98,,90,,,,,,,92,93,94,95,96,97,98,,90,85', -'86,87,88,,,,,89,,,,,84,,85,86,87,88,,,,91,89,,,,,84,,,,,,,,,91,,,92', -'93,94,95,96,97,98,,90,,,,,,,92,93,94,95,96,97,98,,90,87,88,,,,,89,,', -',,84,87,88,,,,,89,,91,,,84,,87,88,,,,,89,91,,,,84,,92,93,94,95,96,97', -'98,91,90,,,,92,93,94,95,96,97,98,,90,,,,,92,93,94,95,96,97,98,89,90', -'87,88,,84,,,89,,,,,84,91,,,,,,,,91,,,89,,,,,84,,92,93,94,95,96,97,98', -'91,92,93,94,95,96,97,98,,90,,89,,,,,84,,92,93,94,95,96,97,98,91,89,', -',,,84,,,,,89,,,,91,84,,92,93,94,95,96,97,98,91,,,,,,,,92,93,94,95,96', -'97,98,,,,92,93,94,95,96,97,98' ] - racc_action_table = arr = ::Array.new(2249, 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 = [ -'1,33,1,34,1,1,40,100,81,1,1,1,102,161,161,1,112,33,1,1,1,84,100,1,1', -'1,33,1,1,1,102,1,121,131,163,1,1,84,1,1,178,1,1,1,179,0,84,0,0,183,', -'1,0,0,0,,,80,0,80,80,0,0,0,,,0,0,0,,0,0,0,128,0,128,128,,0,0,,0,0,,0', -'0,0,,19,,19,19,,,0,19,19,19,,,,19,,,19,,,,,19,19,19,,19,19,19,,19,,', -',19,19,,19,19,,19,19,19,,23,,23,23,,,19,23,23,23,,,,23,,,23,,,,,23,23', -'23,,23,23,23,,23,,,,23,23,,23,23,,23,23,23,,27,,27,27,,,23,27,27,27', -',,,27,,,27,,,,,27,27,27,,27,27,27,,27,,,,27,27,,27,27,,27,27,27,,37', -',37,37,,,27,37,37,37,,37,,37,,,37,,,37,,37,37,37,,37,37,37,,37,,,,37', -'37,,37,37,,37,37,37,,39,,39,39,,,37,39,39,39,,,,39,,,39,,,,,39,39,39', -',39,39,39,,39,,,,39,39,,39,39,,39,39,39,,60,,60,60,,,39,60,60,60,,,', -'60,,,60,,,,,60,60,60,,60,60,60,,60,,,,60,60,,60,60,,60,60,60,,61,,61', -'61,,,60,61,61,61,,,,61,,,61,,,,,61,61,61,,61,61,61,,61,,,,61,61,,61', -'61,,61,61,61,,62,,62,62,,,61,62,62,62,,,,62,,,62,,,,,62,62,62,,62,62', -'62,,62,,,,62,62,,62,62,,62,62,62,,63,,63,63,,,62,63,63,63,,,,63,,,63', -',,,,63,63,63,,63,63,63,,63,,,,63,63,,63,63,,63,63,63,,85,,85,85,,,63', -'85,85,85,,,,85,,,85,,,,,85,85,85,,85,85,85,,85,,,,85,85,,85,85,,85,85', -'85,,86,,86,86,,,85,86,86,86,,,,86,,,86,,,,,86,86,86,,86,86,86,,86,,', -',86,86,,86,86,,86,86,86,,87,,87,87,,,86,87,87,87,,,,87,,,87,,,,,87,87', -'87,,87,87,87,,87,,,,87,87,,87,87,,87,87,87,,88,,88,88,,,87,88,88,88', -',,,88,,,88,,,,,88,88,88,,88,88,88,,88,,,,88,88,,88,88,,88,88,88,,89', -',89,89,,,88,89,89,89,,,,89,,,89,,,,,89,89,89,,89,89,89,,89,,,,89,89', -',89,89,,89,89,89,,90,,90,90,,,89,90,90,90,,,,90,,,90,,,,,90,90,90,,90', -'90,90,,90,,,,90,90,,90,90,,90,90,90,,91,,91,91,,,90,91,91,91,,,,91,', -',91,,,,,91,91,91,,91,91,91,,91,,,,91,91,,91,91,,91,91,91,,92,,92,92', -',,91,92,92,92,,,,92,,,92,,,,,92,92,92,,92,92,92,,92,,,,92,92,,92,92', -',92,92,92,,93,,93,93,,,92,93,93,93,,,,93,,,93,,,,,93,93,93,,93,93,93', -',93,,,,93,93,,93,93,,93,93,93,,94,,94,94,,,93,94,94,94,,,,94,,,94,,', -',,94,94,94,,94,94,94,,94,,,,94,94,,94,94,,94,94,94,,95,,95,95,,,94,95', -'95,95,,,,95,,,95,,,,,95,95,95,,95,95,95,,95,,,,95,95,,95,95,,95,95,95', -',96,,96,96,,,95,96,96,96,,,,96,,,96,,,,,96,96,96,,96,96,96,,96,,,,96', -'96,,96,96,,96,96,96,,97,,97,97,,,96,97,97,97,,,,97,,,97,,,,,97,97,97', -',97,97,97,,97,,,,97,97,,97,97,,97,97,97,,98,,98,98,,,97,98,98,98,,,', -'98,,,98,,,,,98,98,98,,98,98,98,,98,,,,98,98,,98,98,,98,98,98,,111,,111', -'111,,,98,111,111,111,,,111,111,,,111,111,111,,,111,111,111,,111,111', -'111,,111,,,,111,111,,111,111,,111,111,111,,123,,123,123,,,111,123,123', -'123,,,,123,,,123,,,,,123,123,123,,123,123,123,,123,,,,123,123,,123,123', -',123,123,123,,129,,129,129,,,123,129,129,129,,,,129,,,129,,,,,129,129', -'129,,129,129,129,,129,,,,129,129,,129,129,,129,129,129,,153,,153,153', -',,129,153,153,153,,,,153,,,153,,,,,153,153,153,,153,153,153,,153,,,', -'153,153,,153,153,,153,153,153,,155,,155,155,,,153,155,155,155,,,,155', -',,155,,,,,155,155,155,,155,155,155,,155,,,,155,155,,155,155,,155,155', -'155,,156,,156,156,,,155,156,156,156,,,,156,,,156,,,,,156,156,156,,156', -'156,156,,156,,,,156,156,,156,156,,156,156,156,,157,,157,157,,,156,157', -'157,157,,,157,157,,,157,157,157,,,157,157,157,,157,157,157,,157,,,,157', -'157,,157,157,,157,157,157,,180,,180,180,,,157,180,180,180,,,,180,,,180', -',,,,180,180,180,,180,180,180,,180,,,,180,180,,180,180,,180,180,180,3', -'3,3,3,,142,,180,3,,,,,3,142,3,3,99,99,99,99,,3,,,99,,,,,99,,142,142', -'142,142,142,142,142,99,3,3,3,3,3,3,3,,3,,,,,,,,,99,99,99,99,99,99,99', -',99,101,101,101,101,,,,,101,,,,,101,,104,104,104,104,104,,,101,104,', -',,,104,,,,,,,,,104,,,101,101,101,101,101,101,101,,101,,,,,,,104,104', -'104,104,104,104,104,,104,117,117,117,117,,,,,117,,,,,117,,117,122,122', -'122,122,,,117,,122,,,,122,122,,,,,,,,,122,,117,117,117,117,117,117,117', -',117,,,,,,,,122,122,122,122,122,122,122,,122,144,144,144,144,,,,,144', -',,,,144,,145,145,145,145,,,,144,145,,,,,145,,,,,,,,,145,,,144,144,144', -'144,144,144,144,,144,,,,,,,145,145,145,145,145,145,145,,145,146,146', -'146,146,,,,,146,,,,,146,,147,147,147,147,,,,146,147,,,,,147,,,,,,,,', -'147,,,146,146,146,146,146,146,146,,146,,,,,,,147,147,147,147,147,147', -'147,,147,148,148,148,148,,,,,148,,,,,148,,149,149,149,149,,,,148,149', -',,,,149,,,,,,,,,149,,,148,148,148,148,148,148,148,,148,,,,,,,149,149', -'149,149,149,149,149,,149,150,150,150,150,,,,,150,,,,,150,,151,151,151', -'151,,,,150,151,,,,,151,,,,,,,,,151,,,150,150,150,150,150,150,150,,150', -',,,,,,151,151,151,151,151,151,151,,151,158,158,158,158,,,,,158,,158', -',,158,,158,158,168,168,168,168,,158,,,168,,,,,168,,,,,,,,,168,158,158', -'158,158,158,158,158,,158,,,,,,,,,168,168,168,168,168,168,168,,168,171', -'171,171,171,,,,,171,,,,,171,,173,173,173,173,,,,171,173,,,,,173,,171', -',,,,,,173,,,171,171,171,171,171,171,171,,171,,,,,,,173,173,173,173,173', -'173,173,,173,175,175,175,175,,,,,175,,,,,175,,185,185,185,185,,,,175', -'185,,,,,185,,,,,,,,,185,,,175,175,175,175,175,175,175,,175,,,,,,,185', -'185,185,185,185,185,185,,185,125,125,,,,,125,,,,,125,126,126,,,,,126', -',125,,,126,,138,138,,,,,138,126,,,,138,,125,125,125,125,125,125,125', -'138,125,,,,126,126,126,126,126,126,126,,126,,,,,138,138,138,138,138', -'138,138,124,138,139,139,,124,,,139,,,,,139,124,,,,,,,,139,,,127,,,,', -'127,,124,124,124,124,124,124,124,127,139,139,139,139,139,139,139,,139', -',140,,,,,140,,127,127,127,127,127,127,127,140,141,,,,,141,,,,,143,,', -',141,143,,140,140,140,140,140,140,140,143,,,,,,,,141,141,141,141,141', -'141,141,,,,143,143,143,143,143,143,143' ] - racc_action_check = arr = ::Array.new(2249, 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 = [ - 43, 0, nil, 1416, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 86, - nil, nil, nil, 129, nil, nil, nil, 172, nil, nil, - nil, nil, nil, -1, -15, nil, nil, 215, nil, 258, - 3, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 301, 344, 387, 430, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 27, 8, nil, nil, 19, 473, 516, 559, 602, 645, - 688, 731, 774, 817, 860, 903, 946, 989, 1032, 1433, - -15, 1482, -10, nil, 1497, nil, nil, nil, nil, nil, - nil, 1075, 14, nil, nil, nil, nil, 1546, nil, nil, - nil, 13, 1562, 1118, 2123, 2059, 2071, 2148, 43, 1161, - nil, 3, nil, nil, nil, nil, nil, nil, 2084, 2131, - 2173, 2188, 1408, 2198, 1611, 1626, 1675, 1690, 1739, 1754, - 1803, 1818, nil, 1204, nil, 1247, 1290, 1333, 1867, nil, - nil, -8, nil, 31, nil, nil, nil, nil, 1884, nil, - nil, 1933, nil, 1948, nil, 1997, nil, nil, 21, 42, - 1376, nil, nil, 36, nil, 2012, nil ] - -racc_action_default = [ - -140, -140, -1, -4, -5, -6, -7, -10, -11, -12, - -13, -14, -15, -16, -17, -18, -19, -20, -21, -23, - -24, -25, -26, -140, -30, -31, -32, -140, -37, -55, - -56, -57, -60, -140, -63, -64, -65, -140, -73, -140, - -76, -77, -78, -79, -80, -81, -82, -83, -84, -85, - -86, -87, -88, -89, -90, -91, -107, -108, -109, -110, - -140, -140, -140, -140, -115, -116, -117, -118, -119, -120, - -121, -122, -123, -124, -125, -126, -127, -128, -129, -130, - -140, -140, -2, -3, -140, -140, -140, -140, -140, -140, - -140, -140, -140, -140, -140, -140, -140, -140, -140, -22, - -140, -28, -140, -34, -140, -61, -62, -74, -38, -39, - -40, -140, -140, -46, -47, -48, -49, -69, -66, -67, - -68, -71, -140, -140, -111, -112, -113, -114, -140, -140, - -133, -135, -136, -137, -138, 187, -58, -59, -93, -94, - -95, -96, -97, -98, -99, -100, -101, -102, -103, -104, - -105, -106, -27, -140, -33, -140, -140, -140, -4, -43, - -44, -140, -50, -52, -54, -70, -72, -75, -92, -131, - -134, -140, -139, -29, -35, -36, -41, -42, -9, -140, - -140, -132, -8, -140, -51, -53, -45 ] - -racc_goto_table = [ - 99, 82, 103, 83, 101, 1, 105, 130, 104, 183, - 100, 102, 159, 162, 121, 108, 109, 110, 117, 111, - 122, 115, 112, 161, 116, 107, 118, 119, 120, 128, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 124, 125, 126, 127, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 170, nil, 136, 176, 177, - nil, nil, nil, nil, nil, nil, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 184, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 158, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 168, nil, nil, nil, nil, nil, - 171, nil, nil, nil, nil, nil, 157, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 174, nil, nil, nil, 173, nil, 104, 175, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 82, 83, nil, - nil, 185 ] - -racc_goto_check = [ - 3, 2, 24, 4, 3, 1, 40, 77, 3, 5, - 20, 23, 30, 35, 25, 26, 27, 28, 3, 29, - 3, 31, 32, 33, 34, 43, 44, 45, 46, 75, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 3, 3, 3, 3, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 77, nil, 40, 30, 30, - nil, nil, nil, nil, nil, nil, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 35, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 3, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 3, nil, nil, nil, nil, nil, - 3, nil, nil, nil, nil, nil, 1, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 24, nil, nil, nil, 3, nil, 3, 3, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 2, 4, nil, - nil, 3 ] - -racc_goto_pointer = [ - nil, 5, 0, -19, 0, -169, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - -13, nil, nil, -16, -25, -23, -22, -21, -20, -18, - -99, -16, -15, -89, -13, -99, nil, nil, nil, nil, - -27, nil, nil, -9, -11, -10, -9, 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, -51, nil, -73, nil ] - -racc_goto_default = [ - nil, nil, 2, 3, 4, nil, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, - nil, 24, 25, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 163, 29, 30, 31, - 32, 34, 35, 38, nil, nil, nil, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 64, 65, 66, 67, - 68, 69, 70, 78, 79, nil, 132, nil, 131 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 54, :_reduce_none, - 2, 54, :_reduce_2, - 2, 55, :_reduce_3, - 1, 55, :_reduce_4, - 1, 55, :_reduce_5, - 1, 57, :_reduce_none, - 1, 57, :_reduce_none, - 1, 58, :_reduce_none, - 0, 58, :_reduce_none, - 1, 56, :_reduce_none, - 1, 56, :_reduce_none, - 1, 56, :_reduce_none, - 1, 56, :_reduce_none, - 1, 56, :_reduce_none, - 1, 56, :_reduce_none, - 1, 56, :_reduce_none, - 1, 56, :_reduce_none, - 1, 56, :_reduce_none, - 1, 56, :_reduce_none, - 1, 68, :_reduce_none, - 1, 68, :_reduce_none, - 2, 69, :_reduce_22, - 1, 70, :_reduce_23, - 1, 66, :_reduce_none, - 1, 66, :_reduce_none, - 1, 71, :_reduce_26, - 3, 72, :_reduce_27, - 1, 73, :_reduce_28, - 3, 73, :_reduce_29, - 1, 67, :_reduce_none, - 1, 67, :_reduce_none, - 1, 74, :_reduce_32, - 3, 75, :_reduce_33, - 1, 76, :_reduce_34, - 3, 76, :_reduce_35, - 3, 77, :_reduce_36, - 1, 64, :_reduce_37, - 1, 78, :_reduce_none, - 1, 78, :_reduce_none, - 1, 78, :_reduce_none, - 3, 79, :_reduce_41, - 3, 80, :_reduce_42, - 2, 81, :_reduce_43, - 1, 83, :_reduce_44, - 5, 84, :_reduce_45, - 1, 85, :_reduce_46, - 1, 87, :_reduce_47, - 1, 82, :_reduce_none, - 1, 82, :_reduce_none, - 1, 86, :_reduce_none, - 3, 86, :_reduce_none, - 1, 88, :_reduce_52, - 3, 88, :_reduce_53, - 1, 89, :_reduce_54, - 1, 63, :_reduce_none, - 1, 63, :_reduce_none, - 1, 63, :_reduce_none, - 3, 90, :_reduce_58, - 3, 90, :_reduce_59, - 1, 91, :_reduce_60, - 2, 92, :_reduce_61, - 2, 92, :_reduce_62, - 1, 93, :_reduce_none, - 1, 93, :_reduce_none, - 1, 95, :_reduce_65, - 2, 96, :_reduce_66, - 1, 97, :_reduce_none, - 1, 97, :_reduce_none, - 1, 98, :_reduce_none, - 2, 98, :_reduce_none, - 1, 99, :_reduce_none, - 2, 99, :_reduce_none, - 1, 94, :_reduce_73, - 2, 94, :_reduce_74, - 3, 60, :_reduce_75, - 1, 65, :_reduce_76, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 3, 100, :_reduce_92, - 3, 101, :_reduce_93, - 3, 102, :_reduce_94, - 3, 103, :_reduce_95, - 3, 104, :_reduce_96, - 3, 105, :_reduce_97, - 3, 106, :_reduce_98, - 3, 107, :_reduce_99, - 3, 108, :_reduce_100, - 3, 109, :_reduce_101, - 3, 110, :_reduce_102, - 3, 111, :_reduce_103, - 3, 112, :_reduce_104, - 3, 113, :_reduce_105, - 3, 114, :_reduce_106, - 1, 62, :_reduce_none, - 1, 62, :_reduce_none, - 1, 62, :_reduce_none, - 1, 62, :_reduce_none, - 2, 115, :_reduce_111, - 2, 116, :_reduce_112, - 2, 117, :_reduce_113, - 2, 118, :_reduce_114, - 1, 59, :_reduce_none, - 1, 59, :_reduce_none, - 1, 59, :_reduce_none, - 1, 59, :_reduce_none, - 1, 59, :_reduce_none, - 1, 59, :_reduce_none, - 1, 59, :_reduce_none, - 1, 120, :_reduce_122, - 1, 119, :_reduce_123, - 1, 122, :_reduce_124, - 1, 123, :_reduce_125, - 1, 124, :_reduce_126, - 1, 125, :_reduce_127, - 1, 121, :_reduce_128, - 1, 121, :_reduce_none, - 1, 121, :_reduce_none, - 3, 126, :_reduce_131, - 3, 129, :_reduce_132, - 1, 128, :_reduce_133, - 2, 128, :_reduce_134, - 1, 130, :_reduce_135, - 1, 130, :_reduce_136, - 2, 127, :_reduce_137, - 1, 131, :_reduce_138, - 2, 131, :_reduce_139 ] - -racc_reduce_n = 140 - -racc_shift_n = 187 - -racc_token_table = { - false => 0, - :error => 1, - :IDENTIFIER => 2, - :EQUAL => 3, - :PLUS => 4, - :MINUS => 5, - :ASTERISK => 6, - :FWD_SLASH => 7, - :COLON => 8, - :FLOAT => 9, - :INTEGER => 10, - :STRING => 11, - :EXPO => 12, - :INDENT => 13, - :OUTDENT => 14, - :OPAREN => 15, - :CPAREN => 16, - :DOT => 17, - :SIGNATURE => 18, - :NL => 19, - :EOF => 20, - :PIPE => 21, - :COMMA => 22, - :NIL => 23, - :TRUE => 24, - :FALSE => 25, - :EQUALITY => 26, - :CALL => 27, - :SELF => 28, - :CONSTANT => 29, - :CHAR => 30, - :DOUBLE_TICK_STRING => 31, - :DOUBLE_TICK_STRING_END => 32, - :INTERPOLATE_START => 33, - :INTERPOLATE_END => 34, - :BOX => 35, - :LSQUARE => 36, - :RSQUARE => 37, - :FACES => 38, - :LFACE => 39, - :RFACE => 40, - :BANG => 41, - :TILDE => 42, - :RETURN => 43, - :NOT_EQUALITY => 44, - :OR => 45, - :AND => 46, - :GT => 47, - :LT => 48, - :GTE => 49, - :LTE => 50, - :AT => 51, - :PERCENT => 52 } - -racc_nt_base = 53 - -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", - "IDENTIFIER", - "EQUAL", - "PLUS", - "MINUS", - "ASTERISK", - "FWD_SLASH", - "COLON", - "FLOAT", - "INTEGER", - "STRING", - "EXPO", - "INDENT", - "OUTDENT", - "OPAREN", - "CPAREN", - "DOT", - "SIGNATURE", - "NL", - "EOF", - "PIPE", - "COMMA", - "NIL", - "TRUE", - "FALSE", - "EQUALITY", - "CALL", - "SELF", - "CONSTANT", - "CHAR", - "DOUBLE_TICK_STRING", - "DOUBLE_TICK_STRING_END", - "INTERPOLATE_START", - "INTERPOLATE_END", - "BOX", - "LSQUARE", - "RSQUARE", - "FACES", - "LFACE", - "RFACE", - "BANG", - "TILDE", - "RETURN", - "NOT_EQUALITY", - "OR", - "AND", - "GT", - "LT", - "GTE", - "LTE", - "AT", - "PERCENT", - "$start", - "statements", - "statement", - "expr", - "eol", - "nlq", - "literal", - "grouped_expr", - "binary_op", - "unary_op", - "method_call", - "constant", - "variable", - "array", - "hash", - "return", - "return_expr", - "return_nil", - "empty_array", - "array_list", - "array_items", - "empty_hash", - "hash_list", - "hash_items", - "hash_item", - "indented", - "indented_w_stmts", - "indented_w_expr", - "indented_wo_stmts", - "indent", - "outdent", - "indent_w_args", - "indent_pipe", - "indent_args", - "indent_wo_args", - "indent_arg", - "arg_var", - "method_call_on_object", - "method_call_on_self", - "method_call_on_closure", - "call_signature", - "call_arguments", - "call_simple_name", - "call_argument", - "call_passed_arg", - "call_passed_simple", - "call_passed_indented", - "assignment", - "addition", - "subtraction", - "multiplication", - "division", - "exponentiation", - "modulo", - "equality", - "not_equality", - "logical_or", - "logical_and", - "greater_than", - "less_than", - "greater_or_eq", - "less_or_eq", - "unary_not", - "unary_plus", - "unary_minus", - "unary_complement", - "integer", - "float", - "string", - "nil", - "true", - "false", - "self", - "interpolated_string", - "empty_string", - "interpolated_string_contents", - "interpolation", - "interpolated_string_chunk", - "chars" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -# reduce 1 omitted - -module_eval(<<'.,.,', 'huia.y', 44) - def _reduce_2(val, _values, result) - return scope - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 46) - def _reduce_3(val, _values, result) - return scope.append val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 47) - def _reduce_4(val, _values, result) - return scope.append val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 48) - def _reduce_5(val, _values, result) - return scope - result - end -.,., - -# reduce 6 omitted - -# reduce 7 omitted - -# reduce 8 omitted - -# reduce 9 omitted - -# reduce 10 omitted - -# reduce 11 omitted - -# reduce 12 omitted - -# reduce 13 omitted - -# reduce 14 omitted - -# reduce 15 omitted - -# reduce 16 omitted - -# reduce 17 omitted - -# reduce 18 omitted - -# reduce 19 omitted - -# reduce 20 omitted - -# reduce 21 omitted - -module_eval(<<'.,.,', 'huia.y', 66) - def _reduce_22(val, _values, result) - return n(:Return, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 67) - def _reduce_23(val, _values, result) - return n(:Return, n(:Nil)) - result - end -.,., - -# reduce 24 omitted - -# reduce 25 omitted - -module_eval(<<'.,.,', 'huia.y', 72) - def _reduce_26(val, _values, result) - return n :Array - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 74) - def _reduce_27(val, _values, result) - return val[1] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 75) - def _reduce_28(val, _values, result) - return n :Array, [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 76) - def _reduce_29(val, _values, result) - val[0].append(val[2]); return val[0] - result - end -.,., - -# reduce 30 omitted - -# reduce 31 omitted - -module_eval(<<'.,.,', 'huia.y', 80) - def _reduce_32(val, _values, result) - return n :Hash - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 81) - def _reduce_33(val, _values, result) - return val[1] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 82) - def _reduce_34(val, _values, result) - return n :Hash, val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 83) - def _reduce_35(val, _values, result) - val[0].append(val[2]); return val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 84) - def _reduce_36(val, _values, result) - return n :HashItem, val[0], val[2] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 86) - def _reduce_37(val, _values, result) - return constant val[0] - result - end -.,., - -# reduce 38 omitted - -# reduce 39 omitted - -# reduce 40 omitted - -module_eval(<<'.,.,', 'huia.y', 91) - def _reduce_41(val, _values, result) - return val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 92) - def _reduce_42(val, _values, result) - return val[0].append(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 93) - def _reduce_43(val, _values, result) - return val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 94) - def _reduce_44(val, _values, result) - return pop_scope - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 97) - def _reduce_45(val, _values, result) - return val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 98) - def _reduce_46(val, _values, result) - return push_scope - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 99) - def _reduce_47(val, _values, result) - return push_scope - result - end -.,., - -# reduce 48 omitted - -# reduce 49 omitted - -# reduce 50 omitted - -# reduce 51 omitted - -module_eval(<<'.,.,', 'huia.y', 105) - def _reduce_52(val, _values, result) - return scope.add_argument val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 106) - def _reduce_53(val, _values, result) - return n :Assignment, val[0], val[2] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 107) - def _reduce_54(val, _values, result) - return n :Variable, val[0] - result - end -.,., - -# reduce 55 omitted - -# reduce 56 omitted - -# reduce 57 omitted - -module_eval(<<'.,.,', 'huia.y', 112) - def _reduce_58(val, _values, result) - return n :MethodCall, val[0], val[2] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 113) - def _reduce_59(val, _values, result) - return n :MethodCall, val[0], n(:CallSignature, val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 114) - def _reduce_60(val, _values, result) - return n :MethodCall, scope_instance, val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 116) - def _reduce_61(val, _values, result) - return n :MethodCall, this_closure, val[1] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 117) - def _reduce_62(val, _values, result) - return n :MethodCall, this_closure, n(:CallSignature, val[1]) - result - end -.,., - -# reduce 63 omitted - -# reduce 64 omitted - -module_eval(<<'.,.,', 'huia.y', 121) - def _reduce_65(val, _values, result) - return n :CallSignature, val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 122) - def _reduce_66(val, _values, result) - return n :CallSignature, val[0], [val[1]] - result - end -.,., - -# reduce 67 omitted - -# reduce 68 omitted - -# reduce 69 omitted - -# reduce 70 omitted - -# reduce 71 omitted - -# reduce 72 omitted - -module_eval(<<'.,.,', 'huia.y', 129) - def _reduce_73(val, _values, result) - return val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 130) - def _reduce_74(val, _values, result) - return val[0].concat_signature val[1] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 132) - def _reduce_75(val, _values, result) - return n :Expression, val[1] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 134) - def _reduce_76(val, _values, result) - return allocate_local val[0] - result - end -.,., - -# reduce 77 omitted - -# reduce 78 omitted - -# reduce 79 omitted - -# reduce 80 omitted - -# reduce 81 omitted - -# reduce 82 omitted - -# reduce 83 omitted - -# reduce 84 omitted - -# reduce 85 omitted - -# reduce 86 omitted - -# reduce 87 omitted - -# reduce 88 omitted - -# reduce 89 omitted - -# reduce 90 omitted - -# reduce 91 omitted - -module_eval(<<'.,.,', 'huia.y', 152) - def _reduce_92(val, _values, result) - return allocate_local_assignment val[0], val[2] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 153) - def _reduce_93(val, _values, result) - return binary val[0], val[2], 'plus:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 154) - def _reduce_94(val, _values, result) - return binary val[0], val[2], 'minus:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 155) - def _reduce_95(val, _values, result) - return binary val[0], val[2], 'multiplyBy:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 156) - def _reduce_96(val, _values, result) - return binary val[0], val[2], 'divideBy:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 157) - def _reduce_97(val, _values, result) - return binary val[0], val[2], 'toThePowerOf:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 158) - def _reduce_98(val, _values, result) - return binary val[0], val[2], 'moduloOf:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 159) - def _reduce_99(val, _values, result) - return binary val[0], val[2], 'isEqualTo:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 160) - def _reduce_100(val, _values, result) - return binary val[0], val[2], 'isNotEqualTo:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 161) - def _reduce_101(val, _values, result) - return binary val[0], val[2], 'logicalOr:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 162) - def _reduce_102(val, _values, result) - return binary val[0], val[2], 'logicalAnd:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 163) - def _reduce_103(val, _values, result) - return binary val[0], val[2], 'isGreaterThan:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 164) - def _reduce_104(val, _values, result) - return binary val[0], val[2], 'isLessThan:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 165) - def _reduce_105(val, _values, result) - return binary val[0], val[2], 'isGreaterOrEqualTo:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 166) - def _reduce_106(val, _values, result) - return binary val[0], val[2], 'isLessOrEqualTo:' - result - end -.,., - -# reduce 107 omitted - -# reduce 108 omitted - -# reduce 109 omitted - -# reduce 110 omitted - -module_eval(<<'.,.,', 'huia.y', 173) - def _reduce_111(val, _values, result) - return unary val[1], 'unaryNot' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 174) - def _reduce_112(val, _values, result) - return unary val[1], 'unaryPlus' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 175) - def _reduce_113(val, _values, result) - return unary val[1], 'unaryMinus' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 176) - def _reduce_114(val, _values, result) - return unary val[1], 'unaryComplement' - result - end -.,., - -# reduce 115 omitted - -# reduce 116 omitted - -# reduce 117 omitted - -# reduce 118 omitted - -# reduce 119 omitted - -# reduce 120 omitted - -# reduce 121 omitted - -module_eval(<<'.,.,', 'huia.y', 186) - def _reduce_122(val, _values, result) - return n :Float, val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 187) - def _reduce_123(val, _values, result) - return n :Integer, val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 188) - def _reduce_124(val, _values, result) - return n :Nil - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 189) - def _reduce_125(val, _values, result) - return n :True - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 190) - def _reduce_126(val, _values, result) - return n :False - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 191) - def _reduce_127(val, _values, result) - return n :Self - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 193) - def _reduce_128(val, _values, result) - return n :String, val[0] - result - end -.,., - -# reduce 129 omitted - -# reduce 130 omitted - -module_eval(<<'.,.,', 'huia.y', 197) - def _reduce_131(val, _values, result) - return val[1] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 198) - def _reduce_132(val, _values, result) - return val[1] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 199) - def _reduce_133(val, _values, result) - return n :InterpolatedString, val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 200) - def _reduce_134(val, _values, result) - val[0].append(val[1]); return val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 201) - def _reduce_135(val, _values, result) - return val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 202) - def _reduce_136(val, _values, result) - return to_string(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 203) - def _reduce_137(val, _values, result) - return n :String, '' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 205) - def _reduce_138(val, _values, result) - return n :String, val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 206) - def _reduce_139(val, _values, result) - val[0].append(val[1]); return val[0] - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module Huia diff --git a/test/racc/regress/journey b/test/racc/regress/journey deleted file mode 100644 index 3daf81dac0..0000000000 --- a/test/racc/regress/journey +++ /dev/null @@ -1,222 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - - -require 'journey/parser_extras' -module Journey - class Parser < Racc::Parser -##### State transition tables begin ### - -racc_action_table = [ - 17, 21, 13, 15, 14, 7, nil, 16, 8, 19, - 13, 15, 14, 7, 23, 16, 8, 19, 13, 15, - 14, 7, nil, 16, 8, 13, 15, 14, 7, nil, - 16, 8, 13, 15, 14, 7, nil, 16, 8 ] - -racc_action_check = [ - 1, 17, 1, 1, 1, 1, nil, 1, 1, 1, - 20, 20, 20, 20, 20, 20, 20, 20, 0, 0, - 0, 0, nil, 0, 0, 7, 7, 7, 7, nil, - 7, 7, 19, 19, 19, 19, nil, 19, 19 ] - -racc_action_pointer = [ - 16, 0, nil, nil, nil, nil, nil, 23, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 1, nil, 30, - 8, nil, nil, nil ] - -racc_action_default = [ - -18, -18, -2, -3, -4, -5, -6, -18, -9, -10, - -11, -12, -13, -14, -15, -16, -17, -18, -1, -18, - -18, 24, -8, -7 ] - -racc_goto_table = [ - 18, 1, nil, nil, nil, nil, nil, nil, 20, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 22, 18 ] - -racc_goto_check = [ - 2, 1, nil, nil, nil, nil, nil, nil, 1, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 2, 2 ] - -racc_goto_pointer = [ - nil, 1, -1, nil, nil, nil, nil, nil, nil, nil, - nil ] - -racc_goto_default = [ - nil, nil, 2, 3, 4, 5, 6, 9, 10, 11, - 12 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 2, 11, :_reduce_1, - 1, 11, :_reduce_2, - 1, 11, :_reduce_none, - 1, 12, :_reduce_none, - 1, 12, :_reduce_none, - 1, 12, :_reduce_none, - 3, 15, :_reduce_7, - 3, 13, :_reduce_8, - 1, 16, :_reduce_9, - 1, 14, :_reduce_none, - 1, 14, :_reduce_none, - 1, 14, :_reduce_none, - 1, 14, :_reduce_none, - 1, 19, :_reduce_14, - 1, 17, :_reduce_15, - 1, 18, :_reduce_16, - 1, 20, :_reduce_17 ] - -racc_reduce_n = 18 - -racc_shift_n = 24 - -racc_token_table = { - false => 0, - :error => 1, - :SLASH => 2, - :LITERAL => 3, - :SYMBOL => 4, - :LPAREN => 5, - :RPAREN => 6, - :DOT => 7, - :STAR => 8, - :OR => 9 } - -racc_nt_base = 10 - -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", - "SLASH", - "LITERAL", - "SYMBOL", - "LPAREN", - "RPAREN", - "DOT", - "STAR", - "OR", - "$start", - "expressions", - "expression", - "or", - "terminal", - "group", - "star", - "symbol", - "literal", - "slash", - "dot" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'journey.y', 6) - def _reduce_1(val, _values, result) - result = Cat.new(val.first, val.last) - result - end -.,., - -module_eval(<<'.,.,', 'journey.y', 7) - def _reduce_2(val, _values, result) - result = val.first - result - end -.,., - -# reduce 3 omitted - -# reduce 4 omitted - -# reduce 5 omitted - -# reduce 6 omitted - -module_eval(<<'.,.,', 'journey.y', 16) - def _reduce_7(val, _values, result) - result = Group.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'journey.y', 19) - def _reduce_8(val, _values, result) - result = Or.new([val.first, val.last]) - result - end -.,., - -module_eval(<<'.,.,', 'journey.y', 22) - def _reduce_9(val, _values, result) - result = Star.new(Symbol.new(val.last)) - result - end -.,., - -# reduce 10 omitted - -# reduce 11 omitted - -# reduce 12 omitted - -# reduce 13 omitted - -module_eval(<<'.,.,', 'journey.y', 31) - def _reduce_14(val, _values, result) - result = Slash.new('/') - result - end -.,., - -module_eval(<<'.,.,', 'journey.y', 34) - def _reduce_15(val, _values, result) - result = Symbol.new(val.first) - result - end -.,., - -module_eval(<<'.,.,', 'journey.y', 37) - def _reduce_16(val, _values, result) - result = Literal.new(val.first) - result - end -.,., - -module_eval(<<'.,.,', 'journey.y', 39) - def _reduce_17(val, _values, result) - result = Dot.new(val.first) - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module Journey diff --git a/test/racc/regress/liquor b/test/racc/regress/liquor deleted file mode 100644 index 9fa2ca4da0..0000000000 --- a/test/racc/regress/liquor +++ /dev/null @@ -1,885 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' -module Liquor - class Parser < Racc::Parser - -module_eval(<<'...end liquor.y/module_eval...', 'liquor.y', 216) - attr_reader :errors, :ast - - def initialize(tags={}) - super() - - @errors = [] - @ast = nil - @tags = tags - end - - def success? - @errors.empty? - end - - def parse(string, name='(code)') - @errors.clear - @name = name - @ast = nil - - begin - @stream = Lexer.lex(string, @name, @tags) - @ast = do_parse - rescue Liquor::SyntaxError => e - @errors << e - end - - success? - end - - def next_token - tok = @stream.shift - [ tok[0], tok ] if tok - end - - TOKEN_NAME_MAP = { - :comma => ',', - :dot => '.', - :lblock => '{%', - :rblock => '%}', - :linterp => '{{', - :rinterp => '}}', - :lbracket => '[', - :rbracket => ']', - :lparen => '(', - :rparen => ')', - :pipe => '|', - :op_not => '!', - :op_mul => '*', - :op_div => '/', - :op_mod => '%', - :op_plus => '+', - :op_minus => '-', - :op_eq => '==', - :op_neq => '!=', - :op_lt => '<', - :op_leq => '<=', - :op_gt => '>', - :op_geq => '>=', - :keyword => 'keyword argument name', - :kwarg => 'keyword argument', - :ident => 'identifier', - } - - def on_error(error_token_id, error_token, value_stack) - if token_to_str(error_token_id) == "$end" - raise Liquor::SyntaxError.new("unexpected end of program", { - file: @name - }) - else - type, (loc, value) = error_token - type = TOKEN_NAME_MAP[type] || type - - raise Liquor::SyntaxError.new("unexpected token `#{type}'", loc) - end - end - - def retag(nodes) - loc = nodes.map { |node| node[1] }.compact - first, *, last = loc - return first if last.nil? - - { - file: first[:file], - line: first[:line], - start: first[:start], - end: last[:end], - } - end - - def reduce_tag_args(list) - list.each_slice(2).reduce([]) { |args, (k, v)| - if v[0] == :block - args << [ :blockarg, retag([ k, v ]), k, v[2] || [] ] - else - args << [ :kwarg, retag([ k, v ]), k, v ] - end - } - end -...end liquor.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 76, 26, 26, 6, 7, 22, 5, 6, 25, 25, - 5, 28, 32, 36, 37, 34, 35, 31, 29, 27, - 33, 2, 30, 26, 26, 2, 6, 23, 41, 5, - 25, 25, 38, 39, 28, 32, 36, 37, 34, 35, - 31, 29, 27, 33, 2, 30, 40, 26, 96, 6, - 24, 97, 5, 43, 25, 38, 39, 28, 32, 36, - 37, 34, 35, 31, 29, 27, 33, 2, 30, 26, - 54, 70, 77, 26, 75, 26, 25, 52, 38, 39, - 25, 43, 25, 28, 32, 36, 37, 34, 35, 31, - 29, 27, 33, 26, 30, 84, 26, 51, 6, 96, - 25, 5, 97, 25, 38, 39, 28, 32, 36, 37, - 34, 35, 31, 29, 27, 33, 2, 30, 74, 26, - 87, 82, 96, 74, 70, 97, 25, 38, 39, 28, - 32, 36, 37, 34, 35, 31, 29, 27, 33, 94, - 30, 98, 26, 107, 6, 111, 52, 5, nil, 25, - 38, 39, 28, 32, 36, 37, 34, 35, 31, 29, - 27, 33, 2, 30, nil, 26, 51, 6, nil, 74, - 5, nil, 25, 38, 39, 28, 32, 36, 37, 34, - 35, 31, 29, 27, 33, 2, 30, nil, 26, nil, - nil, nil, 102, nil, nil, 25, 38, 39, 28, 32, - 36, 37, 34, 35, 31, 29, 27, 33, nil, 30, - nil, 26, 96, nil, nil, 97, nil, nil, 25, 38, - 39, 28, 32, 36, 37, 34, 35, 31, 29, 27, - 33, nil, 30, nil, 26, nil, nil, nil, nil, nil, - nil, 25, 38, 39, 28, 32, 36, 37, 34, 35, - 31, 29, 27, 33, nil, 30, 13, 15, nil, 13, - 15, 21, nil, 14, 21, 38, 14, nil, nil, nil, - 18, nil, nil, 18, 19, nil, nil, 19, nil, 13, - 15, nil, 16, nil, 21, 16, 14, nil, nil, 13, - 15, nil, nil, 18, 21, nil, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, 52, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, 51, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, 74, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, 81, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, 26, 18, 21, 16, 14, 19, nil, 25, - nil, 101, 28, 18, nil, 16, nil, 19, 31, 29, - 27, 106, 26, 30, nil, 16, nil, nil, nil, 25, - nil, nil, 28, nil, 26, nil, nil, nil, 31, 29, - 27, 25, nil, 30, 28, nil, 26, nil, nil, nil, - 31, 29, 27, 25, nil, 30, 28, nil, 26, nil, - nil, nil, 31, 29, 27, 25, nil, 30, 28, nil, - 26, nil, nil, nil, 31, 29, 27, 25, nil, 30, - 28, nil, 26, nil, nil, nil, 31, 29, 27, 25, - nil, 30, 28, 32, 36, 37, 34, 35, 31, 29, - 27, 33, 26, 30, 26, nil, nil, nil, nil, 25, - nil, 25, 28, nil, 28, nil, nil, nil, nil, 29, - 27, 29, 27 ] - -racc_action_check = [ - 47, 47, 45, 0, 1, 6, 0, 2, 47, 45, - 2, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 0, 47, 46, 11, 2, 3, 7, 12, 3, - 46, 11, 47, 47, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 3, 11, 11, 44, 94, 4, - 11, 94, 4, 13, 44, 11, 11, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 4, 44, 55, - 26, 40, 48, 49, 44, 56, 55, 49, 44, 44, - 49, 54, 56, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 57, 49, 69, 53, 49, 81, 107, - 57, 81, 107, 53, 49, 49, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 81, 53, 70, 71, - 72, 53, 111, 71, 84, 111, 71, 53, 53, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 91, - 71, 96, 79, 103, 101, 109, 79, 101, nil, 79, - 71, 71, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 101, 79, nil, 88, 79, 106, nil, 88, - 106, nil, 88, 79, 79, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 106, 88, nil, 99, nil, - nil, nil, 99, nil, nil, 99, 88, 88, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, nil, 99, - nil, 104, 104, nil, nil, 104, nil, nil, 104, 99, - 99, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, nil, 104, nil, 67, nil, nil, nil, nil, nil, - nil, 67, 104, 104, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, nil, 67, 5, 5, nil, 14, - 14, 5, nil, 5, 14, 67, 14, nil, nil, nil, - 5, nil, nil, 14, 5, nil, nil, 14, nil, 18, - 18, nil, 5, nil, 18, 14, 18, nil, nil, 19, - 19, nil, nil, 18, 19, nil, 19, 18, nil, 21, - 21, nil, nil, 19, 21, 18, 21, 19, nil, 22, - 22, 22, nil, 21, 22, 19, 22, 21, nil, 25, - 25, nil, nil, 22, 25, 21, 25, 22, nil, 27, - 27, 22, nil, 25, 27, 22, 27, 25, nil, 28, - 28, nil, nil, 27, 28, 25, 28, 27, nil, 29, - 29, nil, nil, 28, 29, 27, 29, 28, nil, 30, - 30, nil, nil, 29, 30, 28, 30, 29, nil, 31, - 31, nil, nil, 30, 31, 29, 31, 30, nil, 32, - 32, nil, nil, 31, 32, 30, 32, 31, nil, 33, - 33, nil, nil, 32, 33, 31, 33, 32, nil, 34, - 34, nil, nil, 33, 34, 32, 34, 33, nil, 35, - 35, nil, nil, 34, 35, 33, 35, 34, nil, 36, - 36, nil, nil, 35, 36, 34, 36, 35, nil, 37, - 37, nil, nil, 36, 37, 35, 37, 36, nil, 38, - 38, nil, nil, 37, 38, 36, 38, 37, nil, 39, - 39, nil, nil, 38, 39, 37, 39, 38, nil, 43, - 43, 43, nil, 39, 43, 38, 43, 39, nil, 52, - 52, nil, nil, 43, 52, 39, 52, 43, nil, 74, - 74, nil, nil, 52, 74, 43, 74, 52, nil, 76, - 76, 52, nil, 74, 76, 52, 76, 74, nil, 97, - 97, nil, nil, 76, 97, 74, 97, 76, nil, 102, - 102, nil, 60, 97, 102, 76, 102, 97, nil, 60, - nil, 97, 60, 102, nil, 97, nil, 102, 60, 60, - 60, 102, 61, 60, nil, 102, nil, nil, nil, 61, - nil, nil, 61, nil, 62, nil, nil, nil, 61, 61, - 61, 62, nil, 61, 62, nil, 63, nil, nil, nil, - 62, 62, 62, 63, nil, 62, 63, nil, 64, nil, - nil, nil, 63, 63, 63, 64, nil, 63, 64, nil, - 65, nil, nil, nil, 64, 64, 64, 65, nil, 64, - 65, nil, 66, nil, nil, nil, 65, 65, 65, 66, - nil, 65, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 58, 66, 59, nil, nil, nil, nil, 58, - nil, 59, 58, nil, 59, nil, nil, nil, nil, 58, - 58, 59, 59 ] - -racc_action_pointer = [ - -5, 4, -1, 18, 41, 251, 0, 27, nil, nil, - nil, 21, -1, 41, 254, nil, nil, nil, 274, 284, - nil, 294, 304, nil, nil, 314, 65, 324, 334, 344, - 354, 364, 374, 384, 394, 404, 414, 424, 434, 444, - 66, nil, nil, 454, 44, -1, 20, -2, 44, 70, - nil, nil, 464, 93, 69, 66, 72, 90, 609, 611, - 509, 529, 541, 553, 565, 577, 589, 231, nil, 70, - 111, 116, 90, nil, 474, nil, 484, nil, nil, 139, - nil, 90, nil, nil, 119, nil, nil, nil, 162, nil, - nil, 130, nil, nil, 44, nil, 114, 494, nil, 185, - nil, 136, 504, 134, 208, nil, 159, 95, nil, 136, - nil, 118, nil ] - -racc_action_default = [ - -1, -57, -1, -1, -1, -57, -57, -57, -2, -3, - -4, -57, -57, -7, -57, -9, -10, -11, -57, -57, - -31, -35, -57, 113, -5, -57, -57, -57, -57, -57, - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, - -57, -6, -12, -40, -57, -16, -17, -34, -57, -57, - -46, -47, -57, -57, -15, -18, -19, -20, -21, -22, - -23, -24, -25, -26, -27, -28, -29, -30, -41, -43, - -40, -40, -57, -38, -57, -8, -35, -32, -45, -57, - -48, -1, -13, -14, -57, -44, -37, -36, -40, -33, - -50, -57, -42, -39, -57, -49, -57, -57, -51, -57, - -52, -1, -57, -57, -57, -54, -1, -57, -56, -57, - -53, -57, -55 ] - -racc_goto_table = [ - 1, 11, 8, 9, 10, 48, 68, 12, 42, 50, - 44, 72, 80, 73, 45, 46, 100, 105, 49, nil, - nil, 53, nil, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 78, nil, nil, 71, - 85, 86, 95, nil, nil, nil, nil, nil, 79, 83, - 92, nil, 108, nil, nil, 110, nil, nil, 93, 112, - 89, nil, nil, nil, nil, nil, 90, nil, nil, nil, - 88, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 91, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 99, nil, nil, nil, nil, 104, nil, - nil, 103, nil, nil, nil, nil, 109 ] - -racc_goto_check = [ - 1, 4, 1, 1, 1, 9, 12, 5, 8, 14, - 4, 10, 15, 11, 4, 4, 17, 18, 4, nil, - nil, 4, nil, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 14, nil, nil, 4, - 11, 11, 16, nil, nil, nil, nil, nil, 4, 8, - 12, nil, 16, nil, nil, 16, nil, nil, 11, 16, - 9, nil, nil, nil, nil, nil, 14, nil, nil, nil, - 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 1, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 4, nil, nil, nil, nil, 4, nil, - nil, 1, nil, nil, nil, nil, 1 ] - -racc_goto_pointer = [ - nil, 0, nil, nil, -4, 2, nil, nil, -5, -16, - -32, -30, -34, nil, -13, -40, -52, -81, -85 ] - -racc_goto_default = [ - nil, nil, 3, 4, 47, nil, 20, 17, nil, nil, - nil, nil, nil, 69, nil, nil, nil, nil, nil ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 0, 37, :_reduce_1, - 2, 37, :_reduce_2, - 2, 37, :_reduce_3, - 2, 37, :_reduce_4, - 3, 38, :_reduce_5, - 3, 38, :_reduce_6, - 1, 42, :_reduce_none, - 3, 42, :_reduce_8, - 1, 40, :_reduce_none, - 1, 40, :_reduce_none, - 1, 40, :_reduce_none, - 2, 40, :_reduce_12, - 4, 40, :_reduce_13, - 4, 40, :_reduce_14, - 3, 40, :_reduce_15, - 2, 40, :_reduce_16, - 2, 40, :_reduce_17, - 3, 40, :_reduce_18, - 3, 40, :_reduce_19, - 3, 40, :_reduce_20, - 3, 40, :_reduce_21, - 3, 40, :_reduce_22, - 3, 40, :_reduce_23, - 3, 40, :_reduce_24, - 3, 40, :_reduce_25, - 3, 40, :_reduce_26, - 3, 40, :_reduce_27, - 3, 40, :_reduce_28, - 3, 40, :_reduce_29, - 3, 40, :_reduce_30, - 1, 40, :_reduce_none, - 3, 43, :_reduce_32, - 3, 45, :_reduce_33, - 1, 45, :_reduce_34, - 0, 45, :_reduce_35, - 3, 44, :_reduce_36, - 2, 46, :_reduce_37, - 1, 46, :_reduce_38, - 3, 47, :_reduce_39, - 0, 47, :_reduce_40, - 3, 41, :_reduce_41, - 3, 48, :_reduce_42, - 1, 48, :_reduce_43, - 2, 49, :_reduce_44, - 4, 39, :_reduce_45, - 3, 39, :_reduce_46, - 1, 50, :_reduce_47, - 2, 50, :_reduce_48, - 4, 51, :_reduce_49, - 2, 51, :_reduce_50, - 2, 52, :_reduce_51, - 2, 52, :_reduce_52, - 4, 53, :_reduce_53, - 3, 53, :_reduce_54, - 4, 54, :_reduce_55, - 2, 54, :_reduce_56 ] - -racc_reduce_n = 57 - -racc_shift_n = 113 - -racc_token_table = { - false => 0, - :error => 1, - :comma => 2, - :dot => 3, - :endtag => 4, - :ident => 5, - :integer => 6, - :keyword => 7, - :lblock => 8, - :lblock2 => 9, - :lbracket => 10, - :linterp => 11, - :lparen => 12, - :op_div => 13, - :op_eq => 14, - :op_gt => 15, - :op_geq => 16, - :op_lt => 17, - :op_leq => 18, - :op_minus => 19, - :op_mod => 20, - :op_mul => 21, - :op_neq => 22, - :op_not => 23, - :op_plus => 24, - :pipe => 25, - :plaintext => 26, - :rblock => 27, - :rbracket => 28, - :rinterp => 29, - :rparen => 30, - :string => 31, - :tag_ident => 32, - :op_uminus => 33, - :op_and => 34, - :op_or => 35 } - -racc_nt_base = 36 - -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", - "comma", - "dot", - "endtag", - "ident", - "integer", - "keyword", - "lblock", - "lblock2", - "lbracket", - "linterp", - "lparen", - "op_div", - "op_eq", - "op_gt", - "op_geq", - "op_lt", - "op_leq", - "op_minus", - "op_mod", - "op_mul", - "op_neq", - "op_not", - "op_plus", - "pipe", - "plaintext", - "rblock", - "rbracket", - "rinterp", - "rparen", - "string", - "tag_ident", - "op_uminus", - "op_and", - "op_or", - "$start", - "block", - "interp", - "tag", - "expr", - "filter_chain", - "primary_expr", - "tuple", - "function_args", - "tuple_content", - "function_args_inside", - "function_keywords", - "filter_chain_cont", - "filter_call", - "tag_first_cont", - "tag_first_cont2", - "tag_next_cont", - "tag_next_cont2", - "tag_next_cont3" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'liquor.y', 47) - def _reduce_1(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 49) - def _reduce_2(val, _values, result) - result = [ val[0], *val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 51) - def _reduce_3(val, _values, result) - result = [ val[0], *val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 53) - def _reduce_4(val, _values, result) - result = [ val[0], *val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 57) - def _reduce_5(val, _values, result) - result = [ :interp, retag(val), val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 59) - def _reduce_6(val, _values, result) - result = [ :interp, retag(val), val[1] ] - result - end -.,., - -# reduce 7 omitted - -module_eval(<<'.,.,', 'liquor.y', 64) - def _reduce_8(val, _values, result) - result = [ val[1][0], retag(val), *val[1][2..-1] ] - result - end -.,., - -# reduce 9 omitted - -# reduce 10 omitted - -# reduce 11 omitted - -module_eval(<<'.,.,', 'liquor.y', 71) - def _reduce_12(val, _values, result) - result = [ :call, retag(val), val[0], val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 73) - def _reduce_13(val, _values, result) - result = [ :index, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 75) - def _reduce_14(val, _values, result) - result = [ :external, retag(val), val[0], val[2], val[3] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 77) - def _reduce_15(val, _values, result) - result = [ :external, retag(val), val[0], val[2], nil ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 79) - def _reduce_16(val, _values, result) - result = [ :uminus, retag(val), val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 81) - def _reduce_17(val, _values, result) - result = [ :not, retag(val), val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 83) - def _reduce_18(val, _values, result) - result = [ :mul, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 85) - def _reduce_19(val, _values, result) - result = [ :div, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 87) - def _reduce_20(val, _values, result) - result = [ :mod, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 89) - def _reduce_21(val, _values, result) - result = [ :plus, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 91) - def _reduce_22(val, _values, result) - result = [ :minus, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 93) - def _reduce_23(val, _values, result) - result = [ :eq, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 95) - def _reduce_24(val, _values, result) - result = [ :neq, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 97) - def _reduce_25(val, _values, result) - result = [ :lt, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 99) - def _reduce_26(val, _values, result) - result = [ :leq, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 101) - def _reduce_27(val, _values, result) - result = [ :gt, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 103) - def _reduce_28(val, _values, result) - result = [ :geq, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 105) - def _reduce_29(val, _values, result) - result = [ :and, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 107) - def _reduce_30(val, _values, result) - result = [ :or, retag(val), val[0], val[2] ] - result - end -.,., - -# reduce 31 omitted - -module_eval(<<'.,.,', 'liquor.y', 112) - def _reduce_32(val, _values, result) - result = [ :tuple, retag(val), val[1].compact ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 116) - def _reduce_33(val, _values, result) - result = [ val[0], *val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 118) - def _reduce_34(val, _values, result) - result = [ val[0] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 120) - def _reduce_35(val, _values, result) - result = [ ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 124) - def _reduce_36(val, _values, result) - result = [ :args, retag(val), *val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 128) - def _reduce_37(val, _values, result) - result = [ val[0], val[1][2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 130) - def _reduce_38(val, _values, result) - result = [ nil, val[0][2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 134) - def _reduce_39(val, _values, result) - name = val[0][2].to_sym - tail = val[2][2] - loc = retag([ val[0], val[1] ]) - - if tail.include? name - @errors << SyntaxError.new("duplicate keyword argument `#{val[0][2]}'", - tail[name][1]) - end - - hash = { - name => [ val[1][0], loc, *val[1][2..-1] ] - }.merge(tail) - - result = [ :keywords, retag([ loc, val[2] ]), hash ] - - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 150) - def _reduce_40(val, _values, result) - result = [ :keywords, nil, {} ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 154) - def _reduce_41(val, _values, result) - result = [ val[0], *val[2] ]. - reduce { |tree, node| node[3][2] = tree; node } - - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 160) - def _reduce_42(val, _values, result) - result = [ val[0], *val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 162) - def _reduce_43(val, _values, result) - result = [ val[0] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 166) - def _reduce_44(val, _values, result) - ident_loc = val[0][1] - empty_args_loc = { line: ident_loc[:line], - start: ident_loc[:end] + 1, - end: ident_loc[:end] + 1, } - result = [ :call, val[0][1], val[0], - [ :args, val[1][1] || empty_args_loc, nil, val[1][2] ] ] - - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 176) - def _reduce_45(val, _values, result) - result = [ :tag, retag(val), val[1], val[2], *reduce_tag_args(val[3][2]) ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 178) - def _reduce_46(val, _values, result) - result = [ :tag, retag(val), val[1], nil, *reduce_tag_args(val[2][2]) ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 186) - def _reduce_47(val, _values, result) - result = [ :cont, retag(val), [] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 188) - def _reduce_48(val, _values, result) - result = [ :cont, retag(val), [ val[0], *val[1][2] ] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 192) - def _reduce_49(val, _values, result) - result = [ :cont2, val[0][1], [ [:block, val[0][1], val[1] ], *val[3] ] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 194) - def _reduce_50(val, _values, result) - result = [ :cont2, retag(val), [ val[0], *val[1][2] ] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 198) - def _reduce_51(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 200) - def _reduce_52(val, _values, result) - result = [ val[0], *val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 204) - def _reduce_53(val, _values, result) - result = [ [:block, val[0][1], val[1] ], *val[3] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 206) - def _reduce_54(val, _values, result) - result = [ val[0], val[1], *val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 210) - def _reduce_55(val, _values, result) - result = [ [:block, val[0][1], val[1] ], *val[3] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 212) - def _reduce_56(val, _values, result) - result = [ val[0], *val[1] ] - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module Liquor diff --git a/test/racc/regress/machete b/test/racc/regress/machete deleted file mode 100644 index 6297fe2ac9..0000000000 --- a/test/racc/regress/machete +++ /dev/null @@ -1,833 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' -module Machete - class Parser < Racc::Parser - -module_eval(<<'...end machete.y/module_eval...', 'machete.y', 175) - -include Matchers - -class SyntaxError < StandardError; end - -def parse(input) - @input = input - @pos = 0 - - do_parse -end - -private - -def integer_value(value) - if value =~ /^0[bB]/ - value[2..-1].to_i(2) - elsif value =~ /^0[oO]/ - value[2..-1].to_i(8) - elsif value =~ /^0[dD]/ - value[2..-1].to_i(10) - elsif value =~ /^0[xX]/ - value[2..-1].to_i(16) - elsif value =~ /^0/ - value.to_i(8) - else - value.to_i - end -end - -def symbol_value(value) - value[1..-1].to_sym -end - -def string_value(value) - quote = value[0..0] - if quote == "'" - value[1..-2].gsub("\\\\", "\\").gsub("\\'", "'") - elsif quote == '"' - value[1..-2]. - gsub("\\\\", "\\"). - gsub('\\"', '"'). - gsub("\\n", "\n"). - gsub("\\t", "\t"). - gsub("\\r", "\r"). - gsub("\\f", "\f"). - gsub("\\v", "\v"). - gsub("\\a", "\a"). - gsub("\\e", "\e"). - gsub("\\b", "\b"). - gsub("\\s", "\s"). - gsub(/\\([0-7]{1,3})/) { $1.to_i(8).chr }. - gsub(/\\x([0-9a-fA-F]{1,2})/) { $1.to_i(16).chr } - else - raise "Unknown quote: #{quote.inspect}." - end -end - -REGEXP_OPTIONS = { - 'i' => Regexp::IGNORECASE, - 'm' => Regexp::MULTILINE, - 'x' => Regexp::EXTENDED -} - -def regexp_value(value) - /\A\/(.*)\/([imx]*)\z/ =~ value - pattern, options = $1, $2 - - Regexp.new(pattern, options.chars.map { |ch| REGEXP_OPTIONS[ch] }.inject(:|)) -end - -# "^" needs to be here because if it were among operators recognized by -# METHOD_NAME, "^=" would be recognized as two tokens. -SIMPLE_TOKENS = [ - "|", - "<", - ">", - ",", - "=", - "^=", - "^", - "$=", - "[", - "]", - "*=", - "*", - "+", - "?", - "{", - "}" -] - -COMPLEX_TOKENS = [ - [:NIL, /^nil/], - [:TRUE, /^true/], - [:FALSE, /^false/], - # INTEGER needs to be before METHOD_NAME, otherwise e.g. "+1" would be - # recognized as two tokens. - [ - :INTEGER, - /^ - [+-]? # sign - ( - 0[bB][01]+(_[01]+)* # binary (prefixed) - | - 0[oO][0-7]+(_[0-7]+)* # octal (prefixed) - | - 0[dD]\d+(_\d+)* # decimal (prefixed) - | - 0[xX][0-9a-fA-F]+(_[0-9a-fA-F]+)* # hexadecimal (prefixed) - | - 0[0-7]*(_[0-7]+)* # octal (unprefixed) - | - [1-9]\d*(_\d+)* # decimal (unprefixed) - ) - /x - ], - [ - :SYMBOL, - /^ - : - ( - # class name - [A-Z][a-zA-Z0-9_]* - | - # regular method name - [a-z_][a-zA-Z0-9_]*[?!=]? - | - # instance variable name - @[a-zA-Z_][a-zA-Z0-9_]* - | - # class variable name - @@[a-zA-Z_][a-zA-Z0-9_]* - | - # operator (sorted by length, then alphabetically) - (<=>|===|\[\]=|\*\*|\+@|-@|<<|<=|==|=~|>=|>>|\[\]|[%&*+\-\/<>^`|~]) - ) - /x - ], - [ - :STRING, - /^ - ( - ' # sinqle-quoted string - ( - \\[\\'] # escape - | - [^'] # regular character - )* - ' - | - " # double-quoted string - ( - \\ # escape - ( - [\\"ntrfvaebs] # one-character escape - | - [0-7]{1,3} # octal number escape - | - x[0-9a-fA-F]{1,2} # hexadecimal number escape - ) - | - [^"] # regular character - )* - " - ) - /x - ], - [ - :REGEXP, - /^ - \/ - ( - \\ # escape - ( - [\\\/ntrfvaebs\(\)\[\]\{\}\-\.\?\*\+\|\^\$] # one-character escape - | - [0-7]{2,3} # octal number escape - | - x[0-9a-fA-F]{1,2} # hexadecimal number escape - ) - | - [^\/] # regular character - )* - \/ - [imx]* - /x - ], - # ANY, EVEN and ODD need to be before METHOD_NAME, otherwise they would be - # recognized as method names. - [:ANY, /^any/], - [:EVEN, /^even/], - [:ODD, /^odd/], - # We exclude "*", "+", "<", ">", "^" and "|" from method names since they are - # lexed as simple tokens. This is because they have also other meanings in - # Machette patterns beside Ruby method names. - [ - :METHOD_NAME, - /^ - ( - # regular name - [a-z_][a-zA-Z0-9_]*[?!=]? - | - # operator (sorted by length, then alphabetically) - (<=>|===|\[\]=|\*\*|\+@|-@|<<|<=|==|=~|>=|>>|\[\]|[%&\-\/`~]) - ) - /x - ], - [:CLASS_NAME, /^[A-Z][a-zA-Z0-9_]*/] -] - -def next_token - skip_whitespace - - return false if remaining_input.empty? - - # Complex tokens need to be before simple tokens, otherwise e.g. "<<" would be - # recognized as two tokens. - - COMPLEX_TOKENS.each do |type, regexp| - if remaining_input =~ regexp - @pos += $&.length - return [type, $&] - end - end - - SIMPLE_TOKENS.each do |token| - if remaining_input[0...token.length] == token - @pos += token.length - return [token, token] - end - end - - raise SyntaxError, "Unexpected character: #{remaining_input[0..0].inspect}." -end - -def skip_whitespace - if remaining_input =~ /\A^[ \t\r\n]+/ - @pos += $&.length - end -end - -def remaining_input - @input[@pos..-1] -end - -def on_error(error_token_id, error_value, value_stack) - raise SyntaxError, "Unexpected token: #{error_value.inspect}." -end -...end machete.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 75, 19, 9, 10, 11, 12, 13, 14, 15, 16, - 66, 67, 68, 7, 24, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 74, 8, 7, 47, 9, 10, - 11, 12, 13, 14, 15, 16, 48, 18, 8, 7, - 71, 9, 10, 11, 12, 13, 14, 15, 16, 72, - 70, 8, 7, 73, 9, 10, 11, 12, 13, 14, - 15, 16, 69, 18, 8, 7, 30, 31, 32, 51, - 52, 53, 54, 33, 34, 35, 29, 8, 41, 38, - 39, 76, 30, 31, 32, 77, 36, 37, 40, 33, - 34, 35, 29, nil, 41, 38, 39, 18, 49, 50, - 62, 63, 36, 37, 40, 43, 44, 55, 64, 65, - 45, 46, 57, 58, nil, nil, nil, nil, nil, 56 ] - -racc_action_check = [ - 70, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 54, 54, 54, 0, 17, 8, 8, 8, 8, 8, - 8, 8, 8, 1, 70, 0, 8, 21, 18, 18, - 18, 18, 18, 18, 18, 18, 22, 1, 8, 18, - 56, 48, 48, 48, 48, 48, 48, 48, 48, 57, - 55, 18, 48, 58, 51, 51, 51, 51, 51, 51, - 51, 51, 55, 61, 48, 51, 19, 19, 19, 28, - 28, 28, 28, 19, 19, 19, 19, 51, 19, 19, - 19, 71, 50, 50, 50, 75, 19, 19, 19, 50, - 50, 50, 50, nil, 50, 50, 50, 20, 26, 26, - 52, 52, 50, 50, 50, 20, 20, 46, 53, 53, - 20, 20, 46, 46, nil, nil, nil, nil, nil, 46 ] - -racc_action_pointer = [ - 0, 23, nil, nil, nil, nil, nil, -14, 13, nil, - nil, nil, nil, nil, nil, nil, nil, 14, 26, 64, - 83, 1, 19, nil, nil, nil, 82, nil, 51, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 102, nil, 39, nil, - 80, 52, 94, 102, 4, 33, 35, 20, 24, nil, - nil, 49, nil, nil, nil, nil, nil, nil, nil, nil, - -5, 52, nil, nil, nil, 56, nil, nil ] - -racc_action_default = [ - -56, -56, -1, -3, -4, -5, -6, -7, -33, -48, - -49, -50, -51, -52, -53, -54, -55, -56, -56, -56, - -37, -56, -34, -35, 78, -2, -56, -9, -56, -19, - -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, - -30, -31, -38, -39, -40, -41, -56, -32, -56, -8, - -56, -56, -56, -56, -56, -56, -56, -56, -56, -36, - -10, -11, -12, -15, -13, -16, -14, -17, -18, -42, - -56, -56, -46, -47, -43, -56, -44, -45 ] - -racc_goto_table = [ - 1, 23, 27, 25, 26, 21, 22, 42, 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, 60, nil, nil, nil, nil, nil, nil, - nil, 59, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 61 ] - -racc_goto_check = [ - 1, 12, 8, 2, 7, 10, 11, 13, 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, 8, nil, nil, nil, nil, nil, nil, - nil, 12, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 1 ] - -racc_goto_pointer = [ - nil, 0, -15, nil, nil, nil, nil, -15, -17, nil, - -3, -2, -7, -13 ] - -racc_goto_default = [ - nil, 20, 2, 3, 4, 5, 6, nil, nil, 28, - nil, nil, nil, nil ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 31, :_reduce_none, - 3, 31, :_reduce_2, - 1, 32, :_reduce_none, - 1, 32, :_reduce_none, - 1, 32, :_reduce_none, - 1, 32, :_reduce_none, - 1, 33, :_reduce_7, - 4, 33, :_reduce_8, - 1, 37, :_reduce_none, - 3, 37, :_reduce_10, - 3, 38, :_reduce_11, - 3, 38, :_reduce_12, - 3, 38, :_reduce_13, - 3, 38, :_reduce_14, - 3, 38, :_reduce_15, - 3, 38, :_reduce_16, - 3, 38, :_reduce_17, - 3, 38, :_reduce_18, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 3, 34, :_reduce_32, - 0, 40, :_reduce_33, - 1, 40, :_reduce_none, - 1, 41, :_reduce_35, - 3, 41, :_reduce_36, - 1, 42, :_reduce_none, - 2, 42, :_reduce_38, - 1, 43, :_reduce_39, - 1, 43, :_reduce_40, - 1, 43, :_reduce_41, - 3, 43, :_reduce_42, - 4, 43, :_reduce_43, - 4, 43, :_reduce_44, - 5, 43, :_reduce_45, - 3, 43, :_reduce_46, - 3, 43, :_reduce_47, - 1, 35, :_reduce_48, - 1, 35, :_reduce_49, - 1, 35, :_reduce_50, - 1, 35, :_reduce_51, - 1, 35, :_reduce_52, - 1, 35, :_reduce_53, - 1, 35, :_reduce_54, - 1, 36, :_reduce_55 ] - -racc_reduce_n = 56 - -racc_shift_n = 78 - -racc_token_table = { - false => 0, - :error => 1, - :NIL => 2, - :TRUE => 3, - :FALSE => 4, - :INTEGER => 5, - :SYMBOL => 6, - :STRING => 7, - :REGEXP => 8, - :ANY => 9, - :EVEN => 10, - :ODD => 11, - :METHOD_NAME => 12, - :CLASS_NAME => 13, - "|" => 14, - "<" => 15, - ">" => 16, - "," => 17, - "=" => 18, - "^=" => 19, - "$=" => 20, - "*=" => 21, - "*" => 22, - "+" => 23, - "^" => 24, - "[" => 25, - "]" => 26, - "?" => 27, - "{" => 28, - "}" => 29 } - -racc_nt_base = 30 - -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", - "NIL", - "TRUE", - "FALSE", - "INTEGER", - "SYMBOL", - "STRING", - "REGEXP", - "ANY", - "EVEN", - "ODD", - "METHOD_NAME", - "CLASS_NAME", - "\"|\"", - "\"<\"", - "\">\"", - "\",\"", - "\"=\"", - "\"^=\"", - "\"$=\"", - "\"*=\"", - "\"*\"", - "\"+\"", - "\"^\"", - "\"[\"", - "\"]\"", - "\"?\"", - "\"{\"", - "\"}\"", - "$start", - "expression", - "primary", - "node", - "array", - "literal", - "any", - "attrs", - "attr", - "method_name", - "items_opt", - "items", - "item", - "quantifier" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -# reduce 1 omitted - -module_eval(<<'.,.,', 'machete.y', 44) - def _reduce_2(val, _values, result) - result = if val[0].is_a?(ChoiceMatcher) - ChoiceMatcher.new(val[0].alternatives << val[2]) - else - ChoiceMatcher.new([val[0], val[2]]) - end - - result - end -.,., - -# reduce 3 omitted - -# reduce 4 omitted - -# reduce 5 omitted - -# reduce 6 omitted - -module_eval(<<'.,.,', 'machete.y', 57) - def _reduce_7(val, _values, result) - result = NodeMatcher.new(val[0].to_sym) - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 60) - def _reduce_8(val, _values, result) - result = NodeMatcher.new(val[0].to_sym, val[2]) - - result - end -.,., - -# reduce 9 omitted - -module_eval(<<'.,.,', 'machete.y', 64) - def _reduce_10(val, _values, result) - result = val[0].merge(val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 66) - def _reduce_11(val, _values, result) - result = { val[0].to_sym => val[2] } - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 68) - def _reduce_12(val, _values, result) - result = { - val[0].to_sym => SymbolRegexpMatcher.new( - Regexp.new("^" + Regexp.escape(symbol_value(val[2]).to_s)) - ) - } - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 75) - def _reduce_13(val, _values, result) - result = { - val[0].to_sym => SymbolRegexpMatcher.new( - Regexp.new(Regexp.escape(symbol_value(val[2]).to_s) + "$") - ) - } - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 82) - def _reduce_14(val, _values, result) - result = { - val[0].to_sym => SymbolRegexpMatcher.new( - Regexp.new(Regexp.escape(symbol_value(val[2]).to_s)) - ) - } - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 89) - def _reduce_15(val, _values, result) - result = { - val[0].to_sym => StringRegexpMatcher.new( - Regexp.new("^" + Regexp.escape(string_value(val[2]))) - ) - } - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 96) - def _reduce_16(val, _values, result) - result = { - val[0].to_sym => StringRegexpMatcher.new( - Regexp.new(Regexp.escape(string_value(val[2])) + "$") - ) - } - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 103) - def _reduce_17(val, _values, result) - result = { - val[0].to_sym => StringRegexpMatcher.new( - Regexp.new(Regexp.escape(string_value(val[2]))) - ) - } - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 110) - def _reduce_18(val, _values, result) - result = { - val[0].to_sym => IndifferentRegexpMatcher.new( - Regexp.new(regexp_value(val[2])) - ) - } - - result - end -.,., - -# reduce 19 omitted - -# reduce 20 omitted - -# reduce 21 omitted - -# reduce 22 omitted - -# reduce 23 omitted - -# reduce 24 omitted - -# reduce 25 omitted - -# reduce 26 omitted - -# reduce 27 omitted - -# reduce 28 omitted - -# reduce 29 omitted - -# reduce 30 omitted - -# reduce 31 omitted - -module_eval(<<'.,.,', 'machete.y', 134) - def _reduce_32(val, _values, result) - result = ArrayMatcher.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 136) - def _reduce_33(val, _values, result) - result = [] - result - end -.,., - -# reduce 34 omitted - -module_eval(<<'.,.,', 'machete.y', 139) - def _reduce_35(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 140) - def _reduce_36(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -# reduce 37 omitted - -module_eval(<<'.,.,', 'machete.y', 143) - def _reduce_38(val, _values, result) - result = Quantifier.new(val[0], *val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 145) - def _reduce_39(val, _values, result) - result = [0, nil, 1] - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 146) - def _reduce_40(val, _values, result) - result = [1, nil, 1] - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 147) - def _reduce_41(val, _values, result) - result = [0, 1, 1] - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 149) - def _reduce_42(val, _values, result) - result = [integer_value(val[1]), integer_value(val[1]), 1] - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 152) - def _reduce_43(val, _values, result) - result = [integer_value(val[1]), nil, 1] - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 155) - def _reduce_44(val, _values, result) - result = [0, integer_value(val[2]), 1] - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 158) - def _reduce_45(val, _values, result) - result = [integer_value(val[1]), integer_value(val[3]), 1] - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 160) - def _reduce_46(val, _values, result) - result = [0, nil, 2] - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 161) - def _reduce_47(val, _values, result) - result = [1, nil, 2] - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 163) - def _reduce_48(val, _values, result) - result = LiteralMatcher.new(nil) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 164) - def _reduce_49(val, _values, result) - result = LiteralMatcher.new(true) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 165) - def _reduce_50(val, _values, result) - result = LiteralMatcher.new(false) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 166) - def _reduce_51(val, _values, result) - result = LiteralMatcher.new(integer_value(val[0])) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 167) - def _reduce_52(val, _values, result) - result = LiteralMatcher.new(symbol_value(val[0])) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 168) - def _reduce_53(val, _values, result) - result = LiteralMatcher.new(string_value(val[0])) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 169) - def _reduce_54(val, _values, result) - result = LiteralMatcher.new(regexp_value(val[0])) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 171) - def _reduce_55(val, _values, result) - result = AnyMatcher.new - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module Machete diff --git a/test/racc/regress/mediacloth b/test/racc/regress/mediacloth deleted file mode 100644 index cca7d3c7e4..0000000000 --- a/test/racc/regress/mediacloth +++ /dev/null @@ -1,1463 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - -require 'mediacloth/mediawikiast' - -class MediaWikiParser < Racc::Parser - -module_eval(<<'...end mediacloth.y/module_eval...', 'mediacloth.y', 564) - -attr_accessor :lexer - -def initialize - @nodes = [] - @context = [] - @wiki_ast_length = 0 - super -end - -#Tokenizes input string and parses it. -def parse(input) - @yydebug=true - lexer.tokenize(input) - do_parse - return @nodes.last -end - -#Asks the lexer to return the next token. -def next_token - token = @lexer.lex - if token[0].to_s.upcase.include? "_START" - @context << token[2..3] - elsif token[0].to_s.upcase.include? "_END" - @ast_index = @context.last[0] - @ast_length = token[2] + token[3] - @context.last[0] - @context.pop - else - @ast_index = token[2] - @ast_length = token[3] - end - - @wiki_ast_length += token[3] - - return token[0..1] -end -...end mediacloth.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 22, 28, 50, 29, 61, 13, 63, 132, 15, 86, - 37, 87, 24, 33, 86, 34, 87, 35, 85, 23, - 26, 25, 27, 12, 86, 30, 87, 31, 86, 42, - 87, 32, 44, 86, 48, 87, 57, 17, 57, 22, - 28, 21, 29, 46, 13, 51, 67, 15, 68, 11, - 36, 24, 33, 14, 34, 69, 35, 36, 23, 26, - 25, 27, 12, 86, 30, 87, 31, 75, 73, 70, - 32, 48, 81, 71, 72, 76, 17, 77, 22, 28, - 21, 29, 82, 13, 45, 51, 15, -65, 11, 36, - 24, 33, 14, 34, -65, 35, 63, 23, 26, 25, - 27, 12, 96, 30, 63, 31, 106, 109, 110, 32, - 113, 114, 48, 117, 118, 17, 124, 22, 28, 21, - 29, 57, 13, 127, 128, 15, 131, 11, 36, 24, - 33, 14, 34, 136, 35, 137, 23, 26, 25, 27, - 12, 138, 30, 75, 31, 51, 141, -63, 32, 106, - 106, 150, 153, 51, 17, nil, nil, nil, 21, nil, - 22, 28, 53, 29, nil, 13, 11, 36, 15, nil, - 14, nil, 24, 33, nil, 34, nil, 35, nil, 23, - 26, 25, 27, 12, nil, 30, nil, 31, nil, nil, - nil, 32, nil, nil, nil, nil, nil, 17, nil, 22, - 28, 21, 29, 55, 13, nil, nil, 15, nil, 11, - 36, 24, 33, 14, 34, nil, 35, nil, 23, 26, - 25, 27, 12, nil, 30, nil, 31, nil, nil, nil, - 32, nil, nil, nil, nil, nil, 17, nil, 22, 28, - 21, 29, nil, 13, nil, nil, 15, nil, 11, 36, - 24, 33, 14, 34, nil, 35, nil, 23, 26, 25, - 27, 12, nil, 30, nil, 31, nil, nil, nil, 32, - nil, nil, nil, nil, nil, 17, nil, 22, 28, 21, - 29, nil, 13, nil, nil, 15, nil, 11, 36, 24, - 33, 14, 34, nil, 35, nil, 23, 26, 25, 27, - 12, nil, 30, nil, 31, nil, nil, nil, 32, nil, - nil, nil, nil, nil, 17, nil, 22, 28, 21, 29, - nil, 13, nil, nil, 15, nil, 11, 36, 24, 33, - 14, 34, nil, 35, nil, 23, 26, 25, 27, 12, - nil, 30, nil, 31, nil, nil, nil, 32, nil, nil, - nil, nil, nil, 17, nil, 22, 28, 21, 29, nil, - 13, nil, nil, 15, nil, 11, 36, 24, 33, 14, - 34, nil, 35, nil, 23, 26, 25, 27, 12, nil, - 30, nil, 31, nil, nil, nil, 32, nil, nil, nil, - nil, nil, 17, nil, 22, 28, 21, 29, nil, 13, - nil, nil, 15, nil, 11, 36, 24, 33, 14, 34, - nil, 35, nil, 23, 26, 25, 27, 12, nil, 30, - nil, 31, nil, nil, nil, 32, nil, nil, nil, nil, - nil, 17, 78, nil, nil, 21, nil, 22, 28, 88, - 29, nil, 13, 11, 36, 15, nil, 14, nil, 24, - 33, nil, 34, nil, 35, nil, 23, 26, 25, 27, - 12, nil, 30, nil, 31, nil, nil, nil, 32, nil, - nil, nil, nil, nil, 17, nil, 22, 28, 21, 29, - 89, 13, nil, nil, 15, nil, 11, 36, 24, 33, - 14, 34, nil, 35, nil, 23, 26, 25, 27, 12, - nil, 30, nil, 31, nil, nil, nil, 32, nil, nil, - nil, nil, nil, 17, nil, 22, 28, 21, 29, nil, - 13, nil, nil, 15, nil, 11, 36, 24, 33, 14, - 34, nil, 35, nil, 23, 26, 25, 27, 12, nil, - 30, nil, 31, nil, nil, 93, 32, nil, nil, nil, - nil, nil, 17, nil, 22, 28, 21, 29, nil, 13, - nil, nil, 15, nil, 11, 36, 24, 33, 14, 34, - nil, 35, nil, 23, 26, 25, 27, 12, nil, 30, - nil, 31, nil, nil, nil, 32, nil, nil, 98, nil, - nil, 17, nil, 22, 28, 21, 29, nil, 13, nil, - nil, 15, nil, 11, 36, 24, 33, 14, 34, nil, - 35, nil, 23, 26, 25, 27, 12, nil, 30, nil, - 31, nil, nil, nil, 32, nil, nil, nil, nil, 101, - 17, nil, nil, nil, 21, nil, 22, 28, nil, 29, - nil, 13, 11, 36, 15, nil, 14, nil, 24, 33, - 102, 34, nil, 35, nil, 23, 26, 25, 27, 12, - nil, 30, nil, 31, nil, nil, nil, 32, nil, nil, - nil, nil, nil, 17, nil, 22, 28, 21, 29, nil, - 13, nil, nil, 15, nil, 11, 36, 24, 33, 14, - 34, 103, 35, nil, 23, 26, 25, 27, 12, nil, - 30, nil, 31, nil, nil, nil, 32, nil, nil, nil, - nil, nil, 17, nil, 22, 28, 21, 29, nil, 13, - nil, nil, 15, nil, 11, 36, 24, 33, 14, 34, - nil, 35, 104, 23, 26, 25, 27, 12, nil, 30, - nil, 31, nil, nil, nil, 32, nil, nil, nil, nil, - nil, 17, nil, 22, 28, 21, 29, nil, 13, nil, - nil, 15, nil, 11, 36, 24, 33, 14, 34, nil, - 35, nil, 23, 26, 25, 27, 12, nil, 30, nil, - 31, nil, nil, nil, 32, nil, nil, nil, nil, nil, - 17, nil, 22, 28, 21, 29, nil, 13, nil, nil, - 15, nil, 11, 36, 24, 33, 14, 34, nil, 35, - nil, 23, 26, 25, 27, 12, nil, 30, nil, 31, - nil, nil, nil, 32, nil, nil, nil, nil, nil, 17, - nil, 22, 28, 21, 29, nil, 13, nil, nil, 15, - nil, 11, 36, 24, 33, 14, 34, nil, 35, nil, - 23, 26, 25, 27, 12, nil, 30, nil, 31, nil, - nil, nil, 32, nil, nil, nil, nil, nil, 17, 115, - 22, 28, 21, 29, nil, 13, nil, nil, 15, nil, - 11, 36, 24, 33, 14, 34, nil, 35, nil, 23, - 26, 25, 27, 12, nil, 30, nil, 31, nil, nil, - nil, 32, nil, nil, nil, nil, nil, 17, nil, 22, - 28, 21, 29, nil, 13, nil, 121, 15, nil, 11, - 36, 24, 33, 14, 34, nil, 35, nil, 23, 26, - 25, 27, 12, nil, 30, nil, 31, nil, nil, nil, - 32, nil, nil, nil, nil, nil, 17, nil, 22, 28, - 21, 29, nil, 13, nil, nil, 15, 123, 11, 36, - 24, 33, 14, 34, nil, 35, nil, 23, 26, 25, - 27, 12, nil, 30, nil, 31, nil, nil, 126, 32, - nil, nil, nil, nil, nil, 17, nil, 22, 28, 21, - 29, nil, 13, nil, nil, 15, nil, 11, 36, 24, - 33, 14, 34, nil, 35, nil, 23, 26, 25, 27, - 12, nil, 30, nil, 31, nil, nil, nil, 32, nil, - nil, 129, nil, nil, 17, nil, 22, 28, 21, 29, - nil, 13, nil, nil, 15, nil, 11, 36, 24, 33, - 14, 34, nil, 35, nil, 23, 26, 25, 27, 12, - nil, 30, nil, 31, nil, nil, nil, 32, nil, nil, - nil, nil, 130, 17, nil, 22, 28, 21, 29, nil, - 13, nil, 134, 15, nil, 11, 36, 24, 33, 14, - 34, nil, 35, nil, 23, 26, 25, 27, 12, nil, - 30, nil, 31, nil, nil, nil, 32, nil, nil, nil, - nil, nil, 17, nil, 22, 28, 21, 29, nil, 13, - nil, nil, 15, nil, 11, 36, 24, 33, 14, 34, - nil, 35, nil, 23, 26, 25, 27, 12, nil, 30, - nil, 31, nil, nil, nil, 32, nil, nil, nil, nil, - nil, 17, nil, 22, 28, 21, 29, nil, 13, nil, - nil, 15, nil, 11, 36, 24, 33, 14, 34, nil, - 35, nil, 23, 26, 25, 27, 12, nil, 30, nil, - 31, nil, nil, nil, 32, nil, nil, nil, nil, nil, - 17, nil, 22, 28, 21, 29, nil, 13, nil, 142, - 15, nil, 11, 36, 24, 33, 14, 34, nil, 35, - nil, 23, 26, 25, 27, 12, nil, 30, nil, 31, - nil, nil, nil, 32, nil, nil, nil, nil, nil, 17, - nil, 22, 28, 21, 29, nil, 13, nil, nil, 15, - 144, 11, 36, 24, 33, 14, 34, nil, 35, nil, - 23, 26, 25, 27, 12, nil, 30, nil, 31, nil, - nil, nil, 32, nil, nil, nil, nil, nil, 17, nil, - nil, nil, 21, nil, nil, nil, nil, nil, nil, nil, - 11, 36, 22, 28, 14, 29, nil, 13, nil, nil, - 15, nil, 136, nil, 24, 33, nil, 34, nil, 35, - nil, 23, 26, 25, 27, 12, nil, 30, nil, 31, - nil, nil, nil, 32, nil, nil, nil, nil, nil, 17, - nil, nil, nil, 21, nil, nil, nil, nil, nil, nil, - nil, 11, 36, 22, 28, 14, 29, nil, 13, nil, - nil, 15, nil, 136, nil, 24, 33, nil, 34, nil, - 35, nil, 23, 26, 25, 27, 12, nil, 30, nil, - 31, nil, nil, nil, 32, nil, nil, nil, nil, nil, - 17, nil, nil, nil, 21, nil, nil, nil, nil, nil, - nil, nil, 11, 36, nil, nil, 14 ] - -racc_action_check = [ - 0, 0, 21, 0, 32, 0, 32, 106, 0, 85, - 1, 85, 0, 0, 121, 0, 121, 0, 51, 0, - 0, 0, 0, 0, 123, 0, 123, 0, 142, 13, - 142, 0, 15, 144, 17, 144, 30, 0, 31, 2, - 2, 0, 2, 15, 2, 21, 36, 2, 37, 0, - 0, 2, 2, 0, 2, 39, 2, 106, 2, 2, - 2, 2, 2, 51, 2, 51, 2, 44, 44, 41, - 2, 48, 48, 42, 43, 45, 2, 46, 12, 12, - 2, 12, 49, 12, 15, 50, 12, 56, 2, 2, - 12, 12, 2, 12, 58, 12, 59, 12, 12, 12, - 12, 12, 60, 12, 62, 12, 67, 73, 74, 12, - 76, 77, 81, 83, 84, 12, 90, 14, 14, 12, - 14, 91, 14, 94, 95, 14, 105, 12, 12, 14, - 14, 12, 14, 109, 14, 112, 14, 14, 14, 14, - 14, 113, 14, 114, 14, 118, 119, 125, 14, 132, - 133, 135, 139, 141, 14, nil, nil, nil, 14, nil, - 28, 28, 28, 28, nil, 28, 14, 14, 28, nil, - 14, nil, 28, 28, nil, 28, nil, 28, nil, 28, - 28, 28, 28, 28, nil, 28, nil, 28, nil, nil, - nil, 28, nil, nil, nil, nil, nil, 28, nil, 29, - 29, 28, 29, 29, 29, nil, nil, 29, nil, 28, - 28, 29, 29, 28, 29, nil, 29, nil, 29, 29, - 29, 29, 29, nil, 29, nil, 29, nil, nil, nil, - 29, nil, nil, nil, nil, nil, 29, nil, 33, 33, - 29, 33, nil, 33, nil, nil, 33, nil, 29, 29, - 33, 33, 29, 33, nil, 33, nil, 33, 33, 33, - 33, 33, nil, 33, nil, 33, nil, nil, nil, 33, - nil, nil, nil, nil, nil, 33, nil, 34, 34, 33, - 34, nil, 34, nil, nil, 34, nil, 33, 33, 34, - 34, 33, 34, nil, 34, nil, 34, 34, 34, 34, - 34, nil, 34, nil, 34, nil, nil, nil, 34, nil, - nil, nil, nil, nil, 34, nil, 35, 35, 34, 35, - nil, 35, nil, nil, 35, nil, 34, 34, 35, 35, - 34, 35, nil, 35, nil, 35, 35, 35, 35, 35, - nil, 35, nil, 35, nil, nil, nil, 35, nil, nil, - nil, nil, nil, 35, nil, 40, 40, 35, 40, nil, - 40, nil, nil, 40, nil, 35, 35, 40, 40, 35, - 40, nil, 40, nil, 40, 40, 40, 40, 40, nil, - 40, nil, 40, nil, nil, nil, 40, nil, nil, nil, - nil, nil, 40, nil, 47, 47, 40, 47, nil, 47, - nil, nil, 47, nil, 40, 40, 47, 47, 40, 47, - nil, 47, nil, 47, 47, 47, 47, 47, nil, 47, - nil, 47, nil, nil, nil, 47, nil, nil, nil, nil, - nil, 47, 47, nil, nil, 47, nil, 52, 52, 52, - 52, nil, 52, 47, 47, 52, nil, 47, nil, 52, - 52, nil, 52, nil, 52, nil, 52, 52, 52, 52, - 52, nil, 52, nil, 52, nil, nil, nil, 52, nil, - nil, nil, nil, nil, 52, nil, 54, 54, 52, 54, - 54, 54, nil, nil, 54, nil, 52, 52, 54, 54, - 52, 54, nil, 54, nil, 54, 54, 54, 54, 54, - nil, 54, nil, 54, nil, nil, nil, 54, nil, nil, - nil, nil, nil, 54, nil, 57, 57, 54, 57, nil, - 57, nil, nil, 57, nil, 54, 54, 57, 57, 54, - 57, nil, 57, nil, 57, 57, 57, 57, 57, nil, - 57, nil, 57, nil, nil, 57, 57, nil, nil, nil, - nil, nil, 57, nil, 61, 61, 57, 61, nil, 61, - nil, nil, 61, nil, 57, 57, 61, 61, 57, 61, - nil, 61, nil, 61, 61, 61, 61, 61, nil, 61, - nil, 61, nil, nil, nil, 61, nil, nil, 61, nil, - nil, 61, nil, 63, 63, 61, 63, nil, 63, nil, - nil, 63, nil, 61, 61, 63, 63, 61, 63, nil, - 63, nil, 63, 63, 63, 63, 63, nil, 63, nil, - 63, nil, nil, nil, 63, nil, nil, nil, nil, 63, - 63, nil, nil, nil, 63, nil, 64, 64, nil, 64, - nil, 64, 63, 63, 64, nil, 63, nil, 64, 64, - 64, 64, nil, 64, nil, 64, 64, 64, 64, 64, - nil, 64, nil, 64, nil, nil, nil, 64, nil, nil, - nil, nil, nil, 64, nil, 65, 65, 64, 65, nil, - 65, nil, nil, 65, nil, 64, 64, 65, 65, 64, - 65, 65, 65, nil, 65, 65, 65, 65, 65, nil, - 65, nil, 65, nil, nil, nil, 65, nil, nil, nil, - nil, nil, 65, nil, 66, 66, 65, 66, nil, 66, - nil, nil, 66, nil, 65, 65, 66, 66, 65, 66, - nil, 66, 66, 66, 66, 66, 66, 66, nil, 66, - nil, 66, nil, nil, nil, 66, nil, nil, nil, nil, - nil, 66, nil, 71, 71, 66, 71, nil, 71, nil, - nil, 71, nil, 66, 66, 71, 71, 66, 71, nil, - 71, nil, 71, 71, 71, 71, 71, nil, 71, nil, - 71, nil, nil, nil, 71, nil, nil, nil, nil, nil, - 71, nil, 75, 75, 71, 75, nil, 75, nil, nil, - 75, nil, 71, 71, 75, 75, 71, 75, nil, 75, - nil, 75, 75, 75, 75, 75, nil, 75, nil, 75, - nil, nil, nil, 75, nil, nil, nil, nil, nil, 75, - nil, 79, 79, 75, 79, nil, 79, nil, nil, 79, - nil, 75, 75, 79, 79, 75, 79, nil, 79, nil, - 79, 79, 79, 79, 79, nil, 79, nil, 79, nil, - nil, nil, 79, nil, nil, nil, nil, nil, 79, 79, - 86, 86, 79, 86, nil, 86, nil, nil, 86, nil, - 79, 79, 86, 86, 79, 86, nil, 86, nil, 86, - 86, 86, 86, 86, nil, 86, nil, 86, nil, nil, - nil, 86, nil, nil, nil, nil, nil, 86, nil, 87, - 87, 86, 87, nil, 87, nil, 86, 87, nil, 86, - 86, 87, 87, 86, 87, nil, 87, nil, 87, 87, - 87, 87, 87, nil, 87, nil, 87, nil, nil, nil, - 87, nil, nil, nil, nil, nil, 87, nil, 92, 92, - 87, 92, nil, 92, nil, nil, 92, 87, 87, 87, - 92, 92, 87, 92, nil, 92, nil, 92, 92, 92, - 92, 92, nil, 92, nil, 92, nil, nil, 92, 92, - nil, nil, nil, nil, nil, 92, nil, 97, 97, 92, - 97, nil, 97, nil, nil, 97, nil, 92, 92, 97, - 97, 92, 97, nil, 97, nil, 97, 97, 97, 97, - 97, nil, 97, nil, 97, nil, nil, nil, 97, nil, - nil, 97, nil, nil, 97, nil, 100, 100, 97, 100, - nil, 100, nil, nil, 100, nil, 97, 97, 100, 100, - 97, 100, nil, 100, nil, 100, 100, 100, 100, 100, - nil, 100, nil, 100, nil, nil, nil, 100, nil, nil, - nil, nil, 100, 100, nil, 108, 108, 100, 108, nil, - 108, nil, 108, 108, nil, 100, 100, 108, 108, 100, - 108, nil, 108, nil, 108, 108, 108, 108, 108, nil, - 108, nil, 108, nil, nil, nil, 108, nil, nil, nil, - nil, nil, 108, nil, 111, 111, 108, 111, nil, 111, - nil, nil, 111, nil, 108, 108, 111, 111, 108, 111, - nil, 111, nil, 111, 111, 111, 111, 111, nil, 111, - nil, 111, nil, nil, nil, 111, nil, nil, nil, nil, - nil, 111, nil, 120, 120, 111, 120, nil, 120, nil, - nil, 120, nil, 111, 111, 120, 120, 111, 120, nil, - 120, nil, 120, 120, 120, 120, 120, nil, 120, nil, - 120, nil, nil, nil, 120, nil, nil, nil, nil, nil, - 120, nil, 122, 122, 120, 122, nil, 122, nil, 120, - 122, nil, 120, 120, 122, 122, 120, 122, nil, 122, - nil, 122, 122, 122, 122, 122, nil, 122, nil, 122, - nil, nil, nil, 122, nil, nil, nil, nil, nil, 122, - nil, 134, 134, 122, 134, nil, 134, nil, nil, 134, - 122, 122, 122, 134, 134, 122, 134, nil, 134, nil, - 134, 134, 134, 134, 134, nil, 134, nil, 134, nil, - nil, nil, 134, nil, nil, nil, nil, nil, 134, nil, - nil, nil, 134, nil, nil, nil, nil, nil, nil, nil, - 134, 134, 136, 136, 134, 136, nil, 136, nil, nil, - 136, nil, 136, nil, 136, 136, nil, 136, nil, 136, - nil, 136, 136, 136, 136, 136, nil, 136, nil, 136, - nil, nil, nil, 136, nil, nil, nil, nil, nil, 136, - nil, nil, nil, 136, nil, nil, nil, nil, nil, nil, - nil, 136, 136, 152, 152, 136, 152, nil, 152, nil, - nil, 152, nil, 152, nil, 152, 152, nil, 152, nil, - 152, nil, 152, 152, 152, 152, 152, nil, 152, nil, - 152, nil, nil, nil, 152, nil, nil, nil, nil, nil, - 152, nil, nil, nil, 152, nil, nil, nil, nil, nil, - nil, nil, 152, 152, nil, nil, 152 ] - -racc_action_pointer = [ - -2, 10, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 76, 27, 115, 30, nil, -7, nil, nil, - nil, 0, nil, nil, nil, nil, nil, nil, 158, 197, - 5, 7, -31, 236, 275, 314, 44, 48, nil, 29, - 353, 61, 64, 18, 55, 73, 23, 392, 30, 38, - 40, 16, 435, nil, 474, nil, 59, 513, 64, 59, - 68, 552, 67, 591, 634, 673, 712, 94, nil, nil, - nil, 751, nil, 105, 97, 790, 98, 109, nil, 829, - nil, 71, nil, 69, 68, -38, 868, 907, nil, nil, - 88, 90, 946, nil, 93, 90, nil, 985, nil, nil, - 1024, nil, nil, nil, nil, 73, 5, nil, 1063, 121, - nil, 1102, 124, 139, 131, nil, nil, nil, 100, 100, - 1141, -33, 1180, -23, nil, 116, nil, nil, nil, nil, - nil, nil, 137, 138, 1219, 140, 1270, nil, nil, 141, - nil, 108, -19, nil, -14, nil, nil, nil, nil, nil, - nil, nil, 1321, nil, nil, nil, nil, nil ] - -racc_action_default = [ - -83, -83, -1, -2, -3, -4, -5, -6, -7, -8, - -9, -10, -19, -83, -19, -83, -18, -23, -37, -39, - -40, -43, -51, -52, -53, -54, -55, -56, -83, -83, - -83, -83, -73, -83, -83, -83, -83, -83, -38, -83, - -20, -83, -26, -83, -30, -83, -83, -83, -23, -83, - -43, -46, -83, -57, -83, -58, -63, -83, -63, -73, - -83, -83, -73, -83, -83, -83, -83, -80, 158, -11, - -12, -83, -13, -83, -83, -83, -32, -83, -21, -83, - -24, -23, -41, -83, -83, -46, -83, -83, -59, -60, - -83, -83, -83, -66, -83, -83, -69, -83, -70, -72, - -83, -74, -76, -77, -78, -83, -83, -27, -28, -34, - -15, -31, -83, -83, -30, -22, -25, -42, -43, -83, - -83, -46, -83, -46, -61, -65, -67, -62, -68, -71, - -75, -79, -80, -80, -83, -83, -34, -16, -33, -83, - -44, -43, -46, -47, -46, -49, -64, -81, -82, -29, - -14, -35, -34, -17, -45, -48, -50, -36 ] - -racc_goto_table = [ - 38, 84, 74, 105, 49, 39, 90, 43, 94, 60, - 135, 1, 133, 2, 47, 41, 107, 112, 59, 56, - 58, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 83, nil, 119, 95, 151, 38, 99, - nil, 52, 54, nil, nil, 80, 64, 65, 66, nil, - 38, nil, 38, 157, nil, nil, nil, nil, nil, nil, - 79, nil, 38, 38, 38, nil, nil, nil, 147, 148, - 92, 143, 139, 145, 97, 146, 100, 38, 116, 149, - 125, nil, nil, nil, 108, nil, nil, nil, 111, nil, - 38, nil, 155, nil, 156, 38, nil, nil, 38, 120, - 122, 140, nil, nil, nil, nil, 38, nil, nil, 38, - nil, nil, nil, nil, nil, nil, nil, nil, 38, nil, - 38, nil, nil, nil, 154, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 108, nil, 152, - 38 ] - -racc_goto_check = [ - 3, 23, 15, 30, 22, 12, 25, 12, 25, 28, - 14, 1, 11, 2, 18, 13, 19, 16, 27, 24, - 24, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 22, nil, 23, 28, 14, 3, 28, - nil, 2, 2, nil, nil, 18, 2, 2, 2, nil, - 3, nil, 3, 14, nil, nil, nil, nil, nil, nil, - 2, nil, 3, 3, 3, nil, nil, nil, 30, 30, - 2, 23, 15, 23, 2, 25, 2, 3, 18, 19, - 24, nil, nil, nil, 2, nil, nil, nil, 2, nil, - 3, nil, 23, nil, 23, 3, nil, nil, 3, 2, - 2, 22, nil, nil, nil, nil, 3, nil, nil, 3, - nil, nil, nil, nil, nil, nil, nil, nil, 3, nil, - 3, nil, nil, nil, 22, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 2, nil, 2, - 3 ] - -racc_goto_pointer = [ - nil, 11, 13, -2, nil, nil, nil, nil, nil, nil, - nil, -94, -7, 2, -99, -42, -59, nil, -3, -55, - nil, nil, -17, -50, -11, -50, nil, -14, -23, nil, - -64 ] - -racc_goto_default = [ - nil, nil, 40, 18, 3, 4, 5, 6, 7, 8, - 9, 10, nil, nil, nil, nil, nil, 16, nil, nil, - 19, 20, nil, nil, nil, nil, 91, nil, nil, 62, - nil ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 58, :_reduce_1, - 1, 60, :_reduce_2, - 1, 60, :_reduce_3, - 1, 60, :_reduce_4, - 1, 60, :_reduce_5, - 1, 60, :_reduce_6, - 1, 60, :_reduce_7, - 1, 60, :_reduce_8, - 1, 60, :_reduce_9, - 1, 60, :_reduce_10, - 3, 60, :_reduce_11, - 3, 60, :_reduce_12, - 3, 60, :_reduce_13, - 6, 60, :_reduce_14, - 4, 60, :_reduce_15, - 5, 60, :_reduce_16, - 6, 60, :_reduce_17, - 1, 60, :_reduce_none, - 0, 69, :_reduce_19, - 1, 69, :_reduce_20, - 3, 67, :_reduce_21, - 4, 67, :_reduce_22, - 0, 75, :_reduce_23, - 2, 75, :_reduce_24, - 3, 75, :_reduce_25, - 1, 70, :_reduce_26, - 3, 70, :_reduce_27, - 1, 76, :_reduce_28, - 3, 76, :_reduce_29, - 0, 72, :_reduce_30, - 2, 72, :_reduce_31, - 0, 73, :_reduce_32, - 2, 73, :_reduce_33, - 0, 71, :_reduce_34, - 2, 71, :_reduce_35, - 3, 71, :_reduce_36, - 1, 59, :_reduce_37, - 2, 59, :_reduce_38, - 1, 61, :_reduce_39, - 1, 61, :_reduce_40, - 3, 74, :_reduce_41, - 4, 74, :_reduce_42, - 0, 79, :_reduce_43, - 4, 79, :_reduce_44, - 5, 79, :_reduce_45, - 0, 80, :_reduce_46, - 3, 80, :_reduce_47, - 4, 80, :_reduce_48, - 3, 80, :_reduce_49, - 4, 80, :_reduce_50, - 1, 77, :_reduce_51, - 1, 77, :_reduce_52, - 1, 77, :_reduce_53, - 1, 77, :_reduce_54, - 1, 77, :_reduce_55, - 1, 77, :_reduce_56, - 2, 78, :_reduce_57, - 2, 78, :_reduce_58, - 3, 78, :_reduce_59, - 3, 78, :_reduce_60, - 4, 62, :_reduce_61, - 4, 63, :_reduce_62, - 0, 83, :_reduce_63, - 3, 82, :_reduce_64, - 0, 82, :_reduce_65, - 2, 81, :_reduce_66, - 3, 81, :_reduce_67, - 4, 64, :_reduce_68, - 3, 64, :_reduce_69, - 2, 84, :_reduce_70, - 3, 84, :_reduce_71, - 2, 85, :_reduce_72, - 0, 85, :_reduce_73, - 2, 86, :_reduce_74, - 3, 86, :_reduce_75, - 3, 65, :_reduce_76, - 3, 65, :_reduce_77, - 3, 66, :_reduce_78, - 4, 68, :_reduce_79, - 0, 87, :_reduce_80, - 3, 87, :_reduce_81, - 3, 87, :_reduce_82 ] - -racc_reduce_n = 83 - -racc_shift_n = 158 - -racc_token_table = { - false => 0, - :error => 1, - :TEXT => 2, - :BOLD_START => 3, - :BOLD_END => 4, - :ITALIC_START => 5, - :ITALIC_END => 6, - :LINK_START => 7, - :LINK_END => 8, - :LINKSEP => 9, - :INTLINK_START => 10, - :INTLINK_END => 11, - :INTLINKSEP => 12, - :RESOURCESEP => 13, - :CHAR_ENT => 14, - :PRE_START => 15, - :PRE_END => 16, - :PREINDENT_START => 17, - :PREINDENT_END => 18, - :SECTION_START => 19, - :SECTION_END => 20, - :HLINE => 21, - :SIGNATURE_NAME => 22, - :SIGNATURE_DATE => 23, - :SIGNATURE_FULL => 24, - :PARA_START => 25, - :PARA_END => 26, - :UL_START => 27, - :UL_END => 28, - :OL_START => 29, - :OL_END => 30, - :LI_START => 31, - :LI_END => 32, - :DL_START => 33, - :DL_END => 34, - :DT_START => 35, - :DT_END => 36, - :DD_START => 37, - :DD_END => 38, - :TAG_START => 39, - :TAG_END => 40, - :ATTR_NAME => 41, - :ATTR_VALUE => 42, - :TABLE_START => 43, - :TABLE_END => 44, - :ROW_START => 45, - :ROW_END => 46, - :HEAD_START => 47, - :HEAD_END => 48, - :CELL_START => 49, - :CELL_END => 50, - :KEYWORD => 51, - :TEMPLATE_START => 52, - :TEMPLATE_END => 53, - :CATEGORY => 54, - :PASTE_START => 55, - :PASTE_END => 56 } - -racc_nt_base = 57 - -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", - "TEXT", - "BOLD_START", - "BOLD_END", - "ITALIC_START", - "ITALIC_END", - "LINK_START", - "LINK_END", - "LINKSEP", - "INTLINK_START", - "INTLINK_END", - "INTLINKSEP", - "RESOURCESEP", - "CHAR_ENT", - "PRE_START", - "PRE_END", - "PREINDENT_START", - "PREINDENT_END", - "SECTION_START", - "SECTION_END", - "HLINE", - "SIGNATURE_NAME", - "SIGNATURE_DATE", - "SIGNATURE_FULL", - "PARA_START", - "PARA_END", - "UL_START", - "UL_END", - "OL_START", - "OL_END", - "LI_START", - "LI_END", - "DL_START", - "DL_END", - "DT_START", - "DT_END", - "DD_START", - "DD_END", - "TAG_START", - "TAG_END", - "ATTR_NAME", - "ATTR_VALUE", - "TABLE_START", - "TABLE_END", - "ROW_START", - "ROW_END", - "HEAD_START", - "HEAD_END", - "CELL_START", - "CELL_END", - "KEYWORD", - "TEMPLATE_START", - "TEMPLATE_END", - "CATEGORY", - "PASTE_START", - "PASTE_END", - "$start", - "wiki", - "repeated_contents", - "contents", - "text", - "bulleted_list", - "numbered_list", - "dictionary_list", - "preformatted", - "section", - "tag", - "template", - "para_contents", - "link_contents", - "reslink_repeated_contents", - "intlink_repeated_contents", - "cat_sort_contents", - "table", - "tag_attributes", - "link_repeated_contents", - "element", - "formatted_element", - "table_contents", - "row_contents", - "list_item", - "list_contents", - "@1", - "dictionary_term", - "dictionary_contents", - "dictionary_definition", - "template_parameters" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'mediacloth.y', 47) - def _reduce_1(val, _values, result) - @nodes.push WikiAST.new(0, @wiki_ast_length) - #@nodes.last.children.insert(0, val[0]) - #puts val[0] - @nodes.last.children += val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 57) - def _reduce_2(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 61) - def _reduce_3(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 65) - def _reduce_4(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 69) - def _reduce_5(val, _values, result) - list = ListAST.new(@ast_index, @ast_length) - list.list_type = :Dictionary - list.children = val[0] - result = list - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 76) - def _reduce_6(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 80) - def _reduce_7(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 84) - def _reduce_8(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 88) - def _reduce_9(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 92) - def _reduce_10(val, _values, result) - k = KeywordAST.new(@ast_index, @ast_length) - k.text = val[0] - result = k - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 98) - def _reduce_11(val, _values, result) - p = ParagraphAST.new(@ast_index, @ast_length) - p.children = val[1] - result = p - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 104) - def _reduce_12(val, _values, result) - l = LinkAST.new(@ast_index, @ast_length) - l.link_type = val[0] - l.url = val[1][0] - l.children += val[1][1..-1] if val[1].length > 1 - result = l - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 112) - def _reduce_13(val, _values, result) - p = PasteAST.new(@ast_index, @ast_length) - p.children = val[1] - result = p - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 118) - def _reduce_14(val, _values, result) - l = ResourceLinkAST.new(@ast_index, @ast_length) - l.prefix = val[1] - l.locator = val[3] - l.children = val[4] unless val[4].nil? or val[4].empty? - result = l - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 126) - def _reduce_15(val, _values, result) - l = InternalLinkAST.new(@ast_index, @ast_length) - l.locator = val[1] - l.children = val[2] unless val[2].nil? or val[2].empty? - result = l - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 133) - def _reduce_16(val, _values, result) - l = CategoryAST.new(@ast_index, @ast_length) - l.locator = val[2] - l.sort_as = val[3] - result = l - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 140) - def _reduce_17(val, _values, result) - l = CategoryLinkAST.new(@ast_index, @ast_length) - l.locator = val[3] - l.children = val[4] unless val[4].nil? or val[4].empty? - result = l - - result - end -.,., - -# reduce 18 omitted - -module_eval(<<'.,.,', 'mediacloth.y', 150) - def _reduce_19(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 154) - def _reduce_20(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 161) - def _reduce_21(val, _values, result) - if val[0] != val[2] - raise Racc::ParseError.new("XHTML end tag #{val[2]} does not match start tag #{val[0]}") - end - elem = ElementAST.new(@ast_index, @ast_length) - elem.name = val[0] - elem.attributes = val[1] - result = elem - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 171) - def _reduce_22(val, _values, result) - if val[0] != val[3] - raise Racc::ParseError.new("XHTML end tag #{val[3]} does not match start tag #{val[0]}") - end - elem = ElementAST.new(@ast_index, @ast_length) - elem.name = val[0] - elem.attributes = val[1] - elem.children += val[2] - result = elem - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 184) - def _reduce_23(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 188) - def _reduce_24(val, _values, result) - attr_map = val[2] ? val[2] : {} - attr_map[val[0]] = true - result = attr_map - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 194) - def _reduce_25(val, _values, result) - attr_map = val[2] ? val[2] : {} - attr_map[val[0]] = val[1] - result = attr_map - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 204) - def _reduce_26(val, _values, result) - result = val - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 208) - def _reduce_27(val, _values, result) - result = [val[0]] - result += val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 217) - def _reduce_28(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 221) - def _reduce_29(val, _values, result) - result = val[0] - result += val[2] if val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 229) - def _reduce_30(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 233) - def _reduce_31(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 239) - def _reduce_32(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 243) - def _reduce_33(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 249) - def _reduce_34(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 253) - def _reduce_35(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 257) - def _reduce_36(val, _values, result) - i = InternalLinkItemAST.new(@ast_index, @ast_length) - i.children = val[1] - result = [i] - result += val[2] if val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 266) - def _reduce_37(val, _values, result) - result = [] - result << val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 271) - def _reduce_38(val, _values, result) - result = [] - result += val[0] - result << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 279) - def _reduce_39(val, _values, result) - p = TextAST.new(@ast_index, @ast_length) - p.formatting = val[0][0] - p.contents = val[0][1] - result = p - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 286) - def _reduce_40(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 293) - def _reduce_41(val, _values, result) - table = TableAST.new(@ast_index, @ast_length) - table.children = val[1] unless val[1].nil? or val[1].empty? - result = table - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 299) - def _reduce_42(val, _values, result) - table = TableAST.new(@ast_index, @ast_length) - table.options = val[1] - table.children = val[2] unless val[2].nil? or val[2].empty? - result = table - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 307) - def _reduce_43(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 311) - def _reduce_44(val, _values, result) - row = TableRowAST.new(@ast_index, @ast_length) - row.children = val[1] unless val[1].nil? or val[1].empty? - result = [row] - result += val[3] unless val[3].nil? or val[3].empty? - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 318) - def _reduce_45(val, _values, result) - row = TableRowAST.new(@ast_index, @ast_length) - row.children = val[2] unless val[2].nil? or val[2].empty? - row.options = val[1] - result = [row] - result += val[4] unless val[4].nil? or val[4].empty? - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 327) - def _reduce_46(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 331) - def _reduce_47(val, _values, result) - cell = TableCellAST.new(@ast_index, @ast_length) - cell.type = :head - result = [cell] - result += val[2] unless val[2].nil? or val[2].empty? - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 338) - def _reduce_48(val, _values, result) - cell = TableCellAST.new(@ast_index, @ast_length) - cell.children = val[1] unless val[1].nil? or val[1].empty? - cell.type = :head - result = [cell] - result += val[3] unless val[3].nil? or val[3].empty? - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 346) - def _reduce_49(val, _values, result) - cell = TableCellAST.new(@ast_index, @ast_length) - cell.type = :body - result = [cell] - result += val[2] unless val[2].nil? or val[2].empty? - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 353) - def _reduce_50(val, _values, result) - if val[2] == 'attributes' - result = [] - else - cell = TableCellAST.new(@ast_index, @ast_length) - cell.children = val[1] unless val[1].nil? or val[1].empty? - cell.type = :body - result = [cell] - end - result += val[3] unless val[3].nil? or val[3].empty? - if val[2] == 'attributes' and val[3] and val[3].first.class == TableCellAST - val[3].first.attributes = val[1] - end - result - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 371) - def _reduce_51(val, _values, result) - return [:None, val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 373) - def _reduce_52(val, _values, result) - return [:HLine, val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 375) - def _reduce_53(val, _values, result) - return [:CharacterEntity, val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 377) - def _reduce_54(val, _values, result) - return [:SignatureDate, val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 379) - def _reduce_55(val, _values, result) - return [:SignatureName, val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 381) - def _reduce_56(val, _values, result) - return [:SignatureFull, val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 387) - def _reduce_57(val, _values, result) - result = FormattedAST.new(@ast_index, @ast_length) - result.formatting = :Bold - result - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 393) - def _reduce_58(val, _values, result) - result = FormattedAST.new(@ast_index, @ast_length) - result.formatting = :Italic - result - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 399) - def _reduce_59(val, _values, result) - p = FormattedAST.new(@ast_index, @ast_length) - p.formatting = :Bold - p.children += val[1] - result = p - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 406) - def _reduce_60(val, _values, result) - p = FormattedAST.new(@ast_index, @ast_length) - p.formatting = :Italic - p.children += val[1] - result = p - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 415) - def _reduce_61(val, _values, result) - list = ListAST.new(@ast_index, @ast_length) - list.list_type = :Bulleted - list.children << val[1] - list.children += val[2] - result = list - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 425) - def _reduce_62(val, _values, result) - list = ListAST.new(@ast_index, @ast_length) - list.list_type = :Numbered - list.children << val[1] - list.children += val[2] - result = list - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 434) - def _reduce_63(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 437) - def _reduce_64(val, _values, result) - result << val[1] - result += val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 441) - def _reduce_65(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 447) - def _reduce_66(val, _values, result) - result = ListItemAST.new(@ast_index, @ast_length) - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 451) - def _reduce_67(val, _values, result) - li = ListItemAST.new(@ast_index, @ast_length) - li.children += val[1] - result = li - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 460) - def _reduce_68(val, _values, result) - result = [val[1]] - result += val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 465) - def _reduce_69(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 472) - def _reduce_70(val, _values, result) - result = ListTermAST.new(@ast_index, @ast_length) - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 476) - def _reduce_71(val, _values, result) - term = ListTermAST.new(@ast_index, @ast_length) - term.children += val[1] - result = term - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 484) - def _reduce_72(val, _values, result) - result = [val[0]] - result += val[1] if val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 489) - def _reduce_73(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 495) - def _reduce_74(val, _values, result) - result = ListDefinitionAST.new(@ast_index, @ast_length) - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 499) - def _reduce_75(val, _values, result) - term = ListDefinitionAST.new(@ast_index, @ast_length) - term.children += val[1] - result = term - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 506) - def _reduce_76(val, _values, result) - p = PreformattedAST.new(@ast_index, @ast_length) - p.children += val[1] - result = p - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 512) - def _reduce_77(val, _values, result) - p = PreformattedAST.new(@ast_index, @ast_length) - p.indented = true - p.children += val[1] - result = p - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 520) - def _reduce_78(val, _values, result) - result = [val[1], val[0].length] - s = SectionAST.new(@ast_index, @ast_length) - s.children = val[1] - s.level = val[0].length - result = s - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 530) - def _reduce_79(val, _values, result) - t = TemplateAST.new(@ast_index, @ast_length) - t.template_name = val[1] - t.children = val[2] unless val[2].nil? or val[2].empty? - result = t - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 539) - def _reduce_80(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 543) - def _reduce_81(val, _values, result) - p = TemplateParameterAST.new(@ast_index, @ast_length) - p.parameter_value = val[1] - result = [p] - result += val[2] if val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 550) - def _reduce_82(val, _values, result) - p = TemplateParameterAST.new(@ast_index, @ast_length) - p.children << val[1] - result = [p] - result += val[2] if val[2] - - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - -end # class MediaWikiParser diff --git a/test/racc/regress/mof b/test/racc/regress/mof deleted file mode 100644 index 836604744b..0000000000 --- a/test/racc/regress/mof +++ /dev/null @@ -1,1368 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - - -# parser.rb - generated by racc - -require 'strscan' -require 'rubygems' -require 'cim' -require File.join(File.dirname(__FILE__), 'result') -require File.join(File.dirname(__FILE__), 'scanner') -require File.join(File.dirname(__FILE__), 'helper') - -module MOF - class Parser < Racc::Parser - -module_eval(<<'...end mof.y/module_eval...', 'mof.y', 571) - -# -# Initialize MOF::Parser -# MOF::Parser.new options = {} -# -# options -> Hash of options -# :debug -> boolean -# :includes -> array of include dirs -# :style -> :cim or :wmi -# -def initialize options = {} - @yydebug = options[:debug] - @includes = options[:includes] || [] - @quiet = options[:quiet] - @style = options[:style] || :cim # default to style CIM v2.2 syntax - - @lineno = 1 - @file = nil - @iconv = nil - @eol = "\n" - @fname = nil - @fstack = [] - @in_comment = false - @seen_files = [] - @qualifiers = {} -end - -# -# Make options hash from argv -# -# returns [ files, options ] -# - - def self.argv_handler name, argv - files = [] - options = { :namespace => "" } - while argv.size > 0 - case opt = argv.shift - when "-h" - $stderr.puts "Ruby MOF compiler" - $stderr.puts "#{name} [-h] [-d] [-I <dir>] [<moffiles>]" - $stderr.puts "Compiles <moffile>" - $stderr.puts "\t-d debug" - $stderr.puts "\t-h this help" - $stderr.puts "\t-I <dir> include dir" - $stderr.puts "\t-f force" - $stderr.puts "\t-n <namespace>" - $stderr.puts "\t-o <output>" - $stderr.puts "\t-s <style> syntax style (wmi,cim)" - $stderr.puts "\t-q quiet" - $stderr.puts "\t<moffiles> file(s) to read (else use $stdin)" - exit 0 - when "-f" then options[:force] = true - when "-s" then options[:style] = argv.shift.to_sym - when "-d" then options[:debug] = true - when "-q" then options[:quiet] = true - when "-I" - options[:includes] ||= [] - dirname = argv.shift - unless File.directory?(dirname) - files << dirname - dirname = File.dirname(dirname) - end - options[:includes] << Pathname.new(dirname) - when "-n" then options[:namespace] = argv.shift - when "-o" then options[:output] = argv.shift - when /^-.+/ - $stderr.puts "Undefined option #{opt}" - else - files << opt - end - end - [ files, options ] - end - -include Helper -include Scanner - -...end mof.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 13, 172, 163, 197, 174, 27, 63, 17, 145, 146, - 147, 62, 28, 172, 11, 173, 174, 173, 148, 11, - 144, 149, 150, 151, 152, 18, 163, 173, 33, 153, - 106, 107, 108, 109, 110, 112, 111, 40, 15, 16, - 42, 55, 57, 68, 69, 71, 72, 52, 53, 54, - 56, 163, 7, 199, 35, 42, 174, 7, 10, 10, - 115, 102, 114, 36, 10, 55, 57, 68, 69, 71, - 72, 52, 53, 54, 56, 51, 190, 44, -77, 42, - 33, 189, 10, 10, 33, 102, 51, 164, 60, 10, - 55, 57, 68, 69, 71, 72, 52, 53, 54, 56, - 170, 35, 10, 21, 42, 22, 23, 10, 29, 31, - 102, 35, 95, 96, 55, 57, 25, 65, 24, 78, - 52, 53, 54, 56, 97, 55, 57, 35, 180, 181, - 100, 52, 53, 54, 56, 93, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - -25, 93, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 191, 192, 102, 60, - 55, 57, 68, 69, 71, 72, 52, 53, 54, 56, - 145, 146, 147, 172, 113, 97, 174, 10, 18, 118, - 148, 119, 144, 149, 150, 151, 152, 173, 121, 124, - 35, 153, 55, 57, 68, 69, 71, 72, 52, 53, - 54, 56, 106, 107, 108, 109, 110, 112, 111, 10, - 55, 57, 68, 69, 71, 72, 52, 53, 54, 56, - 21, 126, 22, 23, 127, 129, 21, 10, 22, 23, - 130, 131, 133, 25, 135, 24, 10, 141, 154, 25, - 35, 24, 93, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 106, 107, 108, - 109, 110, 112, 111, 184, 185, 194, 200, 121, 207, - -59, 121, 209, 211, 135, 135, 218, 220, 221, 226, - 228, 229, 231, 10, 121, 135 ] - -racc_action_check = [ - 1, 140, 135, 186, 140, 12, 37, 8, 131, 131, - 131, 37, 13, 194, 0, 140, 194, 186, 131, 1, - 131, 131, 131, 131, 131, 8, 189, 194, 16, 131, - 65, 65, 65, 65, 65, 65, 65, 20, 7, 7, - 20, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 211, 0, 187, 17, 135, 187, 1, 135, 0, - 75, 135, 75, 18, 1, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 33, 177, 26, 207, 189, - 29, 177, 189, 207, 30, 189, 96, 137, 34, 137, - 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, - 138, 36, 138, 10, 211, 10, 10, 211, 15, 15, - 211, 169, 47, 47, 33, 33, 10, 38, 10, 43, - 33, 33, 33, 33, 49, 96, 96, 216, 142, 142, - 58, 96, 96, 96, 96, 169, 169, 169, 169, 169, - 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, - 42, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 178, 178, 60, 61, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 181, 181, 181, 218, 66, 70, 218, 42, 74, 77, - 181, 78, 181, 181, 181, 181, 181, 218, 94, 98, - 100, 181, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 141, 141, 141, 141, 141, 141, 141, 40, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 11, 102, 11, 11, 103, 116, 63, 115, 63, 63, - 118, 119, 121, 11, 122, 11, 127, 130, 132, 63, - 161, 63, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 192, 192, 192, - 192, 192, 192, 192, 162, 164, 183, 188, 195, 196, - 197, 198, 201, 205, 206, 208, 210, 212, 213, 217, - 221, 222, 223, 229, 230, 233 ] - -racc_action_pointer = [ - -5, 0, nil, nil, nil, nil, nil, 32, -2, nil, - 95, 222, -58, 12, nil, 101, -30, 46, 32, nil, - -21, nil, nil, nil, nil, nil, 11, nil, nil, 22, - 26, nil, nil, 67, 60, nil, 93, -54, 51, nil, - 155, nil, 123, 59, 220, nil, nil, 53, nil, 76, - nil, nil, nil, nil, nil, nil, nil, nil, 64, nil, - 101, 141, nil, 228, nil, 18, 125, nil, nil, nil, - 137, nil, nil, nil, 161, 0, nil, 129, 171, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 134, nil, 78, nil, 138, nil, - 192, nil, 223, 173, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 173, 172, nil, 214, 183, - nil, 195, 176, nil, nil, nil, nil, 182, nil, nil, - 189, -1, 183, nil, nil, -6, nil, 25, 38, nil, - -7, 200, 69, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 242, 208, nil, 212, nil, nil, nil, nil, 103, - nil, nil, nil, nil, nil, nil, nil, 13, 107, nil, - nil, 171, nil, 207, nil, nil, -5, 45, 248, 18, - nil, nil, 255, nil, 5, 214, 221, 222, 217, nil, - nil, 219, nil, nil, nil, 215, 216, 19, 217, nil, - 226, 43, 224, 229, nil, nil, 119, 226, 175, nil, - nil, 227, 231, 284, nil, nil, nil, nil, nil, 229, - 230, nil, nil, 227, nil, nil ] - -racc_action_default = [ - -1, -25, -2, -4, -5, -6, -7, -161, -161, -26, - -161, -161, -161, -161, -3, -161, -12, -161, -161, -28, - -33, -133, -134, -135, -136, -137, -161, -155, 236, -12, - -12, -11, -10, -161, -44, -48, -161, -161, -31, -34, - -25, -36, -100, -161, -161, -8, -9, -161, -14, -16, - -17, -18, -110, -111, -112, -113, -114, -115, -46, -45, - -161, -44, -27, -161, -30, -161, -161, -103, -104, -105, - -106, -107, -108, -109, -161, -161, -101, -131, -161, -60, - -61, -62, -63, -64, -65, -66, -67, -68, -69, -70, - -71, -72, -73, -74, -86, -13, -161, -116, -161, -47, - -161, -49, -161, -161, -29, -32, -37, -38, -39, -40, - -41, -42, -43, -35, -99, -25, -161, -132, -161, -161, - -87, -91, -93, -15, -20, -51, -50, -25, -102, -130, - -161, -161, -161, -92, -94, -25, -138, -25, -25, -157, - -161, -161, -161, -140, -142, -143, -144, -145, -146, -147, - -148, -149, -150, -151, -90, -95, -96, -97, -98, -117, - -118, -161, -161, -122, -161, -21, -22, -23, -24, -161, - -156, -158, -55, -56, -58, -128, -129, -161, -161, -153, - -139, -161, -119, -161, -121, -19, -161, -161, -75, -25, - -160, -152, -161, -141, -161, -86, -161, -55, -86, -57, - -76, -161, -154, -123, -125, -161, -93, -25, -93, -159, - -124, -25, -161, -161, -78, -80, -161, -161, -161, -127, - -52, -161, -79, -161, -83, -84, -53, -126, -54, -25, - -86, -85, -81, -88, -82, -89 ] - -racc_goto_table = [ - 8, 8, 34, 94, 122, 105, 136, 155, 48, 66, - 49, 76, 50, 19, 143, 187, 58, 204, 215, 32, - 139, 61, 2, 14, 12, 12, 1, 30, 47, 98, - 137, 171, 45, 46, 165, 166, 167, 168, 37, 26, - 232, 227, 38, 103, 64, 39, 41, 99, 101, 195, - 198, 196, 213, 214, 222, 223, 230, 234, 235, 132, - 75, 201, 225, 182, 193, 203, 104, 210, 177, 43, - 77, 123, 116, 49, 117, 50, 142, 178, 138, nil, - nil, 179, nil, 219, 128, 125, nil, nil, nil, nil, - 212, nil, 217, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 206, nil, nil, 208, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 140, 186, nil, - nil, nil, 202, nil, nil, nil, nil, 169, 140, nil, - 233, nil, nil, nil, nil, nil, 183, 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, 224, 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, 216, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 216 ] - -racc_goto_check = [ - 13, 13, 14, 35, 37, 28, 38, 52, 10, 30, - 11, 30, 12, 23, 69, 39, 15, 61, 44, 7, - 72, 14, 2, 2, 55, 55, 1, 8, 9, 16, - 17, 72, 7, 7, 18, 19, 20, 21, 24, 25, - 44, 61, 26, 15, 27, 29, 31, 33, 34, 36, - 40, 41, 42, 43, 45, 46, 47, 48, 50, 51, - 54, 52, 39, 58, 69, 60, 23, 62, 63, 64, - 65, 10, 66, 11, 67, 12, 68, 70, 71, nil, - nil, 28, nil, 52, 30, 14, nil, nil, nil, nil, - 38, nil, 38, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 37, nil, nil, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 13, 35, nil, - nil, nil, 28, nil, nil, nil, nil, 13, 13, nil, - 37, nil, nil, nil, nil, nil, 14, 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, 35, 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, 13, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 13 ] - -racc_goto_pointer = [ - nil, 26, 22, nil, nil, nil, nil, 3, 12, -5, - -25, -23, -21, 0, -15, -18, -29, -94, -103, -102, - -101, -100, nil, 3, 19, 28, 22, 6, -60, 25, - -31, 26, nil, -11, -12, -41, -137, -90, -116, -154, - -137, -135, -155, -154, -189, -161, -161, -167, -176, nil, - -175, -62, -128, nil, 18, 24, nil, nil, -98, nil, - -129, -177, -137, -72, 43, 27, -5, -3, -55, -117, - -64, -49, -107 ] - -racc_goto_default = [ - nil, nil, nil, 3, 4, 5, 6, nil, nil, nil, - nil, 70, 67, 74, 188, nil, nil, nil, nil, nil, - nil, nil, 9, nil, nil, 20, nil, nil, nil, nil, - 156, 157, 59, nil, 160, nil, 175, nil, nil, nil, - 176, nil, nil, nil, nil, nil, nil, nil, nil, 120, - 134, nil, nil, 158, nil, 73, 159, 161, nil, 162, - nil, nil, nil, 205, nil, nil, nil, nil, nil, nil, - nil, nil, nil ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 0, 71, :_reduce_1, - 1, 71, :_reduce_2, - 2, 71, :_reduce_3, - 1, 72, :_reduce_none, - 1, 72, :_reduce_5, - 1, 72, :_reduce_6, - 1, 72, :_reduce_7, - 4, 73, :_reduce_8, - 4, 73, :_reduce_none, - 3, 73, :_reduce_10, - 1, 78, :_reduce_none, - 0, 77, :_reduce_12, - 3, 77, :_reduce_13, - 1, 79, :_reduce_none, - 3, 79, :_reduce_none, - 1, 80, :_reduce_none, - 1, 80, :_reduce_17, - 1, 80, :_reduce_none, - 9, 74, :_reduce_19, - 0, 87, :_reduce_20, - 2, 87, :_reduce_21, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 0, 83, :_reduce_none, - 1, 83, :_reduce_26, - 4, 92, :_reduce_27, - 0, 94, :_reduce_28, - 3, 94, :_reduce_29, - 3, 93, :_reduce_30, - 0, 97, :_reduce_none, - 2, 97, :_reduce_32, - 0, 96, :_reduce_none, - 1, 96, :_reduce_none, - 3, 99, :_reduce_35, - 1, 99, :_reduce_none, - 1, 98, :_reduce_none, - 1, 98, :_reduce_none, - 1, 98, :_reduce_none, - 1, 98, :_reduce_none, - 1, 98, :_reduce_none, - 1, 98, :_reduce_none, - 1, 98, :_reduce_43, - 0, 85, :_reduce_none, - 1, 85, :_reduce_none, - 0, 86, :_reduce_none, - 1, 86, :_reduce_none, - 1, 84, :_reduce_48, - 2, 102, :_reduce_49, - 2, 104, :_reduce_50, - 2, 103, :_reduce_51, - 6, 89, :_reduce_52, - 6, 91, :_reduce_53, - 7, 90, :_reduce_54, - 1, 106, :_reduce_none, - 1, 106, :_reduce_56, - 1, 110, :_reduce_none, - 1, 110, :_reduce_58, - 1, 111, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_74, - 1, 109, :_reduce_75, - 2, 109, :_reduce_76, - 0, 112, :_reduce_none, - 1, 112, :_reduce_none, - 2, 113, :_reduce_79, - 0, 115, :_reduce_80, - 3, 115, :_reduce_81, - 5, 114, :_reduce_82, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 1, 117, :_reduce_none, - 0, 107, :_reduce_none, - 1, 107, :_reduce_none, - 0, 118, :_reduce_none, - 1, 118, :_reduce_89, - 3, 119, :_reduce_90, - 0, 121, :_reduce_91, - 1, 121, :_reduce_none, - 0, 108, :_reduce_none, - 1, 108, :_reduce_none, - 2, 120, :_reduce_95, - 1, 122, :_reduce_none, - 1, 122, :_reduce_none, - 1, 122, :_reduce_none, - 3, 101, :_reduce_99, - 0, 124, :_reduce_none, - 1, 124, :_reduce_101, - 3, 124, :_reduce_102, - 1, 100, :_reduce_none, - 1, 100, :_reduce_none, - 1, 100, :_reduce_none, - 1, 100, :_reduce_none, - 1, 100, :_reduce_none, - 1, 100, :_reduce_none, - 1, 100, :_reduce_109, - 1, 82, :_reduce_none, - 1, 82, :_reduce_none, - 1, 82, :_reduce_none, - 1, 82, :_reduce_none, - 1, 82, :_reduce_none, - 1, 81, :_reduce_none, - 2, 81, :_reduce_116, - 1, 123, :_reduce_none, - 1, 123, :_reduce_none, - 2, 126, :_reduce_none, - 0, 127, :_reduce_none, - 2, 127, :_reduce_none, - 1, 129, :_reduce_none, - 3, 128, :_reduce_none, - 2, 130, :_reduce_none, - 0, 132, :_reduce_none, - 3, 132, :_reduce_none, - 3, 131, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 6, 75, :_reduce_130, - 0, 136, :_reduce_none, - 1, 136, :_reduce_none, - 1, 95, :_reduce_none, - 1, 95, :_reduce_none, - 1, 95, :_reduce_none, - 1, 95, :_reduce_none, - 1, 95, :_reduce_none, - 4, 134, :_reduce_138, - 5, 135, :_reduce_139, - 1, 138, :_reduce_140, - 3, 138, :_reduce_141, - 1, 139, :_reduce_none, - 1, 139, :_reduce_none, - 1, 139, :_reduce_none, - 1, 139, :_reduce_none, - 1, 139, :_reduce_none, - 1, 139, :_reduce_none, - 1, 139, :_reduce_none, - 1, 139, :_reduce_none, - 1, 139, :_reduce_none, - 1, 139, :_reduce_none, - 5, 137, :_reduce_152, - 1, 140, :_reduce_153, - 3, 140, :_reduce_154, - 2, 76, :_reduce_none, - 8, 125, :_reduce_none, - 1, 141, :_reduce_none, - 2, 141, :_reduce_none, - 5, 142, :_reduce_none, - 3, 142, :_reduce_160 ] - -racc_reduce_n = 161 - -racc_shift_n = 236 - -racc_token_table = { - false => 0, - :error => 1, - "*" => 2, - "/" => 3, - "+" => 4, - "-" => 5, - :PRAGMA => 6, - :INCLUDE => 7, - :IDENTIFIER => 8, - :CLASS => 9, - :ASSOCIATION => 10, - :INDICATION => 11, - :AMENDED => 12, - :ENABLEOVERRIDE => 13, - :DISABLEOVERRIDE => 14, - :RESTRICTED => 15, - :TOSUBCLASS => 16, - :TOINSTANCE => 17, - :TRANSLATABLE => 18, - :QUALIFIER => 19, - :SCOPE => 20, - :SCHEMA => 21, - :PROPERTY => 22, - :REFERENCE => 23, - :METHOD => 24, - :PARAMETER => 25, - :FLAVOR => 26, - :INSTANCE => 27, - :AS => 28, - :REF => 29, - :ANY => 30, - :OF => 31, - :DT_VOID => 32, - :DT_UINT8 => 33, - :DT_SINT8 => 34, - :DT_UINT16 => 35, - :DT_SINT16 => 36, - :DT_UINT32 => 37, - :DT_SINT32 => 38, - :DT_UINT64 => 39, - :DT_SINT64 => 40, - :DT_REAL32 => 41, - :DT_REAL64 => 42, - :DT_CHAR16 => 43, - :DT_STR => 44, - :DT_BOOLEAN => 45, - :DT_DATETIME => 46, - :positiveDecimalValue => 47, - :stringValue => 48, - :realValue => 49, - :charValue => 50, - :booleanValue => 51, - :nullValue => 52, - :binaryValue => 53, - :octalValue => 54, - :decimalValue => 55, - :hexValue => 56, - "#" => 57, - "(" => 58, - ")" => 59, - "," => 60, - "{" => 61, - "}" => 62, - ";" => 63, - "[" => 64, - "]" => 65, - ":" => 66, - "$" => 67, - "=" => 68, - "." => 69 } - -racc_nt_base = 70 - -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", - "\"*\"", - "\"/\"", - "\"+\"", - "\"-\"", - "PRAGMA", - "INCLUDE", - "IDENTIFIER", - "CLASS", - "ASSOCIATION", - "INDICATION", - "AMENDED", - "ENABLEOVERRIDE", - "DISABLEOVERRIDE", - "RESTRICTED", - "TOSUBCLASS", - "TOINSTANCE", - "TRANSLATABLE", - "QUALIFIER", - "SCOPE", - "SCHEMA", - "PROPERTY", - "REFERENCE", - "METHOD", - "PARAMETER", - "FLAVOR", - "INSTANCE", - "AS", - "REF", - "ANY", - "OF", - "DT_VOID", - "DT_UINT8", - "DT_SINT8", - "DT_UINT16", - "DT_SINT16", - "DT_UINT32", - "DT_SINT32", - "DT_UINT64", - "DT_SINT64", - "DT_REAL32", - "DT_REAL64", - "DT_CHAR16", - "DT_STR", - "DT_BOOLEAN", - "DT_DATETIME", - "positiveDecimalValue", - "stringValue", - "realValue", - "charValue", - "booleanValue", - "nullValue", - "binaryValue", - "octalValue", - "decimalValue", - "hexValue", - "\"#\"", - "\"(\"", - "\")\"", - "\",\"", - "\"{\"", - "\"}\"", - "\";\"", - "\"[\"", - "\"]\"", - "\":\"", - "\"$\"", - "\"=\"", - "\".\"", - "$start", - "mofSpecification", - "mofProduction", - "compilerDirective", - "classDeclaration", - "qualifierDeclaration", - "instanceDeclaration", - "pragmaParameters_opt", - "pragmaName", - "pragmaParameterValues", - "pragmaParameterValue", - "string", - "integerValue", - "qualifierList_opt", - "className", - "alias_opt", - "superClass_opt", - "classFeatures", - "classFeature", - "propertyDeclaration", - "methodDeclaration", - "referenceDeclaration", - "qualifierList", - "qualifier", - "qualifiers", - "qualifierName", - "qualifierParameter_opt", - "flavor_opt", - "flavor", - "qualifierParameter", - "constantValue", - "arrayInitializer", - "alias", - "superClass", - "aliasIdentifier", - "dataType", - "propertyName", - "array_opt", - "defaultValue_opt", - "objectRef", - "referenceName", - "methodName", - "parameterList_opt", - "parameterList", - "parameter", - "parameters", - "typespec", - "parameterName", - "parameterValue_opt", - "array", - "defaultValue", - "positiveDecimalValue_opt", - "initializer", - "referenceInitializer", - "constantValues", - "instance", - "objectHandle", - "namespace_opt", - "modelPath", - "namespaceHandle", - "keyValuePairList", - "keyValuePair", - "keyValuePairs", - "keyname", - "qualifierType", - "scope", - "defaultFlavor_opt", - "defaultFlavor", - "metaElements", - "metaElement", - "flavors", - "valueInitializers", - "valueInitializer" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'mof.y', 41) - def _reduce_1(val, _values, result) - result = Hash.new - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 43) - def _reduce_2(val, _values, result) - result = { @name => @result } - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 45) - def _reduce_3(val, _values, result) - result = val[0] - result[@name] = @result - - result - end -.,., - -# reduce 4 omitted - -module_eval(<<'.,.,', 'mof.y', 53) - def _reduce_5(val, _values, result) - #puts "Class '#{val[0].name}'" - @result.classes << val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 57) - def _reduce_6(val, _values, result) - @result.qualifiers << val[0] - @qualifiers[val[0].name.downcase] = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 61) - def _reduce_7(val, _values, result) - @result.instances << val[0] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 71) - def _reduce_8(val, _values, result) - raise MOF::Helper::Error.new(@name,@lineno,@line,"Missing filename after '#pragma include'") unless val[3] - open val[3], :pragma - - result - end -.,., - -# reduce 9 omitted - -module_eval(<<'.,.,', 'mof.y', 76) - def _reduce_10(val, _values, result) - raise StyleError.new(@name,@lineno,@line,"Use '#pragma include' instead of '#include'") unless @style == :wmi - raise MOF::Helper::Error.new(@name,@lineno,@line,"Missing filename after '#include'") unless val[2] - open val[2], :pragma - - result - end -.,., - -# reduce 11 omitted - -module_eval(<<'.,.,', 'mof.y', 88) - def _reduce_12(val, _values, result) - raise StyleError.new(@name,@lineno,@line,"#pragma parameter missing") unless @style == :wmi - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 90) - def _reduce_13(val, _values, result) - result = val[1] - result - end -.,., - -# reduce 14 omitted - -# reduce 15 omitted - -# reduce 16 omitted - -module_eval(<<'.,.,', 'mof.y', 101) - def _reduce_17(val, _values, result) - raise StyleError.new(@name,@lineno,@line,"#pragma parameter missing") unless @style == :wmi - result - end -.,., - -# reduce 18 omitted - -module_eval(<<'.,.,', 'mof.y', 112) - def _reduce_19(val, _values, result) - qualifiers = val[0] - features = val[6] - # FIXME: features must not include references - result = CIM::Class.new(val[2],qualifiers,val[3],val[4],features) - - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 121) - def _reduce_20(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 123) - def _reduce_21(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -# reduce 22 omitted - -# reduce 23 omitted - -# reduce 24 omitted - -# reduce 25 omitted - -module_eval(<<'.,.,', 'mof.y', 136) - def _reduce_26(val, _values, result) - result = CIM::QualifierSet.new val[0] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 141) - def _reduce_27(val, _values, result) - result = val[2] - result.unshift val[1] if val[1] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 147) - def _reduce_28(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 149) - def _reduce_29(val, _values, result) - result = val[0] - result << val[2] if val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 156) - def _reduce_30(val, _values, result) - # Get qualifier decl - qualifier = case val[0] - when CIM::Qualifier then val[0].definition - when CIM::QualifierDeclaration then val[0] - when String then @qualifiers[val[0].downcase] - else - nil - end - raise MOF::Helper::Error.new(@name,@lineno,@line,"'#{val[0]}' is not a valid qualifier") unless qualifier - value = val[1] - raise MOF::Helper::Error.new(@name,@lineno,@line,"#{value.inspect} does not match qualifier type '#{qualifier.type}'") unless qualifier.type.matches?(value)||@style == :wmi - # Don't propagate a boolean 'false' - if qualifier.type == :boolean && value == false - result = nil - else - result = CIM::Qualifier.new(qualifier,value,val[2]) - end - - result - end -.,., - -# reduce 31 omitted - -module_eval(<<'.,.,', 'mof.y', 179) - def _reduce_32(val, _values, result) - result = CIM::QualifierFlavors.new val[1] - result - end -.,., - -# reduce 33 omitted - -# reduce 34 omitted - -module_eval(<<'.,.,', 'mof.y', 189) - def _reduce_35(val, _values, result) - result = val[1] - result - end -.,., - -# reduce 36 omitted - -# reduce 37 omitted - -# reduce 38 omitted - -# reduce 39 omitted - -# reduce 40 omitted - -# reduce 41 omitted - -# reduce 42 omitted - -module_eval(<<'.,.,', 'mof.y', 196) - def _reduce_43(val, _values, result) - case val[0].to_sym - when :amended, :toinstance - raise StyleError.new(@name,@lineno,@line,"'#{val[0]}' is not a valid flavor") unless @style == :wmi - end - - result - end -.,., - -# reduce 44 omitted - -# reduce 45 omitted - -# reduce 46 omitted - -# reduce 47 omitted - -module_eval(<<'.,.,', 'mof.y', 215) - def _reduce_48(val, _values, result) - raise ParseError.new("Class name must be prefixed by '<schema>_'") unless val[0].include?("_") || @style == :wmi - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 220) - def _reduce_49(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 225) - def _reduce_50(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 230) - def _reduce_51(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 236) - def _reduce_52(val, _values, result) - if val[3] - type = CIM::Array.new val[3],val[1] - else - type = val[1] - end - result = CIM::Property.new(type,val[2],val[0],val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 247) - def _reduce_53(val, _values, result) - if val[4] - raise StyleError.new(@name,@lineno,@line,"Array not allowed in reference declaration") unless @style == :wmi - end - result = CIM::Reference.new(val[1],val[2],val[0],val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 255) - def _reduce_54(val, _values, result) - result = CIM::Method.new(val[1],val[2],val[0],val[4]) - result - end -.,., - -# reduce 55 omitted - -module_eval(<<'.,.,', 'mof.y', 261) - def _reduce_56(val, _values, result) - # tmplprov.mof has 'string Property;' - raise StyleError.new(@name,@lineno,@line,"Invalid keyword '#{val[0]}' used for property name") unless @style == :wmi - - result - end -.,., - -# reduce 57 omitted - -module_eval(<<'.,.,', 'mof.y', 269) - def _reduce_58(val, _values, result) - result = "Indication" - result - end -.,., - -# reduce 59 omitted - -# reduce 60 omitted - -# reduce 61 omitted - -# reduce 62 omitted - -# reduce 63 omitted - -# reduce 64 omitted - -# reduce 65 omitted - -# reduce 66 omitted - -# reduce 67 omitted - -# reduce 68 omitted - -# reduce 69 omitted - -# reduce 70 omitted - -# reduce 71 omitted - -# reduce 72 omitted - -# reduce 73 omitted - -module_eval(<<'.,.,', 'mof.y', 292) - def _reduce_74(val, _values, result) - raise StyleError.new(@name,@lineno,@line,"'void' is not a valid datatype") unless @style == :wmi - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 297) - def _reduce_75(val, _values, result) - # WMI uses class names as data types (without REF ?!) - raise StyleError.new(@name,@lineno,@line,"Expected 'ref' keyword after classname '#{val[0]}'") unless @style == :wmi - result = CIM::ReferenceType.new val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 303) - def _reduce_76(val, _values, result) - result = CIM::ReferenceType.new val[0] - result - end -.,., - -# reduce 77 omitted - -# reduce 78 omitted - -module_eval(<<'.,.,', 'mof.y', 313) - def _reduce_79(val, _values, result) - result = val[1].unshift val[0] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 318) - def _reduce_80(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 320) - def _reduce_81(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 325) - def _reduce_82(val, _values, result) - if val[3] - type = CIM::Array.new val[3], val[1] - else - type = val[1] - end - result = CIM::Property.new(type,val[2],val[0]) - - result - end -.,., - -# reduce 83 omitted - -# reduce 84 omitted - -# reduce 85 omitted - -# reduce 86 omitted - -# reduce 87 omitted - -# reduce 88 omitted - -module_eval(<<'.,.,', 'mof.y', 351) - def _reduce_89(val, _values, result) - raise "Default parameter value not allowed in syntax style '{@style}'" unless @style == :wmi - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 356) - def _reduce_90(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 361) - def _reduce_91(val, _values, result) - result = -1 - result - end -.,., - -# reduce 92 omitted - -# reduce 93 omitted - -# reduce 94 omitted - -module_eval(<<'.,.,', 'mof.y', 372) - def _reduce_95(val, _values, result) - result = val[1] - result - end -.,., - -# reduce 96 omitted - -# reduce 97 omitted - -# reduce 98 omitted - -module_eval(<<'.,.,', 'mof.y', 383) - def _reduce_99(val, _values, result) - result = val[1] - result - end -.,., - -# reduce 100 omitted - -module_eval(<<'.,.,', 'mof.y', 389) - def _reduce_101(val, _values, result) - result = [ val[0] ] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 391) - def _reduce_102(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -# reduce 103 omitted - -# reduce 104 omitted - -# reduce 105 omitted - -# reduce 106 omitted - -# reduce 107 omitted - -# reduce 108 omitted - -module_eval(<<'.,.,', 'mof.y', 402) - def _reduce_109(val, _values, result) - raise "Instance as property value not allowed in syntax style '{@style}'" unless @style == :wmi - result - end -.,., - -# reduce 110 omitted - -# reduce 111 omitted - -# reduce 112 omitted - -# reduce 113 omitted - -# reduce 114 omitted - -# reduce 115 omitted - -module_eval(<<'.,.,', 'mof.y', 416) - def _reduce_116(val, _values, result) - result = val[0] + val[1] - result - end -.,., - -# reduce 117 omitted - -# reduce 118 omitted - -# reduce 119 omitted - -# reduce 120 omitted - -# reduce 121 omitted - -# reduce 122 omitted - -# reduce 123 omitted - -# reduce 124 omitted - -# reduce 125 omitted - -# reduce 126 omitted - -# reduce 127 omitted - -# reduce 128 omitted - -# reduce 129 omitted - -module_eval(<<'.,.,', 'mof.y', 471) - def _reduce_130(val, _values, result) - result = CIM::QualifierDeclaration.new( val[1], val[2][0], val[2][1], val[3], val[4]) - result - end -.,., - -# reduce 131 omitted - -# reduce 132 omitted - -# reduce 133 omitted - -# reduce 134 omitted - -# reduce 135 omitted - -# reduce 136 omitted - -# reduce 137 omitted - -module_eval(<<'.,.,', 'mof.y', 490) - def _reduce_138(val, _values, result) - type = val[2].nil? ? val[1] : CIM::Array.new(val[2],val[1]) - result = [ type, val[3] ] - - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 497) - def _reduce_139(val, _values, result) - result = CIM::QualifierScopes.new(val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 502) - def _reduce_140(val, _values, result) - result = [ val[0] ] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 504) - def _reduce_141(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -# reduce 142 omitted - -# reduce 143 omitted - -# reduce 144 omitted - -# reduce 145 omitted - -# reduce 146 omitted - -# reduce 147 omitted - -# reduce 148 omitted - -# reduce 149 omitted - -# reduce 150 omitted - -# reduce 151 omitted - -module_eval(<<'.,.,', 'mof.y', 522) - def _reduce_152(val, _values, result) - result = CIM::QualifierFlavors.new val[3] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 527) - def _reduce_153(val, _values, result) - result = [ val[0] ] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 529) - def _reduce_154(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -# reduce 155 omitted - -# reduce 156 omitted - -# reduce 157 omitted - -# reduce 158 omitted - -# reduce 159 omitted - -module_eval(<<'.,.,', 'mof.y', 553) - def _reduce_160(val, _values, result) - raise "Instance property '#{val[1]} must have a value" unless @style == :wmi - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module MOF - - diff --git a/test/racc/regress/namae b/test/racc/regress/namae deleted file mode 100644 index 5a795e4579..0000000000 --- a/test/racc/regress/namae +++ /dev/null @@ -1,634 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - -require 'singleton' -require 'strscan' - -module Namae - class Parser < Racc::Parser - -module_eval(<<'...end namae.y/module_eval...', 'namae.y', 135) - - include Singleton - - attr_reader :options, :input - - def initialize - @input, @options = StringScanner.new(''), { - :debug => false, - :prefer_comma_as_separator => false, - :comma => ',', - :stops => ',;', - :separator => /\s*(\band\b|\&|;)\s*/i, - :title => /\s*\b(sir|lord|count(ess)?|(gen|adm|col|maj|capt|cmdr|lt|sgt|cpl|pvt|prof|dr|md|ph\.?d)\.?)(\s+|$)/i, - :suffix => /\s*\b(JR|Jr|jr|SR|Sr|sr|[IVX]{2,})(\.|\b)/, - :appellation => /\s*\b((mrs?|ms|fr|hr)\.?|miss|herr|frau)(\s+|$)/i - } - end - - def debug? - options[:debug] || ENV['DEBUG'] - end - - def separator - options[:separator] - end - - def comma - options[:comma] - end - - def stops - options[:stops] - end - - def title - options[:title] - end - - def suffix - options[:suffix] - end - - def appellation - options[:appellation] - end - - def prefer_comma_as_separator? - options[:prefer_comma_as_separator] - end - - def parse(input) - parse!(input) - rescue => e - warn e.message if debug? - [] - end - - def parse!(string) - input.string = normalize(string) - reset - do_parse - end - - def normalize(string) - string = string.strip - string - end - - def reset - @commas, @words, @initials, @suffices, @yydebug = 0, 0, 0, 0, debug? - self - end - - private - - def stack - @vstack || @racc_vstack || [] - end - - def last_token - stack[-1] - end - - def consume_separator - return next_token if seen_separator? - @commas, @words, @initials, @suffices = 0, 0, 0, 0 - [:AND, :AND] - end - - def consume_comma - @commas += 1 - [:COMMA, :COMMA] - end - - def consume_word(type, word) - @words += 1 - - case type - when :UWORD - @initials += 1 if word =~ /^[[:upper:]]+\b/ - when :SUFFIX - @suffices += 1 - end - - [type, word] - end - - def seen_separator? - !stack.empty? && last_token == :AND - end - - def suffix? - !@suffices.zero? || will_see_suffix? - end - - def will_see_suffix? - input.peek(8).to_s.strip.split(/\s+/)[0] =~ suffix - end - - def will_see_initial? - input.peek(6).to_s.strip.split(/\s+/)[0] =~ /^[[:upper:]]+\b/ - end - - def seen_full_name? - prefer_comma_as_separator? && @words > 1 && - (@initials > 0 || !will_see_initial?) && !will_see_suffix? - end - - def next_token - case - when input.nil?, input.eos? - nil - when input.scan(separator) - consume_separator - when input.scan(/\s*#{comma}\s*/) - if @commas.zero? && !seen_full_name? || @commas == 1 && suffix? - consume_comma - else - consume_separator - end - when input.scan(/\s+/) - next_token - when input.scan(title) - consume_word(:TITLE, input.matched.strip) - when input.scan(suffix) - consume_word(:SUFFIX, input.matched.strip) - when input.scan(appellation) - [:APPELLATION, input.matched.strip] - when input.scan(/((\\\w+)?\{[^\}]*\})*[[:upper:]][^\s#{stops}]*/) - consume_word(:UWORD, input.matched) - when input.scan(/((\\\w+)?\{[^\}]*\})*[[:lower:]][^\s#{stops}]*/) - consume_word(:LWORD, input.matched) - when input.scan(/(\\\w+)?\{[^\}]*\}[^\s#{stops}]*/) - consume_word(:PWORD, input.matched) - when input.scan(/('[^'\n]+')|("[^"\n]+")/) - consume_word(:NICK, input.matched[1...-1]) - else - raise ArgumentError, - "Failed to parse name #{input.string.inspect}: unmatched data at offset #{input.pos}" - end - end - - def on_error(tid, value, stack) - raise ArgumentError, - "Failed to parse name: unexpected '#{value}' at #{stack.inspect}" - end - -# -*- racc -*- -...end namae.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - -39, 16, 32, 30, -40, 31, 33, -39, 17, -39, - -39, -40, 67, -40, -40, 66, 53, 52, 54, -38, - 59, -22, 39, -34, 45, 58, -38, 53, 52, 54, - 53, 52, 54, 59, 39, 39, 62, 39, 53, 52, - 54, 14, 12, 15, 68, 39, 7, 8, 14, 12, - 15, 58, 39, 7, 8, 14, 22, 15, 24, 14, - 22, 15, 24, 14, 22, 15, 30, 28, 31, 30, - 28, 31, -19, -19, -19, 30, 42, 31, 30, 28, - 31, -20, -20, -20, 30, 46, 31, 30, 28, 31, - 30, 28, 31, -19, -19, -19, 53, 52, 54, 53, - 52, 54, 39, 58, 59 ] - -racc_action_check = [ - 14, 1, 11, 43, 15, 43, 16, 14, 1, 14, - 14, 15, 50, 15, 15, 49, 49, 49, 49, 12, - 50, 12, 23, 49, 27, 37, 12, 32, 32, 32, - 45, 45, 45, 38, 32, 40, 44, 45, 62, 62, - 62, 0, 0, 0, 57, 62, 0, 0, 17, 17, - 17, 60, 61, 17, 17, 9, 9, 9, 9, 20, - 20, 20, 20, 5, 5, 5, 10, 10, 10, 21, - 21, 21, 22, 22, 22, 24, 24, 24, 25, 25, - 25, 28, 28, 28, 29, 29, 29, 35, 35, 35, - 41, 41, 41, 42, 42, 42, 67, 67, 67, 73, - 73, 73, 64, 70, 72 ] - -racc_action_pointer = [ - 38, 1, nil, nil, nil, 60, nil, nil, nil, 52, - 63, 0, 19, nil, 0, 4, 6, 45, nil, nil, - 56, 66, 69, 12, 72, 75, nil, 22, 78, 81, - nil, nil, 24, nil, nil, 84, nil, 16, 23, nil, - 25, 87, 90, 0, 34, 27, nil, nil, nil, 13, - 10, nil, nil, nil, nil, nil, nil, 35, nil, nil, - 42, 42, 35, nil, 92, nil, nil, 93, nil, nil, - 94, nil, 94, 96, nil ] - -racc_action_default = [ - -1, -49, -2, -4, -5, -49, -8, -9, -10, -23, - -49, -49, -19, -28, -30, -31, -49, -49, -6, -7, - -49, -49, -38, -41, -49, -49, -29, -15, -22, -23, - -30, -31, -36, 75, -3, -49, -15, -45, -42, -43, - -41, -49, -22, -23, -14, -36, -21, -16, -24, -37, - -26, -32, -38, -39, -40, -14, -11, -46, -47, -44, - -45, -41, -36, -17, -49, -33, -35, -49, -48, -12, - -45, -18, -25, -27, -13 ] - -racc_goto_table = [ - 3, 37, 26, 50, 56, 18, 2, 9, 47, 23, - 1, 19, 20, 26, 73, 27, 50, 3, 60, 64, - 23, 63, 26, 34, 9, nil, 36, 69, 21, 40, - 44, 43, 25, 50, nil, 72, 26, 74, 71, 70, - 55, nil, nil, 35, nil, nil, 61, 41, nil, 65, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 65 ] - -racc_goto_check = [ - 3, 8, 17, 16, 9, 3, 2, 7, 12, 3, - 1, 4, 7, 17, 14, 10, 16, 3, 8, 15, - 3, 12, 17, 2, 7, nil, 10, 9, 11, 10, - 10, 7, 11, 16, nil, 16, 17, 9, 12, 8, - 10, nil, nil, 11, nil, nil, 10, 11, nil, 3, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 3 ] - -racc_goto_pointer = [ - nil, 10, 6, 0, 6, nil, nil, 7, -22, -33, - 5, 23, -24, nil, -53, -30, -29, -7, nil ] - -racc_goto_default = [ - nil, nil, nil, 51, 4, 5, 6, 29, nil, nil, - 11, 10, nil, 48, 49, nil, 38, 13, 57 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 0, 12, :_reduce_1, - 1, 12, :_reduce_2, - 3, 12, :_reduce_3, - 1, 13, :_reduce_4, - 1, 13, :_reduce_none, - 2, 13, :_reduce_6, - 2, 13, :_reduce_7, - 1, 13, :_reduce_none, - 1, 16, :_reduce_9, - 1, 16, :_reduce_10, - 4, 15, :_reduce_11, - 5, 15, :_reduce_12, - 6, 15, :_reduce_13, - 3, 15, :_reduce_14, - 2, 15, :_reduce_15, - 3, 17, :_reduce_16, - 4, 17, :_reduce_17, - 5, 17, :_reduce_18, - 1, 22, :_reduce_none, - 2, 22, :_reduce_20, - 3, 22, :_reduce_21, - 1, 21, :_reduce_none, - 1, 21, :_reduce_none, - 1, 23, :_reduce_24, - 3, 23, :_reduce_25, - 1, 23, :_reduce_26, - 3, 23, :_reduce_27, - 1, 18, :_reduce_none, - 2, 18, :_reduce_29, - 1, 28, :_reduce_none, - 1, 28, :_reduce_none, - 1, 25, :_reduce_none, - 2, 25, :_reduce_33, - 0, 26, :_reduce_none, - 1, 26, :_reduce_none, - 0, 24, :_reduce_none, - 1, 24, :_reduce_none, - 1, 14, :_reduce_none, - 1, 14, :_reduce_none, - 1, 14, :_reduce_none, - 0, 19, :_reduce_none, - 1, 19, :_reduce_none, - 1, 27, :_reduce_none, - 2, 27, :_reduce_44, - 0, 20, :_reduce_none, - 1, 20, :_reduce_none, - 1, 29, :_reduce_none, - 2, 29, :_reduce_48 ] - -racc_reduce_n = 49 - -racc_shift_n = 75 - -racc_token_table = { - false => 0, - :error => 1, - :COMMA => 2, - :UWORD => 3, - :LWORD => 4, - :PWORD => 5, - :NICK => 6, - :AND => 7, - :APPELLATION => 8, - :TITLE => 9, - :SUFFIX => 10 } - -racc_nt_base = 11 - -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", - "COMMA", - "UWORD", - "LWORD", - "PWORD", - "NICK", - "AND", - "APPELLATION", - "TITLE", - "SUFFIX", - "$start", - "names", - "name", - "word", - "display_order", - "honorific", - "sort_order", - "u_words", - "opt_suffices", - "opt_titles", - "last", - "von", - "first", - "opt_words", - "words", - "opt_comma", - "suffices", - "u_word", - "titles" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'namae.y', 39) - def _reduce_1(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 40) - def _reduce_2(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 41) - def _reduce_3(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 43) - def _reduce_4(val, _values, result) - result = Name.new(:given => val[0]) - result - end -.,., - -# reduce 5 omitted - -module_eval(<<'.,.,', 'namae.y', 45) - def _reduce_6(val, _values, result) - result = val[0].merge(:family => val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 46) - def _reduce_7(val, _values, result) - result = val[1].merge(val[0]) - result - end -.,., - -# reduce 8 omitted - -module_eval(<<'.,.,', 'namae.y', 49) - def _reduce_9(val, _values, result) - result = Name.new(:appellation => val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 50) - def _reduce_10(val, _values, result) - result = Name.new(:title => val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 54) - def _reduce_11(val, _values, result) - result = Name.new(:given => val[0], :family => val[1], - :suffix => val[2], :title => val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 59) - def _reduce_12(val, _values, result) - result = Name.new(:given => val[0], :nick => val[1], - :family => val[2], :suffix => val[3], :title => val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 64) - def _reduce_13(val, _values, result) - result = Name.new(:given => val[0], :nick => val[1], - :particle => val[2], :family => val[3], - :suffix => val[4], :title => val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 70) - def _reduce_14(val, _values, result) - result = Name.new(:given => val[0], :particle => val[1], - :family => val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 75) - def _reduce_15(val, _values, result) - result = Name.new(:particle => val[0], :family => val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 80) - def _reduce_16(val, _values, result) - result = Name.new({ :family => val[0], :suffix => val[2][0], - :given => val[2][1] }, !!val[2][0]) - - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 85) - def _reduce_17(val, _values, result) - result = Name.new({ :particle => val[0], :family => val[1], - :suffix => val[3][0], :given => val[3][1] }, !!val[3][0]) - - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 90) - def _reduce_18(val, _values, result) - result = Name.new({ :particle => val[0,2].join(' '), :family => val[2], - :suffix => val[4][0], :given => val[4][1] }, !!val[4][0]) - - result - end -.,., - -# reduce 19 omitted - -module_eval(<<'.,.,', 'namae.y', 96) - def _reduce_20(val, _values, result) - result = val.join(' ') - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 97) - def _reduce_21(val, _values, result) - result = val.join(' ') - result - end -.,., - -# reduce 22 omitted - -# reduce 23 omitted - -module_eval(<<'.,.,', 'namae.y', 101) - def _reduce_24(val, _values, result) - result = [nil,val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 102) - def _reduce_25(val, _values, result) - result = [val[2],val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 103) - def _reduce_26(val, _values, result) - result = [val[0],nil] - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 104) - def _reduce_27(val, _values, result) - result = [val[0],val[2]] - result - end -.,., - -# reduce 28 omitted - -module_eval(<<'.,.,', 'namae.y', 107) - def _reduce_29(val, _values, result) - result = val.join(' ') - result - end -.,., - -# reduce 30 omitted - -# reduce 31 omitted - -# reduce 32 omitted - -module_eval(<<'.,.,', 'namae.y', 112) - def _reduce_33(val, _values, result) - result = val.join(' ') - result - end -.,., - -# reduce 34 omitted - -# reduce 35 omitted - -# reduce 36 omitted - -# reduce 37 omitted - -# reduce 38 omitted - -# reduce 39 omitted - -# reduce 40 omitted - -# reduce 41 omitted - -# reduce 42 omitted - -# reduce 43 omitted - -module_eval(<<'.,.,', 'namae.y', 122) - def _reduce_44(val, _values, result) - result = val.join(' ') - result - end -.,., - -# reduce 45 omitted - -# reduce 46 omitted - -# reduce 47 omitted - -module_eval(<<'.,.,', 'namae.y', 127) - def _reduce_48(val, _values, result) - result = val.join(' ') - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module Namae diff --git a/test/racc/regress/nasl b/test/racc/regress/nasl deleted file mode 100644 index 9173795a1d..0000000000 --- a/test/racc/regress/nasl +++ /dev/null @@ -1,2058 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - - -require 'nasl/parser/tree' - -require 'nasl/parser/argument' -require 'nasl/parser/array' -require 'nasl/parser/assigment' -require 'nasl/parser/block' -require 'nasl/parser/break' -require 'nasl/parser/call' -require 'nasl/parser/comment' -require 'nasl/parser/continue' -require 'nasl/parser/decrement' -require 'nasl/parser/empty' -require 'nasl/parser/export' -require 'nasl/parser/expression' -require 'nasl/parser/for' -require 'nasl/parser/foreach' -require 'nasl/parser/function' -require 'nasl/parser/global' -require 'nasl/parser/identifier' -require 'nasl/parser/if' -require 'nasl/parser/import' -require 'nasl/parser/include' -require 'nasl/parser/increment' -require 'nasl/parser/integer' -require 'nasl/parser/ip' -require 'nasl/parser/key_value_pair' -require 'nasl/parser/list' -require 'nasl/parser/local' -require 'nasl/parser/lvalue' -require 'nasl/parser/parameter' -require 'nasl/parser/reference' -require 'nasl/parser/repeat' -require 'nasl/parser/repetition' -require 'nasl/parser/return' -require 'nasl/parser/string' -require 'nasl/parser/undefined' -require 'nasl/parser/while' - -module Nasl - class Grammar < Racc::Parser - -module_eval(<<'...end nasl.y/module_eval...', 'nasl.y', 582) - -def n(cls, *args) - begin - Nasl.const_get(cls).new(@tree, *args) - rescue - puts "An exception occurred during the creation of a #{cls} instance." - puts - puts "The arguments passed to the constructor were:" - puts args - puts - puts @tok.last.context - puts - raise - end -end - -def c(*args) - n(:Comment, *args) - args[1] -end - -def on_error(type, value, stack) - raise ParseException, "The language's grammar does not permit #{value.name} to appear here", value.context -end - -def next_token - @tok = @tkz.get_token - - if @first && @tok.first == :COMMENT - n(:Comment, @tok.last) - @tok = @tkz.get_token - end - @first = false - - return @tok -end - -def parse(env, code, path) - @first = true - @tree = Tree.new(env) - @tkz = Tokenizer.new(code, path) - @tree.concat(do_parse) -end - -...end nasl.y/module_eval... -##### State transition tables begin ### - -clist = [ -'144,143,161,162,163,164,165,166,157,158,159,160,153,152,151,154,155', -'156,145,146,147,149,150,82,54,111,148,81,218,83,55,51,50,56,54,54,80', -'11,78,65,55,55,53,63,54,54,66,95,102,103,55,55,53,53,64,54,218,269,67', -'94,96,55,53,53,97,98,99,100,101,102,103,104,82,53,267,217,81,130,83', -'131,51,50,130,54,131,80,130,54,131,55,51,50,68,55,54,72,95,147,149,150', -'55,53,73,148,54,53,102,103,74,96,55,109,53,97,98,99,100,101,102,103', -'104,82,53,112,114,81,54,83,133,51,50,134,55,136,80,137,54,138,141,51', -'50,167,55,54,53,95,147,149,150,55,10,11,148,54,53,172,37,37,96,55,185', -'53,97,98,99,100,101,102,103,104,82,53,192,195,81,225,83,226,51,50,148', -'54,148,80,179,148,253,55,254,255,54,54,54,256,95,257,55,55,55,53,97', -'98,99,100,101,102,103,96,53,53,53,97,98,99,100,101,102,103,104,82,54', -'258,259,81,260,83,55,51,50,262,54,266,80,268,270,43,55,273,53,54,274', -'54,275,95,148,55,148,55,53,97,98,99,100,101,102,103,96,53,148,53,97', -'98,99,100,101,102,103,104,82,148,276,43,81,300,83,301,51,50,306,,,80', -'154,155,156,145,146,147,149,150,54,,95,148,,,55,,145,146,147,149,150', -',,96,148,,53,97,98,99,100,101,102,103,104,82,,,,81,,83,,51,50,,,,80', -',145,146,147,149,150,,,54,148,95,,,,55,,,145,146,147,149,150,94,96,184', -'148,53,97,98,99,100,101,102,103,104,82,,,,81,,83,,51,50,,,,80,97,98', -'99,100,101,,,,54,,95,,,,55,97,98,99,100,101,,,,96,,,53,97,98,99,100', -'101,102,103,104,82,,,,81,,83,,51,50,,,,80,97,98,99,100,101,,,,54,,95', -',,,55,,,,,,,,,96,,,53,97,98,99,100,101,102,103,104,82,,,,81,,83,,51', -'50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,94,96,,,53,97,98,99,100,101,102', -'103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,,96,,', -'53,97,98,99,100,101,102,103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54', -',95,,,,55,,,,,,,,,96,,,53,97,98,99,100,101,102,103,104,82,,,,81,,83', -',51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99,100,101,102', -'103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,,96,,', -'53,97,98,99,100,101,102,103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54', -',95,,,,55,,,,,,,,,96,,,53,97,98,99,100,101,102,103,104,82,,,,81,,83', -',51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99,100,101,102', -'103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,,96,,', -'53,97,98,99,100,101,102,103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54', -',95,,,,55,,,,,,,,,96,,,53,97,98,99,100,101,102,103,104,82,,,,81,,83', -',51,50,,,,80,208,,,,,,,,54,,95,,,,55,,,,,,,,94,96,,,53,97,98,99,100', -'101,102,103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,', -',,,96,,,53,97,98,99,100,101,102,103,104,82,,,,81,,83,,51,50,,,,80,,', -',,,,,,54,,95,,,,55,,,,,,,,94,96,,,53,97,98,99,100,101,102,103,104,82', -',,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99', -'100,101,102,103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,', -',,,,,,,96,,,53,97,98,99,100,101,102,103,104,82,,,,81,,83,,51,50,,,,80', -',,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99,100,101,102,103,104,82', -',,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99', -'100,101,102,103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,', -',,,,,,,96,,,53,97,98,99,100,101,102,103,104,82,,,,81,,83,,51,50,,,,80', -',,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99,100,101,102,103,104,82', -',,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99', -'100,101,102,103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,', -',,,,,,,96,,,53,97,98,99,100,101,102,103,104,82,,,,81,,83,,51,50,,,,80', -',,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99,100,101,102,103,104,82', -',,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99', -'100,101,102,103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,', -',,,,,,,96,,,53,97,98,99,100,101,102,103,104,82,,,,81,,83,,51,50,,,,80', -',,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99,100,101,102,103,104,82', -',,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99', -'100,101,102,103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,', -',,,,,,,96,,,53,97,98,99,100,101,102,103,104,82,,,,81,,83,,51,50,,,,80', -',,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99,100,101,102,103,104,82', -',,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99', -'100,101,102,103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,', -',,,,,,,96,,,53,97,98,99,100,101,102,103,104,82,,,,81,,83,,51,50,,,,80', -',,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99,100,101,102,103,104,82', -',,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99', -'100,101,102,103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,', -',,,,,,,96,,,53,97,98,99,100,101,102,103,104,82,,,,81,,83,,51,50,,,,80', -',,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99,100,101,102,103,104,82', -',,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99', -'100,101,102,103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,', -',,,,,,,96,,,53,97,98,99,100,101,102,103,104,82,,,,81,,83,,51,50,,,,80', -',,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99,100,101,102,103,104,82', -',,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,,96,,,53,97,98,99', -'100,101,102,103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,', -',,,,,,,96,,,53,97,98,99,100,101,102,103,104,82,,,,81,,83,,51,50,,,,80', -',,,,,,,,54,,95,,,,55,,,,,,,,94,96,,,53,97,98,99,100,101,102,103,104', -'82,,,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,94,96,,,53,97', -'98,99,100,101,102,103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,', -',,55,,,,,,,,94,96,,,53,97,98,99,100,101,102,103,104,82,,,,81,,83,,51', -'50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,94,96,,,53,97,98,99,100,101,102', -'103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,,96,,', -'53,97,98,99,100,101,102,103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54', -',95,,,,55,,,,,,,,,96,,,53,97,98,99,100,101,102,103,104,82,,,,81,,83', -',51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,94,96,,,53,97,98,99,100,101', -'102,103,104,82,,,,81,,83,,51,50,,,,80,,,,,,,,,54,,95,,,,55,,,,,,,,94', -'96,,,53,97,98,99,100,101,102,103,104,115,116,117,118,119,120,123,122', -'121,115,116,117,118,119,120,123,122,121,153,152,151,154,155,156,145', -'146,147,149,150,,,,148,,,,126,125,,,,124,,,,126,125,,,,124,144,143,161', -'162,163,164,165,166,157,158,159,160,153,152,151,154,155,156,145,146', -'147,149,150,,,,148,,,,,,,,142,144,143,161,162,163,164,165,166,157,158', -'159,160,153,152,151,154,155,156,145,146,147,149,150,,,,148,,,,,,,,221', -'144,143,161,162,163,164,165,166,157,158,159,160,153,152,151,154,155', -'156,145,146,147,149,150,,,,148,,,,,,,,289,144,143,161,162,163,164,165', -'166,157,158,159,160,153,152,151,154,155,156,145,146,147,149,150,,,,148', -',,,,,,,297,144,143,161,162,163,164,165,166,157,158,159,160,153,152,151', -'154,155,156,145,146,147,149,150,,,,148,,,,,,,251,144,143,161,162,163', -'164,165,166,157,158,159,160,153,152,151,154,155,156,145,146,147,149', -'150,,,,148,,,,,,,263,144,143,161,162,163,164,165,166,157,158,159,160', -'153,152,151,154,155,156,145,146,147,149,150,,,,148,,,,,,,265,144,143', -'161,162,163,164,165,166,157,158,159,160,153,152,151,154,155,156,145', -'146,147,149,150,,,,148,,,,,,,286,144,143,161,162,163,164,165,166,157', -'158,159,160,153,152,151,154,155,156,145,146,147,149,150,,,,148,51,50', -'4,10,11,,299,36,32,34,37,39,40,41,54,42,43,,44,45,55,46,,47,,48,51,50', -'4,10,11,,53,36,32,34,37,39,40,41,54,42,43,,44,45,55,46,,47,,48,51,50', -'105,,,,53,36,32,34,37,39,40,41,54,42,43,107,44,45,55,46,,47,,48,51,50', -'105,,,,53,36,32,34,37,39,40,41,54,42,43,,44,45,55,46,,47,,48,51,50,105', -',,,53,36,32,34,37,39,40,41,54,42,43,,44,45,55,46,,47,,48,51,50,105,', -',,53,36,32,34,37,39,40,41,54,42,43,,44,45,55,46,,47,,48,51,50,105,,', -',53,36,32,34,37,39,40,41,54,42,43,,44,45,55,46,,47,,48,51,50,105,,,', -'53,36,32,34,37,39,40,41,54,42,43,,44,45,55,46,,47,,48,51,50,105,,,,53', -'36,32,34,37,39,40,41,54,42,43,,44,45,55,46,,47,,48,51,50,105,,,,53,36', -'32,34,37,39,40,41,54,42,43,,44,45,55,46,,47,,48,51,50,105,,,,53,36,32', -'34,37,39,40,41,54,42,43,,44,45,55,46,,47,,48,,,,,,,53,144,143,161,162', -'163,164,165,166,157,158,159,160,153,152,151,154,155,156,145,146,147', -'149,150,,,,148,144,143,161,162,163,164,165,166,157,158,159,160,153,152', -'151,154,155,156,145,146,147,149,150,,,,148,144,143,161,162,163,164,165', -'166,157,158,159,160,153,152,151,154,155,156,145,146,147,149,150,,,,148', -'144,143,161,162,163,164,165,166,157,158,159,160,153,152,151,154,155', -'156,145,146,147,149,150,,,,148,144,143,161,162,163,164,165,166,157,158', -'159,160,153,152,151,154,155,156,145,146,147,149,150,,,,148,144,143,161', -'162,163,164,165,166,157,158,159,160,153,152,151,154,155,156,145,146', -'147,149,150,,,,148,144,143,161,162,163,164,165,166,157,158,159,160,153', -'152,151,154,155,156,145,146,147,149,150,,,,148,144,143,161,162,163,164', -'165,166,157,158,159,160,153,152,151,154,155,156,145,146,147,149,150', -',,,148,144,143,161,162,163,164,165,166,157,158,159,160,153,152,151,154', -'155,156,145,146,147,149,150,,,,148,144,143,161,162,163,164,165,166,157', -'158,159,160,153,152,151,154,155,156,145,146,147,149,150,,,,148,144,143', -'161,162,163,164,165,166,157,158,159,160,153,152,151,154,155,156,145', -'146,147,149,150,,,,148,144,143,161,162,163,164,165,166,157,158,159,160', -'153,152,151,154,155,156,145,146,147,149,150,,,,148,144,143,161,162,163', -'164,165,166,157,158,159,160,153,152,151,154,155,156,145,146,147,149', -'150,,,,148,144,143,161,162,163,164,165,166,157,158,159,160,153,152,151', -'154,155,156,145,146,147,149,150,,,,148,144,143,161,162,163,164,165,166', -'157,158,159,160,153,152,151,154,155,156,145,146,147,149,150,,,,148,144', -'143,161,162,163,164,165,166,157,158,159,160,153,152,151,154,155,156', -'145,146,147,149,150,,,,148,143,161,162,163,164,165,166,157,158,159,160', -'153,152,151,154,155,156,145,146,147,149,150,,,,148,161,162,163,164,165', -'166,157,158,159,160,153,152,151,154,155,156,145,146,147,149,150,,,,148', -'153,152,151,154,155,156,145,146,147,149,150,,,,148,153,152,151,154,155', -'156,145,146,147,149,150,,,,148,153,152,151,154,155,156,145,146,147,149', -'150,,,,148,153,152,151,154,155,156,145,146,147,149,150,,,,148,153,152', -'151,154,155,156,145,146,147,149,150,,,,148,153,152,151,154,155,156,145', -'146,147,149,150,,,,148,153,152,151,154,155,156,145,146,147,149,150,', -',,148,153,152,151,154,155,156,145,146,147,149,150,,,,148,153,152,151', -'154,155,156,145,146,147,149,150,,,,148,152,151,154,155,156,145,146,147', -'149,150,,,,148,151,154,155,156,145,146,147,149,150,,,,148' ] - racc_action_table = arr = ::Array.new(4010, 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 = [ -'213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213', -'213,213,213,213,213,213,42,11,45,213,42,273,42,11,42,42,1,45,37,42,10', -'42,33,45,37,11,31,41,42,33,42,73,73,41,42,45,37,32,273,134,213,34,42', -'42,273,41,42,42,42,42,42,42,42,42,42,66,273,210,134,66,210,66,210,66', -'66,52,134,52,66,132,50,132,134,109,109,35,50,66,38,66,229,229,229,66', -'134,39,229,109,50,74,74,40,66,109,44,66,66,66,66,66,66,66,66,66,80,109', -'46,48,80,51,80,56,80,80,62,51,69,80,70,94,71,75,297,297,77,94,80,51', -'80,230,230,230,80,4,4,230,297,94,90,105,4,80,297,106,80,80,80,80,80', -'80,80,80,80,81,297,110,113,81,139,81,140,81,81,169,95,170,81,95,171', -'174,95,175,176,111,131,81,177,81,178,111,131,81,95,95,95,95,95,95,95', -'95,81,111,131,81,81,81,81,81,81,81,81,81,82,138,182,183,82,187,82,138', -'82,82,193,256,207,82,212,216,217,256,220,138,218,225,82,226,82,231,218', -'232,82,256,256,256,256,256,256,256,256,82,218,233,82,82,82,82,82,82', -'82,82,82,83,234,252,270,83,288,83,296,83,83,302,,,83,235,235,235,235', -'235,235,235,235,83,,83,235,,,83,,238,238,238,238,238,,,83,238,,83,83', -'83,83,83,83,83,83,83,96,,,,96,,96,,96,96,,,,96,,239,239,239,239,239', -',,96,239,96,,,,96,,,240,240,240,240,240,96,96,96,240,96,96,96,96,96', -'96,96,96,96,112,,,,112,,112,,112,112,,,,112,172,172,172,172,172,,,,112', -',112,,,,112,276,276,276,276,276,,,,112,,,112,112,112,112,112,112,112', -'112,112,114,,,,114,,114,,114,114,,,,114,301,301,301,301,301,,,,114,', -'114,,,,114,,,,,,,,,114,,,114,114,114,114,114,114,114,114,114,115,,,', -'115,,115,,115,115,,,,115,,,,,,,,,115,,115,,,,115,,,,,,,,115,115,,,115', -'115,115,115,115,115,115,115,115,116,,,,116,,116,,116,116,,,,116,,,,', -',,,,116,,116,,,,116,,,,,,,,,116,,,116,116,116,116,116,116,116,116,116', -'117,,,,117,,117,,117,117,,,,117,,,,,,,,,117,,117,,,,117,,,,,,,,,117', -',,117,117,117,117,117,117,117,117,117,118,,,,118,,118,,118,118,,,,118', -',,,,,,,,118,,118,,,,118,,,,,,,,,118,,,118,118,118,118,118,118,118,118', -'118,119,,,,119,,119,,119,119,,,,119,,,,,,,,,119,,119,,,,119,,,,,,,,', -'119,,,119,119,119,119,119,119,119,119,119,120,,,,120,,120,,120,120,', -',,120,,,,,,,,,120,,120,,,,120,,,,,,,,,120,,,120,120,120,120,120,120', -'120,120,120,121,,,,121,,121,,121,121,,,,121,,,,,,,,,121,,121,,,,121', -',,,,,,,,121,,,121,121,121,121,121,121,121,121,121,122,,,,122,,122,,122', -'122,,,,122,,,,,,,,,122,,122,,,,122,,,,,,,,,122,,,122,122,122,122,122', -'122,122,122,122,123,,,,123,,123,,123,123,,,,123,,,,,,,,,123,,123,,,', -'123,,,,,,,,,123,,,123,123,123,123,123,123,123,123,123,124,,,,124,,124', -',124,124,,,,124,124,,,,,,,,124,,124,,,,124,,,,,,,,124,124,,,124,124', -'124,124,124,124,124,124,124,130,,,,130,,130,,130,130,,,,130,,,,,,,,', -'130,,130,,,,130,,,,,,,,,130,,,130,130,130,130,130,130,130,130,130,137', -',,,137,,137,,137,137,,,,137,,,,,,,,,137,,137,,,,137,,,,,,,,137,137,', -',137,137,137,137,137,137,137,137,137,143,,,,143,,143,,143,143,,,,143', -',,,,,,,,143,,143,,,,143,,,,,,,,,143,,,143,143,143,143,143,143,143,143', -'143,144,,,,144,,144,,144,144,,,,144,,,,,,,,,144,,144,,,,144,,,,,,,,', -'144,,,144,144,144,144,144,144,144,144,144,145,,,,145,,145,,145,145,', -',,145,,,,,,,,,145,,145,,,,145,,,,,,,,,145,,,145,145,145,145,145,145', -'145,145,145,146,,,,146,,146,,146,146,,,,146,,,,,,,,,146,,146,,,,146', -',,,,,,,,146,,,146,146,146,146,146,146,146,146,146,147,,,,147,,147,,147', -'147,,,,147,,,,,,,,,147,,147,,,,147,,,,,,,,,147,,,147,147,147,147,147', -'147,147,147,147,148,,,,148,,148,,148,148,,,,148,,,,,,,,,148,,148,,,', -'148,,,,,,,,,148,,,148,148,148,148,148,148,148,148,148,149,,,,149,,149', -',149,149,,,,149,,,,,,,,,149,,149,,,,149,,,,,,,,,149,,,149,149,149,149', -'149,149,149,149,149,150,,,,150,,150,,150,150,,,,150,,,,,,,,,150,,150', -',,,150,,,,,,,,,150,,,150,150,150,150,150,150,150,150,150,151,,,,151', -',151,,151,151,,,,151,,,,,,,,,151,,151,,,,151,,,,,,,,,151,,,151,151,151', -'151,151,151,151,151,151,152,,,,152,,152,,152,152,,,,152,,,,,,,,,152', -',152,,,,152,,,,,,,,,152,,,152,152,152,152,152,152,152,152,152,153,,', -',153,,153,,153,153,,,,153,,,,,,,,,153,,153,,,,153,,,,,,,,,153,,,153', -'153,153,153,153,153,153,153,153,154,,,,154,,154,,154,154,,,,154,,,,', -',,,,154,,154,,,,154,,,,,,,,,154,,,154,154,154,154,154,154,154,154,154', -'155,,,,155,,155,,155,155,,,,155,,,,,,,,,155,,155,,,,155,,,,,,,,,155', -',,155,155,155,155,155,155,155,155,155,156,,,,156,,156,,156,156,,,,156', -',,,,,,,,156,,156,,,,156,,,,,,,,,156,,,156,156,156,156,156,156,156,156', -'156,157,,,,157,,157,,157,157,,,,157,,,,,,,,,157,,157,,,,157,,,,,,,,', -'157,,,157,157,157,157,157,157,157,157,157,158,,,,158,,158,,158,158,', -',,158,,,,,,,,,158,,158,,,,158,,,,,,,,,158,,,158,158,158,158,158,158', -'158,158,158,159,,,,159,,159,,159,159,,,,159,,,,,,,,,159,,159,,,,159', -',,,,,,,,159,,,159,159,159,159,159,159,159,159,159,160,,,,160,,160,,160', -'160,,,,160,,,,,,,,,160,,160,,,,160,,,,,,,,,160,,,160,160,160,160,160', -'160,160,160,160,161,,,,161,,161,,161,161,,,,161,,,,,,,,,161,,161,,,', -'161,,,,,,,,,161,,,161,161,161,161,161,161,161,161,161,162,,,,162,,162', -',162,162,,,,162,,,,,,,,,162,,162,,,,162,,,,,,,,,162,,,162,162,162,162', -'162,162,162,162,162,163,,,,163,,163,,163,163,,,,163,,,,,,,,,163,,163', -',,,163,,,,,,,,,163,,,163,163,163,163,163,163,163,163,163,164,,,,164', -',164,,164,164,,,,164,,,,,,,,,164,,164,,,,164,,,,,,,,,164,,,164,164,164', -'164,164,164,164,164,164,165,,,,165,,165,,165,165,,,,165,,,,,,,,,165', -',165,,,,165,,,,,,,,,165,,,165,165,165,165,165,165,165,165,165,166,,', -',166,,166,,166,166,,,,166,,,,,,,,,166,,166,,,,166,,,,,,,,,166,,,166', -'166,166,166,166,166,166,166,166,192,,,,192,,192,,192,192,,,,192,,,,', -',,,,192,,192,,,,192,,,,,,,,,192,,,192,192,192,192,192,192,192,192,192', -'195,,,,195,,195,,195,195,,,,195,,,,,,,,,195,,195,,,,195,,,,,,,,,195', -',,195,195,195,195,195,195,195,195,195,253,,,,253,,253,,253,253,,,,253', -',,,,,,,,253,,253,,,,253,,,,,,,,253,253,,,253,253,253,253,253,253,253', -'253,253,254,,,,254,,254,,254,254,,,,254,,,,,,,,,254,,254,,,,254,,,,', -',,,254,254,,,254,254,254,254,254,254,254,254,254,255,,,,255,,255,,255', -'255,,,,255,,,,,,,,,255,,255,,,,255,,,,,,,,255,255,,,255,255,255,255', -'255,255,255,255,255,258,,,,258,,258,,258,258,,,,258,,,,,,,,,258,,258', -',,,258,,,,,,,,258,258,,,258,258,258,258,258,258,258,258,258,260,,,,260', -',260,,260,260,,,,260,,,,,,,,,260,,260,,,,260,,,,,,,,,260,,,260,260,260', -'260,260,260,260,260,260,262,,,,262,,262,,262,262,,,,262,,,,,,,,,262', -',262,,,,262,,,,,,,,,262,,,262,262,262,262,262,262,262,262,262,267,,', -',267,,267,,267,267,,,,267,,,,,,,,,267,,267,,,,267,,,,,,,,267,267,,,267', -'267,267,267,267,267,267,267,267,268,,,,268,,268,,268,268,,,,268,,,,', -',,,,268,,268,,,,268,,,,,,,,268,268,,,268,268,268,268,268,268,268,268', -'268,49,49,49,49,49,49,49,49,49,79,79,79,79,79,79,79,79,79,241,241,241', -'241,241,241,241,241,241,241,241,,,,241,,,,49,49,,,,49,,,,79,79,,,,79', -'76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76', -',,,76,,,,,,,,76,135,135,135,135,135,135,135,135,135,135,135,135,135', -'135,135,135,135,135,135,135,135,135,135,,,,135,,,,,,,,135,264,264,264', -'264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264', -'264,264,264,,,,264,,,,,,,,264,285,285,285,285,285,285,285,285,285,285', -'285,285,285,285,285,285,285,285,285,285,285,285,285,,,,285,,,,,,,,285', -'168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168', -'168,168,168,168,168,168,,,,168,,,,,,,168,194,194,194,194,194,194,194', -'194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,,,,194', -',,,,,,194,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196', -'196,196,196,196,196,196,196,196,,,,196,,,,,,,196,261,261,261,261,261', -'261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261', -'261,,,,261,,,,,,,261,287,287,287,287,287,287,287,287,287,287,287,287', -'287,287,287,287,287,287,287,287,287,287,287,,,,287,0,0,0,0,0,,287,0', -'0,0,0,0,0,0,0,0,0,,0,0,0,0,,0,,0,3,3,3,3,3,,0,3,3,3,3,3,3,3,3,3,3,,3', -'3,3,3,,3,,3,43,43,43,,,,3,43,43,43,43,43,43,43,43,43,43,43,43,43,43', -'43,,43,,43,47,47,47,,,,43,47,47,47,47,47,47,47,47,47,47,,47,47,47,47', -',47,,47,108,108,108,,,,47,108,108,108,108,108,108,108,108,108,108,,108', -'108,108,108,,108,,108,263,263,263,,,,108,263,263,263,263,263,263,263', -'263,263,263,,263,263,263,263,,263,,263,265,265,265,,,,263,265,265,265', -'265,265,265,265,265,265,265,,265,265,265,265,,265,,265,286,286,286,', -',,265,286,286,286,286,286,286,286,286,286,286,,286,286,286,286,,286', -',286,299,299,299,,,,286,299,299,299,299,299,299,299,299,299,299,,299', -'299,299,299,,299,,299,300,300,300,,,,299,300,300,300,300,300,300,300', -'300,300,300,,300,300,300,300,,300,,300,306,306,306,,,,300,306,306,306', -'306,306,306,306,306,306,306,,306,306,306,306,,306,,306,,,,,,,306,180', -'180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180', -'180,180,180,180,180,,,,180,197,197,197,197,197,197,197,197,197,197,197', -'197,197,197,197,197,197,197,197,197,197,197,197,,,,197,199,199,199,199', -'199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199', -'199,199,,,,199,200,200,200,200,200,200,200,200,200,200,200,200,200,200', -'200,200,200,200,200,200,200,200,200,,,,200,201,201,201,201,201,201,201', -'201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,,,,201', -'202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202', -'202,202,202,202,202,202,,,,202,203,203,203,203,203,203,203,203,203,203', -'203,203,203,203,203,203,203,203,203,203,203,203,203,,,,203,204,204,204', -'204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204', -'204,204,204,,,,204,205,205,205,205,205,205,205,205,205,205,205,205,205', -'205,205,205,205,205,205,205,205,205,205,,,,205,206,206,206,206,206,206', -'206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206', -',,,206,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209', -'209,209,209,209,209,209,209,,,,209,222,222,222,222,222,222,222,222,222', -'222,222,222,222,222,222,222,222,222,222,222,222,222,222,,,,222,277,277', -'277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277', -'277,277,277,277,,,,277,279,279,279,279,279,279,279,279,279,279,279,279', -'279,279,279,279,279,279,279,279,279,279,279,,,,279,281,281,281,281,281', -'281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281', -'281,,,,281,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291', -'291,291,291,291,291,291,291,291,,,,291,228,228,228,228,228,228,228,228', -'228,228,228,228,228,228,228,228,228,228,228,228,228,228,,,,228,227,227', -'227,227,227,227,227,227,227,227,227,227,227,227,227,227,227,227,227', -'227,227,,,,227,242,242,242,242,242,242,242,242,242,242,242,,,,242,243', -'243,243,243,243,243,243,243,243,243,243,,,,243,244,244,244,244,244,244', -'244,244,244,244,244,,,,244,245,245,245,245,245,245,245,245,245,245,245', -',,,245,246,246,246,246,246,246,246,246,246,246,246,,,,246,247,247,247', -'247,247,247,247,247,247,247,247,,,,247,248,248,248,248,248,248,248,248', -'248,248,248,,,,248,249,249,249,249,249,249,249,249,249,249,249,,,,249', -'250,250,250,250,250,250,250,250,250,250,250,,,,250,237,237,237,237,237', -'237,237,237,237,237,,,,237,236,236,236,236,236,236,236,236,236,,,,236' ] - racc_action_check = arr = ::Array.new(4010, 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 = [ - 3034, 33, nil, 3060, 109, nil, nil, nil, nil, nil, - -5, -28, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, -2, 9, -6, 13, 47, nil, -17, 50, 59, - 65, -8, -7, 3086, 68, -18, 80, 3112, 81, 2716, - 35, 74, 15, nil, nil, nil, 128, nil, nil, nil, - nil, nil, 88, nil, nil, nil, 42, nil, nil, 88, - 133, 72, nil, -28, 30, 93, 2758, 96, nil, 2725, - 91, 140, 189, 238, nil, nil, nil, nil, nil, nil, - 86, nil, nil, nil, 84, 129, 287, nil, nil, nil, - nil, nil, nil, nil, nil, 108, 105, nil, 3138, 52, - 129, 138, 336, 111, 385, 434, 483, 532, 581, 630, - 679, 728, 777, 826, 875, nil, nil, nil, nil, nil, - 924, 139, 19, nil, 31, 2793, nil, 973, 168, 131, - 133, nil, nil, 1022, 1071, 1120, 1169, 1218, 1267, 1316, - 1365, 1414, 1463, 1512, 1561, 1610, 1659, 1708, 1757, 1806, - 1855, 1904, 1953, 2002, 2051, 2100, 2149, nil, 2898, 143, - 145, 148, 309, nil, 122, 124, 125, 128, 140, nil, - 3354, nil, 156, 154, nil, nil, nil, 179, nil, nil, - nil, nil, 2198, 171, 2932, 2247, 2966, 3381, nil, 3408, - 3435, 3462, 3489, 3516, 3543, 3570, 3597, 187, nil, 3624, - 10, nil, 168, -11, nil, nil, 190, 181, 187, nil, - 172, nil, 3651, nil, nil, 195, 197, 3810, 3785, 66, - 115, 207, 209, 221, 232, 256, 3972, 3959, 269, 303, - 319, 2713, 3825, 3840, 3855, 3870, 3885, 3900, 3915, 3930, - 3945, nil, 201, 2296, 2345, 2394, 178, nil, 2443, nil, - 2492, 3000, 2541, 3164, 2828, 3190, nil, 2590, 2639, nil, - 217, nil, nil, 3, nil, nil, 324, 3678, nil, 3705, - nil, 3732, nil, nil, nil, 2863, 3216, 3034, 213, nil, - nil, 3759, nil, nil, nil, nil, 206, 101, nil, 3242, - 3268, 358, 234, nil, nil, nil, 3294, nil ] - -racc_action_default = [ - -2, -172, -1, -4, -172, -6, -8, -9, -10, -11, - -172, -172, -15, -16, -17, -18, -19, -20, -22, -23, - -24, -25, -26, -27, -28, -29, -30, -31, -32, -33, - -34, -172, -172, -172, -172, -172, -40, -172, -172, -172, - -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -128, -160, -161, -162, -172, -3, -5, -7, - -21, -12, -172, -35, -36, -37, -172, -38, -39, -172, - -157, -159, -42, -172, -172, -172, -172, -172, -49, -108, - -172, -172, -172, -172, -93, -94, -105, -106, -107, -109, - -110, -111, -112, -113, -172, -172, -172, -163, -164, -165, - -166, -167, -169, -170, -171, -172, -172, -51, -154, -138, - -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -172, -172, -172, -72, -74, -71, -73, -127, - -172, -172, -142, 308, -172, -172, -41, -172, -172, -172, - -172, -45, -47, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -172, -172, -172, -172, -172, -48, -172, -77, - -81, -82, -172, -129, -172, -172, -172, -126, -172, -133, - -143, -144, -146, -172, -148, -50, -153, -172, -134, -135, - -136, -137, -172, -172, -172, -172, -172, -59, -60, -61, - -62, -63, -64, -65, -66, -67, -68, -172, -70, -116, - -128, -117, -131, -172, -140, -141, -172, -172, -172, -150, - -152, -46, -155, -156, -158, -172, -172, -76, -78, -79, - -80, -83, -84, -85, -86, -87, -88, -89, -90, -91, - -92, -95, -96, -97, -98, -99, -100, -101, -102, -103, - -104, -75, -172, -172, -172, -172, -125, -132, -172, -147, - -172, -172, -172, -172, -172, -172, -69, -172, -172, -139, - -172, -14, -149, -172, -43, -44, -172, -118, -121, -119, - -122, -120, -123, -124, -145, -172, -172, -172, -55, -57, - -58, -114, -115, -130, -13, -151, -172, -138, -53, -172, - -172, -172, -172, -54, -56, -168, -172, -52 ] - -racc_goto_table = [ - 31, 187, 62, 31, 175, 33, 77, 183, 33, 178, - 35, 139, 140, 35, 207, 38, 216, 106, 38, 60, - 69, 1, 271, 59, 75, 58, 215, 49, 70, 61, - 49, 108, 70, 174, 2, 113, 110, 57, nil, nil, - nil, nil, nil, 31, nil, nil, nil, 31, 33, nil, - nil, nil, 33, 35, nil, nil, nil, 35, 38, nil, - nil, nil, 38, nil, nil, nil, nil, nil, nil, nil, - 49, nil, nil, nil, 49, 294, nil, 127, 128, 198, - nil, 252, 186, nil, nil, 173, 176, nil, 211, nil, - nil, nil, nil, nil, nil, nil, 108, nil, nil, nil, - nil, 223, 193, nil, nil, nil, nil, nil, 31, 188, - nil, nil, nil, 33, 189, 210, nil, nil, 35, 190, - 60, 224, 214, 38, 191, 219, nil, nil, nil, 70, - nil, nil, nil, nil, nil, 49, 49, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 295, nil, nil, 293, nil, - nil, nil, nil, nil, nil, 175, nil, nil, nil, 284, - 283, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 296, nil, nil, nil, 302, - nil, nil, nil, nil, 174, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 272, - 305, nil, nil, nil, nil, nil, nil, 278, 280, 282, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 292, 211, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 176, nil, nil, - nil, 288, nil, 290, nil, nil, nil, nil, nil, 210, - nil, nil, nil, 31, 219, 31, nil, nil, 33, nil, - 33, nil, nil, 35, 298, 35, nil, nil, 38, 76, - 38, nil, nil, nil, nil, nil, 31, 303, 304, nil, - 49, 33, 49, nil, 307, nil, 35, 188, nil, 31, - 31, 38, 189, 135, 33, 33, 31, 190, nil, 35, - 35, 33, 191, 49, 38, 38, 35, 168, 169, 170, - 171, 38, nil, nil, 49, nil, 49, 49, nil, nil, - nil, nil, nil, 49, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 194, - nil, 196, 197, 199, 200, 201, 202, 203, 204, 205, - 206, 209, nil, nil, nil, nil, nil, 213, nil, nil, - nil, nil, nil, nil, 222, nil, nil, nil, nil, nil, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 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, 261, - nil, nil, 264, 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, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 277, 279, 281, nil, nil, nil, nil, 285, nil, 287, - nil, nil, nil, nil, 291, 209 ] - -racc_goto_check = [ - 30, 39, 9, 30, 43, 31, 37, 53, 31, 49, - 32, 35, 35, 32, 41, 34, 10, 38, 34, 18, - 33, 1, 11, 5, 33, 4, 50, 40, 9, 5, - 40, 6, 9, 35, 2, 6, 9, 2, nil, nil, - nil, nil, nil, 30, nil, nil, nil, 30, 31, nil, - nil, nil, 31, 32, nil, nil, nil, 32, 34, nil, - nil, nil, 34, nil, nil, nil, nil, nil, nil, nil, - 40, nil, nil, nil, 40, 11, nil, 40, 40, 37, - nil, 43, 38, nil, nil, 9, 9, nil, 37, nil, - nil, nil, nil, nil, nil, nil, 6, nil, nil, nil, - nil, 37, 9, nil, nil, nil, nil, nil, 30, 30, - nil, nil, nil, 31, 31, 9, nil, nil, 32, 32, - 18, 33, 9, 34, 34, 9, nil, nil, nil, 9, - nil, nil, nil, nil, nil, 40, 40, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 10, nil, nil, 41, nil, - nil, nil, nil, nil, nil, 43, nil, nil, nil, 53, - 49, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 43, nil, nil, nil, 39, - nil, nil, nil, nil, 35, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 9, - 43, nil, nil, nil, nil, nil, nil, 37, 37, 37, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 37, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 9, nil, nil, - nil, 6, nil, 6, nil, nil, nil, nil, nil, 9, - nil, nil, nil, 30, 9, 30, nil, nil, 31, nil, - 31, nil, nil, 32, 6, 32, nil, nil, 34, 36, - 34, nil, nil, nil, nil, nil, 30, 6, 6, nil, - 40, 31, 40, nil, 6, nil, 32, 30, nil, 30, - 30, 34, 31, 36, 31, 31, 30, 32, nil, 32, - 32, 31, 34, 40, 34, 34, 32, 36, 36, 36, - 36, 34, nil, nil, 40, nil, 40, 40, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 36, - nil, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, nil, nil, nil, nil, nil, 36, nil, nil, - nil, nil, nil, nil, 36, nil, nil, nil, nil, nil, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 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, 36, - nil, nil, 36, 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, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 36, 36, 36, nil, nil, nil, nil, 36, nil, 36, - nil, nil, nil, nil, 36, 36 ] - -racc_goto_pointer = [ - nil, 21, 34, nil, 21, 19, -12, nil, nil, -9, - -118, -195, nil, nil, nil, nil, nil, nil, 15, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 0, 5, 10, -17, 15, -62, 237, -36, -26, -108, - 27, -110, nil, -91, nil, nil, nil, nil, nil, -86, - -106, nil, nil, -89, nil, nil ] - -racc_goto_default = [ - nil, nil, nil, 3, 5, 6, 7, 8, 9, 52, - nil, 25, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, - 86, 88, 85, nil, 84, 87, 180, 181, nil, nil, - 79, nil, 89, 90, 91, 92, 93, 212, 177, nil, - 129, 132, 182, nil, 220, 71 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 80, :_reduce_1, - 0, 80, :_reduce_2, - 2, 81, :_reduce_3, - 1, 81, :_reduce_4, - 2, 82, :_reduce_5, - 1, 82, :_reduce_6, - 2, 82, :_reduce_7, - 1, 82, :_reduce_8, - 1, 82, :_reduce_9, - 1, 85, :_reduce_10, - 1, 85, :_reduce_11, - 2, 83, :_reduce_12, - 6, 84, :_reduce_13, - 5, 84, :_reduce_14, - 1, 86, :_reduce_15, - 1, 86, :_reduce_16, - 1, 86, :_reduce_17, - 1, 86, :_reduce_18, - 1, 86, :_reduce_19, - 1, 86, :_reduce_20, - 2, 86, :_reduce_21, - 1, 86, :_reduce_22, - 1, 86, :_reduce_23, - 1, 86, :_reduce_24, - 1, 86, :_reduce_25, - 1, 86, :_reduce_26, - 1, 86, :_reduce_27, - 1, 86, :_reduce_28, - 1, 87, :_reduce_29, - 1, 87, :_reduce_30, - 1, 87, :_reduce_31, - 1, 87, :_reduce_32, - 1, 87, :_reduce_33, - 1, 87, :_reduce_34, - 2, 91, :_reduce_35, - 2, 92, :_reduce_36, - 2, 93, :_reduce_37, - 2, 94, :_reduce_38, - 2, 95, :_reduce_39, - 1, 96, :_reduce_40, - 3, 97, :_reduce_41, - 2, 100, :_reduce_42, - 5, 98, :_reduce_43, - 5, 99, :_reduce_44, - 3, 101, :_reduce_45, - 4, 102, :_reduce_46, - 3, 103, :_reduce_47, - 3, 103, :_reduce_48, - 2, 103, :_reduce_49, - 3, 90, :_reduce_50, - 2, 90, :_reduce_51, - 9, 104, :_reduce_52, - 6, 105, :_reduce_53, - 7, 105, :_reduce_54, - 5, 106, :_reduce_55, - 7, 106, :_reduce_56, - 5, 107, :_reduce_57, - 5, 108, :_reduce_58, - 3, 109, :_reduce_59, - 3, 109, :_reduce_60, - 3, 109, :_reduce_61, - 3, 109, :_reduce_62, - 3, 109, :_reduce_63, - 3, 109, :_reduce_64, - 3, 109, :_reduce_65, - 3, 109, :_reduce_66, - 3, 109, :_reduce_67, - 3, 109, :_reduce_68, - 4, 110, :_reduce_69, - 3, 110, :_reduce_70, - 2, 111, :_reduce_71, - 2, 111, :_reduce_72, - 2, 113, :_reduce_73, - 2, 113, :_reduce_74, - 3, 115, :_reduce_75, - 3, 115, :_reduce_76, - 2, 115, :_reduce_77, - 3, 115, :_reduce_78, - 3, 115, :_reduce_79, - 3, 115, :_reduce_80, - 2, 115, :_reduce_81, - 2, 115, :_reduce_82, - 3, 115, :_reduce_83, - 3, 115, :_reduce_84, - 3, 115, :_reduce_85, - 3, 115, :_reduce_86, - 3, 115, :_reduce_87, - 3, 115, :_reduce_88, - 3, 115, :_reduce_89, - 3, 115, :_reduce_90, - 3, 115, :_reduce_91, - 3, 115, :_reduce_92, - 1, 115, :_reduce_93, - 1, 115, :_reduce_94, - 3, 115, :_reduce_95, - 3, 115, :_reduce_96, - 3, 115, :_reduce_97, - 3, 115, :_reduce_98, - 3, 115, :_reduce_99, - 3, 115, :_reduce_100, - 3, 115, :_reduce_101, - 3, 115, :_reduce_102, - 3, 115, :_reduce_103, - 3, 115, :_reduce_104, - 1, 115, :_reduce_105, - 1, 115, :_reduce_106, - 1, 115, :_reduce_107, - 1, 115, :_reduce_108, - 1, 115, :_reduce_109, - 1, 115, :_reduce_110, - 1, 115, :_reduce_111, - 1, 115, :_reduce_112, - 1, 115, :_reduce_113, - 3, 126, :_reduce_114, - 3, 126, :_reduce_115, - 1, 126, :_reduce_116, - 1, 126, :_reduce_117, - 3, 127, :_reduce_118, - 3, 127, :_reduce_119, - 3, 127, :_reduce_120, - 3, 127, :_reduce_121, - 3, 127, :_reduce_122, - 3, 127, :_reduce_123, - 3, 128, :_reduce_124, - 2, 128, :_reduce_125, - 1, 128, :_reduce_126, - 2, 119, :_reduce_127, - 1, 119, :_reduce_128, - 2, 116, :_reduce_129, - 3, 120, :_reduce_130, - 1, 120, :_reduce_131, - 3, 125, :_reduce_132, - 2, 125, :_reduce_133, - 1, 118, :_reduce_134, - 1, 118, :_reduce_135, - 1, 118, :_reduce_136, - 1, 118, :_reduce_137, - 0, 118, :_reduce_138, - 3, 130, :_reduce_139, - 2, 130, :_reduce_140, - 2, 129, :_reduce_141, - 1, 129, :_reduce_142, - 1, 131, :_reduce_143, - 1, 131, :_reduce_144, - 3, 132, :_reduce_145, - 1, 132, :_reduce_146, - 3, 124, :_reduce_147, - 2, 124, :_reduce_148, - 2, 133, :_reduce_149, - 1, 133, :_reduce_150, - 3, 89, :_reduce_151, - 1, 89, :_reduce_152, - 2, 117, :_reduce_153, - 1, 117, :_reduce_154, - 3, 134, :_reduce_155, - 3, 134, :_reduce_156, - 1, 134, :_reduce_157, - 3, 112, :_reduce_158, - 1, 112, :_reduce_159, - 1, 88, :_reduce_160, - 1, 88, :_reduce_161, - 1, 88, :_reduce_162, - 1, 122, :_reduce_163, - 1, 122, :_reduce_164, - 1, 122, :_reduce_165, - 1, 122, :_reduce_166, - 1, 122, :_reduce_167, - 7, 121, :_reduce_168, - 1, 114, :_reduce_169, - 1, 114, :_reduce_170, - 1, 123, :_reduce_171 ] - -racc_reduce_n = 172 - -racc_shift_n = 308 - -racc_token_table = { - false => 0, - :error => 1, - :ASS_EQ => 2, - :ADD_EQ => 3, - :SUB_EQ => 4, - :MUL_EQ => 5, - :DIV_EQ => 6, - :MOD_EQ => 7, - :SLL_EQ => 8, - :SRA_EQ => 9, - :SRL_EQ => 10, - :OR => 11, - :AND => 12, - :CMP_LT => 13, - :CMP_GT => 14, - :CMP_EQ => 15, - :CMP_NE => 16, - :CMP_GE => 17, - :CMP_LE => 18, - :SUBSTR_EQ => 19, - :SUBSTR_NE => 20, - :REGEX_EQ => 21, - :REGEX_NE => 22, - :BIT_OR => 23, - :BIT_XOR => 24, - :AMPERSAND => 25, - :BIT_SRA => 26, - :BIT_SRL => 27, - :BIT_SLL => 28, - :ADD => 29, - :SUB => 30, - :MUL => 31, - :DIV => 32, - :MOD => 33, - :NOT => 34, - :UMINUS => 35, - :BIT_NOT => 36, - :EXP => 37, - :INCR => 38, - :DECR => 39, - :COMMENT => 40, - :EXPORT => 41, - :FUNCTION => 42, - :LPAREN => 43, - :RPAREN => 44, - :SEMICOLON => 45, - :BREAK => 46, - :CONTINUE => 47, - :GLOBAL => 48, - :IMPORT => 49, - :INCLUDE => 50, - :LOCAL => 51, - :REP => 52, - :RETURN => 53, - :LBRACE => 54, - :RBRACE => 55, - :FOR => 56, - :FOREACH => 57, - :IN => 58, - :IF => 59, - :ELSE => 60, - :REPEAT => 61, - :UNTIL => 62, - :WHILE => 63, - :COLON => 64, - :COMMA => 65, - :AT_SIGN => 66, - :LBRACK => 67, - :RBRACK => 68, - :PERIOD => 69, - :IDENT => 70, - :INT_DEC => 71, - :INT_HEX => 72, - :INT_OCT => 73, - :FALSE => 74, - :TRUE => 75, - :DATA => 76, - :STRING => 77, - :UNDEF => 78 } - -racc_nt_base = 79 - -racc_use_result_var = false - -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", - "ASS_EQ", - "ADD_EQ", - "SUB_EQ", - "MUL_EQ", - "DIV_EQ", - "MOD_EQ", - "SLL_EQ", - "SRA_EQ", - "SRL_EQ", - "OR", - "AND", - "CMP_LT", - "CMP_GT", - "CMP_EQ", - "CMP_NE", - "CMP_GE", - "CMP_LE", - "SUBSTR_EQ", - "SUBSTR_NE", - "REGEX_EQ", - "REGEX_NE", - "BIT_OR", - "BIT_XOR", - "AMPERSAND", - "BIT_SRA", - "BIT_SRL", - "BIT_SLL", - "ADD", - "SUB", - "MUL", - "DIV", - "MOD", - "NOT", - "UMINUS", - "BIT_NOT", - "EXP", - "INCR", - "DECR", - "COMMENT", - "EXPORT", - "FUNCTION", - "LPAREN", - "RPAREN", - "SEMICOLON", - "BREAK", - "CONTINUE", - "GLOBAL", - "IMPORT", - "INCLUDE", - "LOCAL", - "REP", - "RETURN", - "LBRACE", - "RBRACE", - "FOR", - "FOREACH", - "IN", - "IF", - "ELSE", - "REPEAT", - "UNTIL", - "WHILE", - "COLON", - "COMMA", - "AT_SIGN", - "LBRACK", - "RBRACK", - "PERIOD", - "IDENT", - "INT_DEC", - "INT_HEX", - "INT_OCT", - "FALSE", - "TRUE", - "DATA", - "STRING", - "UNDEF", - "$start", - "start", - "roots", - "root", - "export", - "function", - "statement", - "simple", - "compound", - "ident", - "params", - "block", - "assign", - "break", - "call", - "continue", - "decr", - "empty", - "global", - "import", - "include", - "incr", - "local", - "rep", - "return", - "for", - "foreach", - "if", - "repeat", - "while", - "assign_exp", - "call_exp", - "decr_exp", - "var_decls", - "incr_exp", - "string", - "expr", - "ref", - "statements", - "field", - "lval", - "args", - "ip", - "int", - "undef", - "list_expr", - "array_expr", - "arg", - "kv_pair", - "kv_pairs", - "indexes", - "index", - "list_elem", - "list_elems", - "param", - "var_decl" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'nasl.y', 61) - def _reduce_1(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 63) - def _reduce_2(val, _values) - [] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 67) - def _reduce_3(val, _values) - [val[0]] + val[1] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 69) - def _reduce_4(val, _values) - [val[0]] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 73) - def _reduce_5(val, _values) - c(*val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 75) - def _reduce_6(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 77) - def _reduce_7(val, _values) - c(*val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 79) - def _reduce_8(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 81) - def _reduce_9(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 85) - def _reduce_10(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 87) - def _reduce_11(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 95) - def _reduce_12(val, _values) - n(:Export, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 99) - def _reduce_13(val, _values) - n(:Function, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 101) - def _reduce_14(val, _values) - n(:Function, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 105) - def _reduce_15(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 107) - def _reduce_16(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 109) - def _reduce_17(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 111) - def _reduce_18(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 113) - def _reduce_19(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 115) - def _reduce_20(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 117) - def _reduce_21(val, _values) - c(*val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 119) - def _reduce_22(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 121) - def _reduce_23(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 123) - def _reduce_24(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 125) - def _reduce_25(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 127) - def _reduce_26(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 129) - def _reduce_27(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 131) - def _reduce_28(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 135) - def _reduce_29(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 137) - def _reduce_30(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 139) - def _reduce_31(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 141) - def _reduce_32(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 143) - def _reduce_33(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 145) - def _reduce_34(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 153) - def _reduce_35(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 157) - def _reduce_36(val, _values) - n(:Break, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 161) - def _reduce_37(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 165) - def _reduce_38(val, _values) - n(:Continue, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 169) - def _reduce_39(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 173) - def _reduce_40(val, _values) - n(:Empty, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 177) - def _reduce_41(val, _values) - n(:Global, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 181) - def _reduce_42(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 185) - def _reduce_43(val, _values) - n(:Import, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 189) - def _reduce_44(val, _values) - n(:Include, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 193) - def _reduce_45(val, _values) - n(:Local, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 197) - def _reduce_46(val, _values) - n(:Repetition, *val[0..-1]) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 201) - def _reduce_47(val, _values) - n(:Return, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 203) - def _reduce_48(val, _values) - n(:Return, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 205) - def _reduce_49(val, _values) - n(:Return, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 213) - def _reduce_50(val, _values) - n(:Block, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 215) - def _reduce_51(val, _values) - n(:Block, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 219) - def _reduce_52(val, _values) - n(:For, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 223) - def _reduce_53(val, _values) - n(:Foreach, val[0], val[1], val[3], val[5]) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 225) - def _reduce_54(val, _values) - n(:Foreach, val[0], val[2], val[4], val[6]) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 229) - def _reduce_55(val, _values) - n(:If, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 231) - def _reduce_56(val, _values) - n(:If, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 235) - def _reduce_57(val, _values) - n(:Repeat, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 239) - def _reduce_58(val, _values) - n(:While, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 247) - def _reduce_59(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 249) - def _reduce_60(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 251) - def _reduce_61(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 253) - def _reduce_62(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 255) - def _reduce_63(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 257) - def _reduce_64(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 259) - def _reduce_65(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 261) - def _reduce_66(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 263) - def _reduce_67(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 265) - def _reduce_68(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 269) - def _reduce_69(val, _values) - n(:Call, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 271) - def _reduce_70(val, _values) - n(:Call, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 275) - def _reduce_71(val, _values) - n(:Decrement, val[0]) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 277) - def _reduce_72(val, _values) - n(:Decrement, val[0]) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 281) - def _reduce_73(val, _values) - n(:Increment, val[0]) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 283) - def _reduce_74(val, _values) - n(:Increment, val[0]) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 287) - def _reduce_75(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 289) - def _reduce_76(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 291) - def _reduce_77(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 293) - def _reduce_78(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 295) - def _reduce_79(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 297) - def _reduce_80(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 299) - def _reduce_81(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 301) - def _reduce_82(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 303) - def _reduce_83(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 305) - def _reduce_84(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 307) - def _reduce_85(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 309) - def _reduce_86(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 311) - def _reduce_87(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 313) - def _reduce_88(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 315) - def _reduce_89(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 317) - def _reduce_90(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 319) - def _reduce_91(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 321) - def _reduce_92(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 323) - def _reduce_93(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 325) - def _reduce_94(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 327) - def _reduce_95(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 329) - def _reduce_96(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 331) - def _reduce_97(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 333) - def _reduce_98(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 335) - def _reduce_99(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 337) - def _reduce_100(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 339) - def _reduce_101(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 341) - def _reduce_102(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 343) - def _reduce_103(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 345) - def _reduce_104(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 347) - def _reduce_105(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 349) - def _reduce_106(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 351) - def _reduce_107(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 353) - def _reduce_108(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 355) - def _reduce_109(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 357) - def _reduce_110(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 359) - def _reduce_111(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 361) - def _reduce_112(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 363) - def _reduce_113(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 371) - def _reduce_114(val, _values) - n(:Argument, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 373) - def _reduce_115(val, _values) - n(:Argument, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 375) - def _reduce_116(val, _values) - n(:Argument, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 377) - def _reduce_117(val, _values) - n(:Argument, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 381) - def _reduce_118(val, _values) - n(:KeyValuePair, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 383) - def _reduce_119(val, _values) - n(:KeyValuePair, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 385) - def _reduce_120(val, _values) - n(:KeyValuePair, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 387) - def _reduce_121(val, _values) - n(:KeyValuePair, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 389) - def _reduce_122(val, _values) - n(:KeyValuePair, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 391) - def _reduce_123(val, _values) - n(:KeyValuePair, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 395) - def _reduce_124(val, _values) - [val[0]] + val[2] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 397) - def _reduce_125(val, _values) - [val[0]] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 399) - def _reduce_126(val, _values) - [val[0]] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 403) - def _reduce_127(val, _values) - n(:Lvalue, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 405) - def _reduce_128(val, _values) - n(:Lvalue, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 409) - def _reduce_129(val, _values) - n(:Reference, val[1]) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 417) - def _reduce_130(val, _values) - [val[0]] + val[2] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 419) - def _reduce_131(val, _values) - [val[0]] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 423) - def _reduce_132(val, _values) - n(:Array, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 425) - def _reduce_133(val, _values) - n(:Array, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 429) - def _reduce_134(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 431) - def _reduce_135(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 433) - def _reduce_136(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 435) - def _reduce_137(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 437) - def _reduce_138(val, _values) - nil - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 441) - def _reduce_139(val, _values) - val[1] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 443) - def _reduce_140(val, _values) - val[1] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 447) - def _reduce_141(val, _values) - [val[0]] + val[1] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 449) - def _reduce_142(val, _values) - [val[0]] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 453) - def _reduce_143(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 455) - def _reduce_144(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 459) - def _reduce_145(val, _values) - [val[0]] + val[2] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 461) - def _reduce_146(val, _values) - [val[0]] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 465) - def _reduce_147(val, _values) - n(:List, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 467) - def _reduce_148(val, _values) - n(:List, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 471) - def _reduce_149(val, _values) - n(:Parameter, val[1], 'reference') - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 473) - def _reduce_150(val, _values) - n(:Parameter, val[0], 'value') - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 477) - def _reduce_151(val, _values) - [val[0]] + val[2] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 479) - def _reduce_152(val, _values) - [val[0]] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 483) - def _reduce_153(val, _values) - [val[0]] + val[1] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 485) - def _reduce_154(val, _values) - [val[0]] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 489) - def _reduce_155(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 491) - def _reduce_156(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 493) - def _reduce_157(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 497) - def _reduce_158(val, _values) - [val[0]] + val[2] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 499) - def _reduce_159(val, _values) - [val[0]] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 507) - def _reduce_160(val, _values) - n(:Identifier, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 509) - def _reduce_161(val, _values) - n(:Identifier, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 511) - def _reduce_162(val, _values) - n(:Identifier, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 515) - def _reduce_163(val, _values) - n(:Integer, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 517) - def _reduce_164(val, _values) - n(:Integer, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 519) - def _reduce_165(val, _values) - n(:Integer, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 521) - def _reduce_166(val, _values) - n(:Integer, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 523) - def _reduce_167(val, _values) - n(:Integer, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 527) - def _reduce_168(val, _values) - n(:Ip, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 530) - def _reduce_169(val, _values) - n(:String, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 532) - def _reduce_170(val, _values) - n(:String, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 536) - def _reduce_171(val, _values) - n(:Undefined, *val) - end -.,., - -def _reduce_none(val, _values) - val[0] -end - - end # class Grammar -end # module Nasl - - diff --git a/test/racc/regress/nokogiri-css b/test/racc/regress/nokogiri-css deleted file mode 100644 index bc2faf8702..0000000000 --- a/test/racc/regress/nokogiri-css +++ /dev/null @@ -1,836 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - - -require 'nokogiri/css/parser_extras' -module Nokogiri - module CSS - class Parser < Racc::Parser -##### State transition tables begin ### - -racc_action_table = [ - 24, 93, 56, 57, 33, 55, 94, 23, 24, 22, - 12, 93, 33, 27, 35, 52, 44, 22, -23, 25, - 45, 98, 23, 33, 26, 18, 20, 25, 27, -23, - 23, 24, 26, 18, 20, 33, 27, 11, 39, 24, - 22, 23, 74, 33, 18, 91, 90, 27, 22, 12, - 25, 24, -23, 23, 85, 26, 18, 20, 25, 27, - 66, 23, 24, 26, 18, 20, 33, 27, 101, 100, - 51, 22, 86, 88, 24, 26, 56, 87, 89, 60, - 92, 25, 95, 46, 23, 49, 26, 18, 20, 90, - 27, 33, 33, 51, 96, 99, 56, 58, 26, 60, - 102, 103, 33, 33, 33, 93, 39, 39, 105, 23, - 23, 108, 18, 18, 20, 27, 27, 39, 39, 39, - 23, 23, 23, 18, 18, 18, 27, 27, 27, 33, - 33, 56, 87, 109, 60, 22, 56, 87, nil, 60, - 33, nil, nil, nil, 39, 39, nil, 23, 23, nil, - 18, 18, 20, 27, 27, 39, 82, 83, 23, 56, - 87, 18, 60, nil, 27, 82, 83, 78, 79, 80, - nil, 81, nil, nil, nil, 77, 78, 79, 80, nil, - 81, 4, 5, 10, 77, 4, 5, 43, nil, nil, - nil, 6, nil, 8, 7, 6, nil, 8, 7, 4, - 5, 10, nil, nil, nil, nil, nil, nil, nil, 6, - nil, 8, 7 ] - -racc_action_check = [ - 3, 58, 24, 24, 3, 24, 57, 15, 9, 3, - 64, 57, 9, 15, 11, 24, 18, 9, 58, 3, - 21, 64, 3, 14, 3, 3, 3, 9, 3, 22, - 9, 12, 9, 9, 9, 12, 9, 1, 14, 42, - 12, 14, 45, 42, 14, 55, 55, 14, 42, 1, - 12, 27, 46, 12, 49, 12, 12, 12, 42, 12, - 27, 42, 43, 42, 42, 42, 43, 42, 76, 76, - 27, 43, 50, 53, 23, 27, 51, 51, 54, 51, - 56, 43, 59, 23, 43, 23, 43, 43, 43, 60, - 43, 28, 25, 23, 61, 75, 25, 25, 23, 25, - 84, 86, 29, 30, 31, 87, 28, 25, 91, 28, - 25, 94, 28, 25, 25, 28, 25, 29, 30, 31, - 29, 30, 31, 29, 30, 31, 29, 30, 31, 32, - 39, 90, 90, 105, 90, 39, 92, 92, nil, 92, - 62, nil, nil, nil, 32, 39, nil, 32, 39, nil, - 32, 39, 39, 32, 39, 62, 47, 47, 62, 93, - 93, 62, 93, nil, 62, 48, 48, 47, 47, 47, - nil, 47, nil, nil, nil, 47, 48, 48, 48, nil, - 48, 0, 0, 0, 48, 17, 17, 17, nil, nil, - nil, 0, nil, 0, 0, 17, nil, 17, 17, 26, - 26, 26, nil, nil, nil, nil, nil, nil, nil, 26, - nil, 26, 26 ] - -racc_action_pointer = [ - 174, 37, nil, -2, nil, nil, nil, nil, nil, 6, - nil, 14, 29, nil, 17, -17, nil, 178, 5, nil, - nil, -9, 0, 72, -8, 86, 192, 49, 85, 96, - 97, 98, 123, nil, nil, nil, nil, nil, nil, 124, - nil, nil, 37, 60, nil, 31, 23, 153, 162, 29, - 43, 66, nil, 50, 55, 34, 68, -1, -11, 59, - 77, 71, 134, nil, -2, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 70, 58, nil, nil, nil, - nil, nil, nil, nil, 75, nil, 90, 93, nil, nil, - 121, 101, 126, 149, 98, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 120, nil, nil, nil, nil ] - -racc_action_default = [ - -74, -75, -2, -24, -4, -5, -6, -7, -8, -24, - -73, -75, -24, -3, -47, -10, -13, -17, -75, -19, - -20, -75, -22, -24, -75, -24, -74, -75, -53, -54, - -55, -56, -57, -58, -14, 110, -1, -9, -46, -24, - -11, -12, -24, -24, -18, -75, -29, -61, -61, -75, - -75, -75, -30, -75, -75, -38, -39, -40, -22, -75, - -38, -75, -70, -72, -75, -44, -45, -48, -49, -50, - -51, -52, -15, -16, -21, -75, -75, -62, -63, -64, - -65, -66, -67, -68, -75, -27, -75, -40, -31, -32, - -75, -43, -75, -75, -75, -33, -69, -71, -34, -25, - -59, -60, -26, -28, -35, -75, -36, -37, -42, -41 ] - -racc_goto_table = [ - 53, 38, 13, 1, 42, 48, 62, 37, 34, 65, - 40, 36, 63, 75, 84, 67, 68, 69, 70, 71, - 62, 41, 50, 47, 54, nil, 63, nil, nil, 64, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 72, 73, nil, nil, nil, nil, nil, nil, 97, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 104, nil, 106, 107 ] - -racc_goto_check = [ - 18, 12, 2, 1, 5, 9, 7, 8, 2, 9, - 10, 2, 12, 17, 17, 12, 12, 12, 12, 12, - 7, 11, 15, 16, 19, nil, 12, nil, nil, 1, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 2, 2, nil, nil, nil, nil, nil, nil, 12, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 18, nil, 18, 18 ] - -racc_goto_pointer = [ - nil, 3, -1, nil, nil, -13, nil, -19, -7, -18, - -5, 6, -13, nil, nil, -1, 0, -34, -24, 0, - nil, nil, nil, nil ] - -racc_goto_default = [ - nil, nil, nil, 2, 3, 9, 17, 14, nil, 15, - 31, 30, 16, 29, 19, 21, nil, nil, 59, nil, - 28, 32, 76, 61 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 3, 32, :_reduce_1, - 1, 32, :_reduce_2, - 2, 32, :_reduce_3, - 1, 36, :_reduce_4, - 1, 36, :_reduce_5, - 1, 36, :_reduce_6, - 1, 36, :_reduce_7, - 1, 36, :_reduce_8, - 2, 37, :_reduce_9, - 1, 37, :_reduce_none, - 2, 37, :_reduce_11, - 2, 37, :_reduce_12, - 1, 37, :_reduce_13, - 2, 34, :_reduce_14, - 3, 33, :_reduce_15, - 3, 33, :_reduce_16, - 1, 33, :_reduce_none, - 2, 44, :_reduce_18, - 1, 38, :_reduce_none, - 1, 38, :_reduce_20, - 3, 45, :_reduce_21, - 1, 45, :_reduce_22, - 1, 46, :_reduce_23, - 0, 46, :_reduce_none, - 4, 42, :_reduce_25, - 4, 42, :_reduce_26, - 3, 42, :_reduce_27, - 3, 47, :_reduce_28, - 1, 47, :_reduce_29, - 2, 40, :_reduce_30, - 3, 40, :_reduce_31, - 3, 40, :_reduce_32, - 3, 40, :_reduce_33, - 3, 40, :_reduce_34, - 3, 49, :_reduce_35, - 3, 49, :_reduce_36, - 3, 49, :_reduce_37, - 1, 49, :_reduce_none, - 1, 49, :_reduce_none, - 1, 49, :_reduce_40, - 4, 50, :_reduce_41, - 3, 50, :_reduce_42, - 2, 50, :_reduce_43, - 2, 41, :_reduce_44, - 2, 41, :_reduce_45, - 1, 39, :_reduce_none, - 0, 39, :_reduce_none, - 2, 43, :_reduce_48, - 2, 43, :_reduce_49, - 2, 43, :_reduce_50, - 2, 43, :_reduce_51, - 2, 43, :_reduce_52, - 1, 43, :_reduce_none, - 1, 43, :_reduce_none, - 1, 43, :_reduce_none, - 1, 43, :_reduce_none, - 1, 43, :_reduce_none, - 1, 51, :_reduce_58, - 2, 48, :_reduce_59, - 2, 48, :_reduce_60, - 0, 48, :_reduce_none, - 1, 53, :_reduce_62, - 1, 53, :_reduce_63, - 1, 53, :_reduce_64, - 1, 53, :_reduce_65, - 1, 53, :_reduce_66, - 1, 53, :_reduce_67, - 1, 53, :_reduce_68, - 3, 52, :_reduce_69, - 1, 54, :_reduce_none, - 2, 54, :_reduce_none, - 1, 54, :_reduce_none, - 1, 35, :_reduce_none, - 0, 35, :_reduce_none ] - -racc_reduce_n = 75 - -racc_shift_n = 110 - -racc_token_table = { - false => 0, - :error => 1, - :FUNCTION => 2, - :INCLUDES => 3, - :DASHMATCH => 4, - :LBRACE => 5, - :HASH => 6, - :PLUS => 7, - :GREATER => 8, - :S => 9, - :STRING => 10, - :IDENT => 11, - :COMMA => 12, - :NUMBER => 13, - :PREFIXMATCH => 14, - :SUFFIXMATCH => 15, - :SUBSTRINGMATCH => 16, - :TILDE => 17, - :NOT_EQUAL => 18, - :SLASH => 19, - :DOUBLESLASH => 20, - :NOT => 21, - :EQUAL => 22, - :RPAREN => 23, - :LSQUARE => 24, - :RSQUARE => 25, - :HAS => 26, - "." => 27, - "*" => 28, - "|" => 29, - ":" => 30 } - -racc_nt_base = 31 - -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", - "FUNCTION", - "INCLUDES", - "DASHMATCH", - "LBRACE", - "HASH", - "PLUS", - "GREATER", - "S", - "STRING", - "IDENT", - "COMMA", - "NUMBER", - "PREFIXMATCH", - "SUFFIXMATCH", - "SUBSTRINGMATCH", - "TILDE", - "NOT_EQUAL", - "SLASH", - "DOUBLESLASH", - "NOT", - "EQUAL", - "RPAREN", - "LSQUARE", - "RSQUARE", - "HAS", - "\".\"", - "\"*\"", - "\"|\"", - "\":\"", - "$start", - "selector", - "simple_selector_1toN", - "prefixless_combinator_selector", - "optional_S", - "combinator", - "simple_selector", - "element_name", - "hcap_0toN", - "function", - "pseudo", - "attrib", - "hcap_1toN", - "class", - "namespaced_ident", - "namespace", - "attrib_name", - "attrib_val_0or1", - "expr", - "nth", - "attribute_id", - "negation", - "eql_incl_dash", - "negation_arg" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'nokogiri-css.y', 9) - def _reduce_1(val, _values, result) - result = [val.first, val.last].flatten - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 11) - def _reduce_2(val, _values, result) - result = val.flatten - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 12) - def _reduce_3(val, _values, result) - result = [val.last].flatten - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 15) - def _reduce_4(val, _values, result) - result = :DIRECT_ADJACENT_SELECTOR - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 16) - def _reduce_5(val, _values, result) - result = :CHILD_SELECTOR - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 17) - def _reduce_6(val, _values, result) - result = :FOLLOWING_SELECTOR - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 18) - def _reduce_7(val, _values, result) - result = :DESCENDANT_SELECTOR - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 19) - def _reduce_8(val, _values, result) - result = :CHILD_SELECTOR - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 23) - def _reduce_9(val, _values, result) - result = if val[1].nil? - val.first - else - Node.new(:CONDITIONAL_SELECTOR, [val.first, val[1]]) - end - - result - end -.,., - -# reduce 10 omitted - -module_eval(<<'.,.,', 'nokogiri-css.y', 31) - def _reduce_11(val, _values, result) - result = Node.new(:CONDITIONAL_SELECTOR, val) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 34) - def _reduce_12(val, _values, result) - result = Node.new(:CONDITIONAL_SELECTOR, val) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 37) - def _reduce_13(val, _values, result) - result = Node.new(:CONDITIONAL_SELECTOR, - [Node.new(:ELEMENT_NAME, ['*']), val.first] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 44) - def _reduce_14(val, _values, result) - result = Node.new(val.first, [nil, val.last]) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 49) - def _reduce_15(val, _values, result) - result = Node.new(val[1], [val.first, val.last]) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 52) - def _reduce_16(val, _values, result) - result = Node.new(:DESCENDANT_SELECTOR, [val.first, val.last]) - - result - end -.,., - -# reduce 17 omitted - -module_eval(<<'.,.,', 'nokogiri-css.y', 57) - def _reduce_18(val, _values, result) - result = Node.new(:CLASS_CONDITION, [val[1]]) - result - end -.,., - -# reduce 19 omitted - -module_eval(<<'.,.,', 'nokogiri-css.y', 61) - def _reduce_20(val, _values, result) - result = Node.new(:ELEMENT_NAME, val) - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 65) - def _reduce_21(val, _values, result) - result = Node.new(:ELEMENT_NAME, - [[val.first, val.last].compact.join(':')] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 70) - def _reduce_22(val, _values, result) - name = @namespaces.key?('xmlns') ? "xmlns:#{val.first}" : val.first - result = Node.new(:ELEMENT_NAME, [name]) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 75) - def _reduce_23(val, _values, result) - result = val[0] - result - end -.,., - -# reduce 24 omitted - -module_eval(<<'.,.,', 'nokogiri-css.y', 80) - def _reduce_25(val, _values, result) - result = Node.new(:ATTRIBUTE_CONDITION, - [val[1]] + (val[2] || []) - ) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 85) - def _reduce_26(val, _values, result) - result = Node.new(:ATTRIBUTE_CONDITION, - [val[1]] + (val[2] || []) - ) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 90) - def _reduce_27(val, _values, result) - # Non standard, but hpricot supports it. - result = Node.new(:PSEUDO_CLASS, - [Node.new(:FUNCTION, ['nth-child(', val[1]])] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 98) - def _reduce_28(val, _values, result) - result = Node.new(:ELEMENT_NAME, - [[val.first, val.last].compact.join(':')] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 103) - def _reduce_29(val, _values, result) - # Default namespace is not applied to attributes. - # So we don't add prefix "xmlns:" as in namespaced_ident. - result = Node.new(:ELEMENT_NAME, [val.first]) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 110) - def _reduce_30(val, _values, result) - result = Node.new(:FUNCTION, [val.first.strip]) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 113) - def _reduce_31(val, _values, result) - result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 116) - def _reduce_32(val, _values, result) - result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 119) - def _reduce_33(val, _values, result) - result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 122) - def _reduce_34(val, _values, result) - result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 126) - def _reduce_35(val, _values, result) - result = [val.first, val.last] - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 127) - def _reduce_36(val, _values, result) - result = [val.first, val.last] - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 128) - def _reduce_37(val, _values, result) - result = [val.first, val.last] - result - end -.,., - -# reduce 38 omitted - -# reduce 39 omitted - -module_eval(<<'.,.,', 'nokogiri-css.y', 133) - def _reduce_40(val, _values, result) - case val[0] - when 'even' - result = Node.new(:NTH, ['2','n','+','0']) - when 'odd' - result = Node.new(:NTH, ['2','n','+','1']) - when 'n' - result = Node.new(:NTH, ['1','n','+','0']) - else - # This is not CSS standard. It allows us to support this: - # assert_xpath("//a[foo(., @href)]", @parser.parse('a:foo(@href)')) - # assert_xpath("//a[foo(., @a, b)]", @parser.parse('a:foo(@a, b)')) - # assert_xpath("//a[foo(., a, 10)]", @parser.parse('a:foo(a, 10)')) - result = val - end - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 152) - def _reduce_41(val, _values, result) - if val[1] == 'n' - result = Node.new(:NTH, val) - else - raise Racc::ParseError, "parse error on IDENT '#{val[1]}'" - end - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 158) - def _reduce_42(val, _values, result) - # n+3, -n+3 - if val[0] == 'n' - val.unshift("1") - result = Node.new(:NTH, val) - elsif val[0] == '-n' - val[0] = 'n' - val.unshift("-1") - result = Node.new(:NTH, val) - else - raise Racc::ParseError, "parse error on IDENT '#{val[1]}'" - end - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 170) - def _reduce_43(val, _values, result) - # 5n, -5n, 10n-1 - n = val[1] - if n[0, 2] == 'n-' - val[1] = 'n' - val << "-" - # b is contained in n as n is the string "n-b" - val << n[2, n.size] - result = Node.new(:NTH, val) - elsif n == 'n' - val << "+" - val << "0" - result = Node.new(:NTH, val) - else - raise Racc::ParseError, "parse error on IDENT '#{val[1]}'" - end - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 189) - def _reduce_44(val, _values, result) - result = Node.new(:PSEUDO_CLASS, [val[1]]) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 191) - def _reduce_45(val, _values, result) - result = Node.new(:PSEUDO_CLASS, [val[1]]) - result - end -.,., - -# reduce 46 omitted - -# reduce 47 omitted - -module_eval(<<'.,.,', 'nokogiri-css.y', 199) - def _reduce_48(val, _values, result) - result = Node.new(:COMBINATOR, val) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 202) - def _reduce_49(val, _values, result) - result = Node.new(:COMBINATOR, val) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 205) - def _reduce_50(val, _values, result) - result = Node.new(:COMBINATOR, val) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 208) - def _reduce_51(val, _values, result) - result = Node.new(:COMBINATOR, val) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 211) - def _reduce_52(val, _values, result) - result = Node.new(:COMBINATOR, val) - - result - end -.,., - -# reduce 53 omitted - -# reduce 54 omitted - -# reduce 55 omitted - -# reduce 56 omitted - -# reduce 57 omitted - -module_eval(<<'.,.,', 'nokogiri-css.y', 220) - def _reduce_58(val, _values, result) - result = Node.new(:ID, val) - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 223) - def _reduce_59(val, _values, result) - result = [val.first, val[1]] - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 224) - def _reduce_60(val, _values, result) - result = [val.first, val[1]] - result - end -.,., - -# reduce 61 omitted - -module_eval(<<'.,.,', 'nokogiri-css.y', 228) - def _reduce_62(val, _values, result) - result = :equal - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 229) - def _reduce_63(val, _values, result) - result = :prefix_match - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 230) - def _reduce_64(val, _values, result) - result = :suffix_match - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 231) - def _reduce_65(val, _values, result) - result = :substring_match - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 232) - def _reduce_66(val, _values, result) - result = :not_equal - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 233) - def _reduce_67(val, _values, result) - result = :includes - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 234) - def _reduce_68(val, _values, result) - result = :dash_match - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 238) - def _reduce_69(val, _values, result) - result = Node.new(:NOT, [val[1]]) - - result - end -.,., - -# reduce 70 omitted - -# reduce 71 omitted - -# reduce 72 omitted - -# reduce 73 omitted - -# reduce 74 omitted - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser - end # module CSS -end # module Nokogiri diff --git a/test/racc/regress/opal b/test/racc/regress/opal deleted file mode 100644 index 710ccdfe88..0000000000 --- a/test/racc/regress/opal +++ /dev/null @@ -1,6431 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' -module Opal - class Parser < Racc::Parser - -module_eval(<<'...end opal.y/module_eval...', 'opal.y', 1808) - -...end opal.y/module_eval... -##### State transition tables begin ### - -clist = [ -'63,64,65,8,51,575,552,-92,57,58,619,205,206,61,73,59,60,62,23,24,66', -'67,74,544,754,607,543,22,28,27,90,89,91,92,97,751,17,607,273,-458,612', -'653,7,41,6,9,94,93,575,84,50,86,85,87,273,88,95,96,653,81,82,-100,38', -'39,-99,-68,597,-446,344,343,-95,205,206,618,-446,652,-97,581,575,582', -'-94,205,206,-96,575,36,609,608,30,-92,575,52,652,108,54,770,32,-84,609', -'608,40,101,-79,-92,268,752,100,195,18,-100,-99,551,-84,79,73,75,76,77', -'78,101,-95,574,74,80,100,272,-98,63,64,65,56,51,-97,53,653,57,58,196', -'37,83,61,272,59,60,62,23,24,66,67,454,-534,205,206,197,22,28,27,90,89', -'91,92,308,101,17,574,-84,-91,100,652,-90,41,308,596,94,93,-86,84,50', -'86,85,87,-88,88,95,96,-85,81,82,-87,38,39,101,101,-535,574,900,100,100', -'101,-100,574,-449,-84,100,101,198,574,649,-449,100,-96,-84,210,246,-98', -'214,215,-92,52,-92,-91,54,-92,-100,-99,-100,-99,40,-100,-99,-94,-89', -'273,607,-95,18,-95,299,726,-95,79,73,75,76,77,78,-97,-90,-97,74,80,-97', -'-86,726,63,64,65,56,51,-88,53,544,57,58,546,37,83,61,531,59,60,62,23', -'24,66,67,205,206,653,205,206,22,28,27,90,89,91,92,-91,-534,219,777,300', -'-535,609,608,605,41,268,227,94,93,308,84,50,86,85,87,388,88,95,96,652', -'81,82,-90,38,39,-99,272,-86,726,301,302,-96,-91,-96,-88,-98,-96,-98', -'224,810,-98,-91,226,225,-87,101,210,725,-93,214,100,-94,52,-94,-85,54', -'-94,391,-89,-90,101,40,725,788,-86,100,402,101,-90,218,415,-88,100,-86', -'79,73,75,76,77,78,-88,453,101,74,80,455,204,100,63,64,65,56,51,607,53', -'544,57,58,546,37,83,61,789,59,60,62,258,259,66,67,876,-534,-87,-95,877', -'257,28,27,90,89,91,92,-85,456,219,-535,-89,-91,101,607,725,41,607,100', -'94,93,-100,84,50,86,85,87,261,88,95,96,-456,81,82,-87,38,39,-97,-456', -'609,608,610,101,-87,-85,-93,215,100,-89,-94,487,264,265,-85,754,-455', -'-454,-89,210,266,489,214,-455,-454,52,751,813,54,582,256,491,254,497', -'40,-67,609,608,614,609,608,620,218,400,401,203,201,79,73,75,76,77,78', -'202,514,544,74,80,546,344,343,63,64,65,56,51,101,53,-451,57,58,100,37', -'83,61,-451,59,60,62,258,259,66,67,515,-532,527,528,516,257,28,27,90', -'89,91,92,101,752,219,-331,-331,100,199,625,200,41,525,-331,94,93,277', -'84,50,86,85,87,261,88,95,96,308,81,82,268,38,39,532,227,231,236,237', -'238,233,235,243,244,239,240,-449,-449,220,221,-452,101,241,242,-449', -'210,100,-452,214,-532,533,52,227,-331,54,-331,256,224,254,230,40,226', -'225,222,223,234,232,228,218,229,-532,203,449,79,73,75,76,77,78,450,308', -'-458,74,80,547,245,548,63,64,65,56,51,-449,53,-449,57,58,491,37,83,61', -'555,59,60,62,258,259,66,67,103,104,105,106,107,257,28,27,90,89,91,92', -'-453,-84,219,524,521,531,452,-453,451,41,-92,522,94,93,558,84,50,86', -'85,87,261,88,95,96,559,81,82,561,38,39,570,227,231,236,237,238,233,235', -'243,244,239,240,524,534,220,221,-90,412,241,242,535,210,414,413,214', -'-99,571,52,404,520,54,523,256,224,254,230,40,226,225,222,223,234,232', -'228,218,229,587,524,584,79,73,75,76,77,78,585,588,630,74,80,589,245', -'650,-255,-255,-255,56,-255,452,53,451,-255,-255,613,37,83,-255,617,-255', -'-255,-255,-255,-255,-255,-255,103,104,105,106,107,-255,-255,-255,-255', -'-255,-255,-255,621,-86,-255,524,593,624,583,625,586,-255,-95,591,-255', -'-255,627,-255,-255,-255,-255,-255,-255,-255,-255,-255,-263,-255,-255', -'628,-255,-255,629,227,231,236,237,238,233,235,243,244,239,240,-284,-284', -'220,221,205,206,241,242,-284,-255,268,631,-255,268,227,-255,227,592', -'-255,523,-255,224,-255,230,-255,226,225,222,223,234,232,228,-255,229', -'344,343,602,-255,-255,-255,-255,-255,-255,603,832,813,-255,-255,776', -'245,227,-233,-88,227,-255,915,-284,-255,-284,308,754,-97,-255,-255,63', -'64,65,8,51,344,343,751,57,58,832,813,670,61,671,59,60,62,23,24,66,67', -'679,681,-79,-85,682,22,28,27,90,89,91,92,-94,684,17,537,341,340,344', -'343,7,41,227,9,94,93,694,84,50,86,85,87,700,88,95,96,701,81,82,702,38', -'39,706,227,231,236,237,238,233,235,243,244,239,240,224,752,220,221,226', -'225,241,242,716,36,718,721,281,582,729,52,772,-264,54,497,32,224,497', -'230,40,226,225,222,223,234,232,228,18,229,497,524,593,79,73,75,76,77', -'78,822,791,792,74,80,489,245,491,63,64,65,56,51,800,53,802,57,58,803', -'37,83,61,694,59,60,62,258,259,66,67,708,807,268,268,808,257,291,295', -'90,89,91,92,268,227,219,-286,-286,227,592,813,523,292,819,-286,94,93', -'820,84,50,86,85,87,558,88,95,96,561,81,82,823,327,824,336,334,333,561', -'335,341,340,344,343,827,866,867,-283,-283,868,95,96,813,836,837,-283', -'289,839,840,286,-535,-534,52,842,-286,54,-286,285,850,852,855,856,338', -'858,915,860,862,864,-265,754,341,340,344,343,79,73,75,76,77,78,751,794', -'878,74,80,879,880,881,63,64,65,56,51,-283,53,-283,57,58,883,296,83,61', -'884,59,60,62,258,259,66,67,708,341,340,344,343,257,291,295,90,89,91', -'92,524,946,219,103,104,105,106,107,947,292,227,694,94,93,886,84,50,86', -'85,87,-263,88,95,96,890,81,82,764,752,336,334,333,754,335,895,341,340', -'344,343,897,903,905,224,751,906,308,226,225,222,223,919,289,-266,921', -'214,-535,945,52,586,563,54,336,334,333,561,335,338,749,931,932,937,855', -'939,860,341,340,344,343,860,79,73,75,76,77,78,862,948,954,74,80,700', -'964,860,298,966,967,56,,,53,,,,,296,83,63,64,65,227,51,,,752,57,58,', -',,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,224,219,', -',226,225,222,223,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39', -',227,231,236,237,238,233,235,243,244,239,240,,,220,221,,,241,242,,210', -',,214,,,52,,,54,,,224,,230,40,226,225,222,223,234,232,228,218,229,,', -',79,73,75,76,77,78,,,,74,80,,245,,63,64,65,56,51,,53,,57,58,,37,83,61', -',59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,563,219,336,334', -'333,,335,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,227,231', -'236,237,238,233,235,243,244,239,240,,,220,221,,,241,242,,210,,,214,', -',52,,,54,,,224,,230,40,226,225,222,223,234,232,228,218,229,,,,79,73', -'75,76,77,78,,,,74,80,,245,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60', -'62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93', -',84,50,86,85,87,,88,95,96,,81,82,,38,39,,227,231,236,237,238,233,235', -'243,244,239,240,,,220,221,,,241,242,,210,,,214,,,52,,,54,,,224,,230', -'40,226,225,222,223,234,232,228,218,229,,,,79,73,75,76,77,78,,,,74,80', -',245,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,23,24,66,67,,,,', -',22,28,27,90,89,91,92,,,17,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96', -',81,82,,38,39,,227,231,236,237,238,233,235,243,244,239,240,,,220,221', -',,241,242,,210,,,214,,,52,,,54,,,224,,230,40,226,225,222,223,234,232', -'228,18,229,,,,79,73,75,76,77,78,,,,74,80,,245,,63,64,65,56,51,,53,,57', -'58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,28,27,90,89,91,92,,,219', -',,,,,,41,,,94,93,,84,50,86,85,87,261,88,95,96,,81,82,,38,39,,227,231', -'236,237,238,233,235,243,244,239,240,,,220,221,,,241,242,,210,,,214,', -',52,,,54,,256,224,,230,40,226,225,222,223,234,232,228,218,229,,,,79', -'73,75,76,77,78,,,,74,80,,245,,63,64,65,56,51,,53,,57,58,,37,83,61,,59', -'60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94', -'93,,84,50,86,85,87,261,88,95,96,,81,82,,38,39,,227,231,236,237,238,233', -'235,243,244,239,240,,,220,221,,,241,242,,210,,,214,,,52,,,54,,,224,', -'230,40,226,225,222,223,234,232,228,218,229,,,,79,73,75,76,77,78,,,,74', -'80,,245,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,23,24,66,67,', -',,,,22,28,27,90,89,91,92,,,17,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95', -'96,,81,82,,38,39,,227,231,236,237,238,233,235,243,244,239,240,,,220', -'221,,,241,242,,210,,,214,,,52,,,54,,,224,,230,40,226,225,222,223,234', -'232,228,18,229,,,,79,73,75,76,77,78,,,,74,80,,245,,63,64,65,56,51,,53', -',57,58,,37,83,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92,,,17', -',,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,227,231,236', -'237,238,233,235,243,244,239,240,,,220,221,,,241,242,,210,,,214,,,52', -',,54,,,224,,230,40,226,225,222,223,234,232,228,18,229,,,,79,73,75,76', -'77,78,,,,74,80,,245,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,23', -'24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,,41,,,94,93,,84,50,86,85', -'87,,88,95,96,,81,82,,38,39,,227,231,236,237,238,233,235,243,244,239', -'240,,,220,221,,,241,242,,210,,,214,,,52,,,54,,,224,,230,40,226,225,222', -'223,234,232,228,18,229,,,,79,73,75,76,77,78,,,,74,80,101,245,,-233,', -'100,56,,,53,,,,,37,83,63,64,65,,51,,,,57,58,,,,61,,59,60,62,258,259', -'66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,292,,,94,93,,84,50,86', -'85,87,,88,95,96,,81,82,227,231,236,237,238,233,235,243,244,239,240,227', -',220,221,,,241,242,,,,,,356,,,30,241,242,52,,224,54,230,32,226,225,222', -'223,234,232,228,224,229,230,,226,225,222,223,,79,73,75,76,77,78,,,245', -'74,80,,,,63,64,65,56,51,,53,,57,58,,296,83,61,,59,60,62,258,259,66,67', -',,,,,257,291,295,90,89,91,92,,,219,,,,,,,292,,,94,93,,84,50,86,85,361', -',88,95,96,,81,82,227,231,236,237,238,233,235,243,244,239,240,227,,220', -'221,,,241,242,,,367,,,362,,,214,241,242,52,,224,54,230,,226,225,222', -'223,234,232,228,224,229,230,,226,225,222,223,,79,73,75,76,77,78,,,245', -'74,80,,,,-531,-531,-531,56,-531,,53,,-531,-531,,296,83,-531,,-531,-531', -'-531,-531,-531,-531,-531,,-531,,,,-531,-531,-531,-531,-531,-531,-531', -',,-531,,,,,,,-531,,,-531,-531,,-531,-531,-531,-531,-531,-531,-531,-531', -'-531,,-531,-531,,-531,-531,,227,231,236,237,238,233,235,243,244,239', -'240,,,220,221,,,241,242,,-531,,,-531,-531,,-531,,,-531,,-531,224,-531', -'230,-531,226,225,222,223,234,232,228,-531,229,-531,,,-531,-531,-531', -'-531,-531,-531,,,,-531,-531,,245,,-532,-532,-532,-531,-532,,-531,,-532', -'-532,,-531,-531,-532,,-532,-532,-532,-532,-532,-532,-532,,-532,,,,-532', -'-532,-532,-532,-532,-532,-532,,,-532,,,,,,,-532,,,-532,-532,,-532,-532', -'-532,-532,-532,-532,-532,-532,-532,,-532,-532,,-532,-532,,227,231,236', -'237,238,233,235,243,244,239,240,,,220,221,,,241,242,,-532,,,-532,-532', -',-532,,,-532,,-532,224,-532,230,-532,226,225,222,223,234,232,228,-532', -'229,-532,,,-532,-532,-532,-532,-532,-532,,,,-532,-532,,245,,,,,-532', -',,-532,,,,,-532,-532,63,64,65,8,51,,,,57,58,,,,61,,59,60,62,23,24,66', -'67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,7,41,6,9,94,93,,84,50,86,85,87', -',88,95,96,,81,82,,38,39,,227,231,236,237,238,233,235,243,244,239,240', -',,220,221,,,241,242,,36,,,30,,,52,,,54,,32,224,,230,40,226,225,222,223', -'234,232,228,18,229,,,,79,73,75,76,77,78,,,,74,80,,245,,,,404,56,,,53', -',,,,37,83,63,64,65,,51,,,,57,58,,,,61,,59,60,62,23,24,66,67,,,,,,22', -'28,27,90,89,91,92,,563,17,336,334,333,,335,,41,,,94,93,,84,50,86,85', -'87,,88,95,96,,81,82,,38,39,563,,336,334,333,,335,,,563,566,336,334,333', -',335,,,569,,,210,,,214,,,52,,,54,,,,,,40,,,566,,,,,18,,,569,566,79,73', -'75,76,77,78,,829,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60', -'62,23,24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,,41,,,94,93,,84,50', -'86,85,87,,88,95,96,,81,82,,38,39,,227,231,236,237,238,233,235,243,244', -'239,240,,,-555,-555,,,241,242,,210,,,214,,,52,,,54,,,224,,230,40,226', -'225,222,223,234,232,228,18,229,,,,79,73,75,76,77,78,,,,74,80,,,,63,64', -'65,56,51,,53,,57,58,,37,83,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90', -'89,91,92,,,17,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38', -'39,,227,231,236,237,238,233,235,243,244,239,240,,,-555,-555,,,241,242', -',210,,,214,,,52,,,54,,,224,,230,40,226,225,222,223,234,232,228,18,229', -',,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61', -',59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,,41,,,94,93', -',84,50,86,85,87,,88,95,96,,81,82,,38,39,,227,-555,-555,-555,-555,233', -'235,,,-555,-555,,,,,,,241,242,,210,,,214,,,52,,,54,,,224,,230,40,226', -'225,222,223,234,232,228,18,229,,,,79,73,75,76,77,78,,,,74,80,,,,,,,56', -',,53,,,,,37,83,63,64,65,8,51,,,,57,58,,,,61,,59,60,62,23,24,66,67,,', -',,,22,28,27,90,89,91,92,,,17,,,,,,7,41,,9,94,93,,84,50,86,85,87,,88', -'95,96,,81,82,,38,39,,227,,,,,,,,,,,,,,,,,241,242,,36,,,30,,,52,,,54', -',32,224,,230,40,226,225,222,223,,,228,18,229,,,,79,73,75,76,77,78,,', -',74,80,,,,,,,56,,,53,,,,,37,83,63,64,65,8,51,,,,57,58,,,,61,,59,60,62', -'23,24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,7,41,6,9,94,93,,84,50', -'86,85,87,,88,95,96,,81,82,,38,39,,227,,,,,,,,,,,,,,,,,241,242,,36,,', -'30,,,52,,,54,,32,224,,230,40,226,225,222,223,,,228,18,229,,,,79,73,75', -'76,77,78,,,,74,80,,,,,,,56,,,53,,,,,37,83,63,64,65,8,51,,,,57,58,,,', -'61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,7,41,,9', -'94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,227,,,,,,,,,,,,,,,,,241', -'242,,36,,,30,,,52,,,54,,32,224,,230,40,226,225,222,223,,,228,18,229', -',,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61', -',59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92,,,219,,,,,,,41,,,94', -'93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,227,,,,,,,,,,,,,,,,,241', -'242,,210,,,214,,,52,,,54,,421,224,,230,40,226,225,222,223,,,228,218', -'229,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83', -'61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92,,,219,,,,,,,41,,', -'94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,227,-555,-555,-555,-555', -'233,235,,,-555,-555,,,,,,,241,242,,210,,,214,,,52,,,54,,421,224,,230', -'40,226,225,222,223,234,232,228,218,229,,,,79,73,75,76,77,78,,,,74,80', -',,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,23,24,66,67,,,,,,22', -'28,27,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,', -'81,82,,38,39,,227,-555,-555,-555,-555,233,235,,,-555,-555,,,,,,,241', -'242,,210,,,214,,,52,,,54,,,224,,230,40,226,225,222,223,234,232,228,218', -'229,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83', -'61,,59,60,62,258,259,66,67,,,,,,257,28,27,90,89,91,92,,,219,,,,,,,41', -',,94,93,,84,50,86,85,87,261,88,95,96,,81,82,,38,39,,227,-555,-555,-555', -'-555,233,235,,,-555,-555,,,,,,,241,242,,210,,,214,,,52,,,54,,256,224', -',230,40,226,225,222,223,234,232,228,218,229,,,,79,73,75,76,77,78,,,', -'74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67', -',,,,,257,28,27,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,261', -'88,95,96,,81,82,,38,39,,227,-555,-555,-555,-555,233,235,,,-555,-555', -',,,,,,241,242,,210,,,214,,,52,,,54,,256,224,,230,40,226,225,222,223', -'234,232,228,218,229,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51', -',53,,57,58,,37,83,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92', -',,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,227', -'-555,-555,-555,-555,233,235,,,-555,-555,,,,,,,241,242,,210,,,214,,,52', -',,54,,,224,,230,40,226,225,222,223,234,232,228,218,229,,,,79,73,75,76', -'77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,23,24', -'66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,,41,,,94,93,,84,50,86,85,87', -',88,95,96,,81,82,,38,39,,227,231,236,237,238,233,235,,,239,240,,,,,', -',241,242,,210,,,214,,,52,,,54,,,224,,230,40,226,225,222,223,234,232', -'228,18,229,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58', -',37,83,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,', -',41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,227,231,236,237', -'238,233,235,243,,239,240,,,,,,,241,242,,210,,,214,,,52,,,54,,,224,,230', -'40,226,225,222,223,234,232,228,18,229,,,,79,73,75,76,77,78,,,,74,80', -',,,,,,56,,,53,,,,,37,83,63,64,65,8,51,,,,57,58,,,,61,,59,60,62,23,24', -'66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,7,41,,9,94,93,,84,50,86,85', -'87,,88,95,96,,81,82,,38,39,,227,,,,,,,,,,,,,,,,,241,242,,36,,,30,,,52', -',,54,,32,224,,,40,226,225,222,223,,,,18,,,,,79,73,75,76,77,78,,,,74', -'80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,23,24,66,67,,,,', -',22,28,27,90,89,91,92,,,17,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96', -',81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,458,52,,,54,,,,,,40,,', -',,,,,18,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58', -',37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219', -',,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,', -',,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77', -'78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259', -'66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86', -'85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,', -'54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56', -'51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90', -'89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38', -'39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79', -'73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60', -'62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93', -',84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214', -',,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64', -'65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295', -'90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82', -',38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,', -',,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61', -',59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41', -',,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,', -',210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74', -'80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,', -',,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88', -'95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40', -',,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57', -'58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,', -'219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,', -',,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76', -'77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258', -'259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50', -'86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52', -',,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56', -'51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90', -'89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38', -'39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79', -'73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60', -'62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93', -',84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214', -',,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64', -'65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295', -'90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82', -',38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,', -',,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61', -',59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41', -',,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,', -',210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74', -'80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,', -',,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88', -'95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40', -',,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57', -'58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,', -'219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,', -',,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76', -'77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258', -'259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50', -'86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52', -',,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56', -'51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90', -'89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38', -'39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79', -'73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60', -'62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93', -',84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214', -',,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64', -'65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295', -'90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82', -',38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,', -',,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61', -',59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41', -',,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,', -',210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74', -'80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,', -',,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88', -'95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40', -',,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57', -'58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,', -'219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,', -',,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76', -'77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258', -'259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50', -'86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52', -',,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56', -'51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90', -'89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38', -'39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79', -'73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60', -'62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93', -',84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214', -',,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64', -'65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295', -'90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82', -',38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,', -',,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61', -',59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41', -',,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,', -',210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74', -'80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,', -',,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88', -'95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40', -',,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57', -'58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,', -'219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,', -',,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76', -'77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258', -'259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50', -'86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52', -',,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56', -'51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,28,27,90,89', -'91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,261,88,95,96,,81,82,,38', -'39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,256,,254,,40,,,,,,,,218', -',,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61', -',59,60,62,258,259,66,67,,,,,,257,28,27,90,89,91,92,,,219,,,,,,,41,,', -'94,93,,84,50,86,85,87,261,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,', -',,210,,,214,,,506,,,54,,256,,254,,40,,,,,,,,218,,,,,79,73,75,76,77,78', -',,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66', -'67,,,,,,257,28,27,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87', -'261,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,510,52,,', -'54,,256,,254,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,,,,56', -',,53,,,,,37,83,63,64,65,8,51,,,,57,58,,,,61,,59,60,62,23,24,66,67,,', -',,,22,28,27,90,89,91,92,,,17,,,,,,7,41,,9,94,93,,84,50,86,85,87,,88', -'95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,36,,,281,,,52,,,54,,32,,,,40', -',,,,,,,18,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58', -',37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219', -',,,,,,292,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,764,,336,334,333', -'754,335,,,,,,,,,,751,,,,,,,,289,,,214,,,52,,,54,,,,,,338,,,,,,,,341', -'340,344,343,,79,73,75,76,77,78,,,,74,80,,,,518,,,56,,,53,,,,,296,83', -'63,64,65,8,51,,,752,57,58,,,,61,,59,60,62,23,24,66,67,,,,,,22,28,27', -'90,89,91,92,,,17,,,,,,7,41,,9,94,93,,84,50,86,85,87,,88,95,96,,81,82', -',38,39,,,,,,,,,,,,,,,,,,,,,,36,,,281,,,52,,,54,,32,,,,40,,,,,,,,18,', -',,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61', -',59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,292', -',,94,93,,84,50,86,85,87,,88,95,96,,81,82,327,,336,334,333,,335,,,,,', -',,,,,,,,,,,,289,,,286,,,52,,,54,,,,,,338,322,,,,,,,341,340,344,343,', -'79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,296,83,61,', -'59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,', -',94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,', -'210,,,214,537,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74', -'80,,,,,,,56,,,53,,,,,37,83,63,64,65,8,51,,,,57,58,,,,61,,59,60,62,23', -'24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,7,41,,9,94,93,,84,50,86', -'85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,,,54', -',32,,,,40,,,,,,,,18,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51', -',53,,57,58,,37,83,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92', -',,17,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,', -',,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,18,,,,,79,73,75,76', -'77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,23,24', -'66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,,41,,,94,93,,84,50,86,85,87', -',88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,', -',,40,,,,,,,,18,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53', -',57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92', -',,219,,,,,,,292,,,94,93,,84,50,86,85,361,,88,95,96,,81,82,327,,336,334', -'333,,335,,,,,,,,,,,,,,,,,,362,,,214,,,52,,,54,,,,,,338,,554,,,,,,341', -'340,344,343,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58', -',296,83,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,', -',,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,', -',,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,18,,,,,79,73,75,76,77,78,,', -',74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67', -',,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87', -',88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,', -',,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,-255,-255,-255,56', -'-255,,53,,-255,-255,,37,83,-255,,-255,-255,-255,-255,-255,-255,-255', -',,,,,-255,-255,-255,-255,-255,-255,-255,,,-255,,,,,,,-255,,,-255,-255', -',-255,-255,-255,-255,-255,-255,-255,-255,-255,,-255,-255,,-255,-255', -',,,,,,,,,,,,,,,,,,,,,-255,,,-255,268,,-255,,,-255,,-255,,-255,,-255', -',,,,,,,-255,,,,,-255,-255,-255,-255,-255,-255,,,,-255,-255,,,,-536,-536', -'-536,-255,-536,,-255,,-536,-536,,-255,-255,-536,,-536,-536,-536,-536', -'-536,-536,-536,,,,,,-536,-536,-536,-536,-536,-536,-536,,,-536,,,,,,', -'-536,,,-536,-536,,-536,-536,-536,-536,-536,-536,-536,-536,-536,,-536', -'-536,,-536,-536,,,,,,,,,,,,,,,,,,,,,,-536,,,-536,-536,,-536,,,-536,', -'-536,,-536,,-536,,,,,,,,-536,,,,,-536,-536,-536,-536,-536,-536,,,,-536', -'-536,,,,-537,-537,-537,-536,-537,,-536,,-537,-537,,-536,-536,-537,,-537', -'-537,-537,-537,-537,-537,-537,,,,,,-537,-537,-537,-537,-537,-537,-537', -',,-537,,,,,,,-537,,,-537,-537,,-537,-537,-537,-537,-537,-537,-537,-537', -'-537,,-537,-537,,-537,-537,,,,,,,,,,,,,,,,,,,,,,-537,,,-537,-537,,-537', -',,-537,,-537,,-537,,-537,,,,,,,,-537,,,,,-537,-537,-537,-537,-537,-537', -',,,-537,-537,,,,-255,-255,-255,-537,-255,,-537,,-255,-255,,-537,-537', -'-255,,-255,-255,-255,-255,-255,-255,-255,,,,,,-255,-255,-255,-255,-255', -'-255,-255,,,-255,,,,,,,-255,,,-255,-255,,-255,-255,-255,-255,-255,-255', -'-255,-255,-255,,-255,-255,,-255,-255,,,,,,,,,,,,,,,,,,,,,,-255,,,-255', -'268,,-255,,,-255,,-255,,-255,,-255,,,,,,,,-255,,,,,-255,-255,-255,-255', -'-255,-255,,,,-255,-255,,,,63,64,65,-255,51,,-255,,57,58,,-255,-255,61', -',59,60,62,258,259,66,67,,,,,,257,28,27,90,89,91,92,,,219,,,,,,,41,,', -'94,93,,84,50,86,85,87,261,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,', -',,210,,,214,,,52,,,54,,256,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,', -',74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67', -',,,,,257,28,27,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,261', -'88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,256', -',,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53', -',57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92', -',,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,', -',,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75', -'76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258', -'259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50', -'86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52', -',,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56', -'51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90', -'89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38', -'39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79', -'73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60', -'62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93', -',84,50,86,85,87,261,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210', -',,214,,,52,,,54,,658,,254,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74', -'80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,', -',,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,261', -'88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,254', -',40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53', -',57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92', -',,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,', -',,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75', -'76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,23', -'24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,,41,,,94,93,,84,50,86,85', -'87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,675,52,,', -'54,,,,254,,40,,,,,,,,18,,,,,79,73,75,76,77,78,,,,74,80,,,,,,,56,,,53', -',,,,37,83,63,64,65,8,51,,,,57,58,,,,61,,59,60,62,23,24,66,67,,,,,,22', -'28,27,90,89,91,92,,,17,,,,,,7,41,,9,94,93,,84,50,86,85,87,,88,95,96', -',81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,,,54,,32,,,,40,,,,,', -',,18,,,,,79,73,75,76,77,78,,,,74,80,,,,,,404,56,,,53,,,,,37,83,63,64', -'65,,51,,,,57,58,,,,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89', -'91,92,,,219,,,,,,,292,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,327,', -'336,334,333,,335,,,,,,,,,,,,,,,,,,289,,,286,,,52,,,54,,,,,,338,,,,,', -',,341,340,344,343,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53', -',57,58,,296,83,61,,59,60,62,258,259,66,67,,,,,,257,28,27,90,89,91,92', -',,219,,,,,,,41,,,94,93,,84,50,86,85,87,261,88,95,96,,81,82,,38,39,,', -',,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,256,,,,40,,,,,,,,218,,,,,79', -'73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60', -'62,258,259,66,67,,,,,,257,28,27,90,89,91,92,,,219,,,,,,,41,,,94,93,', -'84,50,86,85,87,261,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,', -',214,,,52,,,54,,256,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80', -',,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,', -'257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95', -'96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,', -',,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58', -',37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219', -',,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,', -',,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77', -'78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259', -'66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86', -'85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,', -'54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56', -'51,,53,,57,58,,37,83,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91', -'92,,,17,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,', -',,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,18,,,,,79,73,75', -'76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258', -'259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50', -'86,85,87,261,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,', -',52,,,54,,658,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63', -'64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291', -'295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,261,88,95,96', -',81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,', -',,218,,,,,79,73,75,76,77,78,,,,74,80,,,,,,,56,,,53,,,,,37,83,63,64,65', -'8,51,,,,57,58,,,,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92', -',,17,,,,,,7,41,,9,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,', -',,,,,,,,,,,,,,,,,36,,,30,,,52,,,54,,32,,,,40,,,,,,,,18,,,,,79,73,75', -'76,77,78,,,,74,80,,,,,,,56,,,53,,,,,37,83,63,64,65,8,51,,,,57,58,,,', -'61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,7,41,,9', -'94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,36', -',,30,,,52,,,54,,32,,,,40,,,,,,,,18,,,,,79,73,75,76,77,78,,,,74,80,,', -',63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257', -'291,295,90,89,91,92,,,219,,,,,,,292,,,94,93,,84,50,86,85,87,,88,95,96', -',81,82,764,,336,334,333,754,335,,,,,,,,,,751,,,,,,,,712,,,214,,,52,', -',54,,,,,,338,,,,,,,,341,340,344,343,,79,73,75,76,77,78,,,,74,80,,,,', -',,56,,,53,,,,,296,83,63,64,65,8,51,,,752,57,58,,,,61,,59,60,62,23,24', -'66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,7,41,,9,94,93,,84,50,86,85', -'87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,,,54,,32', -',,,40,,,,,,,,18,,,,,79,73,75,76,77,78,,,,74,80,,,,,,,56,,,53,,,,,37', -'83,63,64,65,8,51,,,,57,58,,,,61,,59,60,62,23,24,66,67,,,,,,22,28,27', -'90,89,91,92,,,17,,,,,,7,41,,9,94,93,,84,50,86,85,87,,88,95,96,,81,82', -',38,39,,,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,,,54,,32,,,,40,,,,,,,,18,,', -',,79,73,75,76,77,78,,,,74,80,,,,,,,56,,,53,,,,,37,83,63,64,65,8,51,', -',,57,58,,,,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92,,,17,', -',,,,7,41,,9,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,', -',,,,,,,,,,,36,,,30,,,52,,,54,,32,,,,40,,,,,,,,18,,,,,79,73,75,76,77', -'78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259', -'66,67,,,,,,257,28,27,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85', -'87,261,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,', -'54,,256,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65', -'56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,28,27,90', -'89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,261,88,95,96,,81,82', -',38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,256,,,,40,,,,,,,,218', -',,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61', -',59,60,62,258,259,66,67,,,,,,257,28,27,90,89,91,92,,,219,,,,,,,41,,', -'94,93,,84,50,86,85,87,261,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,', -',,210,,,214,,,52,,,54,,256,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,', -',74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,23,24,66,67', -',,,,,22,28,27,90,89,91,92,,,17,,,,,,,41,,,94,93,,84,50,86,85,87,,88', -'95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40', -',,,,,,,18,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58', -',37,83,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,', -',41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,', -',,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,18,,,,,79,73,75,76,77,78,,,', -'74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67', -',,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87', -',88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,', -',,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53', -',57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92', -',,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,', -',,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,775,,,,40,,,,,,,,218,,,,,79,73', -'75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62', -'23,24,66,67,,,,,,22,28,27,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50', -'86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52', -',,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56', -'51,,53,,57,58,,37,83,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91', -'92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,', -',,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73', -'75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62', -'23,24,66,67,,,,,,22,28,27,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50', -'86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52', -',,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56', -'51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90', -'89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38', -'39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79', -'73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60', -'62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93', -',84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214', -',,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,,,,56', -',,53,,,,,37,83,63,64,65,8,51,,,,57,58,,,,61,,59,60,62,23,24,66,67,,', -',,,22,28,27,90,89,91,92,,,17,,,,,,7,41,,9,94,93,,84,50,86,85,87,,88', -'95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,,,54,,32,,,,40', -',,,,,,,18,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58', -',37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219', -',,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,', -',,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77', -'78,,,,74,80,,,,,,,56,,,53,,,,,37,83,63,64,65,8,51,,,,57,58,,,,61,,59', -'60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,7,41,,9,94,93', -',84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,36,,,30', -',,52,,,54,,32,,,,40,,,,,,,,18,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64', -'65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295', -'90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,261,88,95,96,,81', -'82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,658,,254,,40,,,', -',,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58', -',37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219', -',,,,,,41,,,94,93,,84,50,86,85,87,261,88,95,96,,81,82,,38,39,,,,,,,,', -',,,,,,,,,,,,,210,,,214,,,52,,,54,,,,254,,40,,,,,,,,218,,,,,79,73,75', -'76,77,78,,,,74,80,,,,,,,56,,,53,,,,,37,83,63,64,65,8,51,,,,57,58,,,', -'61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,7,41,,9', -'94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,36', -',,30,,,52,,,54,,32,,,,40,,,,,,,,18,,,,,79,73,75,76,77,78,,,,74,80,,', -',,,,56,,,53,,,,,37,83,63,64,65,8,51,,,,57,58,,,,61,,59,60,62,23,24,66', -'67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,7,41,,9,94,93,,84,50,86,85,87', -',88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,,,54,,32,', -',,40,,,,,,,,18,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53', -',57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92', -',,219,,,,,,,292,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,,,,,,,,,,', -',,,,,,,,,,,,,289,,,286,,,52,,,54,,,,,,,,,,,,,,,,,,,79,73,75,76,77,78', -',,,74,80,,,,63,64,65,56,51,,53,,57,58,,296,83,61,,59,60,62,258,259,66', -'67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,292,,,94,93,,84,50,86,85', -'87,,88,95,96,,81,82,,,,,,,,,,,,,,,,,,,,,,,,,289,,,286,,,52,,,54,,,,', -',,,,,,,,,,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58', -',296,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219', -',,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,', -',,,,,,,,,,210,,,214,,,52,,,54,,421,,,,40,,,,,,,,218,,,,,79,73,75,76', -'77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258', -'259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50', -'86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52', -',,54,,256,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65', -'56,51,,53,,57,58,,37,83,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89', -'91,92,,,17,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39', -',,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,18,,,,,79,73', -'75,76,77,78,,,,74,80,,,,,,,56,,,53,,,,,37,83,63,64,65,8,51,,,,57,58', -',,,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,7,41', -',9,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,', -',,36,,,30,,,52,,,54,,32,,,,40,,,,,,,,18,,,,,79,73,75,76,77,78,,,,74', -'80,,,,,,,56,,,53,,,,,37,83,63,64,65,8,51,,,,57,58,,,,61,,59,60,62,23', -'24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,7,41,,9,94,93,,84,50,86', -'85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,,,54', -',32,,,,40,,,,,,,,18,,,,,79,73,75,76,77,78,,,,74,80,,,,,,,56,,,53,,,', -',37,83,63,64,65,8,51,,,,57,58,,,,61,,59,60,62,23,24,66,67,,,,,,22,28', -'27,90,89,91,92,,,17,,,,,,7,41,,9,94,93,,84,50,86,85,87,,88,95,96,,81', -'82,,38,39,,,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,,,54,,32,,,,40,,,,,,,,18', -',,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61', -',59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41', -',,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,', -',210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74', -'80,,,,,,,56,,,53,,,,,37,83,63,64,65,8,51,,,,57,58,,,,61,,59,60,62,23', -'24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,7,41,,9,94,93,,84,50,86', -'85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,,,54', -',32,,,,40,,,,,,,,18,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51', -',53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89', -'91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39', -',,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73', -'75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62', -'23,24,66,67,,,,,,22,28,27,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50', -'86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52', -',,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56', -'51,,53,,57,58,,37,83,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91', -'92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,', -',,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73', -'75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62', -'258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84', -'50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,', -',52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64', -'65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295', -'90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82', -',38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,', -',,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61', -',59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41', -',,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,', -',210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74', -'80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,', -',,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88', -'95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,256,,', -',40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,,,,56,,,53,,,,,37,83', -'63,64,65,8,51,,,,57,58,,,,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90', -'89,91,92,,,17,,,,,,7,41,,9,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38', -'39,,,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,,,54,,32,,,,40,,,,,,,,18,,,,,79', -'73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60', -'62,23,24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,,41,,,94,93,,84,50', -'86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52', -',,54,,,,,,40,,,,,,,,18,,,,,79,73,75,76,77,78,,,,74,80,,,,,,,56,,,53', -',,,,37,83,63,64,65,8,51,,,,57,58,,,,61,,59,60,62,23,24,66,67,,,,,,22', -'28,27,90,89,91,92,,,17,,,,,,7,41,,9,94,93,,84,50,86,85,87,,88,95,96', -',81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,,,54,,32,,,,40,,,,,', -',,18,,,,,79,73,75,76,77,78,,,,74,80,,,,,,,56,,,53,,,,,37,83,63,64,65', -'8,51,,,,57,58,,,,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92', -',,17,,,,,,7,41,,9,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,', -',,,,,,,,,,,,,,,,,36,,,30,,,52,,,54,,32,,,,40,,,,,,,,18,,,,,79,73,75', -'76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258', -'259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50', -'86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52', -',,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56', -'51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90', -'89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38', -'39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,,,40,,,,,,,,218,,,,,79', -'73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60', -'62,258,259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,41,,,94,93', -',84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214', -',,52,,,54,,,,,,40,,,,,,,,218,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64', -'65,56,51,,53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295', -'90,89,91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,261,88,95,96,,81', -'82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,,,254,,40,,,,,,', -',218,,,,,79,73,75,76,77,78,,,,74,80,,,,,,,56,,,53,,,,,37,83,63,64,65', -'8,51,,,,57,58,,,,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92', -',,17,,,,,,7,41,,9,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,', -',,,,,,,,,,,,,,,,,36,,,30,,,52,,,54,,32,,,,40,,,,,,,,18,,,,,79,73,75', -'76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62,258', -'259,66,67,,,,,,257,291,295,90,89,91,92,,,219,,,,,,,292,,,94,93,,84,50', -'86,85,87,,88,95,96,,81,82,,,,,,,,,,,,,,,,,,,,,,,,,926,,,214,,,52,,,54', -',,,,,,,,,,,,,,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,', -'57,58,,296,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89,91,92', -',,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,', -',,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,658,,,,40,,,,,,,,218,,,,,79,73', -'75,76,77,78,,,,74,80,,,,,,,56,,,53,,,,,37,83,63,64,65,8,51,,,,57,58', -',,,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,7,41', -',9,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,', -',,36,,,30,,,52,,,54,,32,,,,40,,,,,,,,18,,,,,79,73,75,76,77,78,,,,74', -'80,,,,,,,56,,,53,,,,,37,83,63,64,65,8,51,,,,57,58,,,,61,,59,60,62,23', -'24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,7,41,,9,94,93,,84,50,86', -'85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,,,54', -',32,,,,40,,,,,,,,18,,,,,79,73,75,76,77,78,,,,74,80,,,,63,64,65,56,51', -',53,,57,58,,37,83,61,,59,60,62,258,259,66,67,,,,,,257,291,295,90,89', -'91,92,,,219,,,,,,,41,,,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39', -',,,,,,,,,,,,,,,,,,,,,210,,,214,,,52,,,54,,658,,254,,40,,,,,,,,218,,', -',,79,73,75,76,77,78,,,,74,80,,,,,,,56,,,53,,,,,37,83,63,64,65,8,51,', -',,57,58,,,,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92,,,17,', -',,,,7,41,,9,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,', -',,,,,,,,,,,36,,,30,,,52,,,54,,32,,,,40,,,,,,,,18,,,,,79,73,75,76,77', -'78,,,,74,80,,,,,,,56,,,53,,,,,37,83,63,64,65,8,51,,,,57,58,,,,61,,59', -'60,62,23,24,66,67,,,,,,22,28,27,90,89,91,92,,,17,,,,,,7,41,,9,94,93', -',84,50,86,85,87,,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,36,,,30', -',,52,,,54,,32,,,,40,,,,,,,,18,,,,,79,73,75,76,77,78,,,,74,80,,,,,,,56', -',,53,,,,,37,83,63,64,65,8,51,,,,57,58,,,,61,,59,60,62,23,24,66,67,,', -',,,22,28,27,90,89,91,92,,,17,,,,,,7,41,,9,94,93,,84,50,86,85,87,,88', -'95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,,,54,,32,,,,40', -',,,,,,,18,,,,,79,73,75,76,77,78,,,,74,80,,,,,,,56,,,53,,,,,37,83,63', -'64,65,8,51,,,,57,58,,,,61,,59,60,62,23,24,66,67,,,,,,22,28,27,90,89', -'91,92,,,17,,,,,,7,41,,9,94,93,,84,50,86,85,87,,88,95,96,,81,82,,38,39', -',,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,,,54,,32,,,,40,,,,,,,,18,,,,,79,73', -'75,76,77,78,,,,74,80,,,,63,64,65,56,51,,53,,57,58,,37,83,61,,59,60,62', -'258,259,66,67,,,,,,257,28,27,90,89,91,92,,,219,,,,,,,41,,,94,93,,84', -'50,86,85,87,261,88,95,96,,81,82,,38,39,,,,,,,,,,,,,,,,,,,,,,210,,,214', -',,52,,,54,,256,,,,40,,,,,,,,218,,,,-538,79,73,75,76,77,78,-538,-538', -'-538,74,80,,-538,-538,,-538,,56,,,53,,,,-538,37,83,,,,,,,,,-538,-538', -',-538,-538,-538,-538,-538,,,,,,,,,,,,,,,,,,,,,,,,-538,-538,-538,-538', -'-538,-538,-538,-538,-538,-538,-538,-538,-538,-538,-538,-283,,-538,-538', -'-538,,636,-283,-283,-283,-538,,,-283,-283,,-283,-538,,-538,,-538,-538', -'-538,-538,-538,-538,-538,,-538,-538,-538,,,,,-283,-283,,-283,-283,-283', -'-283,-283,-538,-538,,-87,,-538,,,-538,,-538,,-96,,,,,,,,,,,-283,-283', -'-283,-283,-283,-283,-283,-283,-283,-283,-283,-283,-283,-283,-283,,,-283', -'-283,-283,,639,,,,-283,,,,,,,-283,,-283,,-283,-283,-283,-283,-283,-283', -'-283,,-283,,-283,,,,,,,,,,,,,-283,-283,,-89,,-283,-538,,-283,,-283,', -'-98,-538,-538,-538,,,-538,-538,-538,,-538,,,,,,,,,-538,-538,-538,,,', -',,,,,-538,-538,,-538,-538,-538,-538,-538,,,,,,,,,,,,,,,,,,,,,,,,-538', -'-538,-538,-538,-538,-538,-538,-538,-538,-538,-538,-538,-538,-538,-538', -',,-538,-538,-538,,790,-538,,,-538,,,-538,,-538,,-538,,-538,,-538,-538', -'-538,-538,-538,-538,-538,,-538,-538,-538,,,,,,,,,,,,,-538,-538,-538', -'-538,,-538,-283,,-538,,-538,,-96,-283,-283,-283,,,-283,-283,-283,,-283', -',,,,,,,,,-283,-283,,,,,,,,,-283,-283,,-283,-283,-283,-283,-283,,,,,', -',,,,,,,,,,,,,,,,,,-283,-283,-283,-283,-283,-283,-283,-283,-283,-283', -'-283,-283,-283,-283,-283,,,-283,-283,-283,,639,-283,,,-283,,,-283,,-283', -',-283,,-283,,-283,-283,-283,-283,-283,-283,-283,,-283,,-283,,,,,,,,', -',,,,-283,-283,-283,-283,,-283,-292,,-283,,-283,,-98,-292,-292,-292,', -',-292,-292,-292,,-292,,,,,,,,,,-292,-292,,,,,,,,,-292,-292,,-292,-292', -'-292,-292,-292,,,,,,,,,,,,,,,,,,,,,,,,-292,-292,-292,-292,-292,-292', -'-292,-292,-292,-292,-292,-292,-292,-292,-292,,,-292,-292,-292,,,-292', -',277,-292,,,-292,,-292,,-292,,-292,,-292,-292,-292,-292,-292,-292,-292', -',-292,,-292,,,,,,,,,,,,,-292,-292,-292,-292,-278,-292,,,-292,,-292,-278', -'-278,-278,,,-278,-278,-278,,-278,,,,,,,,,,-278,-278,-278,,,,,,,,-278', -'-278,,-278,-278,-278,-278,-278,,,,,,,,,,,,,,,,,,,,,,,,-278,-278,-278', -'-278,-278,-278,-278,-278,-278,-278,-278,-278,-278,-278,-278,,,-278,-278', -'-278,,,-278,,,-278,,,-278,,-278,,-278,,-278,,-278,-278,-278,-278,-278', -'-278,-278,,-278,,-278,,,,,,,,,,,,,-278,-278,-278,-278,-554,-278,,-278', -'-278,,-278,-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,,,,,268', -'-554,-554,-554,,-554,-554,-554,-554,-554,,,,,764,,336,334,333,754,335', -',-554,,,,,,,,751,,,,-554,-554,,-554,,,-554,-554,-554,-554,-554,-554', -'-554,-554,-554,,-554,,-554,338,749,,,268,-554,,-554,341,340,344,343', -',,,,,-554,-554,,-554,-554,-554,-554,-554,,-554,,,,,,436,440,,,438,,', -'-554,,-554,,,-554,142,143,752,139,121,122,123,130,127,129,,,124,125', -'-554,-554,,,144,145,131,132,-554,,,,,268,-554,,,,,,136,135,,120,141', -'138,137,133,134,128,126,118,140,119,,-554,146,,,,,,,,,,,,-554,,-554', -',,-554,156,167,157,180,153,173,163,162,188,191,178,161,160,155,181,189', -'190,165,154,168,172,174,166,159,,,,175,182,177,176,169,179,164,152,171', -'170,183,184,185,186,187,151,158,149,150,147,148,,111,113,110,,112,,', -',,,,,,142,143,,139,121,122,123,130,127,129,,,124,125,,,,,144,145,131', -'132,,,,,,,,,,,,,136,135,,120,141,138,137,133,134,128,126,118,140,119', -',,146,192,,,,,,,,,,80,156,167,157,180,153,173,163,162,188,191,178,161', -'160,155,181,189,190,165,154,168,172,174,166,159,,,,175,182,177,176,169', -'179,164,152,171,170,183,184,185,186,187,151,158,149,150,147,148,,111', -'113,,,112,,,,,,,,,142,143,,139,121,122,123,130,127,129,,,124,125,,,', -',144,145,131,132,,,,,,,,,,,,,136,135,,120,141,138,137,133,134,128,126', -'118,140,119,,,146,192,,,,,,,,,,80,156,167,157,180,153,173,163,162,188', -'191,178,161,160,155,181,189,190,165,154,168,172,174,166,159,,,,175,182', -'177,176,169,179,164,152,171,170,183,184,185,186,187,151,158,149,150', -'147,148,,111,113,,,112,,,,,,,,,142,143,,139,121,122,123,130,127,129', -',,124,125,,,,,144,145,131,132,,,,,,,,,,,,,136,135,,120,141,138,137,133', -'134,128,126,118,140,119,,,146,192,,,,,,,,,,80,156,167,157,180,153,173', -'163,162,188,191,178,161,160,155,181,189,190,165,154,168,172,174,166', -'159,,,,175,182,177,176,169,179,164,152,171,170,183,184,185,186,187,151', -'158,149,150,147,148,,111,113,,,112,,,,,,,,,142,143,,139,121,122,123', -'130,127,129,,,124,125,,,,,144,145,131,132,,,,,,,,,,,,,136,135,,120,141', -'138,137,133,134,128,126,118,140,119,,,146,192,,,,,,,,,,80,156,167,157', -'180,153,173,163,162,188,191,178,161,160,155,181,189,190,165,154,168', -'172,174,166,159,,,,175,182,177,376,375,377,374,152,171,170,183,184,185', -'186,187,151,158,149,150,372,373,,370,113,86,85,371,,88,,,,,,,142,143', -',139,121,122,123,130,127,129,,,124,125,,,,,144,145,131,132,,,,,,381', -',,,,,,136,135,,120,141,138,137,133,134,128,126,118,140,119,,,146,156', -'167,157,180,153,173,163,162,188,191,178,161,160,155,181,189,190,165', -'154,168,172,174,166,159,,,,175,182,177,176,169,179,164,152,171,170,183', -'184,185,186,187,151,158,149,150,147,148,,111,113,398,397,112,,399,,', -',,,,142,143,,139,121,122,123,130,127,129,,,124,125,,,,,144,145,131,132', -',,,,,,,,,,,,136,135,,120,141,138,137,133,134,128,126,118,140,119,,,146', -'156,167,157,180,153,173,163,162,188,191,178,161,160,155,181,189,190', -'165,154,168,172,174,166,159,,,,175,182,177,176,169,179,164,152,171,170', -'183,184,185,186,187,151,158,149,150,147,148,,111,113,398,397,112,,399', -',,,,,,142,143,,139,121,122,123,130,127,129,,,124,125,,,,,144,145,131', -'132,,,,,,,,,,,,,136,135,,120,141,138,137,133,134,128,126,118,140,119', -',,146,156,167,157,180,153,173,163,162,188,191,178,161,160,155,181,189', -'190,165,154,168,172,174,166,159,,,,175,182,177,176,169,179,164,152,171', -'170,183,184,185,186,187,151,158,149,150,147,148,,111,113,,,112,,,,,', -',,,142,143,,139,121,122,123,130,127,129,,,124,125,,,,,144,145,131,132', -',,,,,,,,,,,,136,135,,120,141,138,137,133,134,128,126,118,140,119,430', -'434,146,,431,,,,,,,,,142,143,,139,121,122,123,130,127,129,,,124,125', -',,,,144,145,131,132,,,,,,268,,,,,,,136,135,,120,141,138,137,133,134', -'128,126,118,140,119,443,434,146,,444,,,,,,,,,142,143,,139,121,122,123', -'130,127,129,,,124,125,,,,,144,145,131,132,,,,,,,,,,,,,136,135,,120,141', -'138,137,133,134,128,126,118,140,119,443,434,146,,444,,,,,,,,,142,143', -',139,121,122,123,130,127,129,,,124,125,,,,,144,145,131,132,,,,,,,,,', -',,,136,135,,120,141,138,137,133,134,128,126,118,140,119,443,434,146', -',444,,,,,,,,,142,143,,139,121,122,123,130,127,129,,,124,125,,,,,144', -'145,131,132,,,,,,,,,,,,,136,135,,120,141,138,137,133,134,128,126,118', -'140,119,443,434,146,,444,,,,,,,,,142,143,,139,121,122,123,130,127,129', -',,124,125,,,,,144,145,131,132,,,,,,,,,,,,,136,135,,120,141,138,137,133', -'134,128,126,118,140,119,642,434,146,,643,,,,,,,,,142,143,,139,121,122', -'123,130,127,129,,,124,125,,,,,144,145,131,132,,,,,,268,,,,,,,136,135', -',120,141,138,137,133,134,128,126,118,140,119,644,440,146,,645,,,,,,', -',,142,143,,139,121,122,123,130,127,129,,,124,125,,,,,144,145,131,132', -',,,,,,,,,,,,136,135,,120,141,138,137,133,134,128,126,118,140,119,686', -'434,146,,687,,,,,,,,,142,143,,139,121,122,123,130,127,129,,,124,125', -',,,,144,145,131,132,,,,,,268,,,,,,,136,135,,120,141,138,137,133,134', -'128,126,118,140,119,689,440,146,,690,,,,,,,,,142,143,,139,121,122,123', -'130,127,129,,,124,125,,,,,144,145,131,132,,,,,,,,,,,,,136,135,,120,141', -'138,137,133,134,128,126,118,140,119,443,434,146,,444,,,,,,,,,142,143', -',139,121,122,123,130,127,129,,,124,125,,,,,144,145,131,132,,,,,,,,,', -',,,136,135,,120,141,138,137,133,134,128,126,118,140,119,642,434,146', -',643,,,,,,,,,142,143,,139,121,122,123,130,127,129,,,124,125,,,,,144', -'145,131,132,,,,,,268,,,,,,,136,135,,120,141,138,137,133,134,128,126', -'118,140,119,644,440,146,,645,,,,,,,,,142,143,,139,121,122,123,130,127', -'129,,,124,125,,,,,144,145,131,132,,,,,,,,,,,,,136,135,,120,141,138,137', -'133,134,128,126,118,140,119,733,434,146,,734,,,,,,,,,142,143,,139,121', -'122,123,130,127,129,,,124,125,,,,,144,145,131,132,,,,,,268,,,,,,,136', -'135,,120,141,138,137,133,134,128,126,118,140,119,735,440,146,,736,,', -',,,,,,142,143,,139,121,122,123,130,127,129,,,124,125,,,,,144,145,131', -'132,,,,,,,,,,,,,136,135,,120,141,138,137,133,134,128,126,118,140,119', -'741,440,146,,739,,,,,,,,,142,143,,139,121,122,123,130,127,129,,,124', -'125,,,,,144,145,131,132,,,,,,,,,,,,,136,135,,120,141,138,137,133,134', -'128,126,118,140,119,443,434,146,,444,,,,,,,,,142,143,,139,121,122,123', -'130,127,129,,,124,125,,,,,144,145,131,132,,,,,,268,,,,,,,136,135,,120', -'141,138,137,133,134,128,126,118,140,119,741,440,146,,892,,,,,,,,,142', -'143,,139,121,122,123,130,127,129,,,124,125,,,,,144,145,131,132,,,,,', -',,,,,,,136,135,,120,141,138,137,133,134,128,126,118,140,119,959,434', -'146,,960,,,,,,,,,142,143,,139,121,122,123,130,127,129,,,124,125,,,,', -'144,145,131,132,,,,,,268,,,,,,,136,135,,120,141,138,137,133,134,128', -'126,118,140,119,961,440,146,,962,,,,,,,,,142,143,,139,121,122,123,130', -'127,129,,,124,125,,,,,144,145,131,132,,,,,,,,,,,,,136,135,,120,141,138', -'137,133,134,128,126,118,140,119,,,146' ] - racc_action_table = arr = ::Array.new(25031, 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 = [ -'0,0,0,0,0,347,321,354,0,0,392,746,746,0,71,0,0,0,0,0,0,0,71,313,852', -'615,313,0,0,0,0,0,0,0,1,852,0,387,26,209,387,485,0,0,0,0,0,0,348,0,0', -'0,0,0,55,0,0,0,497,0,0,357,0,0,587,681,366,370,852,852,733,310,310,392', -'370,485,734,352,838,352,839,604,604,735,889,0,615,615,0,209,896,0,497', -'6,0,615,0,287,387,387,0,746,681,924,26,852,746,9,0,927,948,321,354,0', -'0,0,0,0,0,347,959,347,0,0,347,26,736,17,17,17,0,17,960,0,507,17,17,10', -'0,0,17,55,17,17,17,17,17,17,17,211,735,457,457,11,17,17,17,17,17,17', -'17,310,348,17,348,287,357,348,507,587,17,604,366,17,17,733,17,17,17', -'17,17,734,17,17,17,839,17,17,735,17,17,366,838,736,838,838,366,838,889', -'211,889,371,287,889,896,12,896,457,371,896,961,287,17,20,962,17,17,924', -'17,924,290,17,924,927,948,927,948,17,927,948,967,736,293,383,959,17', -'959,34,577,959,17,17,17,17,17,17,960,525,960,17,17,960,686,578,18,18', -'18,17,18,687,17,314,18,18,314,17,17,18,453,18,18,18,18,18,18,18,698', -'698,508,15,15,18,18,18,18,18,18,18,290,961,18,629,36,962,383,383,383', -'18,293,461,18,18,41,18,18,18,18,18,77,18,18,18,508,18,18,525,18,18,453', -'293,686,841,37,37,961,290,961,687,962,961,962,461,698,962,290,461,461', -'689,577,18,577,629,18,577,967,18,967,807,18,967,78,690,525,578,18,578', -'642,686,578,97,3,525,18,193,687,3,686,18,18,18,18,18,18,687,210,278', -'18,18,212,14,278,22,22,22,18,22,385,18,317,22,22,317,18,18,22,643,22', -'22,22,22,22,22,22,791,689,689,642,792,22,22,22,22,22,22,22,807,213,22', -'690,690,14,841,389,841,22,394,841,22,22,14,22,22,22,22,22,22,22,22,22', -'372,22,22,689,22,22,643,372,385,385,385,351,689,807,791,219,351,690', -'792,251,25,25,807,860,373,374,690,22,25,252,22,373,374,22,860,934,22', -'934,22,255,22,267,22,280,389,389,389,394,394,394,22,83,83,13,13,22,22', -'22,22,22,22,13,282,703,22,22,703,860,860,23,23,23,22,23,597,22,375,23', -'23,597,22,22,23,375,23,23,23,23,23,23,23,283,361,296,296,284,23,23,23', -'23,23,23,23,744,860,23,42,42,744,13,648,13,23,289,42,23,23,291,23,23', -'23,23,23,23,23,23,23,292,23,23,295,23,23,301,648,648,648,648,648,648', -'648,648,648,648,648,361,361,648,648,376,750,648,648,361,23,750,376,23', -'361,302,23,305,42,23,42,23,648,23,648,23,648,648,648,648,648,648,648', -'23,648,361,208,208,23,23,23,23,23,23,208,312,35,23,23,315,648,316,24', -'24,24,23,24,361,23,361,24,24,318,23,23,24,326,24,24,24,24,24,24,24,5', -'5,5,5,5,24,24,24,24,24,24,24,377,35,24,288,288,300,208,377,208,24,35', -'288,24,24,327,24,24,24,24,24,24,24,24,24,329,24,24,330,24,24,342,484', -'484,484,484,484,484,484,484,484,484,484,303,303,484,484,300,110,484', -'484,303,24,110,110,24,300,345,24,353,288,24,288,24,484,24,484,24,484', -'484,484,484,484,484,484,24,484,356,355,355,24,24,24,24,24,24,355,358', -'430,24,24,362,484,484,27,27,27,24,27,303,24,303,27,27,388,24,24,27,391', -'27,27,27,27,27,27,27,279,279,279,279,279,27,27,27,27,27,27,27,410,430', -'27,364,364,416,355,419,355,27,430,364,27,27,422,27,27,27,27,27,27,27', -'27,27,424,27,27,428,27,27,429,419,419,419,419,419,419,419,419,419,419', -'419,589,589,419,419,346,346,419,419,589,27,437,431,27,27,463,27,464', -'364,27,364,27,419,27,419,27,419,419,419,419,419,419,419,27,419,561,561', -'379,27,27,27,27,27,27,379,720,720,27,27,628,419,465,419,431,466,27,858', -'589,27,589,499,858,431,27,27,30,30,30,30,30,855,855,858,30,30,949,949', -'502,30,503,30,30,30,30,30,30,30,509,513,514,628,517,30,30,30,30,30,30', -'30,628,519,30,526,858,858,858,858,30,30,462,30,30,30,529,30,30,30,30', -'30,538,30,30,30,539,30,30,540,30,30,553,19,19,19,19,19,19,19,19,19,19', -'19,462,858,19,19,462,462,19,19,564,30,568,573,30,579,580,30,619,626', -'30,632,30,19,637,19,30,19,19,19,19,19,19,19,30,19,640,711,711,30,30', -'30,30,30,30,711,646,647,30,30,655,19,657,31,31,31,30,31,669,30,673,31', -'31,676,30,30,31,683,31,31,31,31,31,31,31,555,685,688,691,692,31,31,31', -'31,31,31,31,693,696,31,840,840,697,711,699,711,31,704,840,31,31,705', -'31,31,31,31,31,708,31,31,31,710,31,31,712,652,713,652,652,652,714,652', -'555,555,555,555,717,768,768,739,739,768,768,768,722,728,730,739,31,732', -'737,31,739,741,31,742,840,31,840,31,753,757,758,760,652,761,939,762', -'764,767,774,939,652,652,652,652,31,31,31,31,31,31,939,652,795,31,31', -'796,799,801,32,32,32,31,32,739,31,739,32,32,804,31,31,32,805,32,32,32', -'32,32,32,32,824,939,939,939,939,32,32,32,32,32,32,32,925,925,32,680', -'680,680,680,680,925,32,480,806,32,32,811,32,32,32,32,32,814,32,32,32', -'815,32,32,600,939,600,600,600,600,600,830,824,824,824,824,833,843,846', -'480,600,847,848,480,480,480,480,870,32,871,882,32,892,925,32,925,569', -'32,569,569,569,893,569,600,600,898,899,907,909,912,913,600,600,600,600', -'914,32,32,32,32,32,32,915,926,936,32,32,944,953,955,32,956,958,32,,', -'32,,,,,32,32,38,38,38,481,38,,,600,38,38,,,,38,,38,38,38,38,38,38,38', -',,,,,38,38,38,38,38,38,38,,481,38,,,481,481,481,481,38,,,38,38,,38,38', -'38,38,38,,38,38,38,,38,38,,38,38,,249,249,249,249,249,249,249,249,249', -'249,249,,,249,249,,,249,249,,38,,,38,,,38,,,38,,,249,,249,38,249,249', -'249,249,249,249,249,38,249,,,,38,38,38,38,38,38,,,,38,38,,249,,39,39', -'39,38,39,,38,,39,39,,38,38,39,,39,39,39,39,39,39,39,,,,,,39,39,39,39', -'39,39,39,,829,39,829,829,829,,829,,39,,,39,39,,39,39,39,39,39,,39,39', -'39,,39,39,,39,39,,427,427,427,427,427,427,427,427,427,427,427,,,427', -'427,,,427,427,,39,,,39,,,39,,,39,,,427,,427,39,427,427,427,427,427,427', -'427,39,427,,,,39,39,39,39,39,39,,,,39,39,,427,,40,40,40,39,40,,39,,40', -'40,,39,39,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,,446,446,446', -'446,446,446,446,446,446,446,446,,,446,446,,,446,446,,40,,,40,,,40,,', -'40,,,446,,446,40,446,446,446,446,446,446,446,40,446,,,,40,40,40,40,40', -'40,,,,40,40,,446,,52,52,52,40,52,,40,,52,52,,40,40,52,,52,52,52,52,52', -'52,52,,,,,,52,52,52,52,52,52,52,,,52,,,,,,,52,,,52,52,,52,52,52,52,52', -',52,52,52,,52,52,,52,52,,536,536,536,536,536,536,536,536,536,536,536', -',,536,536,,,536,536,,52,,,52,,,52,,,52,,,536,,536,52,536,536,536,536', -'536,536,536,52,536,,,,52,52,52,52,52,52,,,,52,52,,536,,53,53,53,52,53', -',52,,53,53,,52,52,53,,53,53,53,53,53,53,53,,,,,,53,53,53,53,53,53,53', -',,53,,,,,,,53,,,53,53,,53,53,53,53,53,53,53,53,53,,53,53,,53,53,,695', -'695,695,695,695,695,695,695,695,695,695,,,695,695,,,695,695,,53,,,53', -',,53,,,53,,53,695,,695,53,695,695,695,695,695,695,695,53,695,,,,53,53', -'53,53,53,53,,,,53,53,,695,,54,54,54,53,54,,53,,54,54,,53,53,54,,54,54', -'54,54,54,54,54,,,,,,54,54,54,54,54,54,54,,,54,,,,,,,54,,,54,54,,54,54', -'54,54,54,54,54,54,54,,54,54,,54,54,,773,773,773,773,773,773,773,773', -'773,773,773,,,773,773,,,773,773,,54,,,54,,,54,,,54,,,773,,773,54,773', -'773,773,773,773,773,773,54,773,,,,54,54,54,54,54,54,,,,54,54,,773,,57', -'57,57,54,57,,54,,57,57,,54,54,57,,57,57,57,57,57,57,57,,,,,,57,57,57', -'57,57,57,57,,,57,,,,,,,57,,,57,57,,57,57,57,57,57,,57,57,57,,57,57,', -'57,57,,779,779,779,779,779,779,779,779,779,779,779,,,779,779,,,779,779', -',57,,,57,,,57,,,57,,,779,,779,57,779,779,779,779,779,779,779,57,779', -',,,57,57,57,57,57,57,,,,57,57,,779,,58,58,58,57,58,,57,,58,58,,57,57', -'58,,58,58,58,58,58,58,58,,,,,,58,58,58,58,58,58,58,,,58,,,,,,,58,,,58', -'58,,58,58,58,58,58,,58,58,58,,58,58,,58,58,,781,781,781,781,781,781', -'781,781,781,781,781,,,781,781,,,781,781,,58,,,58,,,58,,,58,,,781,,781', -'58,781,781,781,781,781,781,781,58,781,,,,58,58,58,58,58,58,,,,58,58', -',781,,61,61,61,58,61,,58,,61,61,,58,58,61,,61,61,61,61,61,61,61,,,,', -',61,61,61,61,61,61,61,,,61,,,,,,,61,,,61,61,,61,61,61,61,61,,61,61,61', -',61,61,,61,61,,672,672,672,672,672,672,672,672,672,672,672,,,672,672', -',,672,672,,61,,,61,,,61,,,61,,,672,,672,61,672,672,672,672,672,672,672', -'61,672,,,,61,61,61,61,61,61,,,,61,61,61,672,,672,,61,61,,,61,,,,,61', -'61,62,62,62,,62,,,,62,62,,,,62,,62,62,62,62,62,62,62,,,,,,62,62,62,62', -'62,62,62,,,62,,,,,,,62,,,62,62,,62,62,62,62,62,,62,62,62,,62,62,784', -'784,784,784,784,784,784,784,784,784,784,467,,784,784,,,784,784,,,,,', -'62,,,62,467,467,62,,784,62,784,62,784,784,784,784,784,784,784,467,784', -'467,,467,467,467,467,,62,62,62,62,62,62,,,784,62,62,,,,63,63,63,62,63', -',62,,63,63,,62,62,63,,63,63,63,63,63,63,63,,,,,,63,63,63,63,63,63,63', -',,63,,,,,,,63,,,63,63,,63,63,63,63,63,,63,63,63,,63,63,786,786,786,786', -'786,786,786,786,786,786,786,468,,786,786,,,786,786,,,63,,,63,,,63,468', -'468,63,,786,63,786,,786,786,786,786,786,786,786,468,786,468,,468,468', -'468,468,,63,63,63,63,63,63,,,786,63,63,,,,84,84,84,63,84,,63,,84,84', -',63,63,84,,84,84,84,84,84,84,84,,84,,,,84,84,84,84,84,84,84,,,84,,,', -',,,84,,,84,84,,84,84,84,84,84,84,84,84,84,,84,84,,84,84,,793,793,793', -'793,793,793,793,793,793,793,793,,,793,793,,,793,793,,84,,,84,84,,84', -',,84,,84,793,84,793,84,793,793,793,793,793,793,793,84,793,84,,,84,84', -'84,84,84,84,,,,84,84,,793,,87,87,87,84,87,,84,,87,87,,84,84,87,,87,87', -'87,87,87,87,87,,87,,,,87,87,87,87,87,87,87,,,87,,,,,,,87,,,87,87,,87', -'87,87,87,87,87,87,87,87,,87,87,,87,87,,873,873,873,873,873,873,873,873', -'873,873,873,,,873,873,,,873,873,,87,,,87,87,,87,,,87,,87,873,87,873', -'87,873,873,873,873,873,873,873,87,873,87,,,87,87,87,87,87,87,,,,87,87', -',873,,,,,87,,,87,,,,,87,87,99,99,99,99,99,,,,99,99,,,,99,,99,99,99,99', -'99,99,99,,,,,,99,99,99,99,99,99,99,,,99,,,,,,99,99,99,99,99,99,,99,99', -'99,99,99,,99,99,99,,99,99,,99,99,,875,875,875,875,875,875,875,875,875', -'875,875,,,875,875,,,875,875,,99,,,99,,,99,,,99,,99,875,,875,99,875,875', -'875,875,875,875,875,99,875,,,,99,99,99,99,99,99,,,,99,99,,875,,,,99', -'99,,,99,,,,,99,99,103,103,103,,103,,,,103,103,,,,103,,103,103,103,103', -'103,103,103,,,,,,103,103,103,103,103,103,103,,338,103,338,338,338,,338', -',103,,,103,103,,103,103,103,103,103,,103,103,103,,103,103,,103,103,566', -',566,566,566,,566,,,718,338,718,718,718,,718,,,338,,,103,,,103,,,103', -',,103,,,,,,103,,,566,,,,,103,,,566,718,103,103,103,103,103,103,,718', -',103,103,,,,104,104,104,103,104,,103,,104,104,,103,103,104,,104,104', -'104,104,104,104,104,,,,,,104,104,104,104,104,104,104,,,104,,,,,,,104', -',,104,104,,104,104,104,104,104,,104,104,104,,104,104,,104,104,,459,459', -'459,459,459,459,459,459,459,459,459,,,459,459,,,459,459,,104,,,104,', -',104,,,104,,,459,,459,104,459,459,459,459,459,459,459,104,459,,,,104', -'104,104,104,104,104,,,,104,104,,,,105,105,105,104,105,,104,,105,105', -',104,104,105,,105,105,105,105,105,105,105,,,,,,105,105,105,105,105,105', -'105,,,105,,,,,,,105,,,105,105,,105,105,105,105,105,,105,105,105,,105', -'105,,105,105,,460,460,460,460,460,460,460,460,460,460,460,,,460,460', -',,460,460,,105,,,105,,,105,,,105,,,460,,460,105,460,460,460,460,460', -'460,460,105,460,,,,105,105,105,105,105,105,,,,105,105,,,,106,106,106', -'105,106,,105,,106,106,,105,105,106,,106,106,106,106,106,106,106,,,,', -',106,106,106,106,106,106,106,,,106,,,,,,,106,,,106,106,,106,106,106', -'106,106,,106,106,106,,106,106,,106,106,,470,470,470,470,470,470,470', -',,470,470,,,,,,,470,470,,106,,,106,,,106,,,106,,,470,,470,106,470,470', -'470,470,470,470,470,106,470,,,,106,106,106,106,106,106,,,,106,106,,', -',,,,106,,,106,,,,,106,106,107,107,107,107,107,,,,107,107,,,,107,,107', -'107,107,107,107,107,107,,,,,,107,107,107,107,107,107,107,,,107,,,,,', -'107,107,,107,107,107,,107,107,107,107,107,,107,107,107,,107,107,,107', -'107,,471,,,,,,,,,,,,,,,,,471,471,,107,,,107,,,107,,,107,,107,471,,471', -'107,471,471,471,471,,,471,107,471,,,,107,107,107,107,107,107,,,,107', -'107,,,,,,,107,,,107,,,,,107,107,108,108,108,108,108,,,,108,108,,,,108', -',108,108,108,108,108,108,108,,,,,,108,108,108,108,108,108,108,,,108', -',,,,,108,108,108,108,108,108,,108,108,108,108,108,,108,108,108,,108', -'108,,108,108,,472,,,,,,,,,,,,,,,,,472,472,,108,,,108,,,108,,,108,,108', -'472,,472,108,472,472,472,472,,,472,108,472,,,,108,108,108,108,108,108', -',,,108,108,,,,,,,108,,,108,,,,,108,108,195,195,195,195,195,,,,195,195', -',,,195,,195,195,195,195,195,195,195,,,,,,195,195,195,195,195,195,195', -',,195,,,,,,195,195,,195,195,195,,195,195,195,195,195,,195,195,195,,195', -'195,,195,195,,473,,,,,,,,,,,,,,,,,473,473,,195,,,195,,,195,,,195,,195', -'473,,473,195,473,473,473,473,,,473,195,473,,,,195,195,195,195,195,195', -',,,195,195,,,,196,196,196,195,196,,195,,196,196,,195,195,196,,196,196', -'196,196,196,196,196,,,,,,196,196,196,196,196,196,196,,,196,,,,,,,196', -',,196,196,,196,196,196,196,196,,196,196,196,,196,196,,196,196,,474,', -',,,,,,,,,,,,,,,474,474,,196,,,196,,,196,,,196,,196,474,,474,196,474', -'474,474,474,,,474,196,474,,,,196,196,196,196,196,196,,,,196,196,,,,197', -'197,197,196,197,,196,,197,197,,196,196,197,,197,197,197,197,197,197', -'197,,,,,,197,197,197,197,197,197,197,,,197,,,,,,,197,,,197,197,,197', -'197,197,197,197,,197,197,197,,197,197,,197,197,,475,475,475,475,475', -'475,475,,,475,475,,,,,,,475,475,,197,,,197,,,197,,,197,,197,475,,475', -'197,475,475,475,475,475,475,475,197,475,,,,197,197,197,197,197,197,', -',,197,197,,,,198,198,198,197,198,,197,,198,198,,197,197,198,,198,198', -'198,198,198,198,198,,,,,,198,198,198,198,198,198,198,,,198,,,,,,,198', -',,198,198,,198,198,198,198,198,,198,198,198,,198,198,,198,198,,476,476', -'476,476,476,476,476,,,476,476,,,,,,,476,476,,198,,,198,,,198,,,198,', -',476,,476,198,476,476,476,476,476,476,476,198,476,,,,198,198,198,198', -'198,198,,,,198,198,,,,199,199,199,198,199,,198,,199,199,,198,198,199', -',199,199,199,199,199,199,199,,,,,,199,199,199,199,199,199,199,,,199', -',,,,,,199,,,199,199,,199,199,199,199,199,199,199,199,199,,199,199,,199', -'199,,477,477,477,477,477,477,477,,,477,477,,,,,,,477,477,,199,,,199', -',,199,,,199,,199,477,,477,199,477,477,477,477,477,477,477,199,477,,', -',199,199,199,199,199,199,,,,199,199,,,,200,200,200,199,200,,199,,200', -'200,,199,199,200,,200,200,200,200,200,200,200,,,,,,200,200,200,200,200', -'200,200,,,200,,,,,,,200,,,200,200,,200,200,200,200,200,200,200,200,200', -',200,200,,200,200,,478,478,478,478,478,478,478,,,478,478,,,,,,,478,478', -',200,,,200,,,200,,,200,,200,478,,478,200,478,478,478,478,478,478,478', -'200,478,,,,200,200,200,200,200,200,,,,200,200,,,,204,204,204,200,204', -',200,,204,204,,200,200,204,,204,204,204,204,204,204,204,,,,,,204,204', -'204,204,204,204,204,,,204,,,,,,,204,,,204,204,,204,204,204,204,204,', -'204,204,204,,204,204,,204,204,,479,479,479,479,479,479,479,,,479,479', -',,,,,,479,479,,204,,,204,,,204,,,204,,,479,,479,204,479,479,479,479', -'479,479,479,204,479,,,,204,204,204,204,204,204,,,,204,204,,,,205,205', -'205,204,205,,204,,205,205,,204,204,205,,205,205,205,205,205,205,205', -',,,,,205,205,205,205,205,205,205,,,205,,,,,,,205,,,205,205,,205,205', -'205,205,205,,205,205,205,,205,205,,205,205,,482,482,482,482,482,482', -'482,,,482,482,,,,,,,482,482,,205,,,205,,,205,,,205,,,482,,482,205,482', -'482,482,482,482,482,482,205,482,,,,205,205,205,205,205,205,,,,205,205', -',,,206,206,206,205,206,,205,,206,206,,205,205,206,,206,206,206,206,206', -'206,206,,,,,,206,206,206,206,206,206,206,,,206,,,,,,,206,,,206,206,', -'206,206,206,206,206,,206,206,206,,206,206,,206,206,,483,483,483,483', -'483,483,483,483,,483,483,,,,,,,483,483,,206,,,206,,,206,,,206,,,483', -',483,206,483,483,483,483,483,483,483,206,483,,,,206,206,206,206,206', -'206,,,,206,206,,,,,,,206,,,206,,,,,206,206,214,214,214,214,214,,,,214', -'214,,,,214,,214,214,214,214,214,214,214,,,,,,214,214,214,214,214,214', -'214,,,214,,,,,,214,214,,214,214,214,,214,214,214,214,214,,214,214,214', -',214,214,,214,214,,469,,,,,,,,,,,,,,,,,469,469,,214,,,214,,,214,,,214', -',214,469,,,214,469,469,469,469,,,,214,,,,,214,214,214,214,214,214,,', -',214,214,,,,215,215,215,214,215,,214,,215,215,,214,214,215,,215,215', -'215,215,215,215,215,,,,,,215,215,215,215,215,215,215,,,215,,,,,,,215', -',,215,215,,215,215,215,215,215,,215,215,215,,215,215,,215,215,,,,,,', -',,,,,,,,,,,,,,,215,,,215,,215,215,,,215,,,,,,215,,,,,,,,215,,,,,215', -'215,215,215,215,215,,,,215,215,,,,218,218,218,215,218,,215,,218,218', -',215,215,218,,218,218,218,218,218,218,218,,,,,,218,218,218,218,218,218', -'218,,,218,,,,,,,218,,,218,218,,218,218,218,218,218,,218,218,218,,218', -'218,,218,218,,,,,,,,,,,,,,,,,,,,,,218,,,218,,,218,,,218,,,,,,218,,,', -',,,,218,,,,,218,218,218,218,218,218,,,,218,218,,,,220,220,220,218,220', -',218,,220,220,,218,218,220,,220,220,220,220,220,220,220,,,,,,220,220', -'220,220,220,220,220,,,220,,,,,,,220,,,220,220,,220,220,220,220,220,', -'220,220,220,,220,220,,220,220,,,,,,,,,,,,,,,,,,,,,,220,,,220,,,220,', -',220,,,,,,220,,,,,,,,220,,,,,220,220,220,220,220,220,,,,220,220,,,,221', -'221,221,220,221,,220,,221,221,,220,220,221,,221,221,221,221,221,221', -'221,,,,,,221,221,221,221,221,221,221,,,221,,,,,,,221,,,221,221,,221', -'221,221,221,221,,221,221,221,,221,221,,221,221,,,,,,,,,,,,,,,,,,,,,', -'221,,,221,,,221,,,221,,,,,,221,,,,,,,,221,,,,,221,221,221,221,221,221', -',,,221,221,,,,222,222,222,221,222,,221,,222,222,,221,221,222,,222,222', -'222,222,222,222,222,,,,,,222,222,222,222,222,222,222,,,222,,,,,,,222', -',,222,222,,222,222,222,222,222,,222,222,222,,222,222,,222,222,,,,,,', -',,,,,,,,,,,,,,,222,,,222,,,222,,,222,,,,,,222,,,,,,,,222,,,,,222,222', -'222,222,222,222,,,,222,222,,,,223,223,223,222,223,,222,,223,223,,222', -'222,223,,223,223,223,223,223,223,223,,,,,,223,223,223,223,223,223,223', -',,223,,,,,,,223,,,223,223,,223,223,223,223,223,,223,223,223,,223,223', -',223,223,,,,,,,,,,,,,,,,,,,,,,223,,,223,,,223,,,223,,,,,,223,,,,,,,', -'223,,,,,223,223,223,223,223,223,,,,223,223,,,,224,224,224,223,224,,223', -',224,224,,223,223,224,,224,224,224,224,224,224,224,,,,,,224,224,224', -'224,224,224,224,,,224,,,,,,,224,,,224,224,,224,224,224,224,224,,224', -'224,224,,224,224,,224,224,,,,,,,,,,,,,,,,,,,,,,224,,,224,,,224,,,224', -',,,,,224,,,,,,,,224,,,,,224,224,224,224,224,224,,,,224,224,,,,225,225', -'225,224,225,,224,,225,225,,224,224,225,,225,225,225,225,225,225,225', -',,,,,225,225,225,225,225,225,225,,,225,,,,,,,225,,,225,225,,225,225', -'225,225,225,,225,225,225,,225,225,,225,225,,,,,,,,,,,,,,,,,,,,,,225', -',,225,,,225,,,225,,,,,,225,,,,,,,,225,,,,,225,225,225,225,225,225,,', -',225,225,,,,226,226,226,225,226,,225,,226,226,,225,225,226,,226,226', -'226,226,226,226,226,,,,,,226,226,226,226,226,226,226,,,226,,,,,,,226', -',,226,226,,226,226,226,226,226,,226,226,226,,226,226,,226,226,,,,,,', -',,,,,,,,,,,,,,,226,,,226,,,226,,,226,,,,,,226,,,,,,,,226,,,,,226,226', -'226,226,226,226,,,,226,226,,,,227,227,227,226,227,,226,,227,227,,226', -'226,227,,227,227,227,227,227,227,227,,,,,,227,227,227,227,227,227,227', -',,227,,,,,,,227,,,227,227,,227,227,227,227,227,,227,227,227,,227,227', -',227,227,,,,,,,,,,,,,,,,,,,,,,227,,,227,,,227,,,227,,,,,,227,,,,,,,', -'227,,,,,227,227,227,227,227,227,,,,227,227,,,,228,228,228,227,228,,227', -',228,228,,227,227,228,,228,228,228,228,228,228,228,,,,,,228,228,228', -'228,228,228,228,,,228,,,,,,,228,,,228,228,,228,228,228,228,228,,228', -'228,228,,228,228,,228,228,,,,,,,,,,,,,,,,,,,,,,228,,,228,,,228,,,228', -',,,,,228,,,,,,,,228,,,,,228,228,228,228,228,228,,,,228,228,,,,229,229', -'229,228,229,,228,,229,229,,228,228,229,,229,229,229,229,229,229,229', -',,,,,229,229,229,229,229,229,229,,,229,,,,,,,229,,,229,229,,229,229', -'229,229,229,,229,229,229,,229,229,,229,229,,,,,,,,,,,,,,,,,,,,,,229', -',,229,,,229,,,229,,,,,,229,,,,,,,,229,,,,,229,229,229,229,229,229,,', -',229,229,,,,230,230,230,229,230,,229,,230,230,,229,229,230,,230,230', -'230,230,230,230,230,,,,,,230,230,230,230,230,230,230,,,230,,,,,,,230', -',,230,230,,230,230,230,230,230,,230,230,230,,230,230,,230,230,,,,,,', -',,,,,,,,,,,,,,,230,,,230,,,230,,,230,,,,,,230,,,,,,,,230,,,,,230,230', -'230,230,230,230,,,,230,230,,,,231,231,231,230,231,,230,,231,231,,230', -'230,231,,231,231,231,231,231,231,231,,,,,,231,231,231,231,231,231,231', -',,231,,,,,,,231,,,231,231,,231,231,231,231,231,,231,231,231,,231,231', -',231,231,,,,,,,,,,,,,,,,,,,,,,231,,,231,,,231,,,231,,,,,,231,,,,,,,', -'231,,,,,231,231,231,231,231,231,,,,231,231,,,,232,232,232,231,232,,231', -',232,232,,231,231,232,,232,232,232,232,232,232,232,,,,,,232,232,232', -'232,232,232,232,,,232,,,,,,,232,,,232,232,,232,232,232,232,232,,232', -'232,232,,232,232,,232,232,,,,,,,,,,,,,,,,,,,,,,232,,,232,,,232,,,232', -',,,,,232,,,,,,,,232,,,,,232,232,232,232,232,232,,,,232,232,,,,233,233', -'233,232,233,,232,,233,233,,232,232,233,,233,233,233,233,233,233,233', -',,,,,233,233,233,233,233,233,233,,,233,,,,,,,233,,,233,233,,233,233', -'233,233,233,,233,233,233,,233,233,,233,233,,,,,,,,,,,,,,,,,,,,,,233', -',,233,,,233,,,233,,,,,,233,,,,,,,,233,,,,,233,233,233,233,233,233,,', -',233,233,,,,234,234,234,233,234,,233,,234,234,,233,233,234,,234,234', -'234,234,234,234,234,,,,,,234,234,234,234,234,234,234,,,234,,,,,,,234', -',,234,234,,234,234,234,234,234,,234,234,234,,234,234,,234,234,,,,,,', -',,,,,,,,,,,,,,,234,,,234,,,234,,,234,,,,,,234,,,,,,,,234,,,,,234,234', -'234,234,234,234,,,,234,234,,,,235,235,235,234,235,,234,,235,235,,234', -'234,235,,235,235,235,235,235,235,235,,,,,,235,235,235,235,235,235,235', -',,235,,,,,,,235,,,235,235,,235,235,235,235,235,,235,235,235,,235,235', -',235,235,,,,,,,,,,,,,,,,,,,,,,235,,,235,,,235,,,235,,,,,,235,,,,,,,', -'235,,,,,235,235,235,235,235,235,,,,235,235,,,,236,236,236,235,236,,235', -',236,236,,235,235,236,,236,236,236,236,236,236,236,,,,,,236,236,236', -'236,236,236,236,,,236,,,,,,,236,,,236,236,,236,236,236,236,236,,236', -'236,236,,236,236,,236,236,,,,,,,,,,,,,,,,,,,,,,236,,,236,,,236,,,236', -',,,,,236,,,,,,,,236,,,,,236,236,236,236,236,236,,,,236,236,,,,237,237', -'237,236,237,,236,,237,237,,236,236,237,,237,237,237,237,237,237,237', -',,,,,237,237,237,237,237,237,237,,,237,,,,,,,237,,,237,237,,237,237', -'237,237,237,,237,237,237,,237,237,,237,237,,,,,,,,,,,,,,,,,,,,,,237', -',,237,,,237,,,237,,,,,,237,,,,,,,,237,,,,,237,237,237,237,237,237,,', -',237,237,,,,238,238,238,237,238,,237,,238,238,,237,237,238,,238,238', -'238,238,238,238,238,,,,,,238,238,238,238,238,238,238,,,238,,,,,,,238', -',,238,238,,238,238,238,238,238,,238,238,238,,238,238,,238,238,,,,,,', -',,,,,,,,,,,,,,,238,,,238,,,238,,,238,,,,,,238,,,,,,,,238,,,,,238,238', -'238,238,238,238,,,,238,238,,,,239,239,239,238,239,,238,,239,239,,238', -'238,239,,239,239,239,239,239,239,239,,,,,,239,239,239,239,239,239,239', -',,239,,,,,,,239,,,239,239,,239,239,239,239,239,,239,239,239,,239,239', -',239,239,,,,,,,,,,,,,,,,,,,,,,239,,,239,,,239,,,239,,,,,,239,,,,,,,', -'239,,,,,239,239,239,239,239,239,,,,239,239,,,,240,240,240,239,240,,239', -',240,240,,239,239,240,,240,240,240,240,240,240,240,,,,,,240,240,240', -'240,240,240,240,,,240,,,,,,,240,,,240,240,,240,240,240,240,240,,240', -'240,240,,240,240,,240,240,,,,,,,,,,,,,,,,,,,,,,240,,,240,,,240,,,240', -',,,,,240,,,,,,,,240,,,,,240,240,240,240,240,240,,,,240,240,,,,241,241', -'241,240,241,,240,,241,241,,240,240,241,,241,241,241,241,241,241,241', -',,,,,241,241,241,241,241,241,241,,,241,,,,,,,241,,,241,241,,241,241', -'241,241,241,,241,241,241,,241,241,,241,241,,,,,,,,,,,,,,,,,,,,,,241', -',,241,,,241,,,241,,,,,,241,,,,,,,,241,,,,,241,241,241,241,241,241,,', -',241,241,,,,242,242,242,241,242,,241,,242,242,,241,241,242,,242,242', -'242,242,242,242,242,,,,,,242,242,242,242,242,242,242,,,242,,,,,,,242', -',,242,242,,242,242,242,242,242,,242,242,242,,242,242,,242,242,,,,,,', -',,,,,,,,,,,,,,,242,,,242,,,242,,,242,,,,,,242,,,,,,,,242,,,,,242,242', -'242,242,242,242,,,,242,242,,,,243,243,243,242,243,,242,,243,243,,242', -'242,243,,243,243,243,243,243,243,243,,,,,,243,243,243,243,243,243,243', -',,243,,,,,,,243,,,243,243,,243,243,243,243,243,,243,243,243,,243,243', -',243,243,,,,,,,,,,,,,,,,,,,,,,243,,,243,,,243,,,243,,,,,,243,,,,,,,', -'243,,,,,243,243,243,243,243,243,,,,243,243,,,,244,244,244,243,244,,243', -',244,244,,243,243,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,,,,,,,,244,,,,,244,244,244,244,244,244,,,,244,244,,,,245,245', -'245,244,245,,244,,245,245,,244,244,245,,245,245,245,245,245,245,245', -',,,,,245,245,245,245,245,245,245,,,245,,,,,,,245,,,245,245,,245,245', -'245,245,245,,245,245,245,,245,245,,245,245,,,,,,,,,,,,,,,,,,,,,,245', -',,245,,,245,,,245,,,,,,245,,,,,,,,245,,,,,245,245,245,245,245,245,,', -',245,245,,,,254,254,254,245,254,,245,,254,254,,245,245,254,,254,254', -'254,254,254,254,254,,,,,,254,254,254,254,254,254,254,,,254,,,,,,,254', -',,254,254,,254,254,254,254,254,,254,254,254,,254,254,,254,254,,,,,,', -',,,,,,,,,,,,,,,254,,,254,,,254,,,254,,,,,,254,,,,,,,,254,,,,,254,254', -'254,254,254,254,,,,254,254,,,,256,256,256,254,256,,254,,256,256,,254', -'254,256,,256,256,256,256,256,256,256,,,,,,256,256,256,256,256,256,256', -',,256,,,,,,,256,,,256,256,,256,256,256,256,256,,256,256,256,,256,256', -',256,256,,,,,,,,,,,,,,,,,,,,,,256,,,256,,,256,,,256,,,,,,256,,,,,,,', -'256,,,,,256,256,256,256,256,256,,,,256,256,,,,261,261,261,256,261,,256', -',261,261,,256,256,261,,261,261,261,261,261,261,261,,,,,,261,261,261', -'261,261,261,261,,,261,,,,,,,261,,,261,261,,261,261,261,261,261,,261', -'261,261,,261,261,,261,261,,,,,,,,,,,,,,,,,,,,,,261,,,261,,,261,,,261', -',,,,,261,,,,,,,,261,,,,,261,261,261,261,261,261,,,,261,261,,,,268,268', -'268,261,268,,261,,268,268,,261,261,268,,268,268,268,268,268,268,268', -',,,,,268,268,268,268,268,268,268,,,268,,,,,,,268,,,268,268,,268,268', -'268,268,268,268,268,268,268,,268,268,,268,268,,,,,,,,,,,,,,,,,,,,,,268', -',,268,,,268,,,268,,268,,268,,268,,,,,,,,268,,,,,268,268,268,268,268', -'268,,,,268,268,,,,269,269,269,268,269,,268,,269,269,,268,268,269,,269', -'269,269,269,269,269,269,,,,,,269,269,269,269,269,269,269,,,269,,,,,', -',269,,,269,269,,269,269,269,269,269,269,269,269,269,,269,269,,269,269', -',,,,,,,,,,,,,,,,,,,,,269,,,269,,,269,,,269,,269,,269,,269,,,,,,,,269', -',,,,269,269,269,269,269,269,,,,269,269,,,,277,277,277,269,277,,269,', -'277,277,,269,269,277,,277,277,277,277,277,277,277,,,,,,277,277,277,277', -'277,277,277,,,277,,,,,,,277,,,277,277,,277,277,277,277,277,277,277,277', -'277,,277,277,,277,277,,,,,,,,,,,,,,,,,,,,,,277,,,277,,277,277,,,277', -',277,,277,,277,,,,,,,,277,,,,,277,277,277,277,277,277,,,,277,277,,,', -',,,277,,,277,,,,,277,277,281,281,281,281,281,,,,281,281,,,,281,,281', -'281,281,281,281,281,281,,,,,,281,281,281,281,281,281,281,,,281,,,,,', -'281,281,,281,281,281,,281,281,281,281,281,,281,281,281,,281,281,,281', -'281,,,,,,,,,,,,,,,,,,,,,,281,,,281,,,281,,,281,,281,,,,281,,,,,,,,281', -',,,,281,281,281,281,281,281,,,,281,281,,,,285,285,285,281,285,,281,', -'285,285,,281,281,285,,285,285,285,285,285,285,285,,,,,,285,285,285,285', -'285,285,285,,,285,,,,,,,285,,,285,285,,285,285,285,285,285,,285,285', -'285,,285,285,749,,749,749,749,749,749,,,,,,,,,,749,,,,,,,,285,,,285', -',,285,,,285,,,,,,749,,,,,,,,749,749,749,749,,285,285,285,285,285,285', -',,,285,285,,,,285,,,285,,,285,,,,,285,285,286,286,286,286,286,,,749', -'286,286,,,,286,,286,286,286,286,286,286,286,,,,,,286,286,286,286,286', -'286,286,,,286,,,,,,286,286,,286,286,286,,286,286,286,286,286,,286,286', -'286,,286,286,,286,286,,,,,,,,,,,,,,,,,,,,,,286,,,286,,,286,,,286,,286', -',,,286,,,,,,,,286,,,,,286,286,286,286,286,286,,,,286,286,,,,298,298', -'298,286,298,,286,,298,298,,286,286,298,,298,298,298,298,298,298,298', -',,,,,298,298,298,298,298,298,298,,,298,,,,,,,298,,,298,298,,298,298', -'298,298,298,,298,298,298,,298,298,56,,56,56,56,,56,,,,,,,,,,,,,,,,,', -'298,,,298,,,298,,,298,,,,,,56,56,,,,,,,56,56,56,56,,298,298,298,298', -'298,298,,,,298,298,,,,307,307,307,298,307,,298,,307,307,,298,298,307', -',307,307,307,307,307,307,307,,,,,,307,307,307,307,307,307,307,,,307', -',,,,,,307,,,307,307,,307,307,307,307,307,,307,307,307,,307,307,,307', -'307,,,,,,,,,,,,,,,,,,,,,,307,,,307,307,,307,,,307,,,,,,307,,,,,,,,307', -',,,,307,307,307,307,307,307,,,,307,307,,,,,,,307,,,307,,,,,307,307,309', -'309,309,309,309,,,,309,309,,,,309,,309,309,309,309,309,309,309,,,,,', -'309,309,309,309,309,309,309,,,309,,,,,,309,309,,309,309,309,,309,309', -'309,309,309,,309,309,309,,309,309,,309,309,,,,,,,,,,,,,,,,,,,,,,309', -',,309,,,309,,,309,,309,,,,309,,,,,,,,309,,,,,309,309,309,309,309,309', -',,,309,309,,,,349,349,349,309,349,,309,,349,349,,309,309,349,,349,349', -'349,349,349,349,349,,,,,,349,349,349,349,349,349,349,,,349,,,,,,,349', -',,349,349,,349,349,349,349,349,,349,349,349,,349,349,,349,349,,,,,,', -',,,,,,,,,,,,,,,349,,,349,,,349,,,349,,,,,,349,,,,,,,,349,,,,,349,349', -'349,349,349,349,,,,349,349,,,,350,350,350,349,350,,349,,350,350,,349', -'349,350,,350,350,350,350,350,350,350,,,,,,350,350,350,350,350,350,350', -',,350,,,,,,,350,,,350,350,,350,350,350,350,350,,350,350,350,,350,350', -',350,350,,,,,,,,,,,,,,,,,,,,,,350,,,350,,,350,,,350,,,,,,350,,,,,,,', -'350,,,,,350,350,350,350,350,350,,,,350,350,,,,369,369,369,350,369,,350', -',369,369,,350,350,369,,369,369,369,369,369,369,369,,,,,,369,369,369', -'369,369,369,369,,,369,,,,,,,369,,,369,369,,369,369,369,369,369,,369', -'369,369,,369,369,322,,322,322,322,,322,,,,,,,,,,,,,,,,,,369,,,369,,', -'369,,,369,,,,,,322,,322,,,,,,322,322,322,322,,369,369,369,369,369,369', -',,,369,369,,,,381,381,381,369,381,,369,,381,381,,369,369,381,,381,381', -'381,381,381,381,381,,,,,,381,381,381,381,381,381,381,,,381,,,,,,,381', -',,381,381,,381,381,381,381,381,,381,381,381,,381,381,,381,381,,,,,,', -',,,,,,,,,,,,,,,381,,,381,,,381,,,381,,,,,,381,,,,,,,,381,,,,,381,381', -'381,381,381,381,,,,381,381,,,,421,421,421,381,421,,381,,421,421,,381', -'381,421,,421,421,421,421,421,421,421,,,,,,421,421,421,421,421,421,421', -',,421,,,,,,,421,,,421,421,,421,421,421,421,421,,421,421,421,,421,421', -',421,421,,,,,,,,,,,,,,,,,,,,,,421,,,421,,,421,,,421,,,,,,421,,,,,,,', -'421,,,,,421,421,421,421,421,421,,,,421,421,,,,432,432,432,421,432,,421', -',432,432,,421,421,432,,432,432,432,432,432,432,432,,,,,,432,432,432', -'432,432,432,432,,,432,,,,,,,432,,,432,432,,432,432,432,432,432,432,432', -'432,432,,432,432,,432,432,,,,,,,,,,,,,,,,,,,,,,432,,,432,432,,432,,', -'432,,432,,432,,432,,,,,,,,432,,,,,432,432,432,432,432,432,,,,432,432', -',,,440,440,440,432,440,,432,,440,440,,432,432,440,,440,440,440,440,440', -'440,440,,,,,,440,440,440,440,440,440,440,,,440,,,,,,,440,,,440,440,', -'440,440,440,440,440,440,440,440,440,,440,440,,440,440,,,,,,,,,,,,,,', -',,,,,,,440,,,440,440,,440,,,440,,440,,440,,440,,,,,,,,440,,,,,440,440', -'440,440,440,440,,,,440,440,,,,441,441,441,440,441,,440,,441,441,,440', -'440,441,,441,441,441,441,441,441,441,,,,,,441,441,441,441,441,441,441', -',,441,,,,,,,441,,,441,441,,441,441,441,441,441,441,441,441,441,,441', -'441,,441,441,,,,,,,,,,,,,,,,,,,,,,441,,,441,441,,441,,,441,,441,,441', -',441,,,,,,,,441,,,,,441,441,441,441,441,441,,,,441,441,,,,442,442,442', -'441,442,,441,,442,442,,441,441,442,,442,442,442,442,442,442,442,,,,', -',442,442,442,442,442,442,442,,,442,,,,,,,442,,,442,442,,442,442,442', -'442,442,442,442,442,442,,442,442,,442,442,,,,,,,,,,,,,,,,,,,,,,442,', -',442,442,,442,,,442,,442,,442,,442,,,,,,,,442,,,,,442,442,442,442,442', -'442,,,,442,442,,,,451,451,451,442,451,,442,,451,451,,442,442,451,,451', -'451,451,451,451,451,451,,,,,,451,451,451,451,451,451,451,,,451,,,,,', -',451,,,451,451,,451,451,451,451,451,451,451,451,451,,451,451,,451,451', -',,,,,,,,,,,,,,,,,,,,,451,,,451,,,451,,,451,,451,,,,451,,,,,,,,451,,', -',,451,451,451,451,451,451,,,,451,451,,,,452,452,452,451,452,,451,,452', -'452,,451,451,452,,452,452,452,452,452,452,452,,,,,,452,452,452,452,452', -'452,452,,,452,,,,,,,452,,,452,452,,452,452,452,452,452,452,452,452,452', -',452,452,,452,452,,,,,,,,,,,,,,,,,,,,,,452,,,452,,,452,,,452,,452,,', -',452,,,,,,,,452,,,,,452,452,452,452,452,452,,,,452,452,,,,454,454,454', -'452,454,,452,,454,454,,452,452,454,,454,454,454,454,454,454,454,,,,', -',454,454,454,454,454,454,454,,,454,,,,,,,454,,,454,454,,454,454,454', -'454,454,,454,454,454,,454,454,,454,454,,,,,,,,,,,,,,,,,,,,,,454,,,454', -',,454,,,454,,,,,,454,,,,,,,,454,,,,,454,454,454,454,454,454,,,,454,454', -',,,455,455,455,454,455,,454,,455,455,,454,454,455,,455,455,455,455,455', -'455,455,,,,,,455,455,455,455,455,455,455,,,455,,,,,,,455,,,455,455,', -'455,455,455,455,455,,455,455,455,,455,455,,455,455,,,,,,,,,,,,,,,,,', -',,,,455,,,455,,,455,,,455,,,,,,455,,,,,,,,455,,,,,455,455,455,455,455', -'455,,,,455,455,,,,456,456,456,455,456,,455,,456,456,,455,455,456,,456', -'456,456,456,456,456,456,,,,,,456,456,456,456,456,456,456,,,456,,,,,', -',456,,,456,456,,456,456,456,456,456,,456,456,456,,456,456,,456,456,', -',,,,,,,,,,,,,,,,,,,,456,,,456,,,456,,,456,,,,,,456,,,,,,,,456,,,,,456', -'456,456,456,456,456,,,,456,456,,,,487,487,487,456,487,,456,,487,487', -',456,456,487,,487,487,487,487,487,487,487,,,,,,487,487,487,487,487,487', -'487,,,487,,,,,,,487,,,487,487,,487,487,487,487,487,487,487,487,487,', -'487,487,,487,487,,,,,,,,,,,,,,,,,,,,,,487,,,487,,,487,,,487,,487,,487', -',487,,,,,,,,487,,,,,487,487,487,487,487,487,,,,487,487,,,,489,489,489', -'487,489,,487,,489,489,,487,487,489,,489,489,489,489,489,489,489,,,,', -',489,489,489,489,489,489,489,,,489,,,,,,,489,,,489,489,,489,489,489', -'489,489,489,489,489,489,,489,489,,489,489,,,,,,,,,,,,,,,,,,,,,,489,', -',489,,,489,,,489,,,,489,,489,,,,,,,,489,,,,,489,489,489,489,489,489', -',,,489,489,,,,491,491,491,489,491,,489,,491,491,,489,489,491,,491,491', -'491,491,491,491,491,,,,,,491,491,491,491,491,491,491,,,491,,,,,,,491', -',,491,491,,491,491,491,491,491,,491,491,491,,491,491,,491,491,,,,,,', -',,,,,,,,,,,,,,,491,,,491,,,491,,,491,,,,,,491,,,,,,,,491,,,,,491,491', -'491,491,491,491,,,,491,491,,,,506,506,506,491,506,,491,,506,506,,491', -'491,506,,506,506,506,506,506,506,506,,,,,,506,506,506,506,506,506,506', -',,506,,,,,,,506,,,506,506,,506,506,506,506,506,,506,506,506,,506,506', -',506,506,,,,,,,,,,,,,,,,,,,,,,506,,,506,,506,506,,,506,,,,506,,506,', -',,,,,,506,,,,,506,506,506,506,506,506,,,,506,506,,,,,,,506,,,506,,,', -',506,506,512,512,512,512,512,,,,512,512,,,,512,,512,512,512,512,512', -'512,512,,,,,,512,512,512,512,512,512,512,,,512,,,,,,512,512,,512,512', -'512,,512,512,512,512,512,,512,512,512,,512,512,,512,512,,,,,,,,,,,,', -',,,,,,,,,512,,,512,,,512,,,512,,512,,,,512,,,,,,,,512,,,,,512,512,512', -'512,512,512,,,,512,512,,,,,,512,512,,,512,,,,,512,512,518,518,518,,518', -',,,518,518,,,,518,,518,518,518,518,518,518,518,,,,,,518,518,518,518', -'518,518,518,,,518,,,,,,,518,,,518,518,,518,518,518,518,518,,518,518', -'518,,518,518,559,,559,559,559,,559,,,,,,,,,,,,,,,,,,518,,,518,,,518', -',,518,,,,,,559,,,,,,,,559,559,559,559,,518,518,518,518,518,518,,,,518', -'518,,,,520,520,520,518,520,,518,,520,520,,518,518,520,,520,520,520,520', -'520,520,520,,,,,,520,520,520,520,520,520,520,,,520,,,,,,,520,,,520,520', -',520,520,520,520,520,520,520,520,520,,520,520,,520,520,,,,,,,,,,,,,', -',,,,,,,,520,,,520,,,520,,,520,,520,,,,520,,,,,,,,520,,,,,520,520,520', -'520,520,520,,,,520,520,,,,523,523,523,520,523,,520,,523,523,,520,520', -'523,,523,523,523,523,523,523,523,,,,,,523,523,523,523,523,523,523,,', -'523,,,,,,,523,,,523,523,,523,523,523,523,523,523,523,523,523,,523,523', -',523,523,,,,,,,,,,,,,,,,,,,,,,523,,,523,,,523,,,523,,523,,,,523,,,,', -',,,523,,,,,523,523,523,523,523,523,,,,523,523,,,,531,531,531,523,531', -',523,,531,531,,523,523,531,,531,531,531,531,531,531,531,,,,,,531,531', -'531,531,531,531,531,,,531,,,,,,,531,,,531,531,,531,531,531,531,531,', -'531,531,531,,531,531,,531,531,,,,,,,,,,,,,,,,,,,,,,531,,,531,,,531,', -',531,,,,,,531,,,,,,,,531,,,,,531,531,531,531,531,531,,,,531,531,,,,532', -'532,532,531,532,,531,,532,532,,531,531,532,,532,532,532,532,532,532', -'532,,,,,,532,532,532,532,532,532,532,,,532,,,,,,,532,,,532,532,,532', -'532,532,532,532,,532,532,532,,532,532,,532,532,,,,,,,,,,,,,,,,,,,,,', -'532,,,532,,,532,,,532,,,,,,532,,,,,,,,532,,,,,532,532,532,532,532,532', -',,,532,532,,,,533,533,533,532,533,,532,,533,533,,532,532,533,,533,533', -'533,533,533,533,533,,,,,,533,533,533,533,533,533,533,,,533,,,,,,,533', -',,533,533,,533,533,533,533,533,,533,533,533,,533,533,,533,533,,,,,,', -',,,,,,,,,,,,,,,533,,,533,,,533,,,533,,,,,,533,,,,,,,,533,,,,,533,533', -'533,533,533,533,,,,533,533,,,,537,537,537,533,537,,533,,537,537,,533', -'533,537,,537,537,537,537,537,537,537,,,,,,537,537,537,537,537,537,537', -',,537,,,,,,,537,,,537,537,,537,537,537,537,537,,537,537,537,,537,537', -',537,537,,,,,,,,,,,,,,,,,,,,,,537,,,537,,,537,,,537,,,,,,537,,,,,,,', -'537,,,,,537,537,537,537,537,537,,,,537,537,,,,543,543,543,537,543,,537', -',543,543,,537,537,543,,543,543,543,543,543,543,543,,,,,,543,543,543', -'543,543,543,543,,,543,,,,,,,543,,,543,543,,543,543,543,543,543,543,543', -'543,543,,543,543,,543,543,,,,,,,,,,,,,,,,,,,,,,543,,,543,,,543,,,543', -',543,,,,543,,,,,,,,543,,,,,543,543,543,543,543,543,,,,543,543,,,,546', -'546,546,543,546,,543,,546,546,,543,543,546,,546,546,546,546,546,546', -'546,,,,,,546,546,546,546,546,546,546,,,546,,,,,,,546,,,546,546,,546', -'546,546,546,546,546,546,546,546,,546,546,,546,546,,,,,,,,,,,,,,,,,,', -',,,546,,,546,,,546,,,546,,,,,,546,,,,,,,,546,,,,,546,546,546,546,546', -'546,,,,546,546,,,,,,,546,,,546,,,,,546,546,551,551,551,551,551,,,,551', -'551,,,,551,,551,551,551,551,551,551,551,,,,,,551,551,551,551,551,551', -'551,,,551,,,,,,551,551,,551,551,551,,551,551,551,551,551,,551,551,551', -',551,551,,551,551,,,,,,,,,,,,,,,,,,,,,,551,,,551,,,551,,,551,,551,,', -',551,,,,,,,,551,,,,,551,551,551,551,551,551,,,,551,551,,,,,,,551,,,551', -',,,,551,551,552,552,552,552,552,,,,552,552,,,,552,,552,552,552,552,552', -'552,552,,,,,,552,552,552,552,552,552,552,,,552,,,,,,552,552,,552,552', -'552,,552,552,552,552,552,,552,552,552,,552,552,,552,552,,,,,,,,,,,,', -',,,,,,,,,552,,,552,,,552,,,552,,552,,,,552,,,,,,,,552,,,,,552,552,552', -'552,552,552,,,,552,552,,,,558,558,558,552,558,,552,,558,558,,552,552', -'558,,558,558,558,558,558,558,558,,,,,,558,558,558,558,558,558,558,,', -'558,,,,,,,558,,,558,558,,558,558,558,558,558,,558,558,558,,558,558,856', -',856,856,856,856,856,,,,,,,,,,856,,,,,,,,558,,,558,,,558,,,558,,,,,', -'856,,,,,,,,856,856,856,856,,558,558,558,558,558,558,,,,558,558,,,,,', -',558,,,558,,,,,558,558,572,572,572,572,572,,,856,572,572,,,,572,,572', -'572,572,572,572,572,572,,,,,,572,572,572,572,572,572,572,,,572,,,,,', -'572,572,,572,572,572,,572,572,572,572,572,,572,572,572,,572,572,,572', -'572,,,,,,,,,,,,,,,,,,,,,,572,,,572,,,572,,,572,,572,,,,572,,,,,,,,572', -',,,,572,572,572,572,572,572,,,,572,572,,,,,,,572,,,572,,,,,572,572,576', -'576,576,576,576,,,,576,576,,,,576,,576,576,576,576,576,576,576,,,,,', -'576,576,576,576,576,576,576,,,576,,,,,,576,576,,576,576,576,,576,576', -'576,576,576,,576,576,576,,576,576,,576,576,,,,,,,,,,,,,,,,,,,,,,576', -',,576,,,576,,,576,,576,,,,576,,,,,,,,576,,,,,576,576,576,576,576,576', -',,,576,576,,,,,,,576,,,576,,,,,576,576,581,581,581,581,581,,,,581,581', -',,,581,,581,581,581,581,581,581,581,,,,,,581,581,581,581,581,581,581', -',,581,,,,,,581,581,,581,581,581,,581,581,581,581,581,,581,581,581,,581', -'581,,581,581,,,,,,,,,,,,,,,,,,,,,,581,,,581,,,581,,,581,,581,,,,581', -',,,,,,,581,,,,,581,581,581,581,581,581,,,,581,581,,,,583,583,583,581', -'583,,581,,583,583,,581,581,583,,583,583,583,583,583,583,583,,,,,,583', -'583,583,583,583,583,583,,,583,,,,,,,583,,,583,583,,583,583,583,583,583', -'583,583,583,583,,583,583,,583,583,,,,,,,,,,,,,,,,,,,,,,583,,,583,,,583', -',,583,,583,,,,583,,,,,,,,583,,,,,583,583,583,583,583,583,,,,583,583', -',,,586,586,586,583,586,,583,,586,586,,583,583,586,,586,586,586,586,586', -'586,586,,,,,,586,586,586,586,586,586,586,,,586,,,,,,,586,,,586,586,', -'586,586,586,586,586,586,586,586,586,,586,586,,586,586,,,,,,,,,,,,,,', -',,,,,,,586,,,586,,,586,,,586,,586,,,,586,,,,,,,,586,,,,,586,586,586', -'586,586,586,,,,586,586,,,,592,592,592,586,592,,586,,592,592,,586,586', -'592,,592,592,592,592,592,592,592,,,,,,592,592,592,592,592,592,592,,', -'592,,,,,,,592,,,592,592,,592,592,592,592,592,592,592,592,592,,592,592', -',592,592,,,,,,,,,,,,,,,,,,,,,,592,,,592,,,592,,,592,,592,,,,592,,,,', -',,,592,,,,,592,592,592,592,592,592,,,,592,592,,,,596,596,596,592,596', -',592,,596,596,,592,592,596,,596,596,596,596,596,596,596,,,,,,596,596', -'596,596,596,596,596,,,596,,,,,,,596,,,596,596,,596,596,596,596,596,', -'596,596,596,,596,596,,596,596,,,,,,,,,,,,,,,,,,,,,,596,,,596,,,596,', -',596,,,,,,596,,,,,,,,596,,,,,596,596,596,596,596,596,,,,596,596,,,,598', -'598,598,596,598,,596,,598,598,,596,596,598,,598,598,598,598,598,598', -'598,,,,,,598,598,598,598,598,598,598,,,598,,,,,,,598,,,598,598,,598', -'598,598,598,598,,598,598,598,,598,598,,598,598,,,,,,,,,,,,,,,,,,,,,', -'598,,,598,,,598,,,598,,,,,,598,,,,,,,,598,,,,,598,598,598,598,598,598', -',,,598,598,,,,625,625,625,598,625,,598,,625,625,,598,598,625,,625,625', -'625,625,625,625,625,,,,,,625,625,625,625,625,625,625,,,625,,,,,,,625', -',,625,625,,625,625,625,625,625,,625,625,625,,625,625,,625,625,,,,,,', -',,,,,,,,,,,,,,,625,,,625,,,625,,,625,,,,,,625,,,,,,,,625,,,,,625,625', -'625,625,625,625,,,,625,625,,,,627,627,627,625,627,,625,,627,627,,625', -'625,627,,627,627,627,627,627,627,627,,,,,,627,627,627,627,627,627,627', -',,627,,,,,,,627,,,627,627,,627,627,627,627,627,,627,627,627,,627,627', -',627,627,,,,,,,,,,,,,,,,,,,,,,627,,,627,,,627,,,627,,627,,,,627,,,,', -',,,627,,,,,627,627,627,627,627,627,,,,627,627,,,,630,630,630,627,630', -',627,,630,630,,627,627,630,,630,630,630,630,630,630,630,,,,,,630,630', -'630,630,630,630,630,,,630,,,,,,,630,,,630,630,,630,630,630,630,630,', -'630,630,630,,630,630,,630,630,,,,,,,,,,,,,,,,,,,,,,630,,,630,,,630,', -',630,,,,,,630,,,,,,,,630,,,,,630,630,630,630,630,630,,,,630,630,,,,631', -'631,631,630,631,,630,,631,631,,630,630,631,,631,631,631,631,631,631', -'631,,,,,,631,631,631,631,631,631,631,,,631,,,,,,,631,,,631,631,,631', -'631,631,631,631,,631,631,631,,631,631,,631,631,,,,,,,,,,,,,,,,,,,,,', -'631,,,631,,,631,,,631,,,,,,631,,,,,,,,631,,,,,631,631,631,631,631,631', -',,,631,631,,,,636,636,636,631,636,,631,,636,636,,631,631,636,,636,636', -'636,636,636,636,636,,,,,,636,636,636,636,636,636,636,,,636,,,,,,,636', -',,636,636,,636,636,636,636,636,,636,636,636,,636,636,,636,636,,,,,,', -',,,,,,,,,,,,,,,636,,,636,,,636,,,636,,,,,,636,,,,,,,,636,,,,,636,636', -'636,636,636,636,,,,636,636,,,,639,639,639,636,639,,636,,639,639,,636', -'636,639,,639,639,639,639,639,639,639,,,,,,639,639,639,639,639,639,639', -',,639,,,,,,,639,,,639,639,,639,639,639,639,639,,639,639,639,,639,639', -',639,639,,,,,,,,,,,,,,,,,,,,,,639,,,639,,,639,,,639,,,,,,639,,,,,,,', -'639,,,,,639,639,639,639,639,639,,,,639,639,,,,650,650,650,639,650,,639', -',650,650,,639,639,650,,650,650,650,650,650,650,650,,,,,,650,650,650', -'650,650,650,650,,,650,,,,,,,650,,,650,650,,650,650,650,650,650,,650', -'650,650,,650,650,,650,650,,,,,,,,,,,,,,,,,,,,,,650,,,650,,,650,,,650', -',,,,,650,,,,,,,,650,,,,,650,650,650,650,650,650,,,,650,650,,,,,,,650', -',,650,,,,,650,650,654,654,654,654,654,,,,654,654,,,,654,,654,654,654', -'654,654,654,654,,,,,,654,654,654,654,654,654,654,,,654,,,,,,654,654', -',654,654,654,,654,654,654,654,654,,654,654,654,,654,654,,654,654,,,', -',,,,,,,,,,,,,,,,,,654,,,654,,,654,,,654,,654,,,,654,,,,,,,,654,,,,,654', -'654,654,654,654,654,,,,654,654,,,,658,658,658,654,658,,654,,658,658', -',654,654,658,,658,658,658,658,658,658,658,,,,,,658,658,658,658,658,658', -'658,,,658,,,,,,,658,,,658,658,,658,658,658,658,658,,658,658,658,,658', -'658,,658,658,,,,,,,,,,,,,,,,,,,,,,658,,,658,,,658,,,658,,,,,,658,,,', -',,,,658,,,,,658,658,658,658,658,658,,,,658,658,,,,,,,658,,,658,,,,,658', -'658,667,667,667,667,667,,,,667,667,,,,667,,667,667,667,667,667,667,667', -',,,,,667,667,667,667,667,667,667,,,667,,,,,,667,667,,667,667,667,,667', -'667,667,667,667,,667,667,667,,667,667,,667,667,,,,,,,,,,,,,,,,,,,,,', -'667,,,667,,,667,,,667,,667,,,,667,,,,,,,,667,,,,,667,667,667,667,667', -'667,,,,667,667,,,,670,670,670,667,670,,667,,670,670,,667,667,670,,670', -'670,670,670,670,670,670,,,,,,670,670,670,670,670,670,670,,,670,,,,,', -',670,,,670,670,,670,670,670,670,670,670,670,670,670,,670,670,,670,670', -',,,,,,,,,,,,,,,,,,,,,670,,,670,,,670,,,670,,670,,670,,670,,,,,,,,670', -',,,,670,670,670,670,670,670,,,,670,670,,,,671,671,671,670,671,,670,', -'671,671,,670,670,671,,671,671,671,671,671,671,671,,,,,,671,671,671,671', -'671,671,671,,,671,,,,,,,671,,,671,671,,671,671,671,671,671,671,671,671', -'671,,671,671,,671,671,,,,,,,,,,,,,,,,,,,,,,671,,,671,,,671,,,671,,,', -'671,,671,,,,,,,,671,,,,,671,671,671,671,671,671,,,,671,671,,,,,,,671', -',,671,,,,,671,671,677,677,677,677,677,,,,677,677,,,,677,,677,677,677', -'677,677,677,677,,,,,,677,677,677,677,677,677,677,,,677,,,,,,677,677', -',677,677,677,,677,677,677,677,677,,677,677,677,,677,677,,677,677,,,', -',,,,,,,,,,,,,,,,,,677,,,677,,,677,,,677,,677,,,,677,,,,,,,,677,,,,,677', -'677,677,677,677,677,,,,677,677,,,,,,,677,,,677,,,,,677,677,678,678,678', -'678,678,,,,678,678,,,,678,,678,678,678,678,678,678,678,,,,,,678,678', -'678,678,678,678,678,,,678,,,,,,678,678,,678,678,678,,678,678,678,678', -'678,,678,678,678,,678,678,,678,678,,,,,,,,,,,,,,,,,,,,,,678,,,678,,', -'678,,,678,,678,,,,678,,,,,,,,678,,,,,678,678,678,678,678,678,,,,678', -'678,,,,682,682,682,678,682,,678,,682,682,,678,678,682,,682,682,682,682', -'682,682,682,,,,,,682,682,682,682,682,682,682,,,682,,,,,,,682,,,682,682', -',682,682,682,682,682,,682,682,682,,682,682,,,,,,,,,,,,,,,,,,,,,,,,,682', -',,682,,,682,,,682,,,,,,,,,,,,,,,,,,,682,682,682,682,682,682,,,,682,682', -',,,694,694,694,682,694,,682,,694,694,,682,682,694,,694,694,694,694,694', -'694,694,,,,,,694,694,694,694,694,694,694,,,694,,,,,,,694,,,694,694,', -'694,694,694,694,694,,694,694,694,,694,694,,,,,,,,,,,,,,,,,,,,,,,,,694', -',,694,,,694,,,694,,,,,,,,,,,,,,,,,,,694,694,694,694,694,694,,,,694,694', -',,,700,700,700,694,700,,694,,700,700,,694,694,700,,700,700,700,700,700', -'700,700,,,,,,700,700,700,700,700,700,700,,,700,,,,,,,700,,,700,700,', -'700,700,700,700,700,,700,700,700,,700,700,,700,700,,,,,,,,,,,,,,,,,', -',,,,700,,,700,,,700,,,700,,700,,,,700,,,,,,,,700,,,,,700,700,700,700', -'700,700,,,,700,700,,,,731,731,731,700,731,,700,,731,731,,700,700,731', -',731,731,731,731,731,731,731,,,,,,731,731,731,731,731,731,731,,,731', -',,,,,,731,,,731,731,,731,731,731,731,731,,731,731,731,,731,731,,731', -'731,,,,,,,,,,,,,,,,,,,,,,731,,,731,,,731,,,731,,731,,,,731,,,,,,,,731', -',,,,731,731,731,731,731,731,,,,731,731,,,,738,738,738,731,738,,731,', -'738,738,,731,731,738,,738,738,738,738,738,738,738,,,,,,738,738,738,738', -'738,738,738,,,738,,,,,,,738,,,738,738,,738,738,738,738,738,,738,738', -'738,,738,738,,738,738,,,,,,,,,,,,,,,,,,,,,,738,,,738,,,738,,,738,,,', -',,738,,,,,,,,738,,,,,738,738,738,738,738,738,,,,738,738,,,,,,,738,,', -'738,,,,,738,738,743,743,743,743,743,,,,743,743,,,,743,,743,743,743,743', -'743,743,743,,,,,,743,743,743,743,743,743,743,,,743,,,,,,743,743,,743', -'743,743,,743,743,743,743,743,,743,743,743,,743,743,,743,743,,,,,,,,', -',,,,,,,,,,,,,743,,,743,,,743,,,743,,743,,,,743,,,,,,,,743,,,,,743,743', -'743,743,743,743,,,,743,743,,,,,,,743,,,743,,,,,743,743,747,747,747,747', -'747,,,,747,747,,,,747,,747,747,747,747,747,747,747,,,,,,747,747,747', -'747,747,747,747,,,747,,,,,,747,747,,747,747,747,,747,747,747,747,747', -',747,747,747,,747,747,,747,747,,,,,,,,,,,,,,,,,,,,,,747,,,747,,,747', -',,747,,747,,,,747,,,,,,,,747,,,,,747,747,747,747,747,747,,,,747,747', -',,,,,,747,,,747,,,,,747,747,748,748,748,748,748,,,,748,748,,,,748,,748', -'748,748,748,748,748,748,,,,,,748,748,748,748,748,748,748,,,748,,,,,', -'748,748,,748,748,748,,748,748,748,748,748,,748,748,748,,748,748,,748', -'748,,,,,,,,,,,,,,,,,,,,,,748,,,748,,,748,,,748,,748,,,,748,,,,,,,,748', -',,,,748,748,748,748,748,748,,,,748,748,,,,755,755,755,748,755,,748,', -'755,755,,748,748,755,,755,755,755,755,755,755,755,,,,,,755,755,755,755', -'755,755,755,,,755,,,,,,,755,,,755,755,,755,755,755,755,755,,755,755', -'755,,755,755,,755,755,,,,,,,,,,,,,,,,,,,,,,755,,,755,,,755,,,755,,,', -',,755,,,,,,,,755,,,,,755,755,755,755,755,755,,,,755,755,,,,,,,755,,', -'755,,,,,755,755,769,769,769,769,769,,,,769,769,,,,769,,769,769,769,769', -'769,769,769,,,,,,769,769,769,769,769,769,769,,,769,,,,,,769,769,,769', -'769,769,,769,769,769,769,769,,769,769,769,,769,769,,769,769,,,,,,,,', -',,,,,,,,,,,,,769,,,769,,,769,,,769,,769,,,,769,,,,,,,,769,,,,,769,769', -'769,769,769,769,,,,769,769,,,,775,775,775,769,775,,769,,775,775,,769', -'769,775,,775,775,775,775,775,775,775,,,,,,775,775,775,775,775,775,775', -',,775,,,,,,,775,,,775,775,,775,775,775,775,775,,775,775,775,,775,775', -',775,775,,,,,,,,,,,,,,,,,,,,,,775,,,775,,,775,,,775,,,,,,775,,,,,,,', -'775,,,,,775,775,775,775,775,775,,,,775,775,,,,776,776,776,775,776,,775', -',776,776,,775,775,776,,776,776,776,776,776,776,776,,,,,,776,776,776', -'776,776,776,776,,,776,,,,,,,776,,,776,776,,776,776,776,776,776,,776', -'776,776,,776,776,,776,776,,,,,,,,,,,,,,,,,,,,,,776,,,776,,,776,,,776', -',,,,,776,,,,,,,,776,,,,,776,776,776,776,776,776,,,,776,776,,,,777,777', -'777,776,777,,776,,777,777,,776,776,777,,777,777,777,777,777,777,777', -',,,,,777,777,777,777,777,777,777,,,777,,,,,,,777,,,777,777,,777,777', -'777,777,777,,777,777,777,,777,777,,777,777,,,,,,,,,,,,,,,,,,,,,,777', -',,777,,,777,,,777,,,,,,777,,,,,,,,777,,,,,777,777,777,777,777,777,,', -',777,777,,,,788,788,788,777,788,,777,,788,788,,777,777,788,,788,788', -'788,788,788,788,788,,,,,,788,788,788,788,788,788,788,,,788,,,,,,,788', -',,788,788,,788,788,788,788,788,,788,788,788,,788,788,,788,788,,,,,,', -',,,,,,,,,,,,,,,788,,,788,,,788,,,788,,,,,,788,,,,,,,,788,,,,,788,788', -'788,788,788,788,,,,788,788,,,,789,789,789,788,789,,788,,789,789,,788', -'788,789,,789,789,789,789,789,789,789,,,,,,789,789,789,789,789,789,789', -',,789,,,,,,,789,,,789,789,,789,789,789,789,789,,789,789,789,,789,789', -',789,789,,,,,,,,,,,,,,,,,,,,,,789,,,789,,,789,,,789,,,,,,789,,,,,,,', -'789,,,,,789,789,789,789,789,789,,,,789,789,,,,790,790,790,789,790,,789', -',790,790,,789,789,790,,790,790,790,790,790,790,790,,,,,,790,790,790', -'790,790,790,790,,,790,,,,,,,790,,,790,790,,790,790,790,790,790,,790', -'790,790,,790,790,,790,790,,,,,,,,,,,,,,,,,,,,,,790,,,790,,,790,,,790', -',,,,,790,,,,,,,,790,,,,,790,790,790,790,790,790,,,,790,790,,,,802,802', -'802,790,802,,790,,802,802,,790,790,802,,802,802,802,802,802,802,802', -',,,,,802,802,802,802,802,802,802,,,802,,,,,,,802,,,802,802,,802,802', -'802,802,802,,802,802,802,,802,802,,802,802,,,,,,,,,,,,,,,,,,,,,,802', -',,802,,,802,,,802,,802,,,,802,,,,,,,,802,,,,,802,802,802,802,802,802', -',,,802,802,,,,,,,802,,,802,,,,,802,802,813,813,813,813,813,,,,813,813', -',,,813,,813,813,813,813,813,813,813,,,,,,813,813,813,813,813,813,813', -',,813,,,,,,813,813,,813,813,813,,813,813,813,813,813,,813,813,813,,813', -'813,,813,813,,,,,,,,,,,,,,,,,,,,,,813,,,813,,,813,,,813,,813,,,,813', -',,,,,,,813,,,,,813,813,813,813,813,813,,,,813,813,,,,832,832,832,813', -'832,,813,,832,832,,813,813,832,,832,832,832,832,832,832,832,,,,,,832', -'832,832,832,832,832,832,,,832,,,,,,,832,,,832,832,,832,832,832,832,832', -',832,832,832,,832,832,,832,832,,,,,,,,,,,,,,,,,,,,,,832,,,832,,,832', -',,832,,,,,,832,,,,,,,,832,,,,,832,832,832,832,832,832,,,,832,832,,,', -',,,832,,,832,,,,,832,832,834,834,834,834,834,,,,834,834,,,,834,,834', -'834,834,834,834,834,834,,,,,,834,834,834,834,834,834,834,,,834,,,,,', -'834,834,,834,834,834,,834,834,834,834,834,,834,834,834,,834,834,,834', -'834,,,,,,,,,,,,,,,,,,,,,,834,,,834,,,834,,,834,,834,,,,834,,,,,,,,834', -',,,,834,834,834,834,834,834,,,,834,834,,,,,,,834,,,834,,,,,834,834,835', -'835,835,835,835,,,,835,835,,,,835,,835,835,835,835,835,835,835,,,,,', -'835,835,835,835,835,835,835,,,835,,,,,,835,835,,835,835,835,,835,835', -'835,835,835,,835,835,835,,835,835,,835,835,,,,,,,,,,,,,,,,,,,,,,835', -',,835,,,835,,,835,,835,,,,835,,,,,,,,835,,,,,835,835,835,835,835,835', -',,,835,835,,,,862,862,862,835,862,,835,,862,862,,835,835,862,,862,862', -'862,862,862,862,862,,,,,,862,862,862,862,862,862,862,,,862,,,,,,,862', -',,862,862,,862,862,862,862,862,,862,862,862,,862,862,,862,862,,,,,,', -',,,,,,,,,,,,,,,862,,,862,,,862,,,862,,,,,,862,,,,,,,,862,,,,,862,862', -'862,862,862,862,,,,862,862,,,,876,876,876,862,876,,862,,876,876,,862', -'862,876,,876,876,876,876,876,876,876,,,,,,876,876,876,876,876,876,876', -',,876,,,,,,,876,,,876,876,,876,876,876,876,876,,876,876,876,,876,876', -',876,876,,,,,,,,,,,,,,,,,,,,,,876,,,876,,,876,,,876,,,,,,876,,,,,,,', -'876,,,,,876,876,876,876,876,876,,,,876,876,,,,877,877,877,876,877,,876', -',877,877,,876,876,877,,877,877,877,877,877,877,877,,,,,,877,877,877', -'877,877,877,877,,,877,,,,,,,877,,,877,877,,877,877,877,877,877,,877', -'877,877,,877,877,,877,877,,,,,,,,,,,,,,,,,,,,,,877,,,877,,,877,,,877', -',,,,,877,,,,,,,,877,,,,,877,877,877,877,877,877,,,,877,877,,,,881,881', -'881,877,881,,877,,881,881,,877,877,881,,881,881,881,881,881,881,881', -',,,,,881,881,881,881,881,881,881,,,881,,,,,,,881,,,881,881,,881,881', -'881,881,881,881,881,881,881,,881,881,,881,881,,,,,,,,,,,,,,,,,,,,,,881', -',,881,,,881,,,881,,,,881,,881,,,,,,,,881,,,,,881,881,881,881,881,881', -',,,881,881,,,,,,,881,,,881,,,,,881,881,886,886,886,886,886,,,,886,886', -',,,886,,886,886,886,886,886,886,886,,,,,,886,886,886,886,886,886,886', -',,886,,,,,,886,886,,886,886,886,,886,886,886,886,886,,886,886,886,,886', -'886,,886,886,,,,,,,,,,,,,,,,,,,,,,886,,,886,,,886,,,886,,886,,,,886', -',,,,,,,886,,,,,886,886,886,886,886,886,,,,886,886,,,,890,890,890,886', -'890,,886,,890,890,,886,886,890,,890,890,890,890,890,890,890,,,,,,890', -'890,890,890,890,890,890,,,890,,,,,,,890,,,890,890,,890,890,890,890,890', -',890,890,890,,890,890,,,,,,,,,,,,,,,,,,,,,,,,,890,,,890,,,890,,,890', -',,,,,,,,,,,,,,,,,,890,890,890,890,890,890,,,,890,890,,,,900,900,900', -'890,900,,890,,900,900,,890,890,900,,900,900,900,900,900,900,900,,,,', -',900,900,900,900,900,900,900,,,900,,,,,,,900,,,900,900,,900,900,900', -'900,900,,900,900,900,,900,900,,900,900,,,,,,,,,,,,,,,,,,,,,,900,,,900', -',,900,,,900,,900,,,,900,,,,,,,,900,,,,,900,900,900,900,900,900,,,,900', -'900,,,,,,,900,,,900,,,,,900,900,901,901,901,901,901,,,,901,901,,,,901', -',901,901,901,901,901,901,901,,,,,,901,901,901,901,901,901,901,,,901', -',,,,,901,901,,901,901,901,,901,901,901,901,901,,901,901,901,,901,901', -',901,901,,,,,,,,,,,,,,,,,,,,,,901,,,901,,,901,,,901,,901,,,,901,,,,', -',,,901,,,,,901,901,901,901,901,901,,,,901,901,,,,,,,901,,,901,,,,,901', -'901,904,904,904,904,904,,,,904,904,,,,904,,904,904,904,904,904,904,904', -',,,,,904,904,904,904,904,904,904,,,904,,,,,,904,904,,904,904,904,,904', -'904,904,904,904,,904,904,904,,904,904,,904,904,,,,,,,,,,,,,,,,,,,,,', -'904,,,904,,,904,,,904,,904,,,,904,,,,,,,,904,,,,,904,904,904,904,904', -'904,,,,904,904,,,,921,921,921,904,921,,904,,921,921,,904,904,921,,921', -'921,921,921,921,921,921,,,,,,921,921,921,921,921,921,921,,,921,,,,,', -',921,,,921,921,,921,921,921,921,921,,921,921,921,,921,921,,921,921,', -',,,,,,,,,,,,,,,,,,,,921,,,921,,,921,,,921,,921,,921,,921,,,,,,,,921', -',,,,921,921,921,921,921,921,,,,921,921,,,,,,,921,,,921,,,,,921,921,923', -'923,923,923,923,,,,923,923,,,,923,,923,923,923,923,923,923,923,,,,,', -'923,923,923,923,923,923,923,,,923,,,,,,923,923,,923,923,923,,923,923', -'923,923,923,,923,923,923,,923,923,,923,923,,,,,,,,,,,,,,,,,,,,,,923', -',,923,,,923,,,923,,923,,,,923,,,,,,,,923,,,,,923,923,923,923,923,923', -',,,923,923,,,,,,,923,,,923,,,,,923,923,930,930,930,930,930,,,,930,930', -',,,930,,930,930,930,930,930,930,930,,,,,,930,930,930,930,930,930,930', -',,930,,,,,,930,930,,930,930,930,,930,930,930,930,930,,930,930,930,,930', -'930,,930,930,,,,,,,,,,,,,,,,,,,,,,930,,,930,,,930,,,930,,930,,,,930', -',,,,,,,930,,,,,930,930,930,930,930,930,,,,930,930,,,,,,,930,,,930,,', -',,930,930,935,935,935,935,935,,,,935,935,,,,935,,935,935,935,935,935', -'935,935,,,,,,935,935,935,935,935,935,935,,,935,,,,,,935,935,,935,935', -'935,,935,935,935,935,935,,935,935,935,,935,935,,935,935,,,,,,,,,,,,', -',,,,,,,,,935,,,935,,,935,,,935,,935,,,,935,,,,,,,,935,,,,,935,935,935', -'935,935,935,,,,935,935,,,,,,,935,,,935,,,,,935,935,943,943,943,943,943', -',,,943,943,,,,943,,943,943,943,943,943,943,943,,,,,,943,943,943,943', -'943,943,943,,,943,,,,,,943,943,,943,943,943,,943,943,943,943,943,,943', -'943,943,,943,943,,943,943,,,,,,,,,,,,,,,,,,,,,,943,,,943,,,943,,,943', -',943,,,,943,,,,,,,,943,,,,,943,943,943,943,943,943,,,,943,943,,,,945', -'945,945,943,945,,943,,945,945,,943,943,945,,945,945,945,945,945,945', -'945,,,,,,945,945,945,945,945,945,945,,,945,,,,,,,945,,,945,945,,945', -'945,945,945,945,945,945,945,945,,945,945,,945,945,,,,,,,,,,,,,,,,,,', -',,,945,,,945,,,945,,,945,,945,,,,945,,,,,,,,945,,,,436,945,945,945,945', -'945,945,436,436,436,945,945,,436,436,,436,,945,,,945,,,,436,945,945', -',,,,,,,,436,436,,436,436,436,436,436,,,,,,,,,,,,,,,,,,,,,,,,436,436', -'436,436,436,436,436,436,436,436,436,436,436,436,436,438,,436,436,436', -',436,438,438,438,436,,,438,438,,438,436,,436,,436,436,436,436,436,436', -'436,,436,436,436,,,,,438,438,,438,438,438,438,438,436,436,,436,,436', -',,436,,436,,436,,,,,,,,,,,438,438,438,438,438,438,438,438,438,438,438', -'438,438,438,438,,,438,438,438,,438,,,,438,,,,,,,438,,438,,438,438,438', -'438,438,438,438,,438,,438,,,,,,,,,,,,,438,438,,438,,438,644,,438,,438', -',438,644,644,644,,,644,644,644,,644,,,,,,,,,644,644,644,,,,,,,,,644', -'644,,644,644,644,644,644,,,,,,,,,,,,,,,,,,,,,,,,644,644,644,644,644', -'644,644,644,644,644,644,644,644,644,644,,,644,644,644,,644,644,,,644', -',,644,,644,,644,,644,,644,644,644,644,644,644,644,,644,644,644,,,,,', -',,,,,,,644,644,644,644,,644,645,,644,,644,,644,645,645,645,,,645,645', -'645,,645,,,,,,,,,,645,645,,,,,,,,,645,645,,645,645,645,645,645,,,,,', -',,,,,,,,,,,,,,,,,,645,645,645,645,645,645,645,645,645,645,645,645,645', -'645,645,,,645,645,645,,645,645,,,645,,,645,,645,,645,,645,,645,645,645', -'645,645,645,645,,645,,645,,,,,,,,,,,,,645,645,645,645,,645,28,,645,', -'645,,645,28,28,28,,,28,28,28,,28,,,,,,,,,,28,28,,,,,,,,,28,28,,28,28', -'28,28,28,,,,,,,,,,,,,,,,,,,,,,,,28,28,28,28,28,28,28,28,28,28,28,28', -'28,28,28,,,28,28,28,,,28,,28,28,,,28,,28,,28,,28,,28,28,28,28,28,28', -'28,,28,,28,,,,,,,,,,,,,28,28,28,28,50,28,,,28,,28,50,50,50,,,50,50,50', -',50,,,,,,,,,,50,50,50,,,,,,,,50,50,,50,50,50,50,50,,,,,,,,,,,,,,,,,', -',,,,,,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,,,50,50,50,,,50,', -',50,,,50,,50,,50,,50,,50,50,50,50,50,50,50,,50,,50,,,,,,,,,,,,,50,50', -'50,50,494,50,,50,50,,50,494,494,494,,,494,494,494,,494,,,,,,,,,,494', -',,,,,,,,,494,494,,494,494,494,494,494,,,,,,,,,,,,,,495,,,,,,,495,495', -'495,,,495,495,495,,495,,,,,494,494,,,,495,,,494,,,,,494,494,495,495', -',495,495,495,495,495,,,,,918,,918,918,918,918,918,,494,,,,,,,,918,,', -',496,494,,494,,,494,496,496,496,495,495,496,496,496,,496,,495,918,918', -',,495,495,,496,918,918,918,918,,,,,,496,496,,496,496,496,496,496,,495', -',,,,,202,202,,,202,,,495,,495,,,495,202,202,918,202,202,202,202,202', -'202,202,,,202,202,496,496,,,202,202,202,202,496,,,,,496,496,,,,,,202', -'202,,202,202,202,202,202,202,202,202,202,202,202,,496,202,,,,,,,,,,', -',496,,496,,,496,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,,,,7', -'7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,,7,7,7,,7,,,,,,,,,7,7,,7,7,7', -'7,7,7,7,,,7,7,,,,,7,7,7,7,,,,,,,,,,,,,7,7,,7,7,7,7,7,7,7,7,7,7,7,,,7', -'7,,,,,,,,,,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,,,,8,8', -'8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,,8,8,,,8,,,,,,,,,8,8,,8,8,8,8', -'8,8,8,,,8,8,,,,,8,8,8,8,,,,,,,,,,,,,8,8,,8,8,8,8,8,8,8,8,8,8,8,,,8,8', -',,,,,,,,,8,411,411,411,411,411,411,411,411,411,411,411,411,411,411,411', -'411,411,411,411,411,411,411,411,411,,,,411,411,411,411,411,411,411,411', -'411,411,411,411,411,411,411,411,411,411,411,411,411,,411,411,,,411,', -',,,,,,,411,411,,411,411,411,411,411,411,411,,,411,411,,,,,411,411,411', -'411,,,,,,,,,,,,,411,411,,411,411,411,411,411,411,411,411,411,411,411', -',,411,411,,,,,,,,,,411,415,415,415,415,415,415,415,415,415,415,415,415', -'415,415,415,415,415,415,415,415,415,415,415,415,,,,415,415,415,415,415', -'415,415,415,415,415,415,415,415,415,415,415,415,415,415,415,415,,415', -'415,,,415,,,,,,,,,415,415,,415,415,415,415,415,415,415,,,415,415,,,', -',415,415,415,415,,,,,,,,,,,,,415,415,,415,415,415,415,415,415,415,415', -'415,415,415,,,415,415,,,,,,,,,,415,65,65,65,65,65,65,65,65,65,65,65', -'65,65,65,65,65,65,65,65,65,65,65,65,65,,,,65,65,65,65,65,65,65,65,65', -'65,65,65,65,65,65,65,65,65,65,65,65,,65,65,65,65,65,,65,,,,,,,65,65', -',65,65,65,65,65,65,65,,,65,65,,,,,65,65,65,65,,,,,,65,,,,,,,65,65,,65', -'65,65,65,65,65,65,65,65,65,65,,,65,79,79,79,79,79,79,79,79,79,79,79', -'79,79,79,79,79,79,79,79,79,79,79,79,79,,,,79,79,79,79,79,79,79,79,79', -'79,79,79,79,79,79,79,79,79,79,79,79,,79,79,79,79,79,,79,,,,,,,79,79', -',79,79,79,79,79,79,79,,,79,79,,,,,79,79,79,79,,,,,,,,,,,,,79,79,,79', -'79,79,79,79,79,79,79,79,79,79,,,79,192,192,192,192,192,192,192,192,192', -'192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,,,,192,192', -'192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192', -'192,192,,192,192,192,192,192,,192,,,,,,,192,192,,192,192,192,192,192', -'192,192,,,192,192,,,,,192,192,192,192,,,,,,,,,,,,,192,192,,192,192,192', -'192,192,192,192,192,192,192,192,,,192,766,766,766,766,766,766,766,766', -'766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,,,,766', -'766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766', -'766,766,766,,766,766,,,766,,,,,,,,,766,766,,766,766,766,766,766,766', -'766,,,766,766,,,,,766,766,766,766,,,,,,,,,,,,,766,766,,766,766,766,766', -'766,766,766,766,766,766,766,201,201,766,,201,,,,,,,,,201,201,,201,201', -'201,201,201,201,201,,,201,201,,,,,201,201,201,201,,,,,,201,,,,,,,201', -'201,,201,201,201,201,201,201,201,201,201,201,201,203,203,201,,203,,', -',,,,,,203,203,,203,203,203,203,203,203,203,,,203,203,,,,,203,203,203', -'203,,,,,,,,,,,,,203,203,,203,203,203,203,203,203,203,203,203,203,203', -'264,264,203,,264,,,,,,,,,264,264,,264,264,264,264,264,264,264,,,264', -'264,,,,,264,264,264,264,,,,,,,,,,,,,264,264,,264,264,264,264,264,264', -'264,264,264,264,264,265,265,264,,265,,,,,,,,,265,265,,265,265,265,265', -'265,265,265,,,265,265,,,,,265,265,265,265,,,,,,,,,,,,,265,265,,265,265', -'265,265,265,265,265,265,265,265,265,266,266,265,,266,,,,,,,,,266,266', -',266,266,266,266,266,266,266,,,266,266,,,,,266,266,266,266,,,,,,,,,', -',,,266,266,,266,266,266,266,266,266,266,266,266,266,266,449,449,266', -',449,,,,,,,,,449,449,,449,449,449,449,449,449,449,,,449,449,,,,,449', -'449,449,449,,,,,,449,,,,,,,449,449,,449,449,449,449,449,449,449,449', -'449,449,449,450,450,449,,450,,,,,,,,,450,450,,450,450,450,450,450,450', -'450,,,450,450,,,,,450,450,450,450,,,,,,,,,,,,,450,450,,450,450,450,450', -'450,450,450,450,450,450,450,521,521,450,,521,,,,,,,,,521,521,,521,521', -'521,521,521,521,521,,,521,521,,,,,521,521,521,521,,,,,,521,,,,,,,521', -'521,,521,521,521,521,521,521,521,521,521,521,521,522,522,521,,522,,', -',,,,,,522,522,,522,522,522,522,522,522,522,,,522,522,,,,,522,522,522', -'522,,,,,,,,,,,,,522,522,,522,522,522,522,522,522,522,522,522,522,522', -'524,524,522,,524,,,,,,,,,524,524,,524,524,524,524,524,524,524,,,524', -'524,,,,,524,524,524,524,,,,,,,,,,,,,524,524,,524,524,524,524,524,524', -'524,524,524,524,524,534,534,524,,534,,,,,,,,,534,534,,534,534,534,534', -'534,534,534,,,534,534,,,,,534,534,534,534,,,,,,534,,,,,,,534,534,,534', -'534,534,534,534,534,534,534,534,534,534,535,535,534,,535,,,,,,,,,535', -'535,,535,535,535,535,535,535,535,,,535,535,,,,,535,535,535,535,,,,,', -',,,,,,,535,535,,535,535,535,535,535,535,535,535,535,535,535,584,584', -'535,,584,,,,,,,,,584,584,,584,584,584,584,584,584,584,,,584,584,,,,', -'584,584,584,584,,,,,,584,,,,,,,584,584,,584,584,584,584,584,584,584', -'584,584,584,584,585,585,584,,585,,,,,,,,,585,585,,585,585,585,585,585', -'585,585,,,585,585,,,,,585,585,585,585,,,,,,,,,,,,,585,585,,585,585,585', -'585,585,585,585,585,585,585,585,591,591,585,,591,,,,,,,,,591,591,,591', -'591,591,591,591,591,591,,,591,591,,,,,591,591,591,591,,,,,,,,,,,,,591', -'591,,591,591,591,591,591,591,591,591,591,591,591,593,593,591,,593,,', -',,,,,,593,593,,593,593,593,593,593,593,593,,,593,593,,,,,593,593,593', -'593,,,,,,593,,,,,,,593,593,,593,593,593,593,593,593,593,593,593,593', -'593,822,822,593,,822,,,,,,,,,822,822,,822,822,822,822,822,822,822,,', -'822,822,,,,,822,822,822,822,,,,,,,,,,,,,822,822,,822,822,822,822,822', -'822,822,822,822,822,822,946,946,822,,946,,,,,,,,,946,946,,946,946,946', -'946,946,946,946,,,946,946,,,,,946,946,946,946,,,,,,946,,,,,,,946,946', -',946,946,946,946,946,946,946,946,946,946,946,947,947,946,,947,,,,,,', -',,947,947,,947,947,947,947,947,947,947,,,947,947,,,,,947,947,947,947', -',,,,,,,,,,,,947,947,,947,947,947,947,947,947,947,947,947,947,947,,,947' ] - racc_action_check = arr = ::Array.new(25031, 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 = [ - -2, 34, nil, 234, nil, 618, -19, 22922, 23046, -5, - -1, 15, 117, 414, 291, 243, nil, 125, 252, 900, - 186, nil, 379, 506, 633, 381, 13, 760, 22407, nil, - 900, 1027, 1154, nil, 108, 541, 237, 261, 1294, 1421, - 1548, 176, 467, nil, nil, nil, nil, nil, nil, nil, - 22537, nil, 1675, 1802, 1929, 29, 9932, 2056, 2183, nil, - nil, 2310, 2450, 2577, nil, 23418, nil, nil, nil, nil, - nil, -102, nil, nil, nil, nil, nil, 178, 220, 23531, - nil, nil, nil, 429, 2704, nil, nil, 2831, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 359, nil, 2971, - nil, nil, nil, 3111, 3238, 3365, 3492, 3632, 3772, nil, - 663, 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, - 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, nil, - nil, nil, 23644, 234, nil, 3912, 4039, 4166, 4293, 4420, - 4547, 23818, 22792, 23879, 4674, 4801, 4928, nil, 541, -49, - 319, 61, 240, 328, 5068, 5195, nil, nil, 5322, 363, - 5449, 5576, 5703, 5830, 5957, 6084, 6211, 6338, 6465, 6592, - 6719, 6846, 6973, 7100, 7227, 7354, 7481, 7608, 7735, 7862, - 7989, 8116, 8243, 8370, 8497, 8624, nil, nil, nil, 1294, - nil, 329, 339, nil, 8751, 389, 8878, nil, nil, nil, - nil, 9005, nil, nil, 23940, 24001, 24062, 383, 9132, 9259, - nil, nil, nil, nil, nil, nil, nil, 9386, 249, 745, - 390, 9526, 409, 438, 405, 9653, 9793, 73, 594, 497, - 196, 465, 440, 207, nil, 478, 471, nil, 9920, nil, - 586, 505, 531, 633, nil, 533, nil, 10047, nil, 10187, - 35, nil, 502, -103, 135, 537, 521, 262, 556, nil, - nil, -22, 10580, nil, nil, nil, 520, 545, nil, 564, - 567, nil, nil, nil, nil, nil, nil, nil, 3097, nil, - nil, nil, 648, nil, nil, 674, 806, -7, 36, 10314, - 10441, 324, 63, 596, -17, 668, 690, 37, 731, nil, - nil, 506, 704, nil, 721, nil, 65, nil, nil, 10568, - -12, 122, 360, 384, 385, 436, 509, 590, nil, 795, - nil, 10695, nil, 173, nil, 326, nil, -23, 649, 362, - nil, 653, -50, nil, 365, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 683, 23170, nil, nil, nil, 23294, 688, nil, nil, 760, - nil, 10822, 681, nil, 691, nil, nil, 1421, 728, 731, - 668, 761, 10949, nil, nil, nil, 21929, 757, 22011, nil, - 11076, 11203, 11330, nil, nil, nil, 1548, nil, nil, 24123, - 24184, 11457, 11584, 180, 11711, 11838, 11965, 115, nil, 3238, - 3365, 232, 879, 785, 787, 821, 824, 2457, 2584, 5068, - 3492, 3632, 3772, 3912, 4039, 4166, 4293, 4420, 4547, 4674, - 1133, 1232, 4801, 4928, 633, -34, nil, 12092, nil, 12219, - nil, 12346, nil, nil, 22667, 22724, 22792, -17, nil, 771, - nil, nil, 785, 787, nil, nil, 12473, 59, 203, 832, - nil, nil, 12613, 833, 797, nil, nil, 799, 12753, 845, - 12880, 24245, 24306, 13007, 24367, 223, 848, nil, nil, 821, - nil, 13134, 13261, 13388, 24428, 24489, 1675, 13515, 949, 951, - 871, nil, nil, 13642, nil, nil, 13769, nil, nil, nil, - nil, 13909, 14049, 874, nil, 1000, nil, nil, 14176, 12765, - nil, 772, nil, nil, 894, nil, 3126, nil, 859, 1198, - nil, nil, 14316, 977, nil, nil, 14456, 212, 227, 975, - 983, 14596, nil, 14723, 24550, 24611, 14850, 40, nil, 760, - nil, 24672, 14977, 24733, nil, nil, 15104, 387, 15231, nil, - 1166, nil, nil, nil, 45, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, -35, nil, nil, nil, 864, - nil, nil, nil, nil, nil, 15358, 866, 15485, 798, 203, - 15612, 15739, 900, nil, nil, nil, 15866, 903, nil, 15993, - 915, nil, 268, 307, 22143, 22275, 927, 928, 506, nil, - 16120, nil, 1040, nil, 16260, 897, nil, 939, 16387, nil, - nil, nil, nil, nil, nil, nil, nil, 16527, nil, 942, - 16654, 16781, 2310, 907, nil, nil, 947, 16921, 17061, nil, - 1154, -27, 17188, 914, nil, 957, 228, 235, 962, 313, - 327, 963, 960, 972, 17315, 1802, 997, 1001, 240, 1056, - 17442, nil, nil, 376, 960, 1068, nil, nil, 945, nil, - 958, 935, 1035, 963, 967, nil, nil, 1010, 3135, nil, - 869, nil, 1096, nil, nil, nil, nil, nil, 1102, nil, - 1103, 17569, 1020, 46, 52, 59, 102, 1021, 17696, 1027, - nil, 1028, 1026, 17836, 416, nil, -25, 17976, 18116, 9665, - 463, nil, nil, 1075, nil, 18243, nil, 998, 999, nil, - 1000, 1002, 1004, nil, 996, nil, 23757, 1043, 1050, 18383, - nil, nil, nil, 1929, 1007, 18510, 18637, 18764, nil, 2056, - nil, 2183, nil, nil, 2446, nil, 2573, nil, 18891, 19018, - 19145, 315, 319, 2704, nil, 1041, 1144, nil, nil, 1041, - nil, 1026, 19272, nil, 1053, 1161, 1072, 323, nil, nil, - nil, 1196, nil, 19412, 1081, 1125, nil, nil, nil, nil, - nil, nil, 24794, nil, 1127, nil, nil, nil, nil, 1407, - 1215, nil, 19539, 1220, 19679, 19819, nil, nil, 66, 56, - 988, 295, nil, 1221, nil, nil, 1222, 1225, 1109, nil, - nil, nil, -32, nil, nil, 807, 14188, nil, 842, nil, - 406, nil, 19946, nil, nil, nil, nil, nil, nil, nil, - 1127, 1113, nil, 2831, nil, 2971, 20073, 20200, nil, nil, - nil, 20327, 1114, nil, nil, nil, 20467, nil, nil, 72, - 20594, nil, 1154, 1125, nil, nil, 78, nil, 1249, 1250, - 20721, 20861, nil, nil, 21001, nil, nil, 1168, nil, 1132, - nil, nil, 1133, 1134, 1139, 1137, nil, nil, 22721, nil, - nil, 21128, nil, 21268, 91, 1112, 1221, 97, nil, nil, - 21408, nil, nil, nil, 460, 21548, 1268, nil, nil, 1081, - nil, nil, nil, 21688, 1273, 21815, 24855, 24916, 98, 899, - nil, nil, nil, 1272, nil, 1153, 1275, nil, 1190, 108, - 120, 198, 202, nil, nil, nil, nil, 218 ] - -racc_action_default = [ - -3, -555, -1, -543, -4, -6, -555, -555, -555, -555, - -555, -555, -555, -555, -277, -37, -38, -555, -555, -43, - -45, -46, -289, -327, -328, -50, -255, -382, -255, -65, - -10, -69, -76, -78, -555, -457, -555, -555, -555, -555, - -555, -545, -232, -270, -271, -272, -273, -274, -275, -276, - -533, -279, -555, -554, -525, -297, -554, -555, -555, -302, - -305, -543, -555, -555, -319, -555, -329, -330, -400, -401, - -402, -403, -404, -554, -407, -554, -554, -554, -554, -554, - -434, -440, -441, -555, -446, -447, -448, -449, -450, -451, - -452, -453, -454, -455, -456, -459, -460, -555, -2, -544, - -550, -551, -552, -555, -555, -555, -555, -555, -3, -13, - -555, -105, -106, -107, -108, -109, -110, -111, -114, -115, - -116, -117, -118, -119, -120, -121, -122, -123, -124, -125, - -126, -127, -128, -129, -130, -131, -132, -133, -134, -135, - -136, -137, -138, -139, -140, -141, -142, -143, -144, -145, - -146, -147, -148, -149, -150, -151, -152, -153, -154, -155, - -156, -157, -158, -159, -160, -161, -162, -163, -164, -165, - -166, -167, -168, -169, -170, -171, -172, -173, -174, -175, - -176, -177, -178, -179, -180, -181, -182, -183, -184, -185, - -186, -187, -555, -18, -112, -10, -555, -555, -555, -554, - -554, -555, -555, -555, -555, -555, -555, -41, -555, -457, - -555, -277, -555, -555, -10, -555, -42, -224, -555, -555, - -555, -555, -555, -555, -555, -555, -555, -555, -555, -555, - -555, -555, -555, -555, -555, -555, -555, -555, -555, -555, - -555, -555, -555, -555, -555, -555, -369, -371, -47, -233, - -248, -262, -262, -252, -555, -263, -555, -289, -327, -328, - -527, -555, -48, -49, -555, -555, -555, -55, -554, -555, - -296, -375, -383, -385, -63, -381, -64, -555, -543, -11, - -65, -10, -555, -555, -70, -73, -10, -457, -555, -555, - -277, -292, -545, -555, -331, -382, -555, -75, -555, -80, - -284, -442, -443, -555, -209, -210, -225, -555, -546, -10, - -545, -234, -545, -547, -547, -555, -555, -547, -555, -298, - -299, -555, -555, -342, -343, -350, -554, -491, -357, -554, - -554, -368, -490, -492, -493, -494, -495, -496, -555, -509, - -514, -515, -517, -518, -519, -555, -44, -555, -555, -555, - -555, -543, -555, -544, -457, -555, -555, -277, -555, -498, - -499, -101, -555, -103, -555, -277, -555, -316, -457, -555, - -105, -106, -143, -144, -160, -165, -172, -175, -322, -555, - -523, -555, -405, -555, -420, -555, -422, -555, -555, -555, - -412, -555, -555, -418, -555, -433, -435, -436, -437, -438, - -444, -445, 968, -5, -553, -19, -20, -21, -22, -23, - -555, -555, -15, -16, -17, -555, -555, -25, -34, -188, - -263, -555, -555, -26, -35, -36, -27, -190, -555, -555, - -534, -535, -554, -378, -536, -537, -534, -255, -535, -380, - -539, -540, -554, -534, -535, -33, -198, -39, -40, -555, - -555, -554, -554, -284, -555, -555, -555, -555, -295, -199, - -200, -201, -202, -203, -204, -205, -206, -211, -212, -213, - -214, -215, -216, -217, -218, -219, -220, -221, -222, -223, - -226, -227, -228, -229, -555, -554, -249, -555, -250, -555, - -260, -555, -264, -530, -255, -255, -255, -554, -56, -545, - -243, -244, -262, -262, -256, -257, -555, -554, -554, -555, - -291, -9, -544, -555, -66, -282, -81, -71, -555, -555, - -554, -555, -555, -554, -555, -284, -555, -442, -443, -77, - -82, -555, -555, -555, -555, -555, -230, -555, -392, -555, - -555, -235, -236, -549, -548, -238, -549, -287, -288, -526, - -339, -10, -10, -555, -341, -555, -359, -366, -555, -363, - -364, -555, -367, -491, -555, -500, -555, -502, -504, -508, - -516, -520, -10, -332, -333, -334, -10, -555, -555, -555, - -555, -10, -387, -554, -555, -555, -554, -284, -311, -101, - -102, -555, -554, -555, -314, -461, -555, -555, -555, -320, - -489, -324, -541, -542, -545, -406, -421, -424, -425, -427, - -408, -423, -409, -410, -411, -555, -414, -416, -417, -555, - -439, -7, -14, -113, -24, -555, -269, -555, -285, -286, - -555, -555, -59, -241, -242, -376, -555, -61, -379, -555, - -57, -377, -534, -535, -534, -535, -555, -555, -188, -294, - -555, -353, -555, -355, -10, -262, -261, -265, -555, -528, - -529, -51, -372, -52, -373, -53, -374, -10, -239, -555, - -245, -247, -43, -555, -254, -258, -555, -10, -10, -290, - -12, -66, -555, -74, -79, -555, -534, -535, -554, -538, - -283, -555, -555, -554, -555, -197, -207, -208, -555, -554, - -554, -280, -281, -547, -555, -555, -340, -351, -555, -358, - -554, -352, -555, -554, -554, -510, -497, -555, -555, -507, - -554, -335, -554, -303, -336, -337, -338, -306, -555, -309, - -555, -555, -555, -534, -535, -538, -283, -555, -555, -101, - -104, -538, -555, -10, -555, -463, -555, -10, -10, -489, - -555, -466, -467, -469, -470, -472, -473, -522, -522, -478, - -480, -480, -480, -488, -491, -512, -555, -555, -555, -10, - -413, -415, -419, -189, -267, -555, -555, -555, -30, -193, - -31, -194, -60, -32, -195, -62, -196, -58, -555, -555, - -555, -286, -285, -231, -354, -555, -555, -251, -266, -555, - -240, -262, -555, -259, -555, -555, -72, -285, -286, -83, - -293, -554, -348, -10, -393, -554, -394, -395, -237, -344, - -345, -365, -555, -284, -555, -361, -362, -501, -503, -506, - -555, -346, -555, -555, -10, -10, -308, -310, -555, -285, - -93, -555, -285, -555, -462, -317, -555, -555, -545, -465, - -468, -471, -555, -476, -477, -555, -555, -484, -555, -486, - -555, -487, -555, -325, -524, -426, -429, -430, -431, -432, - -555, -268, -28, -191, -29, -192, -555, -555, -356, -370, - -54, -246, -262, -384, -386, -8, -10, -399, -349, -555, - -555, -397, -283, -554, -505, -300, -555, -301, -555, -555, - -555, -10, -312, -315, -10, -321, -323, -555, -474, -522, - -521, -479, -480, -480, -480, -555, -513, -511, -489, -428, - -253, -555, -398, -10, -457, -555, -555, -277, -396, -360, - -10, -304, -307, -265, -554, -10, -555, -464, -475, -555, - -482, -483, -485, -10, -392, -554, -555, -555, -284, -554, - -388, -389, -390, -555, -318, -480, -555, -391, -555, -534, - -535, -538, -283, -347, -313, -481, -326, -285 ] - -clist = [ -'13,315,307,699,323,378,498,114,114,539,250,250,250,432,437,442,5,208', -'208,396,284,488,208,208,208,659,331,102,294,294,13,288,288,572,576,529', -'10,98,12,557,748,312,560,562,251,251,251,366,565,109,194,580,208,208', -'117,117,216,208,208,294,294,208,355,364,99,114,10,715,12,418,425,760', -'707,267,274,276,494,495,496,114,542,545,659,2,549,102,280,297,252,252', -'252,606,763,723,727,352,759,616,359,13,1,916,590,208,208,208,208,13', -'13,347,348,403,282,351,641,5,564,710,385,387,317,714,394,409,5,885,830', -'248,262,263,193,360,396,411,499,10,668,12,676,504,207,654,811,10,10', -'12,12,428,429,853,854,380,316,667,319,405,406,407,408,320,358,594,762', -'677,678,833,662,664,666,379,601,309,349,834,350,310,835,738,935,743', -'346,346,916,598,346,904,369,312,312,747,600,410,114,766,918,13,208,208', -'208,208,208,321,441,550,208,208,208,659,713,247,485,656,507,656,13,208', -'508,950,422,422,760,731,815,889,382,383,346,346,346,346,674,10,389,12', -'417,423,426,615,392,865,768,763,445,769,848,759,909,908,912,828,10,', -'12,526,,683,250,250,,,,432,437,,,250,,,208,208,553,540,488,541,,,565', -'208,728,719,,13,294,,,288,13,530,,,502,251,331,,,294,,,288,251,,938', -'102,,,,,,,13,,762,511,,,,,10,,12,,,10,771,12,,271,275,447,448,14,740', -',688,503,252,693,280,457,512,517,707,280,252,717,10,688,12,910,208,208', -'910,759,599,759,963,759,902,943,,14,290,290,513,715,641,294,,519,364', -',782,,501,505,102,785,951,,787,,208,509,,,579,893,,,760,595,,357,365', -'656,656,688,,,646,647,577,578,,,688,,,,957,763,114,,,759,114,,659,913', -'806,914,,,821,797,,825,826,565,14,,,,,,759,,14,14,312,312,,,843,,,,846', -'847,,441,208,208,622,,,,623,117,,669,,117,,,,,,685,,818,692,346,346', -',,,,,632,762,,,,637,,,,,640,,,,,,,,,,,,955,,,604,,208,530,312,,,312', -'13,,,294,,,288,,208,,441,208,901,14,,,680,,,732,,,737,441,,208,,894', -'742,661,663,665,14,,,,10,,12,13,13,655,,294,,,711,,,,,,,767,,,,,797', -'312,13,816,312,923,13,857,859,861,312,13,930,208,,441,208,10,10,12,12', -'441,208,271,35,275,208,,208,,795,724,724,,936,656,929,,10,703,12,14', -'10,,12,290,14,10,,12,,745,331,,35,287,287,,290,310,208,208,,952,,,208', -',,14,,,,956,,656,,,744,,,920,,,13,,354,368,,368,698,,283,,,,,13,778', -'780,,530,,,783,,,13,13,294,,,288,809,,,,,,,10,294,12,35,288,,,,,365', -',35,35,10,,12,863,,,,,,,10,10,12,12,,,346,,746,422,,,,,,,940,941,942', -'634,,,,801,638,208,,,,634,13,,,,13,13,,,,,838,,,,,688,,,,,,,,114,,844', -'13,845,,965,,849,,208,208,,10,,12,,10,10,12,12,,,35,841,,,,634,634,634', -',,,,,,,,10,,12,35,907,,,,13,872,874,,,,,,,441,,882,,,416,,,,,208,318', -'13,13,,,,,,,14,,,,283,,290,10,,12,,,,,,,,,,346,,,,724,,,,,10,10,12,12', -',35,,,,287,35,14,14,,896,,13,294,365,,925,,287,958,,,,,,,,13,14,35,13', -',14,,,,,14,,283,,,,,283,,,,10,13,12,,928,,,,13,,,312,,13,,10,,12,10', -',12,13,,208,,441,,,,,,,,346,,,,10,,12,,368,,,10,,12,,,10,,12,,420,424', -',,10,,12,,,14,,,,634,,,638,,634,,,,14,,,,,,,,,,14,14,,,,290,,,,,,,,', -',,,290,,,,,,,,,490,,492,,,,,493,,,,,,,,,,,,,,,,,,,,,,324,,,,,,,,,,,14', -',,,14,14,384,,386,386,390,393,386,,,,,,,,,,,,,869,14,,,,,,,35,,,,,,287', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,35,35,,,,,,368,,,,,,,,,,,,14,14,35', -'217,,,35,249,249,249,,35,,,,,,,,704,705,,,304,305,306,,,,,,,,,,,626', -',249,249,720,,,,722,,,,,730,,,14,,,,927,,,,,,,,,,,14,,,14,,,,,,,,,,', -',,,35,,,,,14,,,,,,,14,35,,,,14,657,,318,,660,35,35,14,500,,287,,,,,', -',,,673,796,,287,,,,,,,,,,,799,,,,,,,,,,804,805,,,,,,,,,,,,657,,,318', -',,,,,,556,,,556,556,35,,,,35,35,,,419,249,427,249,249,,,,446,,,,,,,', -',,35,,,,217,,459,460,461,462,463,464,465,466,467,468,469,470,471,472', -'473,474,475,476,477,478,479,480,481,482,483,484,,,,,,,870,,249,,249', -'774,35,,,249,,,,,,,249,249,,,,,,,,249,,35,35,,,,,,,,798,633,,,,,,,888', -',,633,657,318,,,,,,536,,,,,,,,,,898,899,,,,,,,,,,,,814,35,,,,924,,,', -',,,651,,,,35,,,35,,633,633,633,651,,,,,,,420,,,651,651,,,35,922,,,,', -',35,,,,,35,,,,934,851,,,35,,,,,,,,,,,,,,,,,871,944,,,,,,,949,,,,,953', -',,249,,,,,,,,,,,420,,,,,,,,,,,,,,,,,,,249,249,,446,648,427,,,,,,,,,', -',,,,,,,,,,,,,,,,,,,,,249,,249,,249,917,,,,,,,,,,,,,,672,,,,,318,,,,', -',,,,249,,,249,,,,,,,933,695,696,697,,,,,,,,,,249,,633,249,,,,633,933', -',,,,812,817,,,,,,,,,,556,,,556,556,,,,,,812,,812,,,,249,,,249,,,,,,249', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,773,,249,,,779,781,,,293,293,784,,,786', -',293,293,293,,,,,,,793,,,,,,,293,249,,,,,,,293,293,,887,,249,249,891', -',,,,,,,,,,,,,,,,,,,,,,,,,,,249,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,249,,,', -',,,,,,,,,,,,,,,556,,,,,249,,,,,,,,,,,,,,,,,,,,249,873,875,,,,,,,,,,', -'779,781,784,812,,,,,,,,,,,249,,,,812,,,,,,,,,,,,,,,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,,293,,,249,,293,,,,,,,,,,,,875,873', -',,,249,,,,,,,293,,,,,,,,,,,,249,293,,,,,,,,,293,,,,,,,,,,,249,,,,,,', -',,,,,,,,,,,,,,,,,249,,,,,,,,,,,,,,,,,,,,,,,,,,,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,,,,,,', -',,,,,,293,293,293,,,,,,,,,,,,293,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,,,,,,,,,,,293,,,,,,,,,,,,,,293,293,,,,293,,,,,,,,,293', -',,,,,,,,,293,,,,,,,,,,,,,,,,,,,,,293' ] - racc_goto_table = arr = ::Array.new(2674, 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 = [ -'21,22,51,10,104,47,35,48,48,8,29,29,29,33,33,33,7,21,21,47,41,61,21', -'21,21,154,107,83,52,52,21,21,21,77,77,43,17,4,20,109,84,29,109,109,54', -'54,54,46,145,14,14,80,21,21,50,50,18,21,21,52,52,21,21,21,6,48,17,147', -'20,24,24,110,106,34,34,34,33,33,33,48,55,55,154,2,55,83,38,42,56,56', -'56,129,141,79,79,4,108,129,17,21,1,151,45,21,21,21,21,21,21,16,16,5', -'39,16,60,7,148,111,126,126,56,111,126,7,7,12,78,31,31,31,15,19,47,27', -'58,17,59,20,63,64,26,36,11,17,17,20,20,22,22,142,142,72,73,36,74,16', -'16,16,16,76,81,82,111,36,36,11,60,60,60,85,86,87,88,89,90,26,91,92,93', -'94,26,26,151,95,26,96,97,29,29,98,99,2,48,100,101,21,21,21,21,21,21', -'102,48,103,21,21,21,154,105,112,113,62,115,62,21,21,116,117,54,54,110', -'118,119,120,124,125,26,26,26,26,62,17,127,20,18,18,18,128,130,131,132', -'141,18,133,135,108,137,139,144,149,17,,20,51,,43,29,29,,,,33,33,,,29', -',,21,21,104,51,61,51,,,145,21,80,145,,21,52,,,21,21,41,,,54,54,107,', -',52,,,21,54,,142,83,,,,,,,21,,111,4,,,,,17,,20,,,17,129,20,,57,57,26', -'26,23,45,,33,56,56,33,38,26,6,42,106,38,56,148,17,33,20,108,21,21,108', -'108,46,108,78,108,79,84,,23,23,23,39,147,60,52,,39,21,,35,,31,31,83', -'35,11,,35,,21,31,,,4,111,,,110,83,,23,23,62,62,33,,,22,22,16,16,,,33', -',,,10,141,48,,,108,48,,154,111,43,111,,,109,61,,109,109,145,23,,,,,', -'108,,23,23,29,29,,,8,,,,8,8,,48,21,21,14,,,,14,50,,51,,50,,,,,,22,,55', -'22,26,26,,,,,,34,111,,,,34,,,,,34,,,,,,,,,,,,111,,,26,,21,41,29,,,29', -'21,,,52,,,21,,21,,48,21,77,23,,,7,,,22,,,22,48,,21,,145,22,34,34,34', -'23,,,,17,,20,21,21,56,,52,,,21,,,,,,,51,,,,,61,29,21,24,29,77,21,143', -'143,143,29,21,77,21,,48,21,17,17,20,20,48,21,57,44,57,21,,21,,104,83', -'83,,8,62,109,,17,56,20,23,17,,20,23,23,17,,20,,83,107,,44,44,44,,23', -'26,21,21,,80,,,21,,,23,,,,8,,62,,,16,,,61,,,21,,44,44,,44,26,,9,,,,', -'21,18,18,,41,,,18,,,21,21,52,,,21,41,,,,,,,17,52,20,44,21,,,,,23,,44', -'44,17,,20,47,,,,,,,17,17,20,20,,,26,,26,54,,,,,,,143,143,143,57,,,,56', -'57,21,,,,57,21,,,,21,21,,,,,54,,,,,33,,,,,,,,48,,83,21,83,,143,,83,', -'21,21,,17,,20,,17,17,20,20,,,44,16,,,,57,57,57,,,,,,,,,17,,20,44,51', -',,,21,18,18,,,,,,,48,,54,,,9,,,,,21,25,21,21,,,,,,,23,,,,9,,23,17,,20', -',,,,,,,,,26,,,,83,,,,,17,17,20,20,,44,,,,44,44,23,23,,16,,21,52,23,', -'21,,44,22,,,,,,,,21,23,44,21,,23,,,,,23,,9,,,,,9,,,,17,21,20,,17,,,', -'21,,,29,,21,,17,,20,17,,20,21,,21,,48,,,,,,,,26,,,,17,,20,,44,,,17,', -'20,,,17,,20,,25,25,,,17,,20,,,23,,,,57,,,57,,57,,,,23,,,,,,,,,,23,23', -',,,23,,,,,,,,,,,,23,,,,,,,,,25,,25,,,,,25,,,,,,,,,,,,,,,,,,,,,,53,,', -',,,,,,,,23,,,,23,23,53,,53,53,53,53,53,,,,,,,,,,,,,23,23,,,,,,,44,,', -',,,44,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,23,,44,44,,,,,,44,,,,,,,,,,,,23', -'23,44,28,,,44,28,28,28,,44,,,,,,,,9,9,,,28,28,28,,,,,,,,,,,25,,28,28', -'9,,,,9,,,,,9,,,23,,,,23,,,,,,,,,,,23,,,23,,,,,,,,,,,,,,44,,,,,23,,,', -',,,23,44,,,,23,25,,25,,25,44,44,23,53,,44,,,,,,,,,25,9,,44,,,,,,,,,', -',9,,,,,,,,,,9,9,,,,,,,,,,,,25,,,25,,,,,,,53,,,53,53,44,,,,44,44,,,28', -'28,28,28,28,,,,28,,,,,,,,,,44,,,,28,,28,28,28,28,28,28,28,28,28,28,28', -'28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,,,,,,,9,,28,,28,25,44,', -',28,,,,,,,28,28,,,,,,,,28,,44,44,,,,,,,,25,53,,,,,,,9,,,53,25,25,,,', -',,28,,,,,,,,,,9,9,,,,,,,,,,,,25,44,,,,44,,,,,,,53,,,,44,,,44,,53,53', -'53,53,,,,,,,25,,,53,53,,,44,9,,,,,,44,,,,,44,,,,9,25,,,44,,,,,,,,,,', -',,,,,,25,9,,,,,,,9,,,,,9,,,28,,,,,,,,,,,25,,,,,,,,,,,,,,,,,,,28,28,', -'28,28,28,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,28,,28,,28,25,,,,,,,,,,,,,,28', -',,,,25,,,,,,,,,28,,,28,,,,,,,25,28,28,28,,,,,,,,,,28,,53,28,,,,53,25', -',,,,53,53,,,,,,,,,,53,,,53,53,,,,,,53,,53,,,,28,,,28,,,,,,28,,,,,,,', -',,,,,,,,,,,,,,,,,,,,,,,,,28,,28,,,28,28,,,37,37,28,,,28,,37,37,37,,', -',,,,28,,,,,,,37,28,,,,,,,37,37,,53,,28,28,53,,,,,,,,,,,,,,,,,,,,,,,', -',,,,28,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,28,,,,,,,,,,,,,,,,,,,53,,,,,28', -',,,,,,,,,,,,,,,,,,,28,28,28,,,,,,,,,,,28,28,28,53,,,,,,,,,,,28,,,,53', -',,,,,,,,,,,,,,37,,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37', -'37,37,37,37,37,37,37,37,37,,,,,,,,,37,,37,,,28,,37,,,,,,,,,,,,28,28', -',,,28,,,,,,,37,,,,,,,,,,,,28,37,,,,,,,,,37,,,,,,,,,,,28,,,,,,,,,,,,', -',,,,,,,,,,,28,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,37,37', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,37,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,37', -',,,,,,,,,,,,37,37,37,,,,,,,,,,37,,,37,,,,,,,,,,,,37,,,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,37,,,,,,,,,,,', -'37,,,,,,,,,,,37,,,,,,,,37,,,,,,,,,,,,37,37,,,,,,,,,,,37,,,,,,,,,,,,37', -',,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,37,', -',,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,37,37,37,,,,,,,,,,,,37,,,,,,,,,,,,', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,37,37', -',,,37,,,,,,,,,37,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,37' ] - racc_goto_check = arr = ::Array.new(2674, 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_goto_pointer = [ - nil, 100, 83, nil, 34, 12, 61, 16, -300, 632, - -535, -557, -686, nil, 42, 122, 52, 36, 38, 69, - 38, 0, -52, 330, -127, 779, 123, 24, 1149, -12, - nil, 105, nil, -188, 47, -261, -344, 1752, 56, 82, - nil, -11, 55, -263, 594, -260, -16, -60, 0, nil, - 47, -39, -3, 1006, 22, -233, 66, 300, -134, -363, - -328, -231, -276, -368, -130, nil, nil, nil, nil, nil, - nil, nil, 86, 98, 99, nil, 103, -314, -594, -484, - -301, 98, -205, 24, -560, 104, -209, 120, 113, -550, - 114, -551, -411, -724, -415, -184, -660, 122, -410, -188, - -408, -669, 145, -118, -52, -351, -483, -30, -504, -287, - -529, -438, 189, -36, nil, -60, -57, -717, -361, -478, - -592, nil, nil, nil, 153, 152, 43, 155, -152, -292, - 160, -529, -368, -366, nil, -505, nil, -606, nil, -605, - nil, -508, -608, -183, -608, -290, nil, -492, -222, -469, - nil, -757, nil, nil, -464 ] - -racc_goto_default = [ - nil, nil, nil, 3, nil, 4, 353, 279, nil, 538, - nil, 831, nil, 278, nil, nil, nil, 212, 16, 11, - 213, 303, nil, 211, nil, 255, 15, nil, 19, 20, - 21, nil, 25, 691, nil, nil, nil, 26, 29, nil, - 31, 34, 33, nil, 209, 363, nil, 116, 435, 115, - 69, nil, 42, 311, 313, nil, 314, 433, nil, nil, - 635, 486, 253, nil, nil, 269, 43, 44, 45, 46, - 47, 48, 49, nil, 270, 55, nil, nil, nil, nil, - nil, nil, nil, 573, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 326, 325, 709, 328, nil, - 329, 330, nil, nil, 439, nil, nil, nil, nil, nil, - nil, 68, 70, 71, 72, nil, nil, nil, nil, 611, - nil, nil, nil, nil, 395, 750, 753, 758, 755, 756, - 757, 911, nil, nil, 761, 337, 332, 339, nil, 567, - 568, 765, 342, 345, 260 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 143, :_reduce_none, - 2, 144, :_reduce_2, - 0, 145, :_reduce_3, - 1, 145, :_reduce_4, - 3, 145, :_reduce_5, - 1, 147, :_reduce_none, - 4, 147, :_reduce_7, - 4, 150, :_reduce_8, - 2, 151, :_reduce_9, - 0, 155, :_reduce_10, - 1, 155, :_reduce_11, - 3, 155, :_reduce_12, - 0, 169, :_reduce_13, - 4, 149, :_reduce_14, - 3, 149, :_reduce_15, - 3, 149, :_reduce_none, - 3, 149, :_reduce_17, - 2, 149, :_reduce_18, - 3, 149, :_reduce_19, - 3, 149, :_reduce_20, - 3, 149, :_reduce_21, - 3, 149, :_reduce_22, - 3, 149, :_reduce_23, - 4, 149, :_reduce_none, - 3, 149, :_reduce_25, - 3, 149, :_reduce_26, - 3, 149, :_reduce_27, - 6, 149, :_reduce_none, - 6, 149, :_reduce_none, - 5, 149, :_reduce_30, - 5, 149, :_reduce_none, - 5, 149, :_reduce_none, - 3, 149, :_reduce_none, - 3, 149, :_reduce_34, - 3, 149, :_reduce_35, - 3, 149, :_reduce_36, - 1, 149, :_reduce_none, - 1, 168, :_reduce_none, - 3, 168, :_reduce_39, - 3, 168, :_reduce_40, - 2, 168, :_reduce_41, - 2, 168, :_reduce_42, - 1, 168, :_reduce_none, - 1, 158, :_reduce_none, - 1, 160, :_reduce_none, - 1, 160, :_reduce_none, - 2, 160, :_reduce_47, - 2, 160, :_reduce_48, - 2, 160, :_reduce_49, - 1, 172, :_reduce_none, - 4, 172, :_reduce_none, - 4, 172, :_reduce_none, - 4, 172, :_reduce_none, - 4, 177, :_reduce_none, - 2, 171, :_reduce_55, - 3, 171, :_reduce_none, - 4, 171, :_reduce_57, - 5, 171, :_reduce_none, - 4, 171, :_reduce_59, - 5, 171, :_reduce_none, - 4, 171, :_reduce_61, - 5, 171, :_reduce_none, - 2, 171, :_reduce_63, - 2, 171, :_reduce_64, - 1, 161, :_reduce_65, - 3, 161, :_reduce_66, - 1, 181, :_reduce_67, - 3, 181, :_reduce_68, - 1, 180, :_reduce_69, - 2, 180, :_reduce_70, - 3, 180, :_reduce_71, - 5, 180, :_reduce_none, - 2, 180, :_reduce_73, - 4, 180, :_reduce_none, - 2, 180, :_reduce_75, - 1, 180, :_reduce_76, - 3, 180, :_reduce_none, - 1, 183, :_reduce_78, - 3, 183, :_reduce_79, - 2, 182, :_reduce_80, - 3, 182, :_reduce_81, - 1, 185, :_reduce_none, - 3, 185, :_reduce_none, - 1, 184, :_reduce_84, - 4, 184, :_reduce_85, - 3, 184, :_reduce_86, - 3, 184, :_reduce_none, - 3, 184, :_reduce_none, - 3, 184, :_reduce_none, - 2, 184, :_reduce_none, - 1, 184, :_reduce_none, - 1, 159, :_reduce_92, - 4, 159, :_reduce_93, - 4, 159, :_reduce_94, - 3, 159, :_reduce_95, - 3, 159, :_reduce_96, - 3, 159, :_reduce_97, - 3, 159, :_reduce_98, - 2, 159, :_reduce_99, - 1, 159, :_reduce_none, - 1, 187, :_reduce_none, - 2, 188, :_reduce_102, - 1, 188, :_reduce_103, - 3, 188, :_reduce_104, - 1, 189, :_reduce_none, - 1, 189, :_reduce_none, - 1, 189, :_reduce_none, - 1, 189, :_reduce_108, - 1, 189, :_reduce_109, - 1, 156, :_reduce_110, - 1, 156, :_reduce_none, - 1, 157, :_reduce_112, - 3, 157, :_reduce_113, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 3, 170, :_reduce_188, - 5, 170, :_reduce_189, - 3, 170, :_reduce_190, - 6, 170, :_reduce_191, - 6, 170, :_reduce_192, - 5, 170, :_reduce_193, - 5, 170, :_reduce_none, - 5, 170, :_reduce_none, - 5, 170, :_reduce_none, - 4, 170, :_reduce_none, - 3, 170, :_reduce_none, - 3, 170, :_reduce_199, - 3, 170, :_reduce_200, - 3, 170, :_reduce_201, - 3, 170, :_reduce_202, - 3, 170, :_reduce_203, - 3, 170, :_reduce_204, - 3, 170, :_reduce_205, - 3, 170, :_reduce_206, - 4, 170, :_reduce_207, - 4, 170, :_reduce_208, - 2, 170, :_reduce_209, - 2, 170, :_reduce_210, - 3, 170, :_reduce_211, - 3, 170, :_reduce_212, - 3, 170, :_reduce_213, - 3, 170, :_reduce_214, - 3, 170, :_reduce_215, - 3, 170, :_reduce_216, - 3, 170, :_reduce_217, - 3, 170, :_reduce_218, - 3, 170, :_reduce_219, - 3, 170, :_reduce_220, - 3, 170, :_reduce_221, - 3, 170, :_reduce_222, - 3, 170, :_reduce_223, - 2, 170, :_reduce_224, - 2, 170, :_reduce_225, - 3, 170, :_reduce_226, - 3, 170, :_reduce_227, - 3, 170, :_reduce_228, - 3, 170, :_reduce_229, - 3, 170, :_reduce_230, - 5, 170, :_reduce_231, - 1, 170, :_reduce_none, - 1, 167, :_reduce_none, - 1, 164, :_reduce_234, - 2, 164, :_reduce_235, - 2, 164, :_reduce_236, - 4, 164, :_reduce_237, - 2, 164, :_reduce_238, - 3, 199, :_reduce_239, - 2, 201, :_reduce_none, - 1, 202, :_reduce_241, - 1, 202, :_reduce_none, - 1, 200, :_reduce_243, - 1, 200, :_reduce_none, - 2, 200, :_reduce_245, - 4, 200, :_reduce_246, - 2, 200, :_reduce_247, - 1, 173, :_reduce_248, - 2, 173, :_reduce_249, - 2, 173, :_reduce_250, - 4, 173, :_reduce_251, - 1, 173, :_reduce_252, - 4, 205, :_reduce_none, - 1, 205, :_reduce_none, - 0, 207, :_reduce_255, - 2, 176, :_reduce_256, - 1, 206, :_reduce_none, - 2, 206, :_reduce_258, - 3, 206, :_reduce_259, - 2, 204, :_reduce_260, - 2, 203, :_reduce_261, - 0, 203, :_reduce_262, - 1, 196, :_reduce_263, - 2, 196, :_reduce_264, - 3, 196, :_reduce_265, - 4, 196, :_reduce_266, - 3, 166, :_reduce_267, - 4, 166, :_reduce_268, - 2, 166, :_reduce_269, - 1, 194, :_reduce_none, - 1, 194, :_reduce_none, - 1, 194, :_reduce_none, - 1, 194, :_reduce_none, - 1, 194, :_reduce_none, - 1, 194, :_reduce_none, - 1, 194, :_reduce_none, - 1, 194, :_reduce_none, - 1, 194, :_reduce_none, - 0, 229, :_reduce_279, - 4, 194, :_reduce_280, - 4, 194, :_reduce_281, - 3, 194, :_reduce_282, - 3, 194, :_reduce_283, - 2, 194, :_reduce_284, - 4, 194, :_reduce_285, - 4, 194, :_reduce_286, - 3, 194, :_reduce_287, - 3, 194, :_reduce_288, - 1, 194, :_reduce_289, - 4, 194, :_reduce_290, - 3, 194, :_reduce_291, - 1, 194, :_reduce_292, - 5, 194, :_reduce_293, - 4, 194, :_reduce_294, - 3, 194, :_reduce_295, - 2, 194, :_reduce_296, - 1, 194, :_reduce_none, - 2, 194, :_reduce_298, - 2, 194, :_reduce_299, - 6, 194, :_reduce_300, - 6, 194, :_reduce_301, - 0, 230, :_reduce_302, - 0, 231, :_reduce_303, - 7, 194, :_reduce_304, - 0, 232, :_reduce_305, - 0, 233, :_reduce_306, - 7, 194, :_reduce_307, - 5, 194, :_reduce_308, - 4, 194, :_reduce_309, - 5, 194, :_reduce_310, - 0, 234, :_reduce_311, - 0, 235, :_reduce_312, - 9, 194, :_reduce_313, - 0, 236, :_reduce_314, - 6, 194, :_reduce_315, - 0, 237, :_reduce_316, - 0, 238, :_reduce_317, - 8, 194, :_reduce_318, - 0, 239, :_reduce_319, - 0, 240, :_reduce_320, - 6, 194, :_reduce_321, - 0, 241, :_reduce_322, - 6, 194, :_reduce_323, - 0, 242, :_reduce_324, - 0, 243, :_reduce_325, - 9, 194, :_reduce_326, - 1, 194, :_reduce_327, - 1, 194, :_reduce_328, - 1, 194, :_reduce_329, - 1, 194, :_reduce_none, - 1, 163, :_reduce_none, - 1, 219, :_reduce_none, - 1, 219, :_reduce_none, - 1, 219, :_reduce_none, - 2, 219, :_reduce_none, - 1, 221, :_reduce_none, - 1, 221, :_reduce_none, - 1, 221, :_reduce_none, - 2, 218, :_reduce_339, - 3, 244, :_reduce_340, - 2, 244, :_reduce_341, - 1, 244, :_reduce_none, - 1, 244, :_reduce_none, - 3, 245, :_reduce_344, - 3, 245, :_reduce_345, - 1, 220, :_reduce_346, - 5, 220, :_reduce_347, - 1, 153, :_reduce_none, - 2, 153, :_reduce_349, - 1, 247, :_reduce_350, - 3, 247, :_reduce_351, - 3, 248, :_reduce_352, - 1, 178, :_reduce_none, - 2, 178, :_reduce_354, - 1, 178, :_reduce_355, - 3, 178, :_reduce_356, - 1, 249, :_reduce_357, - 2, 251, :_reduce_358, - 1, 251, :_reduce_359, - 6, 246, :_reduce_360, - 4, 246, :_reduce_361, - 4, 246, :_reduce_362, - 2, 246, :_reduce_363, - 2, 246, :_reduce_364, - 4, 246, :_reduce_365, - 2, 246, :_reduce_366, - 2, 246, :_reduce_367, - 1, 246, :_reduce_368, - 0, 255, :_reduce_369, - 5, 254, :_reduce_370, - 2, 174, :_reduce_371, - 4, 174, :_reduce_none, - 4, 174, :_reduce_none, - 4, 174, :_reduce_none, - 2, 217, :_reduce_375, - 4, 217, :_reduce_376, - 4, 217, :_reduce_377, - 3, 217, :_reduce_378, - 4, 217, :_reduce_379, - 3, 217, :_reduce_380, - 2, 217, :_reduce_381, - 1, 217, :_reduce_382, - 0, 257, :_reduce_383, - 5, 216, :_reduce_384, - 0, 258, :_reduce_385, - 5, 216, :_reduce_386, - 0, 260, :_reduce_387, - 6, 222, :_reduce_388, - 1, 259, :_reduce_389, - 1, 259, :_reduce_none, - 6, 152, :_reduce_391, - 0, 152, :_reduce_392, - 1, 261, :_reduce_393, - 1, 261, :_reduce_none, - 1, 261, :_reduce_none, - 2, 262, :_reduce_396, - 1, 262, :_reduce_397, - 2, 154, :_reduce_398, - 1, 154, :_reduce_none, - 1, 208, :_reduce_none, - 1, 208, :_reduce_none, - 1, 208, :_reduce_none, - 1, 209, :_reduce_403, - 1, 265, :_reduce_none, - 2, 265, :_reduce_405, - 3, 266, :_reduce_406, - 1, 266, :_reduce_407, - 3, 210, :_reduce_408, - 3, 211, :_reduce_409, - 3, 212, :_reduce_410, - 3, 212, :_reduce_411, - 1, 269, :_reduce_412, - 3, 269, :_reduce_413, - 1, 270, :_reduce_414, - 2, 270, :_reduce_415, - 3, 213, :_reduce_416, - 3, 213, :_reduce_417, - 1, 272, :_reduce_418, - 3, 272, :_reduce_419, - 1, 267, :_reduce_420, - 2, 267, :_reduce_421, - 1, 268, :_reduce_422, - 2, 268, :_reduce_423, - 1, 271, :_reduce_424, - 0, 274, :_reduce_425, - 3, 271, :_reduce_426, - 0, 275, :_reduce_427, - 4, 271, :_reduce_428, - 1, 273, :_reduce_429, - 1, 273, :_reduce_430, - 1, 273, :_reduce_431, - 1, 273, :_reduce_none, - 2, 192, :_reduce_433, - 1, 192, :_reduce_434, - 1, 276, :_reduce_none, - 1, 276, :_reduce_none, - 1, 276, :_reduce_none, - 1, 276, :_reduce_none, - 3, 264, :_reduce_439, - 1, 263, :_reduce_440, - 1, 263, :_reduce_441, - 2, 263, :_reduce_442, - 2, 263, :_reduce_443, - 2, 263, :_reduce_444, - 2, 263, :_reduce_445, - 1, 186, :_reduce_446, - 1, 186, :_reduce_447, - 1, 186, :_reduce_448, - 1, 186, :_reduce_449, - 1, 186, :_reduce_450, - 1, 186, :_reduce_451, - 1, 186, :_reduce_452, - 1, 186, :_reduce_453, - 1, 186, :_reduce_454, - 1, 186, :_reduce_455, - 1, 186, :_reduce_456, - 1, 214, :_reduce_457, - 1, 162, :_reduce_458, - 1, 165, :_reduce_459, - 1, 165, :_reduce_none, - 1, 224, :_reduce_461, - 3, 224, :_reduce_462, - 2, 224, :_reduce_463, - 4, 226, :_reduce_464, - 2, 226, :_reduce_465, - 1, 278, :_reduce_none, - 1, 278, :_reduce_none, - 2, 279, :_reduce_468, - 1, 279, :_reduce_469, - 1, 280, :_reduce_470, - 2, 281, :_reduce_471, - 1, 281, :_reduce_472, - 1, 282, :_reduce_473, - 3, 282, :_reduce_474, - 4, 283, :_reduce_475, - 2, 283, :_reduce_476, - 2, 283, :_reduce_477, - 1, 283, :_reduce_478, - 2, 285, :_reduce_479, - 0, 285, :_reduce_480, - 6, 277, :_reduce_481, - 4, 277, :_reduce_482, - 4, 277, :_reduce_483, - 2, 277, :_reduce_484, - 4, 277, :_reduce_485, - 2, 277, :_reduce_486, - 2, 277, :_reduce_487, - 1, 277, :_reduce_488, - 0, 277, :_reduce_489, - 1, 287, :_reduce_none, - 1, 287, :_reduce_491, - 1, 288, :_reduce_492, - 1, 288, :_reduce_493, - 1, 288, :_reduce_494, - 1, 288, :_reduce_495, - 1, 289, :_reduce_496, - 3, 289, :_reduce_497, - 1, 223, :_reduce_none, - 1, 223, :_reduce_none, - 1, 291, :_reduce_500, - 3, 291, :_reduce_none, - 1, 292, :_reduce_502, - 3, 292, :_reduce_503, - 1, 290, :_reduce_none, - 4, 290, :_reduce_none, - 3, 290, :_reduce_none, - 2, 290, :_reduce_none, - 1, 290, :_reduce_none, - 1, 252, :_reduce_509, - 3, 252, :_reduce_510, - 3, 293, :_reduce_511, - 1, 286, :_reduce_512, - 3, 286, :_reduce_513, - 1, 294, :_reduce_none, - 1, 294, :_reduce_none, - 2, 253, :_reduce_516, - 1, 253, :_reduce_517, - 1, 295, :_reduce_none, - 1, 295, :_reduce_none, - 2, 250, :_reduce_520, - 2, 284, :_reduce_521, - 0, 284, :_reduce_522, - 1, 227, :_reduce_523, - 4, 227, :_reduce_524, - 0, 215, :_reduce_525, - 2, 215, :_reduce_526, - 1, 198, :_reduce_527, - 3, 198, :_reduce_528, - 3, 296, :_reduce_529, - 2, 296, :_reduce_530, - 1, 179, :_reduce_none, - 1, 179, :_reduce_none, - 1, 179, :_reduce_none, - 1, 175, :_reduce_none, - 1, 175, :_reduce_none, - 1, 175, :_reduce_none, - 1, 175, :_reduce_none, - 1, 256, :_reduce_none, - 1, 256, :_reduce_none, - 1, 256, :_reduce_none, - 1, 228, :_reduce_none, - 1, 228, :_reduce_none, - 0, 146, :_reduce_none, - 1, 146, :_reduce_none, - 0, 193, :_reduce_none, - 1, 193, :_reduce_none, - 0, 197, :_reduce_none, - 1, 197, :_reduce_none, - 1, 197, :_reduce_none, - 1, 225, :_reduce_none, - 1, 225, :_reduce_none, - 1, 148, :_reduce_none, - 2, 148, :_reduce_none, - 0, 195, :_reduce_554 ] - -racc_reduce_n = 555 - -racc_shift_n = 968 - -racc_token_table = { - false => 0, - :error => 1, - :kCLASS => 2, - :kMODULE => 3, - :kDEF => 4, - :kUNDEF => 5, - :kBEGIN => 6, - :kRESCUE => 7, - :kENSURE => 8, - :kEND => 9, - :kIF => 10, - :kUNLESS => 11, - :kTHEN => 12, - :kELSIF => 13, - :kELSE => 14, - :kCASE => 15, - :kWHEN => 16, - :kWHILE => 17, - :kUNTIL => 18, - :kFOR => 19, - :kBREAK => 20, - :kNEXT => 21, - :kREDO => 22, - :kRETRY => 23, - :kIN => 24, - :kDO => 25, - :kDO_COND => 26, - :kDO_BLOCK => 27, - :kDO_LAMBDA => 28, - :kRETURN => 29, - :kYIELD => 30, - :kSUPER => 31, - :kSELF => 32, - :kNIL => 33, - :kTRUE => 34, - :kFALSE => 35, - :kAND => 36, - :kOR => 37, - :kNOT => 38, - :kIF_MOD => 39, - :kUNLESS_MOD => 40, - :kWHILE_MOD => 41, - :kUNTIL_MOD => 42, - :kRESCUE_MOD => 43, - :kALIAS => 44, - :kDEFINED => 45, - :klBEGIN => 46, - :klEND => 47, - :k__LINE__ => 48, - :k__FILE__ => 49, - :k__ENCODING__ => 50, - :tIDENTIFIER => 51, - :tFID => 52, - :tGVAR => 53, - :tIVAR => 54, - :tCONSTANT => 55, - :tLABEL => 56, - :tCVAR => 57, - :tNTH_REF => 58, - :tBACK_REF => 59, - :tSTRING_CONTENT => 60, - :tINTEGER => 61, - :tFLOAT => 62, - :tREGEXP_END => 63, - :tUPLUS => 64, - :tUMINUS => 65, - :tUMINUS_NUM => 66, - :tPOW => 67, - :tCMP => 68, - :tEQ => 69, - :tEQQ => 70, - :tNEQ => 71, - :tGEQ => 72, - :tLEQ => 73, - :tANDOP => 74, - :tOROP => 75, - :tMATCH => 76, - :tNMATCH => 77, - :tJSDOT => 78, - :tDOT => 79, - :tDOT2 => 80, - :tDOT3 => 81, - :tAREF => 82, - :tASET => 83, - :tLSHFT => 84, - :tRSHFT => 85, - :tCOLON2 => 86, - :tCOLON3 => 87, - :tOP_ASGN => 88, - :tASSOC => 89, - :tLPAREN => 90, - :tLPAREN2 => 91, - :tRPAREN => 92, - :tLPAREN_ARG => 93, - :ARRAY_BEG => 94, - :tRBRACK => 95, - :tLBRACE => 96, - :tLBRACE_ARG => 97, - :tSTAR => 98, - :tSTAR2 => 99, - :tAMPER => 100, - :tAMPER2 => 101, - :tTILDE => 102, - :tPERCENT => 103, - :tDIVIDE => 104, - :tPLUS => 105, - :tMINUS => 106, - :tLT => 107, - :tGT => 108, - :tPIPE => 109, - :tBANG => 110, - :tCARET => 111, - :tLCURLY => 112, - :tRCURLY => 113, - :tBACK_REF2 => 114, - :tSYMBEG => 115, - :tSTRING_BEG => 116, - :tXSTRING_BEG => 117, - :tREGEXP_BEG => 118, - :tWORDS_BEG => 119, - :tAWORDS_BEG => 120, - :tSTRING_DBEG => 121, - :tSTRING_DVAR => 122, - :tSTRING_END => 123, - :tSTRING => 124, - :tSYMBOL => 125, - :tNL => 126, - :tEH => 127, - :tCOLON => 128, - :tCOMMA => 129, - :tSPACE => 130, - :tSEMI => 131, - :tLAMBDA => 132, - :tLAMBEG => 133, - :tLBRACK2 => 134, - :tLBRACK => 135, - :tJSLBRACK => 136, - :tDSTAR => 137, - :tEQL => 138, - :tLOWEST => 139, - "-@NUM" => 140, - "+@NUM" => 141 } - -racc_nt_base = 142 - -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", - "kCLASS", - "kMODULE", - "kDEF", - "kUNDEF", - "kBEGIN", - "kRESCUE", - "kENSURE", - "kEND", - "kIF", - "kUNLESS", - "kTHEN", - "kELSIF", - "kELSE", - "kCASE", - "kWHEN", - "kWHILE", - "kUNTIL", - "kFOR", - "kBREAK", - "kNEXT", - "kREDO", - "kRETRY", - "kIN", - "kDO", - "kDO_COND", - "kDO_BLOCK", - "kDO_LAMBDA", - "kRETURN", - "kYIELD", - "kSUPER", - "kSELF", - "kNIL", - "kTRUE", - "kFALSE", - "kAND", - "kOR", - "kNOT", - "kIF_MOD", - "kUNLESS_MOD", - "kWHILE_MOD", - "kUNTIL_MOD", - "kRESCUE_MOD", - "kALIAS", - "kDEFINED", - "klBEGIN", - "klEND", - "k__LINE__", - "k__FILE__", - "k__ENCODING__", - "tIDENTIFIER", - "tFID", - "tGVAR", - "tIVAR", - "tCONSTANT", - "tLABEL", - "tCVAR", - "tNTH_REF", - "tBACK_REF", - "tSTRING_CONTENT", - "tINTEGER", - "tFLOAT", - "tREGEXP_END", - "tUPLUS", - "tUMINUS", - "tUMINUS_NUM", - "tPOW", - "tCMP", - "tEQ", - "tEQQ", - "tNEQ", - "tGEQ", - "tLEQ", - "tANDOP", - "tOROP", - "tMATCH", - "tNMATCH", - "tJSDOT", - "tDOT", - "tDOT2", - "tDOT3", - "tAREF", - "tASET", - "tLSHFT", - "tRSHFT", - "tCOLON2", - "tCOLON3", - "tOP_ASGN", - "tASSOC", - "tLPAREN", - "tLPAREN2", - "tRPAREN", - "tLPAREN_ARG", - "ARRAY_BEG", - "tRBRACK", - "tLBRACE", - "tLBRACE_ARG", - "tSTAR", - "tSTAR2", - "tAMPER", - "tAMPER2", - "tTILDE", - "tPERCENT", - "tDIVIDE", - "tPLUS", - "tMINUS", - "tLT", - "tGT", - "tPIPE", - "tBANG", - "tCARET", - "tLCURLY", - "tRCURLY", - "tBACK_REF2", - "tSYMBEG", - "tSTRING_BEG", - "tXSTRING_BEG", - "tREGEXP_BEG", - "tWORDS_BEG", - "tAWORDS_BEG", - "tSTRING_DBEG", - "tSTRING_DVAR", - "tSTRING_END", - "tSTRING", - "tSYMBOL", - "tNL", - "tEH", - "tCOLON", - "tCOMMA", - "tSPACE", - "tSEMI", - "tLAMBDA", - "tLAMBEG", - "tLBRACK2", - "tLBRACK", - "tJSLBRACK", - "tDSTAR", - "tEQL", - "tLOWEST", - "\"-@NUM\"", - "\"+@NUM\"", - "$start", - "program", - "top_compstmt", - "top_stmts", - "opt_terms", - "top_stmt", - "terms", - "stmt", - "bodystmt", - "compstmt", - "opt_rescue", - "opt_else", - "opt_ensure", - "stmts", - "fitem", - "undef_list", - "expr_value", - "lhs", - "command_call", - "mlhs", - "var_lhs", - "primary_value", - "aref_args", - "backref", - "mrhs", - "arg_value", - "expr", - "@1", - "arg", - "command", - "block_command", - "call_args", - "block_call", - "operation2", - "command_args", - "cmd_brace_block", - "opt_block_var", - "operation", - "mlhs_basic", - "mlhs_entry", - "mlhs_head", - "mlhs_item", - "mlhs_node", - "mlhs_post", - "variable", - "cname", - "cpath", - "fname", - "op", - "reswords", - "symbol", - "opt_nl", - "primary", - "none", - "args", - "trailer", - "assocs", - "paren_args", - "opt_call_args", - "rparen", - "opt_paren_args", - "opt_block_arg", - "block_arg", - "call_args2", - "open_args", - "@2", - "literal", - "strings", - "xstring", - "regexp", - "words", - "awords", - "var_ref", - "assoc_list", - "brace_block", - "method_call", - "lambda", - "then", - "if_tail", - "do", - "case_body", - "for_var", - "superclass", - "term", - "f_arglist", - "singleton", - "dot_or_colon", - "@3", - "@4", - "@5", - "@6", - "@7", - "@8", - "@9", - "@10", - "@11", - "@12", - "@13", - "@14", - "@15", - "@16", - "@17", - "f_larglist", - "lambda_body", - "block_param", - "f_block_optarg", - "f_block_opt", - "block_args_tail", - "f_block_arg", - "opt_block_args_tail", - "f_arg", - "f_rest_arg", - "do_block", - "@18", - "operation3", - "@19", - "@20", - "cases", - "@21", - "exc_list", - "exc_var", - "numeric", - "dsym", - "string", - "string1", - "string_contents", - "xstring_contents", - "word_list", - "word", - "string_content", - "qword_list", - "string_dvar", - "@22", - "@23", - "sym", - "f_args", - "kwrest_mark", - "f_kwrest", - "f_label", - "f_kw", - "f_kwarg", - "args_tail", - "opt_f_block_arg", - "opt_args_tail", - "f_optarg", - "f_norm_arg", - "f_bad_arg", - "f_arg_item", - "f_margs", - "f_marg", - "f_marg_list", - "f_opt", - "restarg_mark", - "blkarg_mark", - "assoc" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -# reduce 1 omitted - -module_eval(<<'.,.,', 'opal.y', 70) - def _reduce_2(val, _values, result) - result = new_compstmt val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 75) - def _reduce_3(val, _values, result) - result = new_block - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 79) - def _reduce_4(val, _values, result) - result = new_block val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 83) - def _reduce_5(val, _values, result) - val[0] << val[2] - result = val[0] - - result - end -.,., - -# reduce 6 omitted - -module_eval(<<'.,.,', 'opal.y', 90) - def _reduce_7(val, _values, result) - result = val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 95) - def _reduce_8(val, _values, result) - result = new_body(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 100) - def _reduce_9(val, _values, result) - result = new_compstmt val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 105) - def _reduce_10(val, _values, result) - result = new_block - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 109) - def _reduce_11(val, _values, result) - result = new_block val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 113) - def _reduce_12(val, _values, result) - val[0] << val[2] - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 119) - def _reduce_13(val, _values, result) - lexer.lex_state = :expr_fname - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 123) - def _reduce_14(val, _values, result) - result = new_alias(val[0], val[1], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 127) - def _reduce_15(val, _values, result) - result = s(:valias, value(val[1]).to_sym, value(val[2]).to_sym) - - result - end -.,., - -# reduce 16 omitted - -module_eval(<<'.,.,', 'opal.y', 132) - def _reduce_17(val, _values, result) - result = s(:valias, value(val[1]).to_sym, value(val[2]).to_sym) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 136) - def _reduce_18(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 140) - def _reduce_19(val, _values, result) - result = new_if(val[1], val[2], val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 144) - def _reduce_20(val, _values, result) - result = new_if(val[1], val[2], nil, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 148) - def _reduce_21(val, _values, result) - result = new_while(val[1], val[2], val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 152) - def _reduce_22(val, _values, result) - result = new_until(val[1], val[2], val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 156) - def _reduce_23(val, _values, result) - result = new_rescue_mod(val[1], val[0], val[2]) - - result - end -.,., - -# reduce 24 omitted - -module_eval(<<'.,.,', 'opal.y', 161) - def _reduce_25(val, _values, result) - result = new_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 165) - def _reduce_26(val, _values, result) - result = s(:masgn, val[0], s(:to_ary, val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 169) - def _reduce_27(val, _values, result) - result = new_op_asgn val[1], val[0], val[2] - - result - end -.,., - -# reduce 28 omitted - -# reduce 29 omitted - -module_eval(<<'.,.,', 'opal.y', 175) - def _reduce_30(val, _values, result) - result = s(:op_asgn2, val[0], op_to_setter(val[2]), value(val[3]).to_sym, val[4]) - - result - end -.,., - -# reduce 31 omitted - -# reduce 32 omitted - -# reduce 33 omitted - -module_eval(<<'.,.,', 'opal.y', 182) - def _reduce_34(val, _values, result) - result = new_assign val[0], val[1], s(:svalue, val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 186) - def _reduce_35(val, _values, result) - result = s(:masgn, val[0], s(:to_ary, val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 190) - def _reduce_36(val, _values, result) - result = s(:masgn, val[0], val[2]) - - result - end -.,., - -# reduce 37 omitted - -# reduce 38 omitted - -module_eval(<<'.,.,', 'opal.y', 197) - def _reduce_39(val, _values, result) - result = s(:and, val[0], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 201) - def _reduce_40(val, _values, result) - result = s(:or, val[0], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 205) - def _reduce_41(val, _values, result) - result = new_unary_call(['!', []], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 209) - def _reduce_42(val, _values, result) - result = new_unary_call(val[0], val[1]) - - result - end -.,., - -# reduce 43 omitted - -# reduce 44 omitted - -# reduce 45 omitted - -# reduce 46 omitted - -module_eval(<<'.,.,', 'opal.y', 219) - def _reduce_47(val, _values, result) - result = new_return(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 223) - def _reduce_48(val, _values, result) - result = new_break(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 227) - def _reduce_49(val, _values, result) - result = new_next(val[0], val[1]) - - result - end -.,., - -# reduce 50 omitted - -# reduce 51 omitted - -# reduce 52 omitted - -# reduce 53 omitted - -# reduce 54 omitted - -module_eval(<<'.,.,', 'opal.y', 239) - def _reduce_55(val, _values, result) - result = new_call(nil, val[0], val[1]) - - result - end -.,., - -# reduce 56 omitted - -module_eval(<<'.,.,', 'opal.y', 244) - def _reduce_57(val, _values, result) - result = new_js_call(val[0], val[2], val[3]) - - result - end -.,., - -# reduce 58 omitted - -module_eval(<<'.,.,', 'opal.y', 249) - def _reduce_59(val, _values, result) - result = new_call(val[0], val[2], val[3]) - - result - end -.,., - -# reduce 60 omitted - -module_eval(<<'.,.,', 'opal.y', 254) - def _reduce_61(val, _values, result) - result = new_call(val[0], val[2], val[3]) - - result - end -.,., - -# reduce 62 omitted - -module_eval(<<'.,.,', 'opal.y', 259) - def _reduce_63(val, _values, result) - result = new_super(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 263) - def _reduce_64(val, _values, result) - result = new_yield val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 268) - def _reduce_65(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 272) - def _reduce_66(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 277) - def _reduce_67(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 281) - def _reduce_68(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 286) - def _reduce_69(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 290) - def _reduce_70(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 294) - def _reduce_71(val, _values, result) - result = val[0] << s(:splat, val[2]) - - result - end -.,., - -# reduce 72 omitted - -module_eval(<<'.,.,', 'opal.y', 299) - def _reduce_73(val, _values, result) - result = val[0] << s(:splat) - - result - end -.,., - -# reduce 74 omitted - -module_eval(<<'.,.,', 'opal.y', 304) - def _reduce_75(val, _values, result) - result = s(:array, s(:splat, val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 308) - def _reduce_76(val, _values, result) - result = s(:array, s(:splat)) - - result - end -.,., - -# reduce 77 omitted - -module_eval(<<'.,.,', 'opal.y', 314) - def _reduce_78(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 318) - def _reduce_79(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 323) - def _reduce_80(val, _values, result) - result = s(:array, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 327) - def _reduce_81(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -# reduce 82 omitted - -# reduce 83 omitted - -module_eval(<<'.,.,', 'opal.y', 335) - def _reduce_84(val, _values, result) - result = new_assignable val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 339) - def _reduce_85(val, _values, result) - args = val[2] ? val[2] : [] - result = s(:attrasgn, val[0], :[]=, s(:arglist, *args)) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 344) - def _reduce_86(val, _values, result) - result = new_call val[0], val[2], [] - - result - end -.,., - -# reduce 87 omitted - -# reduce 88 omitted - -# reduce 89 omitted - -# reduce 90 omitted - -# reduce 91 omitted - -module_eval(<<'.,.,', 'opal.y', 354) - def _reduce_92(val, _values, result) - result = new_assignable val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 358) - def _reduce_93(val, _values, result) - result = new_js_attrasgn(val[0], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 362) - def _reduce_94(val, _values, result) - result = new_attrasgn(val[0], :[]=, val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 366) - def _reduce_95(val, _values, result) - result = new_attrasgn(val[0], op_to_setter(val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 370) - def _reduce_96(val, _values, result) - result = new_attrasgn(val[0], op_to_setter(val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 374) - def _reduce_97(val, _values, result) - result = new_attrasgn(val[0], op_to_setter(val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 378) - def _reduce_98(val, _values, result) - result = new_colon2(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 382) - def _reduce_99(val, _values, result) - result = new_colon3(val[0], val[1]) - - result - end -.,., - -# reduce 100 omitted - -# reduce 101 omitted - -module_eval(<<'.,.,', 'opal.y', 390) - def _reduce_102(val, _values, result) - result = new_colon3(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 394) - def _reduce_103(val, _values, result) - result = new_const(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 398) - def _reduce_104(val, _values, result) - result = new_colon2(val[0], val[1], val[2]) - - result - end -.,., - -# reduce 105 omitted - -# reduce 106 omitted - -# reduce 107 omitted - -module_eval(<<'.,.,', 'opal.y', 406) - def _reduce_108(val, _values, result) - lexer.lex_state = :expr_end - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 411) - def _reduce_109(val, _values, result) - lexer.lex_state = :expr_end - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 417) - def _reduce_110(val, _values, result) - result = new_sym(val[0]) - - result - end -.,., - -# reduce 111 omitted - -module_eval(<<'.,.,', 'opal.y', 423) - def _reduce_112(val, _values, result) - result = s(:undef, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 427) - def _reduce_113(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -# reduce 114 omitted - -# reduce 115 omitted - -# reduce 116 omitted - -# reduce 117 omitted - -# reduce 118 omitted - -# reduce 119 omitted - -# reduce 120 omitted - -# reduce 121 omitted - -# reduce 122 omitted - -# reduce 123 omitted - -# reduce 124 omitted - -# reduce 125 omitted - -# reduce 126 omitted - -# reduce 127 omitted - -# reduce 128 omitted - -# reduce 129 omitted - -# reduce 130 omitted - -# reduce 131 omitted - -# reduce 132 omitted - -# reduce 133 omitted - -# reduce 134 omitted - -# reduce 135 omitted - -# reduce 136 omitted - -# reduce 137 omitted - -# reduce 138 omitted - -# reduce 139 omitted - -# reduce 140 omitted - -# reduce 141 omitted - -# reduce 142 omitted - -# reduce 143 omitted - -# reduce 144 omitted - -# reduce 145 omitted - -# reduce 146 omitted - -# reduce 147 omitted - -# reduce 148 omitted - -# reduce 149 omitted - -# reduce 150 omitted - -# reduce 151 omitted - -# reduce 152 omitted - -# reduce 153 omitted - -# reduce 154 omitted - -# reduce 155 omitted - -# reduce 156 omitted - -# reduce 157 omitted - -# reduce 158 omitted - -# reduce 159 omitted - -# reduce 160 omitted - -# reduce 161 omitted - -# reduce 162 omitted - -# reduce 163 omitted - -# reduce 164 omitted - -# reduce 165 omitted - -# reduce 166 omitted - -# reduce 167 omitted - -# reduce 168 omitted - -# reduce 169 omitted - -# reduce 170 omitted - -# reduce 171 omitted - -# reduce 172 omitted - -# reduce 173 omitted - -# reduce 174 omitted - -# reduce 175 omitted - -# reduce 176 omitted - -# reduce 177 omitted - -# reduce 178 omitted - -# reduce 179 omitted - -# reduce 180 omitted - -# reduce 181 omitted - -# reduce 182 omitted - -# reduce 183 omitted - -# reduce 184 omitted - -# reduce 185 omitted - -# reduce 186 omitted - -# reduce 187 omitted - -module_eval(<<'.,.,', 'opal.y', 447) - def _reduce_188(val, _values, result) - result = new_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 451) - def _reduce_189(val, _values, result) - result = new_assign val[0], val[1], s(:rescue_mod, val[2], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 455) - def _reduce_190(val, _values, result) - result = new_op_asgn val[1], val[0], val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 459) - def _reduce_191(val, _values, result) - result = new_op_asgn1(val[0], val[2], val[4], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 463) - def _reduce_192(val, _values, result) - raise ".JS[...] #{val[4]} is not supported" - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 467) - def _reduce_193(val, _values, result) - result = s(:op_asgn2, val[0], op_to_setter(val[2]), value(val[3]).to_sym, val[4]) - - result - end -.,., - -# reduce 194 omitted - -# reduce 195 omitted - -# reduce 196 omitted - -# reduce 197 omitted - -# reduce 198 omitted - -module_eval(<<'.,.,', 'opal.y', 476) - def _reduce_199(val, _values, result) - result = new_irange(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 480) - def _reduce_200(val, _values, result) - result = new_erange(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 484) - def _reduce_201(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 488) - def _reduce_202(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 492) - def _reduce_203(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 496) - def _reduce_204(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 500) - def _reduce_205(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 504) - def _reduce_206(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 508) - def _reduce_207(val, _values, result) - result = new_call new_binary_call(new_int(val[1]), val[2], val[3]), [:"-@", []], [] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 512) - def _reduce_208(val, _values, result) - result = new_call new_binary_call(new_float(val[1]), val[2], val[3]), [:"-@", []], [] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 516) - def _reduce_209(val, _values, result) - result = new_call val[1], [:"+@", []], [] - if [:int, :float].include? val[1].type - result = val[1] - end - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 523) - def _reduce_210(val, _values, result) - result = new_call val[1], [:"-@", []], [] - if val[1].type == :int - val[1][1] = -val[1][1] - result = val[1] - elsif val[1].type == :float - val[1][1] = -val[1][1].to_f - result = val[1] - end - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 534) - def _reduce_211(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 538) - def _reduce_212(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 542) - def _reduce_213(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 546) - def _reduce_214(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 550) - def _reduce_215(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 554) - def _reduce_216(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 558) - def _reduce_217(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 562) - def _reduce_218(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 566) - def _reduce_219(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 570) - def _reduce_220(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 574) - def _reduce_221(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 578) - def _reduce_222(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 582) - def _reduce_223(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 586) - def _reduce_224(val, _values, result) - result = new_unary_call(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 590) - def _reduce_225(val, _values, result) - result = new_unary_call(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 594) - def _reduce_226(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 598) - def _reduce_227(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 602) - def _reduce_228(val, _values, result) - result = new_and(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 606) - def _reduce_229(val, _values, result) - result = new_or(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 610) - def _reduce_230(val, _values, result) - result = s(:defined, val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 614) - def _reduce_231(val, _values, result) - result = new_if(val[1], val[0], val[2], val[4]) - - result - end -.,., - -# reduce 232 omitted - -# reduce 233 omitted - -module_eval(<<'.,.,', 'opal.y', 622) - def _reduce_234(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 626) - def _reduce_235(val, _values, result) - result = [val[0]] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 630) - def _reduce_236(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 634) - def _reduce_237(val, _values, result) - val[0] << s(:hash, *val[2]) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 639) - def _reduce_238(val, _values, result) - result = [s(:hash, *val[0])] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 644) - def _reduce_239(val, _values, result) - result = val[1] - - result - end -.,., - -# reduce 240 omitted - -module_eval(<<'.,.,', 'opal.y', 651) - def _reduce_241(val, _values, result) - result = [] - - result - end -.,., - -# reduce 242 omitted - -module_eval(<<'.,.,', 'opal.y', 657) - def _reduce_243(val, _values, result) - result = [] - - result - end -.,., - -# reduce 244 omitted - -module_eval(<<'.,.,', 'opal.y', 662) - def _reduce_245(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 666) - def _reduce_246(val, _values, result) - result = val[0] - result << new_hash(nil, val[2], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 671) - def _reduce_247(val, _values, result) - result = [new_hash(nil, val[0], nil)] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 676) - def _reduce_248(val, _values, result) - result = [val[0]] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 680) - def _reduce_249(val, _values, result) - result = val[0] - add_block_pass val[0], val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 685) - def _reduce_250(val, _values, result) - result = [new_hash(nil, val[0], nil)] - add_block_pass result, val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 690) - def _reduce_251(val, _values, result) - result = val[0] - result << new_hash(nil, val[2], nil) - result << val[3] if val[3] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 696) - def _reduce_252(val, _values, result) - result = [] - add_block_pass result, val[0] - - result - end -.,., - -# reduce 253 omitted - -# reduce 254 omitted - -module_eval(<<'.,.,', 'opal.y', 704) - def _reduce_255(val, _values, result) - lexer.cmdarg_push 1 - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 708) - def _reduce_256(val, _values, result) - lexer.cmdarg_pop - result = val[1] - - result - end -.,., - -# reduce 257 omitted - -module_eval(<<'.,.,', 'opal.y', 715) - def _reduce_258(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 719) - def _reduce_259(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 724) - def _reduce_260(val, _values, result) - result = new_block_pass(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 729) - def _reduce_261(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 733) - def _reduce_262(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 738) - def _reduce_263(val, _values, result) - result = [val[0]] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 742) - def _reduce_264(val, _values, result) - result = [new_splat(val[0], val[1])] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 746) - def _reduce_265(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 750) - def _reduce_266(val, _values, result) - result = val[0] << new_splat(val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 755) - def _reduce_267(val, _values, result) - val[0] << val[2] - result = s(:array, *val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 760) - def _reduce_268(val, _values, result) - val[0] << s(:splat, val[3]) - result = s(:array, *val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 765) - def _reduce_269(val, _values, result) - result = s(:splat, val[1]) - - result - end -.,., - -# reduce 270 omitted - -# reduce 271 omitted - -# reduce 272 omitted - -# reduce 273 omitted - -# reduce 274 omitted - -# reduce 275 omitted - -# reduce 276 omitted - -# reduce 277 omitted - -# reduce 278 omitted - -module_eval(<<'.,.,', 'opal.y', 779) - def _reduce_279(val, _values, result) - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 783) - def _reduce_280(val, _values, result) - result = s(:begin, val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 787) - def _reduce_281(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 791) - def _reduce_282(val, _values, result) - result = new_paren(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 795) - def _reduce_283(val, _values, result) - result = new_colon2(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 799) - def _reduce_284(val, _values, result) - result = new_colon3(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 803) - def _reduce_285(val, _values, result) - result = new_call val[0], [:[], []], val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 807) - def _reduce_286(val, _values, result) - result = new_js_call val[0], [:[], []], val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 811) - def _reduce_287(val, _values, result) - result = new_array(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 815) - def _reduce_288(val, _values, result) - result = new_hash(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 819) - def _reduce_289(val, _values, result) - result = new_return(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 823) - def _reduce_290(val, _values, result) - result = new_yield val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 827) - def _reduce_291(val, _values, result) - result = s(:yield) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 831) - def _reduce_292(val, _values, result) - result = s(:yield) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 835) - def _reduce_293(val, _values, result) - result = s(:defined, val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 839) - def _reduce_294(val, _values, result) - result = new_unary_call(['!', []], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 843) - def _reduce_295(val, _values, result) - result = new_unary_call(['!', []], new_nil(val[0])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 847) - def _reduce_296(val, _values, result) - result = new_call(nil, val[0], []) - result << val[1] - - result - end -.,., - -# reduce 297 omitted - -module_eval(<<'.,.,', 'opal.y', 853) - def _reduce_298(val, _values, result) - val[0] << val[1] - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 858) - def _reduce_299(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 862) - def _reduce_300(val, _values, result) - result = new_if(val[0], val[1], val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 866) - def _reduce_301(val, _values, result) - result = new_if(val[0], val[1], val[4], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 870) - def _reduce_302(val, _values, result) - lexer.cond_push 1 - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 875) - def _reduce_303(val, _values, result) - lexer.cond_pop - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 879) - def _reduce_304(val, _values, result) - result = s(:while, val[2], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 883) - def _reduce_305(val, _values, result) - lexer.cond_push 1 - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 888) - def _reduce_306(val, _values, result) - lexer.cond_pop - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 892) - def _reduce_307(val, _values, result) - result = s(:until, val[2], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 896) - def _reduce_308(val, _values, result) - result = s(:case, val[1], *val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 900) - def _reduce_309(val, _values, result) - result = s(:case, nil, *val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 904) - def _reduce_310(val, _values, result) - result = s(:case, nil, val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 908) - def _reduce_311(val, _values, result) - lexer.cond_push 1 - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 913) - def _reduce_312(val, _values, result) - lexer.cond_pop - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 917) - def _reduce_313(val, _values, result) - result = s(:for, val[4], val[1], val[7]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 921) - def _reduce_314(val, _values, result) - # ... - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 925) - def _reduce_315(val, _values, result) - result = new_class val[0], val[1], val[2], val[4], val[5] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 929) - def _reduce_316(val, _values, result) - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 933) - def _reduce_317(val, _values, result) - # ... - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 937) - def _reduce_318(val, _values, result) - result = new_sclass(val[0], val[3], val[6], val[7]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 941) - def _reduce_319(val, _values, result) - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 945) - def _reduce_320(val, _values, result) - # ... - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 949) - def _reduce_321(val, _values, result) - result = new_module(val[0], val[2], val[4], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 953) - def _reduce_322(val, _values, result) - push_scope - lexer.lex_state = :expr_endfn - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 958) - def _reduce_323(val, _values, result) - result = new_def(val[0], nil, val[1], val[3], val[4], val[5]) - pop_scope - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 963) - def _reduce_324(val, _values, result) - lexer.lex_state = :expr_fname - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 967) - def _reduce_325(val, _values, result) - push_scope - lexer.lex_state = :expr_endfn - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 972) - def _reduce_326(val, _values, result) - result = new_def(val[0], val[1], val[4], val[6], val[7], val[8]) - pop_scope - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 977) - def _reduce_327(val, _values, result) - result = new_break(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 981) - def _reduce_328(val, _values, result) - result = s(:next) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 985) - def _reduce_329(val, _values, result) - result = s(:redo) - - result - end -.,., - -# reduce 330 omitted - -# reduce 331 omitted - -# reduce 332 omitted - -# reduce 333 omitted - -# reduce 334 omitted - -# reduce 335 omitted - -# reduce 336 omitted - -# reduce 337 omitted - -# reduce 338 omitted - -module_eval(<<'.,.,', 'opal.y', 1002) - def _reduce_339(val, _values, result) - result = new_call nil, [:lambda, []], [] - result << new_iter(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1008) - def _reduce_340(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1012) - def _reduce_341(val, _values, result) - result = nil - - result - end -.,., - -# reduce 342 omitted - -# reduce 343 omitted - -module_eval(<<'.,.,', 'opal.y', 1019) - def _reduce_344(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1023) - def _reduce_345(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1028) - def _reduce_346(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1032) - def _reduce_347(val, _values, result) - result = new_if(val[0], val[1], val[3], val[4]) - - result - end -.,., - -# reduce 348 omitted - -module_eval(<<'.,.,', 'opal.y', 1038) - def _reduce_349(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1043) - def _reduce_350(val, _values, result) - result = s(:block, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1047) - def _reduce_351(val, _values, result) - val[0] << val[2] - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1053) - def _reduce_352(val, _values, result) - result = new_assign(new_assignable(new_ident( - val[0])), val[1], val[2]) - - result - end -.,., - -# reduce 353 omitted - -module_eval(<<'.,.,', 'opal.y', 1060) - def _reduce_354(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1064) - def _reduce_355(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1068) - def _reduce_356(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1073) - def _reduce_357(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1078) - def _reduce_358(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1082) - def _reduce_359(val, _values, result) - nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1087) - def _reduce_360(val, _values, result) - result = new_block_args(val[0], val[2], val[4], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1091) - def _reduce_361(val, _values, result) - result = new_block_args(val[0], val[2], nil, val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1095) - def _reduce_362(val, _values, result) - result = new_block_args(val[0], nil, val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1099) - def _reduce_363(val, _values, result) - result = new_block_args(val[0], nil, nil, nil) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1103) - def _reduce_364(val, _values, result) - result = new_block_args(val[0], nil, nil, val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1107) - def _reduce_365(val, _values, result) - result = new_block_args(nil, val[0], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1111) - def _reduce_366(val, _values, result) - result = new_block_args(nil, val[0], nil, val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1115) - def _reduce_367(val, _values, result) - result = new_block_args(nil, nil, val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1119) - def _reduce_368(val, _values, result) - result = new_block_args(nil, nil, nil, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1124) - def _reduce_369(val, _values, result) - push_scope :block - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1129) - def _reduce_370(val, _values, result) - result = new_iter val[2], val[3] - pop_scope - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1135) - def _reduce_371(val, _values, result) - val[0] << val[1] - result = val[0] - - result - end -.,., - -# reduce 372 omitted - -# reduce 373 omitted - -# reduce 374 omitted - -module_eval(<<'.,.,', 'opal.y', 1144) - def _reduce_375(val, _values, result) - result = new_call(nil, val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1148) - def _reduce_376(val, _values, result) - result = new_call(val[0], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1152) - def _reduce_377(val, _values, result) - result = new_js_call(val[0], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1156) - def _reduce_378(val, _values, result) - result = new_call(val[0], [:call, []], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1160) - def _reduce_379(val, _values, result) - result = new_call(val[0], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1164) - def _reduce_380(val, _values, result) - result = new_call(val[0], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1168) - def _reduce_381(val, _values, result) - result = new_super(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1172) - def _reduce_382(val, _values, result) - result = new_super(val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1177) - def _reduce_383(val, _values, result) - push_scope :block - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1182) - def _reduce_384(val, _values, result) - result = new_iter val[2], val[3] - pop_scope - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1187) - def _reduce_385(val, _values, result) - push_scope :block - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1192) - def _reduce_386(val, _values, result) - result = new_iter val[2], val[3] - pop_scope - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1198) - def _reduce_387(val, _values, result) - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1202) - def _reduce_388(val, _values, result) - part = s(:when, s(:array, *val[2]), val[4]) - result = [part] - result.push(*val[5]) if val[5] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1209) - def _reduce_389(val, _values, result) - result = [val[0]] - - result - end -.,., - -# reduce 390 omitted - -module_eval(<<'.,.,', 'opal.y', 1215) - def _reduce_391(val, _values, result) - exc = val[1] || s(:array) - exc << new_assign(val[2], val[2], s(:gvar, '$!'.intern)) if val[2] - result = [s(:resbody, exc, val[4])] - result.push val[5].first if val[5] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1222) - def _reduce_392(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1227) - def _reduce_393(val, _values, result) - result = s(:array, val[0]) - - result - end -.,., - -# reduce 394 omitted - -# reduce 395 omitted - -module_eval(<<'.,.,', 'opal.y', 1234) - def _reduce_396(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1238) - def _reduce_397(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1243) - def _reduce_398(val, _values, result) - result = val[1].nil? ? s(:nil) : val[1] - - result - end -.,., - -# reduce 399 omitted - -# reduce 400 omitted - -# reduce 401 omitted - -# reduce 402 omitted - -module_eval(<<'.,.,', 'opal.y', 1253) - def _reduce_403(val, _values, result) - result = new_str val[0] - - result - end -.,., - -# reduce 404 omitted - -module_eval(<<'.,.,', 'opal.y', 1259) - def _reduce_405(val, _values, result) - result = str_append val[0], val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1264) - def _reduce_406(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1268) - def _reduce_407(val, _values, result) - result = s(:str, value(val[0])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1273) - def _reduce_408(val, _values, result) - result = new_xstr(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1278) - def _reduce_409(val, _values, result) - result = new_regexp val[1], val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1283) - def _reduce_410(val, _values, result) - result = s(:array) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1287) - def _reduce_411(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1292) - def _reduce_412(val, _values, result) - result = s(:array) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1296) - def _reduce_413(val, _values, result) - part = val[1] - part = s(:dstr, "", val[1]) if part.type == :evstr - result = val[0] << part - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1303) - def _reduce_414(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1307) - def _reduce_415(val, _values, result) - result = val[0].concat([val[1]]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1312) - def _reduce_416(val, _values, result) - result = s(:array) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1316) - def _reduce_417(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1321) - def _reduce_418(val, _values, result) - result = s(:array) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1325) - def _reduce_419(val, _values, result) - result = val[0] << s(:str, value(val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1330) - def _reduce_420(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1334) - def _reduce_421(val, _values, result) - result = str_append val[0], val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1339) - def _reduce_422(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1343) - def _reduce_423(val, _values, result) - result = str_append val[0], val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1348) - def _reduce_424(val, _values, result) - result = new_str_content(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1352) - def _reduce_425(val, _values, result) - result = lexer.strterm - lexer.strterm = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1357) - def _reduce_426(val, _values, result) - lexer.strterm = val[1] - result = new_evstr(val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1362) - def _reduce_427(val, _values, result) - lexer.cond_push 0 - lexer.cmdarg_push 0 - result = lexer.strterm - lexer.strterm = nil - lexer.lex_state = :expr_beg - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1370) - def _reduce_428(val, _values, result) - lexer.strterm = val[1] - lexer.cond_lexpop - lexer.cmdarg_lexpop - result = new_evstr(val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1378) - def _reduce_429(val, _values, result) - result = new_gvar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1382) - def _reduce_430(val, _values, result) - result = new_ivar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1386) - def _reduce_431(val, _values, result) - result = new_cvar(val[0]) - - result - end -.,., - -# reduce 432 omitted - -module_eval(<<'.,.,', 'opal.y', 1393) - def _reduce_433(val, _values, result) - result = new_sym(val[1]) - lexer.lex_state = :expr_end - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1398) - def _reduce_434(val, _values, result) - result = new_sym(val[0]) - - result - end -.,., - -# reduce 435 omitted - -# reduce 436 omitted - -# reduce 437 omitted - -# reduce 438 omitted - -module_eval(<<'.,.,', 'opal.y', 1408) - def _reduce_439(val, _values, result) - result = new_dsym val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1413) - def _reduce_440(val, _values, result) - result = new_int(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1417) - def _reduce_441(val, _values, result) - result = new_float(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1421) - def _reduce_442(val, _values, result) - result = negate_num(new_int(val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1425) - def _reduce_443(val, _values, result) - result = negate_num(new_float(val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1429) - def _reduce_444(val, _values, result) - result = new_int(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1433) - def _reduce_445(val, _values, result) - result = new_float(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1438) - def _reduce_446(val, _values, result) - result = new_ident(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1442) - def _reduce_447(val, _values, result) - result = new_ivar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1446) - def _reduce_448(val, _values, result) - result = new_gvar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1450) - def _reduce_449(val, _values, result) - result = new_const(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1454) - def _reduce_450(val, _values, result) - result = new_cvar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1458) - def _reduce_451(val, _values, result) - result = new_nil(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1462) - def _reduce_452(val, _values, result) - result = new_self(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1466) - def _reduce_453(val, _values, result) - result = new_true(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1470) - def _reduce_454(val, _values, result) - result = new_false(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1474) - def _reduce_455(val, _values, result) - result = new___FILE__(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1478) - def _reduce_456(val, _values, result) - result = new___LINE__(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1483) - def _reduce_457(val, _values, result) - result = new_var_ref(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1488) - def _reduce_458(val, _values, result) - result = new_assignable val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1493) - def _reduce_459(val, _values, result) - result = s(:nth_ref, value(val[0])) - - result - end -.,., - -# reduce 460 omitted - -module_eval(<<'.,.,', 'opal.y', 1499) - def _reduce_461(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1503) - def _reduce_462(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1507) - def _reduce_463(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1512) - def _reduce_464(val, _values, result) - result = val[1] - lexer.lex_state = :expr_beg - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1517) - def _reduce_465(val, _values, result) - result = val[0] - lexer.lex_state = :expr_beg - - result - end -.,., - -# reduce 466 omitted - -# reduce 467 omitted - -module_eval(<<'.,.,', 'opal.y', 1526) - def _reduce_468(val, _values, result) - result = new_kwrestarg(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1530) - def _reduce_469(val, _values, result) - result = new_kwrestarg() - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1535) - def _reduce_470(val, _values, result) - result = new_sym(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1540) - def _reduce_471(val, _values, result) - result = new_kwoptarg(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1544) - def _reduce_472(val, _values, result) - result = new_kwarg(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1549) - def _reduce_473(val, _values, result) - result = [val[0]] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1553) - def _reduce_474(val, _values, result) - result = val[0] - result << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1559) - def _reduce_475(val, _values, result) - result = new_args_tail(val[0], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1563) - def _reduce_476(val, _values, result) - result = new_args_tail(val[0], nil, val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1567) - def _reduce_477(val, _values, result) - result = new_args_tail(nil, val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1571) - def _reduce_478(val, _values, result) - result = new_args_tail(nil, nil, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1576) - def _reduce_479(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1580) - def _reduce_480(val, _values, result) - result = new_args_tail(nil, nil, nil) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1585) - def _reduce_481(val, _values, result) - result = new_args(val[0], val[2], val[4], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1589) - def _reduce_482(val, _values, result) - result = new_args(val[0], val[2], nil, val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1593) - def _reduce_483(val, _values, result) - result = new_args(val[0], nil, val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1597) - def _reduce_484(val, _values, result) - result = new_args(val[0], nil, nil, val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1601) - def _reduce_485(val, _values, result) - result = new_args(nil, val[0], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1605) - def _reduce_486(val, _values, result) - result = new_args(nil, val[0], nil, val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1609) - def _reduce_487(val, _values, result) - result = new_args(nil, nil, val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1613) - def _reduce_488(val, _values, result) - result = new_args(nil, nil, nil, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1617) - def _reduce_489(val, _values, result) - result = new_args(nil, nil, nil, nil) - - result - end -.,., - -# reduce 490 omitted - -module_eval(<<'.,.,', 'opal.y', 1623) - def _reduce_491(val, _values, result) - result = value(val[0]).to_sym - scope.add_local result - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1629) - def _reduce_492(val, _values, result) - raise 'formal argument cannot be a constant' - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1633) - def _reduce_493(val, _values, result) - raise 'formal argument cannot be an instance variable' - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1637) - def _reduce_494(val, _values, result) - raise 'formal argument cannot be a class variable' - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1641) - def _reduce_495(val, _values, result) - raise 'formal argument cannot be a global variable' - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1646) - def _reduce_496(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1650) - def _reduce_497(val, _values, result) - result = val[1] - - result - end -.,., - -# reduce 498 omitted - -# reduce 499 omitted - -module_eval(<<'.,.,', 'opal.y', 1658) - def _reduce_500(val, _values, result) - result = s(:lasgn, val[0]) - - result - end -.,., - -# reduce 501 omitted - -module_eval(<<'.,.,', 'opal.y', 1664) - def _reduce_502(val, _values, result) - result = s(:array, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1668) - def _reduce_503(val, _values, result) - val[0] << val[2] - result = val[0] - - result - end -.,., - -# reduce 504 omitted - -# reduce 505 omitted - -# reduce 506 omitted - -# reduce 507 omitted - -# reduce 508 omitted - -module_eval(<<'.,.,', 'opal.y', 1680) - def _reduce_509(val, _values, result) - result = [val[0]] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1684) - def _reduce_510(val, _values, result) - val[0] << val[2] - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1690) - def _reduce_511(val, _values, result) - result = new_assign(new_assignable(new_ident(val[0])), val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1695) - def _reduce_512(val, _values, result) - result = s(:block, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1699) - def _reduce_513(val, _values, result) - result = val[0] - val[0] << val[2] - - result - end -.,., - -# reduce 514 omitted - -# reduce 515 omitted - -module_eval(<<'.,.,', 'opal.y', 1708) - def _reduce_516(val, _values, result) - result = "*#{value(val[1])}".to_sym - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1712) - def _reduce_517(val, _values, result) - result = :"*" - - result - end -.,., - -# reduce 518 omitted - -# reduce 519 omitted - -module_eval(<<'.,.,', 'opal.y', 1720) - def _reduce_520(val, _values, result) - result = "&#{value(val[1])}".to_sym - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1725) - def _reduce_521(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1729) - def _reduce_522(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1734) - def _reduce_523(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1738) - def _reduce_524(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1743) - def _reduce_525(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1747) - def _reduce_526(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1752) - def _reduce_527(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1756) - def _reduce_528(val, _values, result) - result = val[0].push(*val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1761) - def _reduce_529(val, _values, result) - result = [val[0], val[2]] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1765) - def _reduce_530(val, _values, result) - result = [new_sym(val[0]), val[1]] - - result - end -.,., - -# reduce 531 omitted - -# reduce 532 omitted - -# reduce 533 omitted - -# reduce 534 omitted - -# reduce 535 omitted - -# reduce 536 omitted - -# reduce 537 omitted - -# reduce 538 omitted - -# reduce 539 omitted - -# reduce 540 omitted - -# reduce 541 omitted - -# reduce 542 omitted - -# reduce 543 omitted - -# reduce 544 omitted - -# reduce 545 omitted - -# reduce 546 omitted - -# reduce 547 omitted - -# reduce 548 omitted - -# reduce 549 omitted - -# reduce 550 omitted - -# reduce 551 omitted - -# reduce 552 omitted - -# reduce 553 omitted - -module_eval(<<'.,.,', 'opal.y', 1802) - def _reduce_554(val, _values, result) - result = nil - - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module Opal diff --git a/test/racc/regress/php_serialization b/test/racc/regress/php_serialization deleted file mode 100644 index e412db1cc8..0000000000 --- a/test/racc/regress/php_serialization +++ /dev/null @@ -1,336 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - -require 'php_serialization/tokenizer' - -module PhpSerialization - class Unserializer < Racc::Parser - -module_eval(<<'...end php_serialization.y/module_eval...', 'php_serialization.y', 84) - def initialize(tokenizer_klass = Tokenizer) - @tokenizer_klass = tokenizer_klass - end - - def run(string) - @tokenizer = @tokenizer_klass.new(string) - yyparse(@tokenizer, :each) - return @object - ensure - @tokenizer = nil - end - - def next_token - @tokenizer.next_token - end -...end php_serialization.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 9, 10, 16, 17, 11, 12, 13, 18, 14, 9, - 10, 15, 19, 11, 12, 13, 20, 14, 21, 46, - 15, 9, 10, 22, 23, 11, 12, 13, 24, 14, - 9, 10, 15, 25, 11, 12, 13, 26, 14, 27, - 51, 15, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 43, 47, 49 ] - -racc_action_check = [ - 0, 0, 1, 2, 0, 0, 0, 3, 0, 42, - 42, 0, 4, 42, 42, 42, 5, 42, 6, 42, - 42, 45, 45, 10, 11, 45, 45, 45, 12, 45, - 50, 50, 45, 13, 50, 50, 50, 14, 50, 15, - 50, 50, 16, 22, 23, 24, 25, 26, 27, 32, - 33, 34, 35, 36, 37, 39, 41, 43, 47 ] - -racc_action_pointer = [ - -3, 2, 1, 5, 10, 14, 16, nil, nil, nil, - 18, 19, 23, 28, 32, 34, 42, nil, nil, nil, - nil, nil, 37, 38, 39, 40, 41, 42, nil, nil, - nil, nil, 44, 45, 46, 42, 43, 42, nil, 50, - nil, 50, 6, 52, nil, 18, nil, 46, nil, nil, - 27, nil ] - -racc_action_default = [ - -18, -18, -18, -18, -18, -18, -18, -6, -7, -8, - -18, -18, -18, -18, -18, -18, -18, -1, -2, -3, - -4, -5, -18, -18, -18, -18, -18, -18, 52, -9, - -10, -11, -18, -18, -18, -18, -18, -18, -12, -18, - -15, -18, -18, -18, -14, -18, -17, -18, -16, -15, - -18, -13 ] - -racc_goto_table = [ - 1, 42, nil, nil, nil, nil, nil, nil, nil, nil, - 50, 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, 48 ] - -racc_goto_check = [ - 1, 9, nil, nil, nil, nil, nil, nil, nil, nil, - 9, 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, 1 ] - -racc_goto_pointer = [ - nil, 0, nil, nil, nil, nil, nil, nil, nil, -39, - nil ] - -racc_goto_default = [ - nil, 45, 2, 3, 4, 5, 6, 7, 8, nil, - 44 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 2, 16, :_reduce_1, - 2, 16, :_reduce_2, - 2, 16, :_reduce_3, - 2, 16, :_reduce_4, - 2, 16, :_reduce_5, - 1, 16, :_reduce_6, - 1, 16, :_reduce_7, - 1, 17, :_reduce_8, - 3, 18, :_reduce_9, - 3, 19, :_reduce_10, - 3, 20, :_reduce_11, - 5, 21, :_reduce_12, - 11, 23, :_reduce_13, - 2, 24, :_reduce_14, - 0, 24, :_reduce_15, - 2, 25, :_reduce_16, - 7, 22, :_reduce_17 ] - -racc_reduce_n = 18 - -racc_shift_n = 52 - -racc_token_table = { - false => 0, - :error => 1, - ";" => 2, - "N" => 3, - "b" => 4, - ":" => 5, - :NUMBER => 6, - "i" => 7, - "d" => 8, - "s" => 9, - :STRING => 10, - "O" => 11, - "{" => 12, - "}" => 13, - "a" => 14 } - -racc_nt_base = 15 - -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", - "\";\"", - "\"N\"", - "\"b\"", - "\":\"", - "NUMBER", - "\"i\"", - "\"d\"", - "\"s\"", - "STRING", - "\"O\"", - "\"{\"", - "\"}\"", - "\"a\"", - "$start", - "data", - "null", - "bool", - "integer", - "double", - "string", - "assoc_array", - "object", - "attribute_list", - "attribute" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'php_serialization.y', 6) - def _reduce_1(val, _values, result) - @object = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 7) - def _reduce_2(val, _values, result) - @object = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 8) - def _reduce_3(val, _values, result) - @object = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 9) - def _reduce_4(val, _values, result) - @object = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 10) - def _reduce_5(val, _values, result) - @object = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 11) - def _reduce_6(val, _values, result) - @object = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 12) - def _reduce_7(val, _values, result) - @object = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 15) - def _reduce_8(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 18) - def _reduce_9(val, _values, result) - result = Integer(val[2]) > 0 - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 21) - def _reduce_10(val, _values, result) - result = Integer(val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 24) - def _reduce_11(val, _values, result) - result = Float(val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 27) - def _reduce_12(val, _values, result) - result = val[4] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 32) - def _reduce_13(val, _values, result) - if eval("defined?(#{val[4]})") - result = Object.const_get(val[4]).new - - val[9].each do |(attr_name, value)| - # Protected and private attributes will have a \0..\0 prefix - attr_name = attr_name.gsub(/\A\\0[^\\]+\\0/, '') - result.instance_variable_set("@#{attr_name}", value) - end - else - klass_name = val[4].gsub(/^Struct::/, '') - attr_names, values = [], [] - - val[9].each do |(attr_name, value)| - # Protected and private attributes will have a \0..\0 prefix - attr_names << attr_name.gsub(/\A\\0[^\\]+\\0/, '') - values << value - end - - result = Struct.new(klass_name, *attr_names).new(*values) - result.instance_variable_set("@_php_class", klass_name) - end - - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 56) - def _reduce_14(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 57) - def _reduce_15(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 60) - def _reduce_16(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 65) - def _reduce_17(val, _values, result) - # Checks if the keys are a sequence of integers - idx = -1 - arr = val[5].all? { |(k,v)| k == (idx += 1) } - - if arr - result = val[5].map { |(k,v)| v } - else - result = Hash[val[5]] - end - - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Unserializer -end # module PhpSerialization diff --git a/test/racc/regress/riml b/test/racc/regress/riml deleted file mode 100644 index 965afc31f5..0000000000 --- a/test/racc/regress/riml +++ /dev/null @@ -1,3283 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - - require File.expand_path("../lexer", __FILE__) - require File.expand_path("../nodes", __FILE__) - require File.expand_path("../errors", __FILE__) - require File.expand_path("../ast_rewriter", __FILE__) -module Riml - class Parser < Racc::Parser - -module_eval(<<'...end riml.y/module_eval...', 'riml.y', 592) - # This code will be put as-is in the parser class - - attr_accessor :ast_rewriter - attr_writer :options - - # The Parser and AST_Rewriter share this same hash of options - def options - @options ||= {} - end - - def self.ast_cache - @ast_cache - end - @ast_cache = {} - - # parses tokens or code into output nodes - def parse(object, ast_rewriter = Riml::AST_Rewriter.new, filename = nil, included = false) - if (ast = self.class.ast_cache[filename]) - else - if tokens?(object) - @tokens = object - elsif code?(object) - @lexer = Riml::Lexer.new(object, filename, true) - end - - begin - ast = do_parse - rescue Racc::ParseError => e - raise unless @lexer - if (invalid_token = @lexer.prev_token_is_keyword?) - warning = "#{invalid_token.inspect} is a keyword, and cannot " \ - "be used as a variable name" - end - error_msg = e.message - error_msg << "\nWARNING: #{warning}" if warning - error = Riml::ParseError.new(error_msg, @lexer.filename, @lexer.lineno) - raise error - end - self.class.ast_cache[filename] = ast if filename - end - @ast_rewriter ||= ast_rewriter - return ast unless @ast_rewriter - @ast_rewriter.ast = ast.dup - @ast_rewriter.options ||= options - @ast_rewriter.rewrite(filename, included) - @ast_rewriter.ast - end - - # get the next token from either the list of tokens provided, or - # the lexer getting the next token - def next_token - return @tokens.shift unless @lexer - token = @lexer.next_token - if token && @lexer.parser_info - @current_parser_info = token.pop - end - token - end - - private - - def tokens?(object) - Array === object - end - - def code?(object) - String === object - end - - def make_node(racc_val) - node = yield racc_val - node.parser_info = @current_parser_info - node - end -...end riml.y/module_eval... -##### State transition tables begin ### - -clist = [ -'135,265,60,139,136,211,417,418,48,47,411,211,448,274,146,56,199,89,272', -'60,273,270,409,271,37,46,48,47,37,49,44,45,392,412,37,449,384,60,50', -'70,316,61,386,385,317,62,63,129,130,132,127,128,131,115,116,117,121', -'122,123,118,119,120,124,125,126,102,104,103,109,111,110,112,114,113', -'106,108,107,133,134,101,100,137,171,80,38,173,37,81,38,82,85,83,84,87', -'38,105,86,37,75,76,153,152,57,56,88,89,77,37,90,58,59,78,37,46,48,47', -'91,49,44,45,64,72,73,-116,161,60,50,70,79,61,272,37,92,62,63,271,48', -'47,-178,-178,-178,-178,211,147,211,211,38,60,-43,-43,153,152,329,409', -'99,409,409,38,331,153,152,-42,-42,161,60,50,70,38,139,313,29,313,38', -'52,80,54,164,277,81,277,82,85,83,84,87,279,279,86,149,75,76,38,182,57', -'56,88,89,77,149,90,58,59,78,37,46,48,47,91,49,44,45,64,72,73,-116,164', -'60,50,70,79,61,164,60,164,62,63,-204,277,149,164,279,164,-203,305,149', -'366,141,164,164,-44,-44,129,130,132,-85,-85,-85,-85,142,-48,-48,-116', -'258,60,50,70,-99,-98,60,50,70,29,149,38,52,80,54,371,149,81,52,82,85', -'83,84,87,149,139,86,164,75,76,164,139,57,56,88,89,77,105,90,58,59,78', -'37,46,48,47,91,49,44,45,64,72,73,-99,-98,60,50,70,79,61,-46,-46,370', -'62,63,-175,-175,-175,-175,139,129,130,132,-47,-47,-45,-45,433,195,432', -'129,130,132,127,128,131,115,116,117,121,122,123,118,119,120,124,125', -'126,164,354,29,211,38,52,80,54,153,152,81,60,82,85,83,84,87,149,60,86', -'105,75,76,417,437,57,56,88,89,77,105,90,58,59,78,215,46,48,47,91,49', -'44,45,64,72,73,-116,216,60,50,70,79,61,139,218,319,62,63,-175,-175,-175', -'-175,-178,-178,-178,-178,211,147,48,47,211,49,48,47,262,49,-176,-176', -'-176,-176,263,320,191,192,193,194,267,129,130,132,127,128,131,29,269', -'269,52,269,54,129,130,132,127,128,131,115,116,117,121,122,123,118,119', -'120,124,125,126,102,104,103,109,111,110,112,114,113,106,108,107,133', -'134,101,100,137,323,105,258,276,294,295,149,139,302,305,306,105,139', -'105,312,326,327,328,333,105,105,105,342,346,357,361,320,258,362,363', -'60,129,130,132,127,128,131,129,130,132,127,128,131,368,129,130,132,127', -'128,131,115,116,117,121,122,123,118,119,120,124,125,126,102,104,103', -'109,111,110,112,114,113,106,108,107,133,134,101,100,137,105,80,129,130', -'132,81,105,82,85,83,84,87,374,105,86,377,75,76,379,380,57,56,88,89,77', -'393,90,58,59,78,37,46,48,47,91,49,44,45,64,72,73,-116,302,60,50,70,79', -'61,394,397,105,62,63,269,258,129,130,132,127,128,131,115,116,117,121', -'122,123,118,119,120,124,125,126,102,104,103,109,111,110,112,114,113', -'106,108,107,133,134,101,29,400,38,52,80,54,401,402,81,-245,82,85,83', -'84,87,105,403,86,406,75,76,60,211,57,56,88,89,77,211,90,58,59,78,37', -'46,48,47,91,49,44,45,64,72,73,427,60,60,50,70,79,61,430,431,434,62,63', -'435,438,129,130,132,127,128,131,115,116,117,121,122,123,118,119,120', -'124,125,126,102,104,103,109,111,110,112,114,113,106,108,107,133,134', -'440,29,441,38,52,80,54,442,443,81,211,82,85,83,84,87,105,445,86,446', -'75,76,371,371,57,56,88,89,77,211,90,58,59,78,37,46,48,47,91,49,44,45', -'64,72,73,458,435,60,50,70,79,61,462,463,371,62,63,465,468,129,130,132', -'127,128,131,115,116,117,121,122,123,118,119,120,124,125,126,,,,,,,,', -',,,129,130,132,,29,,38,52,80,54,,,81,,82,85,83,84,87,105,,86,,75,76', -',,57,56,88,89,77,,90,58,59,78,37,46,48,47,91,49,44,45,64,72,73,105,', -'60,50,70,79,61,,,,62,63,,,129,130,132,127,128,131,115,116,117,121,122', -'123,118,119,120,124,125,126,,,,,,,,,,,,129,130,132,,29,,38,52,80,54', -',,81,,82,85,83,84,87,105,,86,,75,76,,,57,56,88,89,77,,90,58,59,78,37', -'46,48,47,91,49,44,45,64,72,73,105,,60,50,70,79,61,,,,62,63,414,,,,,', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,,29,,38,52,,54,,129,130,132,127,128,131', -'115,116,117,121,122,123,118,119,120,124,125,126,102,104,103,109,111', -'110,112,114,113,106,108,107,133,134,101,100,137,419,,,,,,,,,146,56,', -'89,105,,90,,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,129,130', -'132,127,128,131,115,116,117,121,122,123,118,119,120,124,125,126,102', -'104,103,109,111,110,112,114,113,106,108,107,133,134,101,100,137,29,', -',52,,54,,261,146,56,,89,,105,90,,,,,46,48,47,,49,44,45,64,,,,,60,50', -'70,,61,,,,62,63,180,146,56,,89,,,90,,,,,46,48,47,,49,44,45,64,,,-116', -',60,50,70,,61,,,,62,63,,29,,,52,,54,,261,,129,130,132,127,128,131,115', -'116,117,121,122,123,118,119,120,124,125,126,,180,146,56,,89,,176,90', -',52,,54,46,48,47,,49,44,45,64,,,,,60,50,70,,61,105,,,62,63,180,146,56', -',89,,,90,,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,,29,-119', -',52,,54,,,129,130,132,127,128,131,115,116,117,121,122,123,118,119,120', -'124,125,126,,,,180,146,56,,89,29,-119,90,52,,54,,46,48,47,,49,44,45', -'64,,,,,60,50,70,105,61,,,,62,63,180,146,56,,89,,,90,,,,,46,48,47,,49', -'44,45,64,,,,,60,50,70,,61,,,,62,63,,29,-119,,52,,54,,,129,130,132,127', -'128,131,115,116,117,121,122,123,118,119,120,124,125,126,,,,180,146,56', -',89,29,-119,90,52,,54,,46,48,47,,49,44,45,64,,,,,60,50,70,105,61,,,', -'62,63,180,146,56,,89,,,90,,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61', -',,,62,63,,29,-121,,52,,54,,,129,130,132,127,128,131,115,116,117,121', -'122,123,118,119,120,124,125,126,,,,,146,56,,89,29,-119,90,52,,54,,46', -'48,47,,49,44,45,64,,,,,60,50,70,105,61,,,,62,63,180,146,56,,89,,,90', -',,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,,29,,,52,,54,350', -',129,130,132,127,128,131,115,116,117,121,122,123,118,119,120,124,125', -'126,,,,180,146,56,,89,29,-119,90,52,,54,,46,48,47,,49,44,45,64,,,,,60', -'50,70,105,61,,,,62,63,365,146,56,,89,,,90,,,,,46,48,47,,49,44,45,64', -',,,,60,50,70,,61,,,,62,63,,29,-119,,52,,54,,129,130,132,127,128,131', -'115,116,117,121,122,123,118,119,120,124,125,126,,,,180,146,56,,89,,29', -'90,,52,,54,46,48,47,,49,44,45,64,,,,,60,50,70,105,61,,,,62,63,180,146', -'56,,89,,,90,,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,,29', -'-119,,52,,54,,,129,130,132,127,128,131,115,116,117,121,122,123,118,119', -'120,124,125,126,,,,,146,56,,89,29,-119,90,52,,54,,46,48,47,,49,44,45', -'64,,,,,60,50,70,105,61,,,,62,63,146,56,,89,,,90,,,,,46,48,47,,49,44', -'45,64,,,-116,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48', -'47,,49,44,45,64,,,-116,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54', -',,167,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,', -'52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,165', -'89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146', -'56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63', -'146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,-116,,60,50,70,,61', -',,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70', -',61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60', -'50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,', -',,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45', -'64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49', -'44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47', -',49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46', -'48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54', -',,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,,52', -'90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89', -',52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56', -'29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146', -'56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63', -'146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,', -'62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,', -'61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50', -'70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,', -'60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64', -',,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44', -'45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,', -'49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48', -'47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,', -'46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90', -'54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,', -'52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29', -'89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146', -'56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63', -'146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,', -'62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,', -'61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50', -'70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,', -'60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64', -',,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44', -'45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,', -'49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48', -'47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,', -'46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90', -'54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,', -'52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29', -'89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146', -'56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63', -'146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,', -'62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,', -'61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50', -'70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,', -'60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64', -',,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44', -'45,64,,,-116,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,288,,,,46,48', -'47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,', -'46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90', -'54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,', -'52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29', -'89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146', -'56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63', -'146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,-116,,60,50,70,,61', -',,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70', -',61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60', -'50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,', -',,,60,50,70,,61,,,,62,63,,,29,,,52,348,54,129,130,132,127,128,131,115', -'116,117,121,122,123,118,119,120,124,125,126,,,,,146,56,,89,,29,90,,52', -',54,46,48,47,,49,44,45,64,,,-116,,60,50,70,105,61,,,,62,63,146,56,,89', -',,90,,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89', -',52,90,288,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56', -'29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146', -'56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63', -'146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,', -'62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,', -'61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50', -'70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,', -'60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44,45,64', -',,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,,49,44', -'45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,,46,48,47,', -'49,44,45,64,,,-116,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90,54,,,', -'46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,,52,90', -'54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29,89,', -'52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146,56,29', -'89,,52,90,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63,146', -'56,29,89,,52,,54,,,,46,48,47,,49,44,45,,,,,,60,50,70,,61,,,,62,63,146', -'56,29,89,,52,,54,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62,63', -'146,56,188,89,,52,,,,,,46,48,47,,49,44,45,64,,,,,60,50,70,,61,,,,62', -'63,,,188,,,52,,,,,,,,,,,,,,,,211,,,,,,129,130,132,127,128,131,,,188', -',,52,129,130,132,127,128,131,115,116,117,121,122,123,118,119,120,124', -'125,126,102,104,103,109,111,110,112,114,113,106,108,107,133,134,101', -'100,137,211,105,,,,,129,130,132,127,128,131,,105,,,,,129,130,132,127', -'128,131,115,116,117,121,122,123,118,119,120,124,125,126,102,104,103', -'109,111,110,112,114,113,106,108,107,133,134,101,100,137,211,105,,,,', -'129,130,132,127,128,131,,105,,,,,129,130,132,127,128,131,115,116,117', -'121,122,123,118,119,120,124,125,126,102,104,103,109,111,110,112,114', -'113,106,108,107,133,134,101,100,137,211,105,,,,,129,130,132,127,128', -'131,,105,,,,,129,130,132,127,128,131,115,116,117,121,122,123,118,119', -'120,124,125,126,102,104,103,109,111,110,112,114,113,106,108,107,133', -'134,101,100,137,211,105,,,,,129,130,132,127,128,131,,105,,,,,129,130', -'132,127,128,131,115,116,117,121,122,123,118,119,120,124,125,126,102', -'104,103,109,111,110,112,114,113,106,108,107,133,134,101,100,137,455', -'105,,,,,129,130,132,127,128,131,,105,,,,,129,130,132,127,128,131,115', -'116,117,121,122,123,118,119,120,124,125,126,102,104,103,109,111,110', -'112,114,113,106,108,107,133,134,101,100,137,460,105,,,,129,130,132,127', -'128,131,,,105,,,,,129,130,132,127,128,131,115,116,117,121,122,123,118', -'119,120,124,125,126,102,104,103,109,111,110,112,114,113,106,108,107', -'133,134,101,100,137,105,129,130,132,127,128,131,,,,,,,105,129,130,132', -'127,128,131,115,116,117,121,122,123,118,119,120,124,125,126,102,104', -'103,109,111,110,112,114,113,106,108,107,133,134,101,100,137,105,,,,', -',266,129,130,132,127,128,131,105,129,130,132,127,128,131,115,116,117', -'121,122,123,118,119,120,124,125,126,102,104,103,109,111,110,112,114', -'113,106,108,107,133,134,101,100,137,,,,,,,105,,,,,,,105,129,130,132', -'127,128,131,115,116,117,121,122,123,118,119,120,124,125,126,102,104', -'103,109,111,110,112,114,113,106,108,107,133,134,101,100,137,,,,,,,,', -',,,,275,105,129,130,132,127,128,131,115,116,117,121,122,123,118,119', -'120,124,125,126,102,104,103,109,111,110,112,114,113,106,108,107,133', -'134,101,100,137,,,,,,,,,,,,,,105,129,130,132,127,128,131,115,116,117', -'121,122,123,118,119,120,124,125,126,102,104,103,109,111,110,112,114', -'113,106,108,107,133,134,101,100,137,,,,,,,,,,,,,,105,129,130,132,127', -'128,131,115,116,117,121,122,123,118,119,120,124,125,126,102,104,103', -'109,111,110,112,114,113,106,108,107,133,134,101,100,137,,,,,,,,,,,,', -',105,129,130,132,127,128,131,115,116,117,121,122,123,118,119,120,124', -'125,126,102,104,103,109,111,110,112,114,113,106,108,107,133,134,101', -'100,137,,,,,,,,,,,,,,105,129,130,132,127,128,131,115,116,117,121,122', -'123,118,119,120,124,125,126,129,130,132,127,128,131,115,116,117,121', -'122,123,118,119,120,124,125,126,102,104,103,109,111,110,112,114,113', -'106,108,107,105,,,,,,,,,,,,,,,,,,105,129,130,132,127,128,131,115,116', -'117,121,122,123,118,119,120,124,125,126,102,104,103,109,111,110,112', -'114,113,106,108,107,,,,,,,,,,,,,,,,,,,105,129,130,132,127,128,131,115', -'116,117,121,122,123,118,119,120,124,125,126,102,104,103,109,111,110', -'112,114,113,106,108,107,133,134,101,100,137,,,,,,,,,,,,,,105,129,130', -'132,127,128,131,115,116,117,121,122,123,118,119,120,124,125,126,102', -'104,103,109,111,110,112,114,113,106,108,107,133,134,101,100,137,,,,', -',,,,,,,,,105,129,130,132,127,128,131,115,116,117,121,122,123,118,119', -'120,124,125,126,102,104,103,109,111,110,112,114,113,106,108,107,133', -'134,101,100,137,,,,,,,,,,,,,337,105,129,130,132,127,128,131,115,116', -'117,121,122,123,118,119,120,124,125,126,102,104,103,109,111,110,112', -'114,113,106,108,107,133,134,101,100,137,,,,,,,,,,340,,,341,105,129,130', -'132,127,128,131,115,116,117,121,122,123,118,119,120,124,125,126,102', -'104,103,109,111,110,112,114,113,106,108,107,133,134,101,100,137,,,,', -',,,,,,,,,105,129,130,132,127,128,131,115,116,117,121,122,123,118,119', -'120,124,125,126,102,104,103,109,111,110,112,114,113,106,108,107,133', -'134,101,100,137,,,,,,,266,,,,,,,105,129,130,132,127,128,131,115,116', -'117,121,122,123,118,119,120,124,125,126,102,104,103,109,111,110,112', -'114,113,106,108,107,133,134,101,100,137,,,,,,,360,,,,,,,105,129,130', -'132,127,128,131,115,116,117,121,122,123,118,119,120,124,125,126,102', -'104,103,109,111,110,112,114,113,106,108,107,133,134,101,100,137,,,,', -',,,,,,,,,105,129,130,132,127,128,131,115,116,117,121,122,123,118,119', -'120,124,125,126,102,104,103,109,111,110,112,114,113,106,108,107,133', -'134,101,100,137,,,,,,,360,,,,,,,105,129,130,132,127,128,131,115,116', -'117,121,122,123,118,119,120,124,125,126,102,104,103,109,111,110,112', -'114,113,106,108,107,133,134,101,100,137,,,,,,,,,,,,,,105,129,130,132', -'127,128,131,115,116,117,121,122,123,118,119,120,124,125,126,102,104', -'103,109,111,110,112,114,113,106,108,107,133,134,101,100,137,,,,,,,,', -',,,,,105,129,130,132,127,128,131,115,116,117,121,122,123,118,119,120', -'124,125,126,102,104,103,109,111,110,112,114,113,106,108,107,133,134', -'101,100,137,,,,,,,,,,,,,,105,129,130,132,127,128,131,115,116,117,121', -'122,123,118,119,120,124,125,126,102,104,103,109,111,110,112,114,113', -'106,108,107,133,134,101,100,137,,,,,,,,,,,,,,105,129,130,132,127,128', -'131,115,116,117,121,122,123,118,119,120,124,125,126,102,104,103,109', -'111,110,112,114,113,106,108,107,133,134,101,100,137,,,,,,,,,,396,,,341', -'105,129,130,132,127,128,131,115,116,117,121,122,123,118,119,120,124', -'125,126,102,104,103,109,111,110,112,114,113,106,108,107,133,134,101', -'100,137,,,,,,,,,,,,,,105,129,130,132,127,128,131,115,116,117,121,122', -'123,118,119,120,124,125,126,102,104,103,109,111,110,112,114,113,106', -'108,107,133,134,101,100,137,,,,,,,,,,399,,,,105,129,130,132,127,128', -'131,115,116,117,121,122,123,118,119,120,124,125,126,102,104,103,109', -'111,110,112,114,113,106,108,107,133,134,101,100,137,,,,,,,,,,,,,,105', -'129,130,132,127,128,131,115,116,117,121,122,123,118,119,120,124,125', -'126,102,104,103,109,111,110,112,114,113,106,108,107,133,134,101,100', -'137,,,,,,,,,,,,,,105,129,130,132,127,128,131,115,116,117,121,122,123', -'118,119,120,124,125,126,102,104,103,109,111,110,112,114,113,106,108', -'107,133,134,101,100,137,,,,,,,,,,,,,,105,129,130,132,127,128,131,115', -'116,117,121,122,123,118,119,120,124,125,126,102,104,103,109,111,110', -'112,114,113,106,108,107,133,134,101,100,137,,,,,,,,,,,,,,105,129,130', -'132,127,128,131,115,116,117,121,122,123,118,119,120,124,125,126,102', -'104,103,109,111,110,112,114,113,106,108,107,133,134,101,100,137,,,,', -',,,,,,,,,105,129,130,132,127,128,131,115,116,117,121,122,123,118,119', -'120,124,125,126,102,104,103,109,111,110,112,114,113,106,108,107,133', -'134,101,100,137,,,,,,,,,,,,,,105,129,130,132,127,128,131,115,116,117', -'121,122,123,118,119,120,124,125,126,102,104,103,109,111,110,112,114', -'113,106,108,107,133,134,101,100,137,,,,,,,,,,,,,,105,129,130,132,127', -'128,131,115,116,117,121,122,123,118,119,120,124,125,126,102,104,103', -'109,111,110,112,114,113,106,108,107,133,134,101,100,137,,,,,,,,,,,,', -',105,129,130,132,127,128,131,115,116,117,121,122,123,118,119,120,124', -'125,126,102,104,103,109,111,110,112,114,113,106,108,107,133,134,101', -'100,137,,,,,,,,,,,,,,105,129,130,132,127,128,131,115,116,117,121,122', -'123,118,119,120,124,125,126,102,104,103,109,111,110,112,114,113,106', -'108,107,133,134,101,100,137,,,,,,,,,,,,,,105' ] - racc_action_table = arr = ::Array.new(6668, 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 = [ -'22,143,74,143,22,333,376,376,182,182,370,369,433,157,57,57,74,57,155', -'182,157,155,369,155,3,57,57,57,93,57,57,57,333,370,376,433,330,57,57', -'57,202,57,330,330,202,57,57,22,22,22,22,22,22,22,22,22,22,22,22,22,22', -'22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,57,0', -'3,57,332,0,93,0,0,0,0,0,376,22,0,454,0,0,287,287,0,0,0,0,0,461,0,0,0', -'0,0,0,0,0,0,0,0,0,0,0,0,0,55,0,0,0,0,0,298,466,1,0,0,298,59,59,283,283', -'283,283,447,283,451,464,332,59,283,283,40,40,210,447,19,451,464,454', -'210,181,181,287,287,175,72,72,72,461,23,200,0,213,0,0,2,0,55,277,2,161', -'2,2,2,2,2,162,278,2,284,2,2,466,59,2,2,2,2,2,286,2,2,2,2,2,2,2,2,2,2', -'2,2,2,2,2,2,175,2,2,2,2,2,200,86,213,2,2,161,313,266,277,314,161,162', -'304,360,304,24,162,278,284,284,186,186,186,138,138,138,138,27,286,286', -'8,138,8,8,8,403,430,73,73,73,2,32,2,2,94,2,315,35,94,86,94,94,94,94', -'94,285,266,94,313,94,94,314,360,94,94,94,94,94,186,94,94,94,94,94,94', -'94,94,94,94,94,94,94,94,94,403,430,94,94,94,94,94,281,281,315,94,94', -'285,285,285,285,43,187,187,187,282,282,285,285,410,70,410,222,222,222', -'222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,290,290', -'94,87,94,94,95,94,387,387,95,88,95,95,95,95,95,33,89,95,187,95,95,416', -'416,95,95,95,95,95,222,95,95,95,95,90,95,95,95,95,95,95,95,95,95,95', -'95,92,95,95,95,95,95,96,97,203,95,95,33,33,33,33,31,31,31,31,331,31', -'331,331,386,331,386,386,140,386,42,42,42,42,141,203,66,66,66,66,146', -'235,235,235,235,235,235,95,148,150,95,151,95,203,203,203,203,203,203', -'203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203', -'203,203,203,203,203,203,203,203,203,203,203,203,204,235,154,160,166', -'169,170,174,178,183,184,185,189,203,199,207,208,209,212,249,250,252', -'260,268,293,297,204,299,300,301,305,236,236,236,236,236,236,237,237', -'237,237,237,237,312,204,204,204,204,204,204,204,204,204,204,204,204', -'204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204', -'204,204,204,204,204,204,236,211,247,247,247,211,237,211,211,211,211', -'211,318,204,211,322,211,211,324,325,211,211,211,211,211,334,211,211', -'211,211,211,211,211,211,211,211,211,211,211,211,211,211,335,211,211', -'211,211,211,336,339,247,211,211,344,345,220,220,220,220,220,220,220', -'220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220', -'220,220,220,220,220,220,220,220,220,211,353,211,211,320,211,355,356', -'320,320,320,320,320,320,320,220,359,320,367,320,320,368,385,320,320', -'320,320,320,389,320,320,320,320,320,320,320,320,320,320,320,320,320', -'320,320,391,392,320,320,320,320,320,404,408,411,320,320,412,417,221', -'221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221', -'221,221,221,221,221,221,221,221,221,221,221,221,221,221,420,320,421', -'320,320,438,320,422,423,438,425,438,438,438,438,438,221,428,438,429', -'438,438,432,434,438,438,438,438,438,445,438,438,438,438,438,438,438', -'438,438,438,438,438,438,438,438,448,449,438,438,438,438,438,456,457', -'458,438,438,459,467,223,223,223,223,223,223,223,223,223,223,223,223', -'223,223,223,223,223,223,,,,,,,,,,,,248,248,248,,438,,438,438,455,438', -',,455,,455,455,455,455,455,223,,455,,455,455,,,455,455,455,455,455,', -'455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,248,,455', -'455,455,455,455,,,,455,455,,,224,224,224,224,224,224,224,224,224,224', -'224,224,224,224,224,224,224,224,,,,,,,,,,,,251,251,251,,455,,455,455', -'460,455,,,460,,460,460,460,460,460,224,,460,,460,460,,,460,460,460,460', -'460,,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,251', -',460,460,460,460,460,,,,460,460,375,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,', -',,460,,460,460,,460,,375,375,375,375,375,375,375,375,375,375,375,375', -'375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375', -'375,375,375,375,375,375,378,,,,,,,,,139,139,,139,375,,139,,,,,139,139', -'139,,139,139,139,139,,,,,139,139,139,,139,,,,139,139,378,378,378,378', -'378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378', -'378,378,378,378,378,378,378,378,378,378,378,378,378,378,139,,,139,,139', -',139,258,258,,258,,378,258,,,,,258,258,258,,258,258,258,258,,,,,258', -'258,258,,258,,,,258,258,58,58,58,,58,,,58,,,,,58,58,58,,58,58,58,58', -',,58,,58,58,58,,58,,,,58,58,,258,,,258,,258,,258,,226,226,226,226,226', -'226,226,226,226,226,226,226,226,226,226,226,226,226,,147,147,147,,147', -',58,147,,58,,58,147,147,147,,147,147,147,147,,,,,147,147,147,,147,226', -',,147,147,165,165,165,,165,,,165,,,,,165,165,165,,165,165,165,165,,', -',,165,165,165,,165,,,,165,165,,147,147,,147,,147,,,227,227,227,227,227', -'227,227,227,227,227,227,227,227,227,227,227,227,227,,,,171,171,171,', -'171,165,165,171,165,,165,,171,171,171,,171,171,171,171,,,,,171,171,171', -'227,171,,,,171,171,176,176,176,,176,,,176,,,,,176,176,176,,176,176,176', -'176,,,,,176,176,176,,176,,,,176,176,,171,171,,171,,171,,,228,228,228', -'228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,,,,215,215', -'215,,215,176,176,215,176,,176,,215,215,215,,215,215,215,215,,,,,215', -'215,215,228,215,,,,215,215,267,267,267,,267,,,267,,,,,267,267,267,,267', -'267,267,267,,,,,267,267,267,,267,,,,267,267,,215,215,,215,,215,,,229', -'229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229', -',,,,274,274,,274,267,267,274,267,,267,,274,274,274,,274,274,274,274', -',,,,274,274,274,229,274,,,,274,274,276,276,276,,276,,,276,,,,,276,276', -'276,,276,276,276,276,,,,,276,276,276,,276,,,,276,276,,274,,,274,,274', -'274,,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230', -'230,230,,,,295,295,295,,295,276,276,295,276,,276,,295,295,295,,295,295', -'295,295,,,,,295,295,295,230,295,,,,295,295,302,302,302,,302,,,302,,', -',,302,302,302,,302,302,302,302,,,,,302,302,302,,302,,,,302,302,,295', -'295,,295,,295,,231,231,231,231,231,231,231,231,231,231,231,231,231,231', -'231,231,231,231,,,,362,362,362,,362,,302,362,,302,,302,362,362,362,', -'362,362,362,362,,,,,362,362,362,231,362,,,,362,362,393,393,393,,393', -',,393,,,,,393,393,393,,393,393,393,393,,,,,393,393,393,,393,,,,393,393', -',362,362,,362,,362,,,232,232,232,232,232,232,232,232,232,232,232,232', -'232,232,232,232,232,232,,,,,29,29,,29,393,393,29,393,,393,,29,29,29', -',29,29,29,29,,,,,29,29,29,232,29,,,,29,29,52,52,,52,,,52,,,,,52,52,52', -',52,52,52,52,,,52,,52,52,52,,52,,,,52,52,54,54,29,54,,29,54,29,,,,54', -'54,54,,54,54,54,54,,,54,,54,54,54,,54,,,,54,54,56,56,52,56,,52,56,52', -',,56,56,56,56,,56,56,56,56,,,,,56,56,56,,56,,,,56,56,61,61,54,61,,54', -'61,54,,,,61,61,61,,61,61,61,61,,,,,61,61,61,,61,,,,61,61,62,62,56,62', -',56,62,56,,,,62,62,62,,62,62,62,62,,,,,62,62,62,,62,,,,62,62,63,63,61', -'63,,61,63,61,,,,63,63,63,,63,63,63,63,,,,,63,63,63,,63,,,,63,63,78,78', -'62,78,,62,78,62,,,,78,78,78,,78,78,78,78,,,78,,78,78,78,,78,,,,78,78', -'80,80,63,80,,63,80,63,,,,80,80,80,,80,80,80,80,,,,,80,80,80,,80,,,,80', -'80,81,81,78,81,,78,81,78,,,,81,81,81,,81,81,81,81,,,,,81,81,81,,81,', -',,81,81,82,82,80,82,,80,82,80,,,,82,82,82,,82,82,82,82,,,,,82,82,82', -',82,,,,82,82,85,85,81,85,,81,85,81,,,,85,85,85,,85,85,85,85,,,,,85,85', -'85,,85,,,,85,85,100,100,82,100,,82,100,82,,,,100,100,100,,100,100,100', -'100,,,,,100,100,100,,100,,,,100,100,101,101,85,101,,85,101,85,,,,101', -'101,101,,101,101,101,101,,,,,101,101,101,,101,,,,101,101,102,102,100', -'102,,100,102,100,,,,102,102,102,,102,102,102,102,,,,,102,102,102,,102', -',,,102,102,103,103,101,103,,101,103,101,,,,103,103,103,,103,103,103', -'103,,,,,103,103,103,,103,,,,103,103,104,104,102,104,,102,104,102,,,', -'104,104,104,,104,104,104,104,,,,,104,104,104,,104,,,,104,104,105,105', -'103,105,,103,105,103,,,,105,105,105,,105,105,105,105,,,,,105,105,105', -',105,,,,105,105,106,106,104,106,,104,106,104,,,,106,106,106,,106,106', -'106,106,,,,,106,106,106,,106,,,,106,106,107,107,105,107,,105,107,105', -',,,107,107,107,,107,107,107,107,,,,,107,107,107,,107,,,,107,107,108', -'108,106,108,,106,108,106,,,,108,108,108,,108,108,108,108,,,,,108,108', -'108,,108,,,,108,108,109,109,107,109,,107,109,107,,,,109,109,109,,109', -'109,109,109,,,,,109,109,109,,109,,,,109,109,110,110,108,110,,108,110', -'108,,,,110,110,110,,110,110,110,110,,,,,110,110,110,,110,,,,110,110', -'111,111,109,111,,109,111,109,,,,111,111,111,,111,111,111,111,,,,,111', -'111,111,,111,,,,111,111,112,112,110,112,,110,112,110,,,,112,112,112', -',112,112,112,112,,,,,112,112,112,,112,,,,112,112,113,113,111,113,,111', -'113,111,,,,113,113,113,,113,113,113,113,,,,,113,113,113,,113,,,,113', -'113,114,114,112,114,,112,114,112,,,,114,114,114,,114,114,114,114,,,', -',114,114,114,,114,,,,114,114,115,115,113,115,,113,115,113,,,,115,115', -'115,,115,115,115,115,,,,,115,115,115,,115,,,,115,115,116,116,114,116', -',114,116,114,,,,116,116,116,,116,116,116,116,,,,,116,116,116,,116,,', -',116,116,117,117,115,117,,115,117,115,,,,117,117,117,,117,117,117,117', -',,,,117,117,117,,117,,,,117,117,118,118,116,118,,116,118,116,,,,118', -'118,118,,118,118,118,118,,,,,118,118,118,,118,,,,118,118,119,119,117', -'119,,117,119,117,,,,119,119,119,,119,119,119,119,,,,,119,119,119,,119', -',,,119,119,120,120,118,120,,118,120,118,,,,120,120,120,,120,120,120', -'120,,,,,120,120,120,,120,,,,120,120,121,121,119,121,,119,121,119,,,', -'121,121,121,,121,121,121,121,,,,,121,121,121,,121,,,,121,121,122,122', -'120,122,,120,122,120,,,,122,122,122,,122,122,122,122,,,,,122,122,122', -',122,,,,122,122,123,123,121,123,,121,123,121,,,,123,123,123,,123,123', -'123,123,,,,,123,123,123,,123,,,,123,123,124,124,122,124,,122,124,122', -',,,124,124,124,,124,124,124,124,,,,,124,124,124,,124,,,,124,124,125', -'125,123,125,,123,125,123,,,,125,125,125,,125,125,125,125,,,,,125,125', -'125,,125,,,,125,125,126,126,124,126,,124,126,124,,,,126,126,126,,126', -'126,126,126,,,,,126,126,126,,126,,,,126,126,127,127,125,127,,125,127', -'125,,,,127,127,127,,127,127,127,127,,,,,127,127,127,,127,,,,127,127', -'128,128,126,128,,126,128,126,,,,128,128,128,,128,128,128,128,,,,,128', -'128,128,,128,,,,128,128,129,129,127,129,,127,129,127,,,,129,129,129', -',129,129,129,129,,,,,129,129,129,,129,,,,129,129,130,130,128,130,,128', -'130,128,,,,130,130,130,,130,130,130,130,,,,,130,130,130,,130,,,,130', -'130,131,131,129,131,,129,131,129,,,,131,131,131,,131,131,131,131,,,', -',131,131,131,,131,,,,131,131,132,132,130,132,,130,132,130,,,,132,132', -'132,,132,132,132,132,,,,,132,132,132,,132,,,,132,132,133,133,131,133', -',131,133,131,,,,133,133,133,,133,133,133,133,,,,,133,133,133,,133,,', -',133,133,134,134,132,134,,132,134,132,,,,134,134,134,,134,134,134,134', -',,,,134,134,134,,134,,,,134,134,135,135,133,135,,133,135,133,,,,135', -'135,135,,135,135,135,135,,,,,135,135,135,,135,,,,135,135,136,136,134', -'136,,134,136,134,,,,136,136,136,,136,136,136,136,,,,,136,136,136,,136', -',,,136,136,137,137,135,137,,135,137,135,,,,137,137,137,,137,137,137', -'137,,,,,137,137,137,,137,,,,137,137,164,164,136,164,,136,164,136,,,', -'164,164,164,,164,164,164,164,,,,,164,164,164,,164,,,,164,164,173,173', -'137,173,,137,173,137,,,,173,173,173,,173,173,173,173,,,173,,173,173', -'173,,173,,,,173,173,180,180,164,180,,164,180,164,,,,180,180,180,,180', -'180,180,180,,,,,180,180,180,,180,,,,180,180,188,188,173,188,,173,188', -'173,,,,188,188,188,,188,188,188,188,,,,,188,188,188,,188,,,,188,188', -'191,191,180,191,,180,191,180,,,,191,191,191,,191,191,191,191,,,,,191', -'191,191,,191,,,,191,191,192,192,188,192,,188,192,188,,,,192,192,192', -',192,192,192,192,,,,,192,192,192,,192,,,,192,192,193,193,191,193,,191', -'193,191,,,,193,193,193,,193,193,193,193,,,,,193,193,193,,193,,,,193', -'193,194,194,192,194,,192,194,192,,,,194,194,194,,194,194,194,194,,,', -',194,194,194,,194,,,,194,194,261,261,193,261,,193,261,193,,,,261,261', -'261,,261,261,261,261,,,261,,261,261,261,,261,,,,261,261,270,270,194', -'270,,194,270,194,,,,270,270,270,,270,270,270,270,,,,,270,270,270,,270', -',,,270,270,272,272,261,272,,261,272,261,,,,272,272,272,,272,272,272', -'272,,,,,272,272,272,,272,,,,272,272,275,275,270,275,,270,275,270,,,', -'275,275,275,,275,275,275,275,,,,,275,275,275,,275,,,,275,275,,,272,', -',272,272,272,233,233,233,233,233,233,233,233,233,233,233,233,233,233', -'233,233,233,233,,,,,288,288,,288,,275,288,,275,,275,288,288,288,,288', -'288,288,288,,,288,,288,288,288,233,288,,,,288,288,291,291,,291,,,291', -',,,,291,291,291,,291,291,291,291,,,,,291,291,291,,291,,,,291,291,294', -'294,288,294,,288,294,288,,,,294,294,294,,294,294,294,294,,,,,294,294', -'294,,294,,,,294,294,316,316,291,316,,291,316,291,,,,316,316,316,,316', -'316,316,316,,,,,316,316,316,,316,,,,316,316,317,317,294,317,,294,317', -'294,,,,317,317,317,,317,317,317,317,,,,,317,317,317,,317,,,,317,317', -'319,319,316,319,,316,319,316,,,,319,319,319,,319,319,319,319,,,,,319', -'319,319,,319,,,,319,319,323,323,317,323,,317,323,317,,,,323,323,323', -',323,323,323,323,,,,,323,323,323,,323,,,,323,323,326,326,319,326,,319', -'326,319,,,,326,326,326,,326,326,326,326,,,,,326,326,326,,326,,,,326', -'326,327,327,323,327,,323,327,323,,,,327,327,327,,327,327,327,327,,,', -',327,327,327,,327,,,,327,327,328,328,326,328,,326,328,326,,,,328,328', -'328,,328,328,328,328,,,,,328,328,328,,328,,,,328,328,337,337,327,337', -',327,337,327,,,,337,337,337,,337,337,337,337,,,,,337,337,337,,337,,', -',337,337,341,341,328,341,,328,341,328,,,,341,341,341,,341,341,341,341', -',,341,,341,341,341,,341,,,,341,341,365,365,337,365,,337,365,337,,,,365', -'365,365,,365,365,365,365,,,,,365,365,365,,365,,,,365,365,418,418,341', -'418,,341,418,341,,,,418,418,418,,418,418,418,418,,,,,418,418,418,,418', -',,,418,418,435,435,365,435,,365,435,365,,,,435,435,435,,435,435,435', -'435,,,,,435,435,435,,435,,,,435,435,437,437,418,437,,418,437,418,,,', -'437,437,437,,437,437,437,437,,,,,437,437,437,,437,,,,437,437,64,64,435', -'64,,435,,435,,,,64,64,64,,64,64,64,,,,,,64,64,64,,64,,,,64,64,99,99', -'437,99,,437,,437,,,,99,99,99,,99,99,99,99,,,,,99,99,99,,99,,,,99,99', -'142,142,64,142,,64,,,,,,142,142,142,,142,142,142,142,,,,,142,142,142', -',142,,,,142,142,,,99,,,99,,,,,,,,,,,,,,,,205,,,,,,238,238,238,238,238', -'238,,,142,,,142,205,205,205,205,205,205,205,205,205,205,205,205,205', -'205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205', -'205,205,205,205,205,206,238,,,,,239,239,239,239,239,239,,205,,,,,206', -'206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206', -'206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206', -'381,239,,,,,240,240,240,240,240,240,,206,,,,,381,381,381,381,381,381', -'381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381', -'381,381,381,381,381,381,381,381,381,381,381,381,382,240,,,,,241,241', -'241,241,241,241,,381,,,,,382,382,382,382,382,382,382,382,382,382,382', -'382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382', -'382,382,382,382,382,382,382,383,241,,,,,242,242,242,242,242,242,,382', -',,,,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383', -'383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383', -'383,383,439,242,,,,,243,243,243,243,243,243,,383,,,,,439,439,439,439', -'439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439', -'439,439,439,439,439,439,439,439,439,439,439,439,439,439,453,243,,,,244', -'244,244,244,244,244,,,439,,,,,453,453,453,453,453,453,453,453,453,453', -'453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453', -'453,453,453,453,453,453,453,453,244,245,245,245,245,245,245,,,,,,,453', -'145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145', -'145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145', -'145,245,,,,,,145,246,246,246,246,246,246,145,156,156,156,156,156,156', -'156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156', -'156,156,156,156,156,156,156,156,156,156,156,156,,,,,,,246,,,,,,,156', -'159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159', -'159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159', -'159,,,,,,,,,,,,,159,159,168,168,168,168,168,168,168,168,168,168,168', -'168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168', -'168,168,168,168,168,168,168,,,,,,,,,,,,,,168,179,179,179,179,179,179', -'179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179', -'179,179,179,179,179,179,179,179,179,179,179,179,,,,,,,,,,,,,,179,201', -'201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201', -'201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201', -',,,,,,,,,,,,,201,225,225,225,225,225,225,225,225,225,225,225,225,225', -'225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225', -'225,225,225,225,225,,,,,,,,,,,,,,225,234,234,234,234,234,234,234,234', -'234,234,234,234,234,234,234,234,234,234,253,253,253,253,253,253,253', -'253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253', -'253,253,253,253,253,253,234,,,,,,,,,,,,,,,,,,253,254,254,254,254,254', -'254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254', -'254,254,254,254,254,254,254,254,,,,,,,,,,,,,,,,,,,254,255,255,255,255', -'255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255', -'255,255,255,255,255,255,255,255,255,255,255,255,255,255,,,,,,,,,,,,', -',255,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256', -'256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256', -'256,256,,,,,,,,,,,,,,256,257,257,257,257,257,257,257,257,257,257,257', -'257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257', -'257,257,257,257,257,257,257,,,,,,,,,,,,,257,257,259,259,259,259,259', -'259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259', -'259,259,259,259,259,259,259,259,259,259,259,259,259,,,,,,,,,,259,,,259', -'259,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,292,292,292,292,292,292,292,292,292,292,292', -'292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292', -'292,292,292,292,292,292,292,,,,,,,292,,,,,,,292,296,296,296,296,296', -'296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296', -'296,296,296,296,296,296,296,296,296,296,296,296,296,,,,,,,296,,,,,,', -'296,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303', -'303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303', -'303,303,,,,,,,,,,,,,,303,307,307,307,307,307,307,307,307,307,307,307', -'307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307', -'307,307,307,307,307,307,307,,,,,,,307,,,,,,,307,308,308,308,308,308', -'308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308', -'308,308,308,308,308,308,308,308,308,308,308,308,308,,,,,,,,,,,,,,308', -'309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309', -'309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309', -'309,,,,,,,,,,,,,,309,310,310,310,310,310,310,310,310,310,310,310,310', -'310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310', -'310,310,310,310,310,310,,,,,,,,,,,,,,310,311,311,311,311,311,311,311', -'311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311', -'311,311,311,311,311,311,311,311,311,311,311,,,,,,,,,,,,,,311,338,338', -'338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338', -'338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,,,,', -',,,,,338,,,338,338,343,343,343,343,343,343,343,343,343,343,343,343,343', -'343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343', -'343,343,343,343,343,,,,,,,,,,,,,,343,347,347,347,347,347,347,347,347', -'347,347,347,347,347,347,347,347,347,347,347,347,347,347,347,347,347', -'347,347,347,347,347,347,347,347,347,347,,,,,,,,,,347,,,,347,349,349', -'349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349', -'349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,,,,', -',,,,,,,,,349,352,352,352,352,352,352,352,352,352,352,352,352,352,352', -'352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352', -'352,352,352,352,,,,,,,,,,,,,,352,358,358,358,358,358,358,358,358,358', -'358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358', -'358,358,358,358,358,358,358,358,358,,,,,,,,,,,,,,358,364,364,364,364', -'364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364', -'364,364,364,364,364,364,364,364,364,364,364,364,364,364,,,,,,,,,,,,', -',364,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,372,372,372,372,372', -'372,372,,,,,,,,,,,,,,372,373,373,373,373,373,373,373,373,373,373,373', -'373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373', -'373,373,373,373,373,373,373,,,,,,,,,,,,,,373,395,395,395,395,395,395', -'395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395', -'395,395,395,395,395,395,395,395,395,395,395,395,,,,,,,,,,,,,,395,398', -'398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398', -'398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398', -',,,,,,,,,,,,,398,405,405,405,405,405,405,405,405,405,405,405,405,405', -'405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405', -'405,405,405,405,405,,,,,,,,,,,,,,405,452,452,452,452,452,452,452,452', -'452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452', -'452,452,452,452,452,452,452,452,452,452,,,,,,,,,,,,,,452' ] - racc_action_check = arr = ::Array.new(6668, 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 = [ - 81, 132, 172, -7, nil, nil, nil, nil, 209, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 66, - nil, nil, -2, 76, 182, nil, nil, 160, nil, 1805, - nil, 328, 219, 324, nil, 225, nil, nil, nil, nil, - 117, nil, 342, 229, nil, nil, nil, nil, nil, nil, - nil, nil, 1838, nil, 1871, 82, 1904, -7, 1155, 103, - nil, 1937, 1970, 2003, 4409, nil, 348, nil, nil, nil, - 288, nil, 120, 214, -42, nil, nil, nil, 2036, nil, - 2069, 2102, 2135, nil, nil, 2168, 178, 322, 317, 324, - 296, nil, 397, -3, 263, 354, 311, 362, nil, 4442, - 2201, 2234, 2267, 2300, 2333, 2366, 2399, 2432, 2465, 2498, - 2531, 2564, 2597, 2630, 2663, 2696, 2729, 2762, 2795, 2828, - 2861, 2894, 2927, 2960, 2993, 3026, 3059, 3092, 3125, 3158, - 3191, 3224, 3257, 3290, 3323, 3356, 3389, 3422, 160, 1045, - 381, 388, 4475, -89, nil, 4886, 347, 1218, 401, nil, - 402, 404, nil, nil, 394, -70, 4935, -75, nil, 4984, - 398, 137, 143, nil, 3455, 1252, 400, nil, 5033, 400, - 447, 1316, nil, 3488, 399, 121, 1350, nil, 404, 5082, - 3521, 126, -25, 405, 452, 398, 192, 273, 3554, 404, - nil, 3587, 3620, 3653, 3686, nil, nil, nil, nil, 456, - 127, 5131, 38, 400, 479, 4519, 4572, 483, 484, 485, - 145, 562, 460, 129, nil, 1414, nil, nil, nil, nil, - 569, 660, 283, 751, 842, 5180, 1170, 1266, 1364, 1462, - 1560, 1657, 1755, 3831, 5229, 388, 466, 472, 4507, 4560, - 4613, 4666, 4719, 4772, 4824, 4873, 4928, 516, 780, 406, - 407, 871, 408, 5247, 5296, 5345, 5394, 5443, 1121, 5492, - 413, 3719, nil, nil, nil, nil, 185, 1448, 417, nil, - 3752, nil, 3785, nil, 1512, 3818, 1546, 135, 144, nil, - nil, 218, 231, 54, 145, 233, 155, 67, 3881, 5541, - 256, 3914, 5590, 418, 3947, 1610, 5639, 419, 42, 419, - 423, 423, 1644, 5688, 145, 470, nil, 5737, 5786, 5835, - 5884, 5933, 472, 185, 188, 225, 3980, 4013, 568, 4046, - 653, nil, 571, 4079, 574, 575, 4112, 4145, 4178, nil, - 29, 385, 55, -26, 499, 517, 521, 4211, 5982, 519, - nil, 4244, nil, 6031, 573, 525, nil, 6080, nil, 6129, - nil, nil, 6178, 562, nil, 562, 563, nil, 6227, 577, - 191, nil, 1707, nil, 6276, 4277, nil, 627, 628, -20, - -9, nil, 6325, 6374, nil, 973, 3, nil, 1050, nil, - nil, 4625, 4678, 4731, nil, 642, 389, 325, nil, 648, - nil, 688, 652, 1741, nil, 6423, nil, nil, 6472, nil, - nil, nil, nil, 213, 612, 6521, nil, nil, 696, nil, - 241, 614, 623, nil, nil, nil, 370, 677, 4310, nil, - 734, 736, 741, 742, nil, 720, nil, nil, 716, 670, - 214, nil, 721, -7, 722, 4343, nil, 4376, 744, 4784, - nil, nil, nil, nil, nil, 739, nil, 111, 696, 703, - nil, 113, 6570, 4837, 66, 835, 786, 787, 753, 791, - 926, 76, nil, nil, 114, nil, 100, 792, nil ] - -racc_action_default = [ - -1, -259, -2, -3, -4, -8, -9, -10, -11, -12, - -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, - -23, -24, -25, -26, -27, -29, -30, -31, -32, -116, - -34, -35, -36, -37, -38, -39, -40, -49, -50, -51, - -52, -53, -54, -55, -56, -57, -58, -59, -60, -63, - -64, -65, -69, -72, -75, -259, -116, -116, -119, -116, - -115, -116, -116, -116, -116, -168, -259, -177, -179, -180, - -259, -184, -116, -116, -116, -200, -201, -202, -217, -219, - -116, -116, -116, -228, -229, -116, -116, -259, -116, -116, - -257, -258, -259, -7, -116, -6, -259, -259, -188, -116, - -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, - -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, - -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, - -116, -116, -116, -116, -116, -116, -116, -116, -83, -116, - -28, -259, -116, -26, -31, -259, -259, -116, -80, -94, - -79, -81, -61, -62, -182, -259, -70, -259, -76, -259, - -259, -183, -185, -189, -116, -116, -101, -102, -127, -35, - -37, -116, -54, -69, -259, -259, -116, -107, -120, -123, - -116, -111, -116, -109, -259, -164, -165, -166, -116, -259, - -167, -116, -116, -116, -116, -181, -186, -187, -117, -259, - -259, -218, -214, -259, -259, -259, -259, -259, -259, -259, - -237, -245, -259, -259, -255, -116, 469, -5, -183, -170, - -129, -130, -131, -132, -133, -134, -135, -136, -137, -138, - -139, -140, -141, -142, -143, -144, -145, -146, -147, -148, - -149, -150, -151, -152, -153, -154, -155, -156, -157, -158, - -159, -160, -161, -162, -163, -222, -225, -259, -116, -259, - -259, -93, -97, -96, -169, -41, -33, -116, -259, -95, - -116, -67, -116, -73, -116, -116, -116, -259, -190, -191, - -192, -29, -30, -35, -36, -37, -39, -52, -75, -259, - -259, -116, -123, -259, -116, -116, -123, -259, -259, -83, - -259, -259, -116, -124, -259, -116, -110, -259, -171, -172, - -173, -174, -259, -204, -203, -207, -116, -116, -259, -116, - -116, -246, -259, -116, -259, -259, -116, -116, -116, -234, - -259, -259, -244, -259, -105, -122, -259, -116, -259, -259, - -86, -91, -87, -92, -82, -84, -99, -259, -68, -71, - -74, -77, -78, -259, -193, -259, -259, -100, -128, -259, - -259, -103, -116, -106, -125, -116, -108, -259, -116, -259, - -208, -205, -215, -216, -220, -259, -244, -223, -259, -227, - -230, -259, -259, -259, -235, -259, -259, -243, -238, -259, - -242, -259, -116, -116, -256, -226, -88, -89, -90, -66, - -98, -194, -195, -114, -259, -126, -112, -118, -259, -206, - -259, -259, -209, -210, -221, -247, -248, -259, -116, -224, - -259, -259, -259, -259, -240, -259, -239, -253, -259, -259, - -113, -196, -207, -259, -207, -116, -249, -116, -116, -259, - -231, -232, -233, -236, -241, -259, -104, -259, -259, -211, - -212, -259, -213, -259, -250, -116, -259, -259, -207, -259, - -116, -251, -254, -197, -259, -198, -252, -259, -199 ] - -racc_goto_table = [ - 2, 154, 3, 95, 27, 169, 27, 96, 210, 98, - 390, 170, 148, 281, 155, 151, 183, 369, 413, 260, - 389, 415, 172, 318, 322, 1, 282, 217, 140, 356, - 284, 286, 209, 351, 166, 214, 97, 200, 335, 336, - 190, 207, 410, 202, 177, 330, 416, nil, nil, nil, - nil, 208, nil, nil, 154, nil, nil, nil, nil, nil, - nil, 436, nil, nil, nil, 390, nil, nil, nil, nil, - nil, 96, 96, 196, 197, 425, nil, nil, nil, nil, - nil, 450, nil, nil, nil, 175, nil, 184, nil, nil, - nil, nil, 160, 95, nil, nil, 145, nil, 27, 27, - 97, 97, 198, 219, nil, nil, 181, nil, nil, nil, - nil, nil, 283, nil, 97, nil, 212, 213, 285, 156, - nil, 159, nil, 168, nil, 179, 324, 325, 185, 186, - 187, 162, 299, 268, 447, 298, 451, 281, 339, 304, - 281, 280, nil, 291, nil, 201, 264, 203, 204, 205, - 282, 293, 206, 282, 284, 286, nil, 284, 286, nil, - 464, nil, 301, nil, nil, nil, nil, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, nil, 259, nil, nil, nil, - 184, 287, 300, 332, 179, 27, nil, nil, nil, nil, - nil, nil, nil, nil, 345, nil, nil, nil, nil, 181, - nil, 289, 292, nil, nil, nil, 283, 315, 296, 283, - 156, nil, 285, 292, nil, 285, 344, 303, nil, nil, - 334, 162, 388, nil, 391, 307, nil, 280, 308, 309, - 310, 311, 353, nil, 148, nil, 151, 291, nil, 355, - nil, nil, nil, nil, nil, nil, 314, nil, nil, nil, - nil, 359, 179, nil, nil, nil, nil, nil, nil, 314, - 408, nil, nil, 280, nil, nil, nil, nil, nil, nil, - nil, nil, 420, 421, 422, nil, 423, 424, nil, nil, - 426, nil, nil, nil, nil, nil, nil, nil, 345, nil, - nil, nil, 376, nil, 27, 338, nil, nil, 343, nil, - nil, nil, 95, 367, 179, 287, 143, 347, 287, 349, - 344, 159, 352, 179, nil, nil, 444, nil, 404, nil, - nil, nil, nil, nil, nil, 159, nil, nil, 289, nil, - nil, 358, 179, nil, 174, nil, 456, nil, 457, 364, - nil, 189, 459, nil, nil, nil, 95, nil, 387, 429, - nil, nil, nil, 372, 373, 467, 375, nil, nil, nil, - 378, nil, nil, 381, 382, 383, 407, nil, nil, nil, - nil, nil, nil, nil, 395, nil, 189, nil, 398, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 428, nil, nil, nil, nil, nil, nil, nil, nil, 179, - nil, nil, 405, 387, nil, nil, nil, nil, nil, nil, - 454, nil, 27, nil, nil, nil, nil, nil, nil, 189, - nil, nil, nil, nil, 95, nil, nil, 461, nil, 27, - 179, 95, 466, nil, 27, nil, 95, nil, nil, nil, - nil, nil, 143, nil, nil, nil, nil, nil, 143, nil, - nil, nil, nil, 143, nil, 439, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 143, nil, nil, nil, nil, - nil, nil, 452, nil, 453 ] - -racc_goto_check = [ - 2, 50, 3, 2, 28, 31, 28, 42, 70, 64, - 40, 33, 49, 26, 45, 49, 58, 69, 72, 52, - 76, 77, 41, 74, 74, 1, 27, 4, 25, 37, - 32, 35, 44, 48, 56, 57, 53, 59, 60, 61, - 62, 65, 71, 73, 55, 75, 78, nil, nil, nil, - nil, 41, nil, nil, 50, nil, nil, nil, nil, nil, - nil, 77, nil, nil, nil, 40, nil, nil, nil, nil, - nil, 42, 42, 64, 64, 76, nil, nil, nil, nil, - nil, 72, nil, nil, nil, 53, nil, 53, nil, nil, - nil, nil, 54, 2, nil, nil, 22, nil, 28, 28, - 53, 53, 53, 28, nil, nil, 38, nil, nil, nil, - nil, nil, 31, nil, 53, nil, 53, 53, 33, 22, - nil, 22, nil, 22, nil, 22, 70, 70, 22, 22, - 22, 66, 50, 55, 69, 45, 69, 26, 52, 58, - 26, 67, nil, 67, nil, 22, 28, 22, 22, 22, - 27, 55, 22, 27, 32, 35, nil, 32, 35, nil, - 69, nil, 55, nil, nil, nil, nil, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, nil, 22, nil, nil, nil, - 53, 38, 54, 3, 22, 28, nil, nil, nil, nil, - nil, nil, nil, nil, 50, nil, nil, nil, nil, 38, - nil, 22, 22, nil, nil, nil, 31, 54, 22, 31, - 22, nil, 33, 22, nil, 33, 49, 22, nil, nil, - 54, 66, 70, nil, 70, 22, nil, 67, 22, 22, - 22, 22, 55, nil, 49, nil, 49, 67, nil, 67, - nil, nil, nil, nil, nil, nil, 66, nil, nil, nil, - nil, 55, 22, nil, nil, nil, nil, nil, nil, 66, - 70, nil, nil, 67, nil, nil, nil, nil, nil, nil, - nil, nil, 70, 70, 70, nil, 70, 70, nil, nil, - 70, nil, nil, nil, nil, nil, nil, nil, 50, nil, - nil, nil, 3, nil, 28, 22, nil, nil, 22, nil, - nil, nil, 2, 53, 22, 38, 23, 22, 38, 22, - 49, 22, 22, 22, nil, nil, 70, nil, 55, nil, - nil, nil, nil, nil, nil, 22, nil, nil, 22, nil, - nil, 22, 22, nil, 23, nil, 70, nil, 70, 22, - nil, 23, 70, nil, nil, nil, 2, nil, 38, 55, - nil, nil, nil, 22, 22, 70, 22, nil, nil, nil, - 22, nil, nil, 22, 22, 22, 53, nil, nil, nil, - nil, nil, nil, nil, 22, nil, 23, nil, 22, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 53, nil, nil, nil, nil, nil, nil, nil, nil, 22, - nil, nil, 22, 38, nil, nil, nil, nil, nil, nil, - 3, nil, 28, nil, nil, nil, nil, nil, nil, 23, - nil, nil, nil, nil, 2, nil, nil, 3, nil, 28, - 22, 2, 3, nil, 28, nil, 2, nil, nil, nil, - nil, nil, 23, nil, nil, nil, nil, nil, 23, nil, - nil, nil, nil, 23, nil, 22, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 23, nil, nil, nil, nil, - nil, nil, 22, nil, 22 ] - -racc_goto_pointer = [ - nil, 25, 0, 2, -68, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 67, 307, nil, 4, -151, -138, 4, nil, - nil, -52, -134, -46, nil, -133, nil, -262, 47, nil, - -321, -35, -1, nil, -54, -38, nil, nil, -241, -20, - -42, nil, -120, 28, 37, -14, -22, -54, -43, -37, - -177, -176, -24, nil, 1, -45, 76, -21, nil, -298, - -79, -328, -352, -35, -180, -165, -311, -355, -330 ] - -racc_goto_default = [ - nil, nil, 94, 93, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, nil, 25, 26, 144, 28, - 30, 31, 32, 33, 34, 35, 36, 290, 40, 39, - 41, 42, 43, 51, 67, nil, 53, 157, 158, 150, - 138, 68, nil, 55, nil, 297, nil, nil, nil, nil, - 178, nil, 65, 66, 71, 69, 278, 163, 74, nil, - 321, nil, nil, nil, nil, nil, nil, nil, nil ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 0, 99, :_reduce_1, - 1, 99, :_reduce_2, - 1, 99, :_reduce_3, - 1, 101, :_reduce_4, - 3, 101, :_reduce_5, - 2, 101, :_reduce_6, - 2, 101, :_reduce_7, - 1, 102, :_reduce_8, - 1, 102, :_reduce_9, - 1, 102, :_reduce_10, - 1, 102, :_reduce_11, - 1, 102, :_reduce_12, - 1, 102, :_reduce_13, - 1, 102, :_reduce_14, - 1, 102, :_reduce_15, - 1, 102, :_reduce_16, - 1, 102, :_reduce_17, - 1, 102, :_reduce_18, - 1, 102, :_reduce_19, - 1, 102, :_reduce_20, - 1, 102, :_reduce_21, - 1, 102, :_reduce_22, - 1, 102, :_reduce_23, - 1, 102, :_reduce_24, - 1, 102, :_reduce_25, - 1, 120, :_reduce_26, - 1, 120, :_reduce_27, - 2, 120, :_reduce_28, - 1, 120, :_reduce_29, - 1, 120, :_reduce_30, - 1, 120, :_reduce_31, - 1, 120, :_reduce_32, - 3, 120, :_reduce_33, - 1, 121, :_reduce_34, - 1, 121, :_reduce_35, - 1, 121, :_reduce_36, - 1, 121, :_reduce_37, - 1, 121, :_reduce_38, - 1, 121, :_reduce_39, - 1, 121, :_reduce_40, - 3, 121, :_reduce_41, - 1, 135, :_reduce_42, - 1, 135, :_reduce_43, - 1, 135, :_reduce_44, - 1, 135, :_reduce_45, - 1, 135, :_reduce_46, - 1, 135, :_reduce_47, - 1, 135, :_reduce_48, - 1, 100, :_reduce_49, - 1, 100, :_reduce_50, - 1, 132, :_reduce_51, - 1, 132, :_reduce_52, - 1, 132, :_reduce_53, - 1, 132, :_reduce_54, - 1, 132, :_reduce_55, - 1, 132, :_reduce_56, - 1, 132, :_reduce_57, - 1, 137, :_reduce_58, - 1, 136, :_reduce_59, - 1, 136, :_reduce_60, - 2, 136, :_reduce_61, - 2, 136, :_reduce_62, - 1, 138, :_reduce_63, - 1, 140, :_reduce_64, - 1, 139, :_reduce_65, - 5, 142, :_reduce_66, - 3, 141, :_reduce_67, - 4, 141, :_reduce_68, - 0, 143, :_reduce_69, - 1, 143, :_reduce_70, - 3, 143, :_reduce_71, - 1, 122, :_reduce_72, - 3, 144, :_reduce_73, - 4, 144, :_reduce_74, - 0, 145, :_reduce_75, - 1, 145, :_reduce_76, - 3, 145, :_reduce_77, - 3, 146, :_reduce_78, - 2, 129, :_reduce_79, - 2, 129, :_reduce_80, - 2, 129, :_reduce_81, - 4, 129, :_reduce_82, - 2, 130, :_reduce_83, - 4, 130, :_reduce_84, - 2, 149, :_reduce_85, - 3, 148, :_reduce_86, - 3, 148, :_reduce_87, - 4, 148, :_reduce_88, - 4, 148, :_reduce_89, - 3, 150, :_reduce_90, - 2, 150, :_reduce_91, - 2, 150, :_reduce_92, - 1, 150, :_reduce_93, - 1, 147, :_reduce_94, - 2, 147, :_reduce_95, - 2, 123, :_reduce_96, - 2, 123, :_reduce_97, - 5, 133, :_reduce_98, - 4, 133, :_reduce_99, - 4, 133, :_reduce_100, - 2, 133, :_reduce_101, - 2, 133, :_reduce_102, - 4, 133, :_reduce_103, - 5, 155, :_reduce_104, - 2, 155, :_reduce_105, - 4, 115, :_reduce_106, - 2, 115, :_reduce_107, - 4, 116, :_reduce_108, - 2, 116, :_reduce_109, - 2, 156, :_reduce_110, - 1, 156, :_reduce_111, - 4, 156, :_reduce_112, - 6, 103, :_reduce_113, - 5, 103, :_reduce_114, - 1, 151, :_reduce_115, - 0, 151, :_reduce_116, - 1, 157, :_reduce_117, - 4, 157, :_reduce_118, - 0, 153, :_reduce_119, - 1, 153, :_reduce_120, - 0, 159, :_reduce_121, - 1, 159, :_reduce_122, - 1, 158, :_reduce_123, - 2, 158, :_reduce_124, - 3, 158, :_reduce_125, - 4, 158, :_reduce_126, - 1, 154, :_reduce_127, - 3, 154, :_reduce_128, - 3, 124, :_reduce_129, - 3, 124, :_reduce_130, - 3, 124, :_reduce_131, - 3, 124, :_reduce_132, - 3, 124, :_reduce_133, - 3, 124, :_reduce_134, - 3, 124, :_reduce_135, - 3, 124, :_reduce_136, - 3, 124, :_reduce_137, - 3, 124, :_reduce_138, - 3, 124, :_reduce_139, - 3, 124, :_reduce_140, - 3, 124, :_reduce_141, - 3, 124, :_reduce_142, - 3, 124, :_reduce_143, - 3, 124, :_reduce_144, - 3, 124, :_reduce_145, - 3, 124, :_reduce_146, - 3, 124, :_reduce_147, - 3, 124, :_reduce_148, - 3, 124, :_reduce_149, - 3, 124, :_reduce_150, - 3, 124, :_reduce_151, - 3, 124, :_reduce_152, - 3, 124, :_reduce_153, - 3, 124, :_reduce_154, - 3, 124, :_reduce_155, - 3, 124, :_reduce_156, - 3, 124, :_reduce_157, - 3, 124, :_reduce_158, - 3, 124, :_reduce_159, - 3, 124, :_reduce_160, - 3, 124, :_reduce_161, - 3, 124, :_reduce_162, - 3, 124, :_reduce_163, - 2, 128, :_reduce_164, - 2, 128, :_reduce_165, - 2, 128, :_reduce_166, - 2, 126, :_reduce_167, - 1, 126, :_reduce_168, - 3, 117, :_reduce_169, - 3, 117, :_reduce_170, - 3, 160, :_reduce_171, - 3, 160, :_reduce_172, - 3, 160, :_reduce_173, - 3, 160, :_reduce_174, - 1, 161, :_reduce_175, - 1, 161, :_reduce_176, - 1, 161, :_reduce_177, - 1, 161, :_reduce_178, - 1, 161, :_reduce_179, - 1, 162, :_reduce_180, - 2, 162, :_reduce_181, - 2, 162, :_reduce_182, - 2, 163, :_reduce_183, - 1, 131, :_reduce_184, - 2, 131, :_reduce_185, - 2, 106, :_reduce_186, - 2, 106, :_reduce_187, - 2, 106, :_reduce_188, - 1, 164, :_reduce_189, - 2, 164, :_reduce_190, - 2, 164, :_reduce_191, - 2, 164, :_reduce_192, - 3, 165, :_reduce_193, - 4, 165, :_reduce_194, - 4, 165, :_reduce_195, - 6, 104, :_reduce_196, - 9, 104, :_reduce_197, - 9, 104, :_reduce_198, - 11, 104, :_reduce_199, - 1, 166, :_reduce_200, - 1, 166, :_reduce_201, - 1, 166, :_reduce_202, - 1, 152, :_reduce_203, - 1, 152, :_reduce_204, - 1, 167, :_reduce_205, - 2, 167, :_reduce_206, - 0, 167, :_reduce_207, - 0, 169, :_reduce_208, - 1, 169, :_reduce_209, - 1, 169, :_reduce_210, - 3, 169, :_reduce_211, - 3, 169, :_reduce_212, - 3, 170, :_reduce_213, - 2, 105, :_reduce_214, - 4, 105, :_reduce_215, - 4, 105, :_reduce_216, - 0, 171, :_reduce_217, - 1, 171, :_reduce_218, - 1, 114, :_reduce_219, - 4, 118, :_reduce_220, - 5, 118, :_reduce_221, - 3, 118, :_reduce_222, - 4, 119, :_reduce_223, - 5, 119, :_reduce_224, - 3, 119, :_reduce_225, - 5, 125, :_reduce_226, - 4, 109, :_reduce_227, - 1, 113, :_reduce_228, - 1, 113, :_reduce_229, - 4, 110, :_reduce_230, - 6, 108, :_reduce_231, - 6, 108, :_reduce_232, - 6, 108, :_reduce_233, - 3, 111, :_reduce_234, - 4, 111, :_reduce_235, - 6, 111, :_reduce_236, - 0, 173, :_reduce_237, - 2, 173, :_reduce_238, - 3, 173, :_reduce_239, - 3, 173, :_reduce_240, - 4, 173, :_reduce_241, - 1, 174, :_reduce_242, - 1, 174, :_reduce_243, - 2, 168, :_reduce_244, - 1, 168, :_reduce_245, - 1, 172, :_reduce_246, - 3, 172, :_reduce_247, - 3, 172, :_reduce_248, - 4, 172, :_reduce_249, - 3, 175, :_reduce_250, - 4, 176, :_reduce_251, - 5, 176, :_reduce_252, - 5, 112, :_reduce_253, - 8, 112, :_reduce_254, - 2, 134, :_reduce_255, - 4, 127, :_reduce_256, - 1, 127, :_reduce_257, - 1, 107, :_reduce_258 ] - -racc_reduce_n = 259 - -racc_shift_n = 469 - -racc_token_table = { - false => 0, - :error => 1, - :IF => 2, - :ELSE => 3, - :ELSEIF => 4, - :THEN => 5, - :UNLESS => 6, - :END => 7, - :WHILE => 8, - :UNTIL => 9, - :BREAK => 10, - :CONTINUE => 11, - :TRY => 12, - :CATCH => 13, - :FINALLY => 14, - :FOR => 15, - :IN => 16, - :DEF => 17, - :DEF_BANG => 18, - :SPLAT_PARAM => 19, - :SPLAT_ARG => 20, - :CALL => 21, - :BUILTIN_COMMAND => 22, - :CLASS => 23, - :NEW => 24, - :DEFM => 25, - :DEFM_BANG => 26, - :SUPER => 27, - :RIML_FILE_COMMAND => 28, - :RIML_CLASS_COMMAND => 29, - :RETURN => 30, - :NEWLINE => 31, - :NUMBER => 32, - :STRING_D => 33, - :STRING_S => 34, - :EX_LITERAL => 35, - :REGEXP => 36, - :TRUE => 37, - :FALSE => 38, - :LET => 39, - :UNLET => 40, - :UNLET_BANG => 41, - :IDENTIFIER => 42, - :DICT_VAL => 43, - :SCOPE_MODIFIER => 44, - :SCOPE_MODIFIER_LITERAL => 45, - :SPECIAL_VAR_PREFIX => 46, - :FINISH => 47, - "!" => 48, - "*" => 49, - "/" => 50, - "%" => 51, - "+" => 52, - "-" => 53, - "." => 54, - ">" => 55, - ">#" => 56, - ">?" => 57, - "<" => 58, - "<#" => 59, - "<?" => 60, - ">=" => 61, - ">=#" => 62, - ">=?" => 63, - "<=" => 64, - "<=#" => 65, - "<=?" => 66, - "==" => 67, - "==?" => 68, - "==#" => 69, - "=~" => 70, - "=~?" => 71, - "=~#" => 72, - "!~" => 73, - "!~?" => 74, - "!~#" => 75, - "!=" => 76, - "!=?" => 77, - "!=#" => 78, - :IS => 79, - :ISNOT => 80, - "&&" => 81, - "||" => 82, - "?" => 83, - "=" => 84, - "+=" => 85, - "-=" => 86, - ".=" => 87, - "," => 88, - "(" => 89, - ")" => 90, - ";" => 91, - "[" => 92, - "]" => 93, - "{" => 94, - "}" => 95, - ":" => 96, - "===" => 97 } - -racc_nt_base = 98 - -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", - "IF", - "ELSE", - "ELSEIF", - "THEN", - "UNLESS", - "END", - "WHILE", - "UNTIL", - "BREAK", - "CONTINUE", - "TRY", - "CATCH", - "FINALLY", - "FOR", - "IN", - "DEF", - "DEF_BANG", - "SPLAT_PARAM", - "SPLAT_ARG", - "CALL", - "BUILTIN_COMMAND", - "CLASS", - "NEW", - "DEFM", - "DEFM_BANG", - "SUPER", - "RIML_FILE_COMMAND", - "RIML_CLASS_COMMAND", - "RETURN", - "NEWLINE", - "NUMBER", - "STRING_D", - "STRING_S", - "EX_LITERAL", - "REGEXP", - "TRUE", - "FALSE", - "LET", - "UNLET", - "UNLET_BANG", - "IDENTIFIER", - "DICT_VAL", - "SCOPE_MODIFIER", - "SCOPE_MODIFIER_LITERAL", - "SPECIAL_VAR_PREFIX", - "FINISH", - "\"!\"", - "\"*\"", - "\"/\"", - "\"%\"", - "\"+\"", - "\"-\"", - "\".\"", - "\">\"", - "\">#\"", - "\">?\"", - "\"<\"", - "\"<#\"", - "\"<?\"", - "\">=\"", - "\">=#\"", - "\">=?\"", - "\"<=\"", - "\"<=#\"", - "\"<=?\"", - "\"==\"", - "\"==?\"", - "\"==#\"", - "\"=~\"", - "\"=~?\"", - "\"=~#\"", - "\"!~\"", - "\"!~?\"", - "\"!~#\"", - "\"!=\"", - "\"!=?\"", - "\"!=#\"", - "IS", - "ISNOT", - "\"&&\"", - "\"||\"", - "\"?\"", - "\"=\"", - "\"+=\"", - "\"-=\"", - "\".=\"", - "\",\"", - "\"(\"", - "\")\"", - "\";\"", - "\"[\"", - "\"]\"", - "\"{\"", - "\"}\"", - "\":\"", - "\"===\"", - "$start", - "Root", - "Terminator", - "Statements", - "Statement", - "ExplicitCall", - "Def", - "Return", - "UnletVariable", - "ExLiteral", - "For", - "While", - "Until", - "Try", - "ClassDefinition", - "LoopKeyword", - "EndScript", - "RimlFileCommand", - "RimlClassCommand", - "MultiAssign", - "If", - "Unless", - "Expression", - "ExpressionWithoutDictLiteral", - "Dictionary", - "DictGetWithDotLiteral", - "BinaryOperator", - "Ternary", - "Assign", - "Super", - "UnaryOperator", - "DictGet", - "ListOrDictGet", - "AllVariableRetrieval", - "LiteralWithoutDictLiteral", - "Call", - "ObjectInstantiation", - "PossibleStringValue", - "String", - "Number", - "Regexp", - "List", - "ScopeModifierLiteral", - "ListLiteral", - "ListUnpack", - "ListItems", - "DictionaryLiteral", - "DictItems", - "DictItem", - "DictGetWithDot", - "ListOrDictGetWithBrackets", - "ListOrDictGetAssign", - "SubList", - "Scope", - "DefCallIdentifier", - "ArgList", - "ArgListWithoutNothing", - "ObjectInstantiationCall", - "ClassArgList", - "SIDAndScope", - "ArgListWithoutNothingWithSplat", - "ArgListWithSplat", - "AssignExpression", - "AssignLHS", - "VariableRetrieval", - "SimpleVariableRetrieval", - "CurlyBraceName", - "CurlyBraceVarPart", - "FunctionType", - "DefKeywords", - "Block", - "ParamList", - "DefaultParam", - "Returnable", - "IfBlock", - "Catch", - "Catchable", - "ElseBlock", - "ElseifBlock" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'riml.y', 61) - def _reduce_1(val, _values, result) - result = make_node(val) { |_| Riml::Nodes.new([]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 62) - def _reduce_2(val, _values, result) - result = make_node(val) { |_| Riml::Nodes.new([]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 63) - def _reduce_3(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 68) - def _reduce_4(val, _values, result) - result = make_node(val) { |v| Riml::Nodes.new([ v[0] ]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 69) - def _reduce_5(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 70) - def _reduce_6(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 71) - def _reduce_7(val, _values, result) - result = make_node(val) { |v| Riml::Nodes.new(v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 76) - def _reduce_8(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 77) - def _reduce_9(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 78) - def _reduce_10(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 79) - def _reduce_11(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 80) - def _reduce_12(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 81) - def _reduce_13(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 82) - def _reduce_14(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 83) - def _reduce_15(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 84) - def _reduce_16(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 85) - def _reduce_17(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 86) - def _reduce_18(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 87) - def _reduce_19(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 88) - def _reduce_20(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 89) - def _reduce_21(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 90) - def _reduce_22(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 91) - def _reduce_23(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 92) - def _reduce_24(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 93) - def _reduce_25(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 97) - def _reduce_26(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 98) - def _reduce_27(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 99) - def _reduce_28(val, _values, result) - result = make_node(val) { |v| Riml::DictGetDotNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 100) - def _reduce_29(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 101) - def _reduce_30(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 102) - def _reduce_31(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 103) - def _reduce_32(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 104) - def _reduce_33(val, _values, result) - result = make_node(val) { |v| Riml::WrapInParensNode.new(v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 108) - def _reduce_34(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 109) - def _reduce_35(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 110) - def _reduce_36(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 111) - def _reduce_37(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 112) - def _reduce_38(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 113) - def _reduce_39(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 114) - def _reduce_40(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 115) - def _reduce_41(val, _values, result) - result = make_node(val) { |v| Riml::WrapInParensNode.new(v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 120) - def _reduce_42(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 121) - def _reduce_43(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 122) - def _reduce_44(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 123) - def _reduce_45(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 124) - def _reduce_46(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 125) - def _reduce_47(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 126) - def _reduce_48(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 130) - def _reduce_49(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 131) - def _reduce_50(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 135) - def _reduce_51(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 136) - def _reduce_52(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 137) - def _reduce_53(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 138) - def _reduce_54(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 139) - def _reduce_55(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 140) - def _reduce_56(val, _values, result) - result = make_node(val) { |_| Riml::TrueNode.new } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 141) - def _reduce_57(val, _values, result) - result = make_node(val) { |_| Riml::FalseNode.new } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 145) - def _reduce_58(val, _values, result) - result = make_node(val) { |v| Riml::NumberNode.new(v[0]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 149) - def _reduce_59(val, _values, result) - result = make_node(val) { |v| Riml::StringNode.new(v[0], :s) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 150) - def _reduce_60(val, _values, result) - result = make_node(val) { |v| Riml::StringNode.new(v[0], :d) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 151) - def _reduce_61(val, _values, result) - result = make_node(val) { |v| Riml::StringLiteralConcatNode.new(v[0], Riml::StringNode.new(v[1], :s)) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 152) - def _reduce_62(val, _values, result) - result = make_node(val) { |v| Riml::StringLiteralConcatNode.new(v[0], Riml::StringNode.new(v[1], :d)) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 156) - def _reduce_63(val, _values, result) - result = make_node(val) { |v| Riml::RegexpNode.new(v[0]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 160) - def _reduce_64(val, _values, result) - result = make_node(val) { |v| Riml::ScopeModifierLiteralNode.new(v[0]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 164) - def _reduce_65(val, _values, result) - result = make_node(val) { |v| Riml::ListNode.new(v[0]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 168) - def _reduce_66(val, _values, result) - result = make_node(val) { |v| Riml::ListUnpackNode.new(v[1] << v[3]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 172) - def _reduce_67(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 173) - def _reduce_68(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 177) - def _reduce_69(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 178) - def _reduce_70(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 179) - def _reduce_71(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 183) - def _reduce_72(val, _values, result) - result = make_node(val) { |v| Riml::DictionaryNode.new(v[0]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 190) - def _reduce_73(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 191) - def _reduce_74(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 196) - def _reduce_75(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 197) - def _reduce_76(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 198) - def _reduce_77(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 203) - def _reduce_78(val, _values, result) - result = [val[0], val[2]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 207) - def _reduce_79(val, _values, result) - result = make_node(val) { |v| Riml::DictGetDotNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 208) - def _reduce_80(val, _values, result) - result = make_node(val) { |v| Riml::DictGetDotNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 209) - def _reduce_81(val, _values, result) - result = make_node(val) { |v| Riml::DictGetDotNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 210) - def _reduce_82(val, _values, result) - result = make_node(val) { |v| Riml::DictGetDotNode.new(Riml::WrapInParensNode.new(v[1]), v[3]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 214) - def _reduce_83(val, _values, result) - result = make_node(val) { |v| Riml::ListOrDictGetNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 215) - def _reduce_84(val, _values, result) - result = make_node(val) { |v| Riml::ListOrDictGetNode.new(Riml::WrapInParensNode.new(v[1]), v[3]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 219) - def _reduce_85(val, _values, result) - result = make_node(val) { |v| Riml::ListOrDictGetNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 223) - def _reduce_86(val, _values, result) - result = [val[1]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 224) - def _reduce_87(val, _values, result) - result = [val[1]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 225) - def _reduce_88(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 226) - def _reduce_89(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 230) - def _reduce_90(val, _values, result) - result = make_node(val) { |v| Riml::SublistNode.new([v[0], Riml::LiteralNode.new(' : '), v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 231) - def _reduce_91(val, _values, result) - result = make_node(val) { |v| Riml::SublistNode.new([v[0], Riml::LiteralNode.new(' :')]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 232) - def _reduce_92(val, _values, result) - result = make_node(val) { |v| Riml::SublistNode.new([Riml::LiteralNode.new(': '), v[1]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 233) - def _reduce_93(val, _values, result) - result = make_node(val) { |_| Riml::SublistNode.new([Riml::LiteralNode.new(':')]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 237) - def _reduce_94(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 238) - def _reduce_95(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 242) - def _reduce_96(val, _values, result) - result = [val[1]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 243) - def _reduce_97(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 247) - def _reduce_98(val, _values, result) - result = make_node(val) { |v| Riml::CallNode.new(v[0], v[1], v[3]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 248) - def _reduce_99(val, _values, result) - result = make_node(val) { |v| Riml::CallNode.new(nil, v[0], v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 249) - def _reduce_100(val, _values, result) - result = make_node(val) { |v| Riml::CallNode.new(nil, v[0], v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 250) - def _reduce_101(val, _values, result) - result = make_node(val) { |v| Riml::CallNode.new(nil, v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 251) - def _reduce_102(val, _values, result) - result = make_node(val) { |v| Riml::CallNode.new(nil, v[0], []) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 252) - def _reduce_103(val, _values, result) - result = make_node(val) { |v| Riml::ExplicitCallNode.new(nil, nil, v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 256) - def _reduce_104(val, _values, result) - result = make_node(val) { |v| Riml::CallNode.new(v[0], v[1], v[3]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 257) - def _reduce_105(val, _values, result) - result = make_node(val) { |v| Riml::CallNode.new(v[0], v[1], []) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 261) - def _reduce_106(val, _values, result) - result = make_node(val) { |v| Riml::RimlFileCommandNode.new(nil, v[0], v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 262) - def _reduce_107(val, _values, result) - result = make_node(val) { |v| Riml::RimlFileCommandNode.new(nil, v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 266) - def _reduce_108(val, _values, result) - result = make_node(val) { |v| Riml::RimlClassCommandNode.new(nil, v[0], v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 267) - def _reduce_109(val, _values, result) - result = make_node(val) { |v| Riml::RimlClassCommandNode.new(nil, v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 271) - def _reduce_110(val, _values, result) - result = ["#{val[0]}#{val[1]}"] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 272) - def _reduce_111(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 273) - def _reduce_112(val, _values, result) - result = val[0].concat ["#{val[2]}#{val[3]}"] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 277) - def _reduce_113(val, _values, result) - result = make_node(val) { |v| Riml::ExplicitCallNode.new(v[1], v[2], v[4]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 278) - def _reduce_114(val, _values, result) - result = make_node(val) { |v| Riml::ExplicitCallNode.new(nil, v[1], v[3]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 282) - def _reduce_115(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 283) - def _reduce_116(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 288) - def _reduce_117(val, _values, result) - result = [ nil, val[0] ] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 289) - def _reduce_118(val, _values, result) - result = [ make_node(val) { |v| Riml::SIDNode.new(v[1]) }, val[3] ] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 293) - def _reduce_119(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 294) - def _reduce_120(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 298) - def _reduce_121(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 299) - def _reduce_122(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 303) - def _reduce_123(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 304) - def _reduce_124(val, _values, result) - result = [ make_node(val) { |v| Riml::SplatNode.new(v[1]) } ] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 305) - def _reduce_125(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 306) - def _reduce_126(val, _values, result) - result = val[0] << make_node(val) { |v| Riml::SplatNode.new(v[3]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 310) - def _reduce_127(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 311) - def _reduce_128(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 315) - def _reduce_129(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 316) - def _reduce_130(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 318) - def _reduce_131(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 319) - def _reduce_132(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 320) - def _reduce_133(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 323) - def _reduce_134(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 325) - def _reduce_135(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 326) - def _reduce_136(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 327) - def _reduce_137(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 329) - def _reduce_138(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 330) - def _reduce_139(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 331) - def _reduce_140(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 333) - def _reduce_141(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 334) - def _reduce_142(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 335) - def _reduce_143(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 337) - def _reduce_144(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 338) - def _reduce_145(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 339) - def _reduce_146(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 341) - def _reduce_147(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 342) - def _reduce_148(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 343) - def _reduce_149(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 345) - def _reduce_150(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 346) - def _reduce_151(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 347) - def _reduce_152(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 349) - def _reduce_153(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 350) - def _reduce_154(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 351) - def _reduce_155(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 353) - def _reduce_156(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 354) - def _reduce_157(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 355) - def _reduce_158(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 356) - def _reduce_159(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 357) - def _reduce_160(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 358) - def _reduce_161(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 360) - def _reduce_162(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 361) - def _reduce_163(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 365) - def _reduce_164(val, _values, result) - result = make_node(val) { |v| Riml::UnaryOperatorNode.new(val[0], [val[1]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 366) - def _reduce_165(val, _values, result) - result = make_node(val) { |v| Riml::UnaryOperatorNode.new(val[0], [val[1]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 367) - def _reduce_166(val, _values, result) - result = make_node(val) { |v| Riml::UnaryOperatorNode.new(val[0], [val[1]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 372) - def _reduce_167(val, _values, result) - result = make_node(val) { |v| Riml::AssignNode.new(v[1][0], v[1][1], v[1][2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 373) - def _reduce_168(val, _values, result) - result = make_node(val) { |v| Riml::AssignNode.new(v[0][0], v[0][1], v[0][2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 377) - def _reduce_169(val, _values, result) - result = make_node(val) { |v| Riml::MultiAssignNode.new([v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 378) - def _reduce_170(val, _values, result) - val[0].assigns << val[2]; result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 383) - def _reduce_171(val, _values, result) - result = [val[1], val[0], val[2]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 384) - def _reduce_172(val, _values, result) - result = [val[1], val[0], val[2]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 385) - def _reduce_173(val, _values, result) - result = [val[1], val[0], val[2]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 386) - def _reduce_174(val, _values, result) - result = [val[1], val[0], val[2]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 390) - def _reduce_175(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 391) - def _reduce_176(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 392) - def _reduce_177(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 393) - def _reduce_178(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 394) - def _reduce_179(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 399) - def _reduce_180(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 400) - def _reduce_181(val, _values, result) - result = make_node(val) { |v| Riml::GetSpecialVariableNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 401) - def _reduce_182(val, _values, result) - result = make_node(val) { |v| Riml::GetVariableByScopeAndDictNameNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 405) - def _reduce_183(val, _values, result) - result = make_node(val) { |v| Riml::GetVariableNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 409) - def _reduce_184(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 410) - def _reduce_185(val, _values, result) - result = make_node(val) { |v| Riml::GetCurlyBraceNameNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 414) - def _reduce_186(val, _values, result) - result = make_node(val) { |v| Riml::UnletVariableNode.new('!', [ v[1] ]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 415) - def _reduce_187(val, _values, result) - result = make_node(val) { |v| Riml::UnletVariableNode.new('!', [ v[1] ]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 416) - def _reduce_188(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 420) - def _reduce_189(val, _values, result) - result = make_node(val) { |v| Riml::CurlyBraceVariable.new([ v[0] ]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 421) - def _reduce_190(val, _values, result) - result = make_node(val) { |v| Riml::CurlyBraceVariable.new([ Riml::CurlyBracePart.new(v[0]), v[1] ]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 422) - def _reduce_191(val, _values, result) - result = val[0] << make_node(val) { |v| Riml::CurlyBracePart.new(v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 423) - def _reduce_192(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 427) - def _reduce_193(val, _values, result) - result = make_node(val) { |v| Riml::CurlyBracePart.new(v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 428) - def _reduce_194(val, _values, result) - result = make_node(val) { |v| Riml::CurlyBracePart.new([v[1], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 429) - def _reduce_195(val, _values, result) - result = make_node(val) { |v| Riml::CurlyBracePart.new([v[1], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 435) - def _reduce_196(val, _values, result) - result = make_node(val) { |v| Riml.const_get(val[0]).new('!', v[1][0], v[1][1], v[2], [], v[3], v[4]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 436) - def _reduce_197(val, _values, result) - result = make_node(val) { |v| Riml.const_get(val[0]).new('!', v[1][0], v[1][1], v[2], v[4], v[6], v[7]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 437) - def _reduce_198(val, _values, result) - result = make_node(val) { |v| Riml.const_get(val[0]).new('!', v[1][0], v[1][1], v[2], [v[4]], v[6], v[7]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 438) - def _reduce_199(val, _values, result) - result = make_node(val) { |v| Riml.const_get(val[0]).new('!', v[1][0], v[1][1], v[2], v[4] << v[6], v[8], v[9]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 442) - def _reduce_200(val, _values, result) - result = "DefNode" - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 443) - def _reduce_201(val, _values, result) - result = "DefNode" - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 444) - def _reduce_202(val, _values, result) - result = "DefMethodNode" - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 449) - def _reduce_203(val, _values, result) - result = make_node(val) { |v| Riml::GetCurlyBraceNameNode.new('', v[0]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 450) - def _reduce_204(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 455) - def _reduce_205(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 456) - def _reduce_206(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 457) - def _reduce_207(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 461) - def _reduce_208(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 462) - def _reduce_209(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 463) - def _reduce_210(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 464) - def _reduce_211(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 465) - def _reduce_212(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 469) - def _reduce_213(val, _values, result) - result = make_node(val) { |v| Riml::DefaultParamNode.new(v[0], v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 473) - def _reduce_214(val, _values, result) - result = make_node(val) { |v| Riml::ReturnNode.new(v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 474) - def _reduce_215(val, _values, result) - result = make_node(val) { |v| Riml::IfNode.new(v[3], Nodes.new([ReturnNode.new(v[1])])) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 475) - def _reduce_216(val, _values, result) - result = make_node(val) { |v| Riml::UnlessNode.new(v[3], Nodes.new([ReturnNode.new(v[1])])) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 479) - def _reduce_217(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 480) - def _reduce_218(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 484) - def _reduce_219(val, _values, result) - result = make_node(val) { |_| Riml::FinishNode.new } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 489) - def _reduce_220(val, _values, result) - result = make_node(val) { |v| Riml::IfNode.new(v[1], v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 490) - def _reduce_221(val, _values, result) - result = make_node(val) { |v| Riml::IfNode.new(v[1], Riml::Nodes.new([v[3]])) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 491) - def _reduce_222(val, _values, result) - result = make_node(val) { |v| Riml::IfNode.new(v[2], Riml::Nodes.new([v[0]])) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 495) - def _reduce_223(val, _values, result) - result = make_node(val) { |v| Riml::UnlessNode.new(v[1], v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 496) - def _reduce_224(val, _values, result) - result = make_node(val) { |v| Riml::UnlessNode.new(v[1], Riml::Nodes.new([v[3]])) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 497) - def _reduce_225(val, _values, result) - result = make_node(val) { |v| Riml::UnlessNode.new(v[2], Riml::Nodes.new([v[0]])) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 501) - def _reduce_226(val, _values, result) - result = make_node(val) { |v| Riml::TernaryOperatorNode.new([v[0], v[2], v[4]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 505) - def _reduce_227(val, _values, result) - result = make_node(val) { |v| Riml::WhileNode.new(v[1], v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 509) - def _reduce_228(val, _values, result) - result = make_node(val) { |_| Riml::BreakNode.new } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 510) - def _reduce_229(val, _values, result) - result = make_node(val) { |_| Riml::ContinueNode.new } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 514) - def _reduce_230(val, _values, result) - result = make_node(val) { |v| Riml::UntilNode.new(v[1], v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 518) - def _reduce_231(val, _values, result) - result = make_node(val) { |v| Riml::ForNode.new(v[1], v[3], v[4]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 519) - def _reduce_232(val, _values, result) - result = make_node(val) { |v| Riml::ForNode.new(v[1], v[3], v[4]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 520) - def _reduce_233(val, _values, result) - result = make_node(val) { |v| Riml::ForNode.new(v[1], v[3], v[4]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 524) - def _reduce_234(val, _values, result) - result = make_node(val) { |v| Riml::TryNode.new(v[1], nil, nil) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 525) - def _reduce_235(val, _values, result) - result = make_node(val) { |v| Riml::TryNode.new(v[1], v[2], nil) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 526) - def _reduce_236(val, _values, result) - result = make_node(val) { |v| Riml::TryNode.new(v[1], v[2], v[4]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 530) - def _reduce_237(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 531) - def _reduce_238(val, _values, result) - result = [ make_node(val) { |v| Riml::CatchNode.new(nil, v[1]) } ] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 532) - def _reduce_239(val, _values, result) - result = [ make_node(val) { |v| Riml::CatchNode.new(v[1], v[2]) } ] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 533) - def _reduce_240(val, _values, result) - result = val[0] << make_node(val) { |v| Riml::CatchNode.new(nil, v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 534) - def _reduce_241(val, _values, result) - result = val[0] << make_node(val) { |v| Riml::CatchNode.new(v[2], v[3]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 538) - def _reduce_242(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 539) - def _reduce_243(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 546) - def _reduce_244(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 547) - def _reduce_245(val, _values, result) - result = make_node(val) { |_| Riml::Nodes.new([]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 551) - def _reduce_246(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 552) - def _reduce_247(val, _values, result) - result = val[1] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 553) - def _reduce_248(val, _values, result) - result = val[1] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 554) - def _reduce_249(val, _values, result) - result = val[1] << val[2] << val[3] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 558) - def _reduce_250(val, _values, result) - result = make_node(val) { |v| Riml::ElseNode.new(v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 562) - def _reduce_251(val, _values, result) - result = make_node(val) { |v| Riml::Nodes.new([Riml::ElseifNode.new(v[1], v[3])]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 563) - def _reduce_252(val, _values, result) - result = val[0] << make_node(val) { |v| Riml::ElseifNode.new(v[2], v[4]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 567) - def _reduce_253(val, _values, result) - result = make_node(val) { |v| Riml::ClassDefinitionNode.new(v[1], v[2], nil, v[3]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 568) - def _reduce_254(val, _values, result) - result = make_node(val) { |v| Riml::ClassDefinitionNode.new(v[1], v[2], (v[4] || ClassDefinitionNode::DEFAULT_SCOPE_MODIFIER) + v[5], v[6]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 572) - def _reduce_255(val, _values, result) - result = make_node(val) { |v| Riml::ObjectInstantiationNode.new(v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 576) - def _reduce_256(val, _values, result) - result = make_node(val) { |v| Riml::SuperNode.new(v[2], true) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 577) - def _reduce_257(val, _values, result) - result = make_node(val) { |_| Riml::SuperNode.new([], false) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 581) - def _reduce_258(val, _values, result) - result = make_node(val) { |v| Riml::ExLiteralNode.new(v[0]) } - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module Riml diff --git a/test/racc/regress/ruby18 b/test/racc/regress/ruby18 deleted file mode 100644 index a21fa611a5..0000000000 --- a/test/racc/regress/ruby18 +++ /dev/null @@ -1,6344 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - - -require 'parser' - -module Parser - class Ruby18 < Racc::Parser - -module_eval(<<'...end ruby18.y/module_eval...', 'ruby18.y', 1936) - - def version - 18 - end - - def default_encoding - Encoding::BINARY if defined? Encoding - end -...end ruby18.y/module_eval... -##### State transition tables begin ### - -clist = [ -'-480,195,196,195,196,489,814,-480,-480,-480,511,578,578,-480,-480,-80', -'-480,-429,579,579,489,72,531,-87,558,-480,99,489,-86,73,95,98,395,195', -'196,-480,-480,-82,-480,-480,-480,-480,-480,489,489,558,495,-84,496,-83', -'-81,463,659,658,662,661,186,99,557,558,291,291,98,-80,-480,-480,-480', -'-480,-480,-480,-480,-480,-480,-480,-480,-480,-480,-480,-87,557,-480', -'-480,-480,259,546,530,722,-74,-480,-61,99,-480,291,557,621,98,-480,-86', -'-480,-85,-480,-480,-480,-480,-480,-480,-480,-277,-480,-480,-480,187', -'-476,510,-277,-277,-277,99,-72,488,-277,-277,98,-277,-480,-480,-79,-75', -'-69,-480,-83,-78,99,99,488,621,-76,98,98,99,-74,488,-277,-277,98,-277', -'-277,-277,-277,-277,-76,-74,-75,-73,431,99,99,488,488,621,98,98,-477', -'259,502,195,196,258,503,-74,690,-277,-277,-277,-277,-277,-277,-277,-277', -'-277,-277,-277,-277,-277,-277,558,259,-277,-277,-277,-74,549,99,-74', -'620,-277,713,98,-277,691,-76,188,-77,-277,521,-277,521,-277,-277,-277', -'-277,-277,-277,-277,-272,-277,-82,-277,-76,557,189,-272,-272,-272,99', -'254,-272,-272,-272,98,-272,-277,-277,99,-77,620,-277,-85,98,-76,-272', -'-272,-76,477,190,-84,476,258,254,-272,-272,768,-272,-272,-272,-272,-272', -'99,194,620,477,234,98,479,521,523,522,523,522,519,258,477,358,282,482', -'673,360,359,-272,-272,-272,-272,-272,-272,-272,-272,-272,-272,-272,-272', -'-272,-272,521,192,-272,-272,-272,-81,283,-272,193,-79,-272,521,-87,-272', -'-272,291,-272,191,-272,349,-272,215,-272,-272,-272,-272,-272,-272,-272', -'-226,-272,361,-272,523,522,524,-226,-226,-226,814,394,-226,-226,-226', -'521,-226,-272,-272,-272,-272,396,-272,-473,212,606,-226,496,214,213', -'210,211,523,522,526,-226,-226,397,-226,-226,-226,-226,-226,523,522,527', -'251,477,426,-474,479,-480,-480,252,-319,-226,659,658,662,661,428,-319', -'-226,-226,-226,-417,-476,-226,-226,-226,-319,-226,-417,-417,431,-226', -'523,522,532,-429,-417,-226,-226,284,285,-473,436,254,-226,-417,-226', -'-226,-60,-226,-226,-226,-226,-226,463,-421,451,-480,-480,541,-477,542', -'-421,-473,-480,-480,-226,-474,680,-476,-476,-421,-476,-480,-480,452', -'215,453,-72,-476,-226,-80,-226,215,-476,-226,-226,391,-476,-474,99,-480', -'-480,-226,392,98,99,-78,254,-226,-86,98,-74,393,-76,-82,-476,-84,212', -'-428,-477,-73,214,213,-81,212,-428,-477,459,214,213,-226,-477,461,462', -'-428,-477,195,196,-421,-476,-476,-476,263,-476,-226,-421,-226,-476,-476', -'-226,291,-480,-476,-477,-476,-476,-476,-476,-476,-476,-476,195,196,734', -'606,-476,-476,-476,-476,-476,-476,-476,-427,215,254,-426,-425,662,661', -'-427,464,-476,-426,-425,-476,-476,-476,-476,-476,-476,-476,-476,-476', -'-476,465,-476,-476,-422,-476,-476,-476,-480,734,606,-422,212,215,-423', -'-480,214,213,210,211,-476,-423,457,471,-480,-424,472,-476,692,458,-476', -'-476,-424,-476,-476,291,481,-476,456,-476,484,-476,-480,-476,351,516', -'-271,466,498,500,501,-476,517,-271,467,499,-476,-476,-476,-476,-476', -'-476,-271,393,497,-476,-476,-477,-477,-477,535,-477,536,538,-83,-477', -'-477,-259,540,254,-477,215,-477,-477,-477,-477,-477,-477,-477,215,215', -'215,568,-477,-477,-477,-477,-477,-477,-477,667,668,575,669,93,94,291', -'580,234,-477,590,591,-477,-477,-477,-477,-477,-477,-477,-477,-477,-477', -'-69,-477,-477,592,-477,-477,-477,215,219,224,225,226,221,223,231,232', -'227,228,507,-497,-497,-278,469,229,230,505,-477,549,-278,-477,-477,606', -'-477,-477,506,291,-477,-278,-477,212,-477,218,-477,214,213,210,211,222', -'220,216,-477,217,616,496,624,-477,-477,-477,-477,-477,-477,672,-278', -'675,-477,-477,62,63,64,-278,51,436,436,-85,56,57,693,704,-278,60,431', -'58,59,61,23,24,65,66,431,243,707,708,22,28,27,88,87,89,90,715,717,17', -'721,254,254,215,537,215,41,724,-259,92,91,82,50,84,83,86,85,93,94,728', -'80,81,730,38,39,37,215,219,224,225,226,221,223,231,232,227,228,-277', -'208,209,-279,606,229,230,-277,200,738,-279,204,-477,739,52,53,-277,740', -'54,-279,743,212,745,218,40,214,213,210,211,222,220,216,18,217,749,753', -'755,79,72,74,75,76,77,758,759,760,73,78,761,99,233,763,-215,-277,98', -'62,63,64,7,51,-277,-260,769,56,57,-477,777,778,60,-277,58,59,61,23,24', -'65,66,568,568,254,254,22,28,27,88,87,89,90,234,568,17,101,102,103,104', -'105,6,41,8,9,92,91,82,50,84,83,86,85,93,94,790,80,81,791,38,39,37,215', -'219,224,225,226,221,223,231,232,227,228,-428,-497,-497,823,792,229,230', -'-428,36,797,824,30,799,805,52,53,-428,807,54,822,32,212,291,218,40,214', -'213,210,211,222,220,216,18,217,818,825,826,79,72,74,75,76,77,827,-271', -'829,73,78,62,63,64,-271,51,830,351,-278,56,57,832,835,-271,60,-278,58', -'59,61,246,247,65,66,839,-278,840,846,245,275,279,88,87,89,90,101,102', -'103,104,105,847,848,758,758,276,759,861,92,91,82,50,84,83,86,85,93,94', -'568,80,81,215,568,655,280,653,652,651,654,-277,471,874,-279,875,876', -'880,-277,229,230,-279,883,-477,758,885,772,-277,886,204,-279,568,52', -'53,568,212,54,218,568,214,213,210,211,645,,216,,217,,,,659,658,662,661', -'79,72,74,75,76,77,,,,73,78,,62,63,64,775,51,,,,56,57,,,,60,,58,59,61', -'246,247,65,66,,,,,245,275,279,88,87,89,90,101,102,103,104,105,,,537', -',276,,,92,91,82,50,84,83,86,85,93,94,,80,81,,,,280,215,219,224,225,226', -'221,223,231,232,227,228,,208,209,,,229,230,,772,,,204,,,52,53,,,54,', -',212,,218,,214,213,210,211,222,220,216,,217,,,,79,72,74,75,76,77,,,', -'73,78,,,233,,855,5,62,63,64,7,51,,,,56,57,,,,60,,58,59,61,23,24,65,66', -',,,,22,28,27,88,87,89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84,83,86,85', -'93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,53,,,54,,32,', -',,40,655,,653,652,651,654,,18,,,,,79,72,74,75,76,77,,,,73,78,5,62,63', -'64,7,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,659,658,662,661,22,28,27', -'88,87,89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84,83,86,85,93,94,,80,81', -',38,39,37,,,,,,,,,,,,,,,,,,,,36,,,265,,,52,53,,,54,,32,,,,40,655,,653', -'652,651,654,,18,,,,,79,72,74,75,76,77,,,,73,78,5,62,63,64,7,51,,,,56', -'57,,,,60,,58,59,61,23,24,65,66,659,658,662,661,22,28,27,88,87,89,90', -',,17,,,,,,6,41,8,9,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,', -',,,,,,,,,,,,,,,,,36,,,30,,,52,53,,,54,,32,,,,40,655,,653,652,651,654', -',18,,,,,79,72,74,75,76,77,,,,73,78,5,62,63,64,7,51,,,,56,57,,,,60,645', -'58,59,61,23,24,65,66,659,658,662,661,22,28,27,88,87,89,90,,,17,,,,,', -'6,41,8,9,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,215,-497,-497', -'-497,-497,221,223,,,-497,-497,,,,,,229,230,,36,,,30,,,52,53,,,54,,32', -'212,,218,40,214,213,210,211,222,220,216,18,217,,,,79,72,74,75,76,77', -',,,73,78,5,62,63,64,7,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22', -'28,27,88,87,89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84,83,86,85,93,94,', -'80,81,,38,39,37,215,,,,,,,,,,,,,,,,229,230,,36,,,30,,,52,53,,,54,,32', -'212,,218,40,214,213,210,211,,,216,18,217,,,,79,72,74,75,76,77,,,,73', -'78,5,62,63,64,7,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27', -'88,87,89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84,83,86,85,93,94,,80,81', -',38,39,37,215,,,,,,,,,,,,,,,,229,230,,36,,,30,,,52,53,,,54,,32,212,', -'218,40,214,213,210,211,,,216,18,217,,,,79,72,74,75,76,77,,,,73,78,5', -'62,63,64,7,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87', -'89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39', -'37,215,,,,,,,,,,,,,,,,229,230,,36,,,265,,,52,53,,,54,,32,212,,218,40', -'214,213,210,211,,,216,18,217,,,,79,72,74,75,76,77,,,,73,78,5,62,63,64', -'7,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90,', -',17,,,,,,6,41,8,9,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,215', -'-497,-497,-497,-497,221,223,,,-497,-497,,,,,,229,230,,36,,,265,,,52', -'53,,,54,,32,212,,218,40,214,213,210,211,222,220,216,18,217,,,,79,72', -'74,75,76,77,,,,73,78,5,62,63,64,7,51,,,,56,57,,,,60,,58,59,61,23,24', -'65,66,,,,,22,28,27,88,87,89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84,83', -'86,85,93,94,,80,81,,38,39,37,215,-497,-497,-497,-497,221,223,,,-497', -'-497,,,,,,229,230,,36,,,30,,,52,53,,,54,,32,212,,218,40,214,213,210', -'211,222,220,216,18,217,,,,79,72,74,75,76,77,,,,73,78,5,62,63,64,7,51', -',,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90,,,17,', -',,,,6,41,8,9,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,215,-497', -'-497,-497,-497,221,223,,,-497,-497,,,,,,229,230,,36,,,30,,,52,53,,,54', -',32,212,,218,40,214,213,210,211,222,220,216,18,217,,,,79,72,74,75,76', -'77,,,,73,78,5,62,63,64,7,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,', -',22,28,27,88,87,89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84,83,86,85,93', -'94,,80,81,,38,39,37,215,-497,-497,-497,-497,221,223,,,-497,-497,,,,', -',229,230,,36,,,30,,,52,53,,,54,,32,212,,218,40,214,213,210,211,222,220', -'216,18,217,,,,79,72,74,75,76,77,,,,73,78,5,62,63,64,7,51,,,,56,57,,', -',60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90,,,17,,,,,,6,41,8', -'9,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,215,-497,-497,-497', -'-497,221,223,,,-497,-497,,,,,,229,230,,36,,,30,,,52,53,,,54,,32,212', -',218,40,214,213,210,211,222,220,216,18,217,,,,79,72,74,75,76,77,,,,73', -'78,5,62,63,64,7,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27', -'88,87,89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84,83,86,85,93,94,,80,81', -',38,39,37,215,219,224,225,226,221,223,,,227,228,,,,,,229,230,,36,,,30', -',,52,53,,,54,,32,212,,218,40,214,213,210,211,222,220,216,18,217,,,,79', -'72,74,75,76,77,,,,73,78,5,62,63,64,7,51,,,,56,57,,,,60,,58,59,61,23', -'24,65,66,,,,,22,28,27,88,87,89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84', -'83,86,85,93,94,,80,81,,38,39,37,215,219,224,225,226,221,223,231,,227', -'228,,,,,,229,230,,36,,,30,,,52,53,,,54,,32,212,,218,40,214,213,210,211', -'222,220,216,18,217,,,,79,72,74,75,76,77,,,,73,78,5,62,63,64,7,51,,,', -'56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90,,,17,,,,', -',6,41,8,9,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,215,,,,,,,', -',,,,,,,,229,230,,36,,,30,,,52,53,,,54,,32,212,,218,40,214,213,210,211', -',,,18,,,,,79,72,74,75,76,77,,,,73,78,5,62,63,64,7,51,,,,56,57,,,,60', -',58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90,,,17,,,,,,6,41,8,9,92', -'91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,215,,,,,,,,,,,,,,,,229,230', -',36,,,30,,,52,53,,,54,,32,212,,218,40,214,213,210,211,,,,18,,,,,79,72', -'74,75,76,77,,,,73,78,5,62,63,64,7,51,,,,56,57,,,,60,,58,59,61,23,24', -'65,66,,,,,22,28,27,88,87,89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84,83', -'86,85,93,94,,80,81,,38,39,37,215,,,,,,,,,,,,,,,,229,230,,36,,,30,,,52', -'53,,,54,,32,212,,,40,214,213,210,211,,,,18,,,,,79,72,74,75,76,77,,,', -'73,78,5,62,63,64,7,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28', -'27,88,87,89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84,83,86,85,93,94,,80', -'81,,38,39,37,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,53,,,54,,32,,,,40,,,,,', -',,18,,,,,79,72,74,75,76,77,,,,73,78,5,62,63,64,7,51,,,,56,57,,,,60,', -'58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90,,,17,,,,,,6,41,8,9,92', -'91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,36,,', -'30,,,52,53,,,54,,32,,,,40,,,,,,,,18,,,,,79,72,74,75,76,77,,,,73,78,5', -'62,63,64,7,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87', -'89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39', -'37,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,53,,,54,,32,,,,40,,,,,,,,18,,,,,79', -'72,74,75,76,77,,,,73,78,5,62,63,64,7,51,,,,56,57,,,,60,,58,59,61,23', -'24,65,66,,,,,22,28,27,88,87,89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84', -'83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,53,', -',54,,32,,,,40,,,,,,,,18,,,,,79,72,74,75,76,77,,,,73,78,5,62,63,64,7', -'51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90,,,17', -',,,,,6,41,8,9,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,', -',,,,,,,,,,,,36,,,30,,,52,53,,,54,,32,,,,40,,,,,,,,18,,,,,79,72,74,75', -'76,77,,,,73,78,5,62,63,64,7,51,,,,56,57,,,,60,,58,59,61,23,24,65,66', -',,,,22,28,27,88,87,89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84,83,86,85', -'93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,53,,,54,,32,', -',,40,,,,,,,,18,,,,,79,72,74,75,76,77,,,,73,78,5,62,63,64,7,51,,,,56', -'57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90,,,17,,,,,,6', -'41,8,9,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,', -',,,,,36,,,30,,,52,53,,,54,,32,,,,40,,,,,,,,18,,,,,79,72,74,75,76,77', -',,,73,78,5,62,63,64,7,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22', -'28,27,88,87,89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84,83,86,85,93,94,', -'80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,53,,,54,,32,,,,40,,', -',,,,,18,,,,,79,72,74,75,76,77,,,,73,78,5,62,63,64,7,51,,,,56,57,,,,60', -',58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90,,,17,,,,,,6,41,8,9,92', -'91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,36,,', -'30,,,52,53,,,54,,32,,,,40,,,,,,,,18,,,,,79,72,74,75,76,77,,,,73,78,5', -'62,63,64,7,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87', -'89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39', -'37,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,53,,,54,,32,,,,40,,,,,,,,18,,,,,79', -'72,74,75,76,77,,,,73,78,5,62,63,64,7,51,,,,56,57,,,,60,,58,59,61,23', -'24,65,66,,,,,22,28,27,88,87,89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84', -'83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,53,', -',54,,32,,,,40,,,,,,,,18,,,,,79,72,74,75,76,77,,,,73,78,5,62,63,64,7', -'51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90,,,17', -',,,,,6,41,8,9,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,', -',,,,,,,,,,,,36,,,30,,,52,53,,,54,,32,,,,40,,,,,,,,18,,,,,79,72,74,75', -'76,77,,,,73,78,62,63,64,7,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,', -',,22,28,27,88,87,89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84,83,86,85,93', -'94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,53,,,54,,32,,,,40', -',,,,,,,18,,,,,79,72,74,75,76,77,,,,73,78,153,164,154,177,150,170,160', -'159,180,181,175,158,157,152,178,182,183,162,151,165,169,171,163,156', -',,172,179,174,173,166,176,161,149,168,167,,,,,,148,155,146,147,144,145', -'109,111,108,,110,,,,,,,,139,140,,137,121,122,123,,126,128,,,124,,,,', -'141,142,129,130,,,,,,,,,,,,,,134,133,,120,138,136,135,131,132,127,125', -'118,,119,,,143,79,,,,,,,,,,78,153,164,154,177,150,170,160,159,180,181', -'175,158,157,152,178,182,183,162,151,165,169,171,163,156,,,172,179,174', -'173,166,176,161,149,168,167,,,,,,148,155,146,147,144,145,109,111,,,110', -',,,,,,,139,140,,137,121,122,123,,126,128,,,124,,,,,141,142,129,130,', -',,,,,,,,,,,,134,133,,120,138,136,135,131,132,127,125,118,,119,,,143', -'79,,,62,63,64,,51,,,78,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27', -'88,87,89,90,,,17,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38', -'39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,18,,', -',,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,23', -'24,65,66,,,,,22,28,27,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86', -'85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54', -',,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56', -'57,,,,60,,58,59,61,246,247,65,66,,,,,245,28,27,88,87,89,90,,,,,,,,,', -'41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,', -',,,200,,,204,,,52,53,,,54,,241,,243,,40,,,,,,,,207,,,,,79,72,74,75,76', -'77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,', -'245,28,27,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80', -'81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,241,,243,,40', -',,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60', -',58,59,61,246,247,65,66,,,,,245,28,27,88,87,89,90,,,,,,,,,,41,,,92,91', -'82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204', -',,52,53,,,54,,241,,243,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78', -'-249,-249,-249,,-249,,,,-249,-249,,,,-249,,-249,-249,-249,-249,-249', -'-249,-249,,,,,-249,-249,-249,-249,-249,-249,-249,,,,,,,,,,-249,,,-249', -'-249,-249,-249,-249,-249,-249,-249,-249,-249,,-249,-249,,-249,-249,-249', -',,,,,,,,,,,,,,,,,,,-249,,,-249,254,,-249,-249,,,-249,,-249,,-249,,-249', -',,,,,,,-249,,,,,-249,-249,-249,-249,-249,-249,,,,-249,-249,-249,-249', -'-249,,-249,,,,-249,-249,,,,-249,,-249,-249,-249,-249,-249,-249,-249', -',,,,-249,-249,-249,-249,-249,-249,-249,,,,,,,,,,-249,,,-249,-249,-249', -'-249,-249,-249,-249,-249,-249,-249,,-249,-249,,-249,-249,-249,,,,,,', -',,,,,,,,,,,,,-249,,,-249,263,,-249,-249,,,-249,,-249,,-249,,-249,,,', -',,,,-249,,,,,-249,-249,-249,-249,-249,-249,,,,-249,-249,62,63,64,,51', -',,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,', -',,,,,,,,276,,,92,91,82,50,84,83,86,85,93,94,,80,81,,,,280,,215,219,224', -'225,226,221,223,231,232,227,228,,208,209,,,229,230,273,,,270,,,52,53', -',,54,,269,,212,,218,,214,213,210,211,222,220,216,,217,,,79,72,74,75', -'76,77,,,,73,78,62,63,64,233,51,568,,,56,57,,,,60,,58,59,61,246,247,65', -'66,,,,,245,275,279,88,87,89,90,,,,,,,,,,276,,,92,91,82,50,84,83,86,85', -'93,94,,80,81,,,,280,,215,219,224,225,226,221,223,231,232,227,228,,208', -'209,,,229,230,273,,,204,,,52,53,,,54,,,,212,,218,,214,213,210,211,222', -'220,216,,217,,,79,72,74,75,76,77,,,,73,78,62,63,64,233,51,,,,56,57,', -',,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41', -',,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,', -'200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73', -'78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279', -'88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39', -'37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,', -'79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246', -'247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83', -'86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,', -'54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,', -',56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90,,,17,,,', -',,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,', -',,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,18,,,,,79,72,74,75,76,77', -',,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245', -'28,27,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81', -',38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,299,,,,40,,,,,', -',,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58', -'59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91', -'82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204', -',,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63', -'64,,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90', -',,17,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,', -',,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,18,,,,,79,72,74', -'75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,23,24,65,66', -',,,,22,28,27,88,87,89,90,,,17,,,,,,,41,,,92,91,82,50,84,83,86,85,93', -'94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40', -',,,,,,,18,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60', -',58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,276,,,92', -'91,82,50,84,83,86,85,93,94,,80,81,,,,280,,215,219,224,225,226,221,223', -'231,232,227,228,,208,209,,,229,230,315,,,30,,,52,53,,,54,,32,,212,,218', -',214,213,210,211,222,220,216,,217,,,79,72,74,75,76,77,,,,73,78,62,63', -'64,233,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88', -'87,89,90,,,,,,,,,,276,,,92,91,320,50,84,83,321,85,93,94,,80,81,,,,280', -',215,219,224,225,226,221,223,231,232,227,228,,208,209,,327,229,230,322', -',,204,,,52,53,,,54,,,,212,,218,,214,213,210,211,222,220,216,,217,,,79', -'72,74,75,76,77,,,,73,78,62,63,64,233,51,,,,56,57,,,,60,,58,59,61,246', -'247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,276,,,92,91,320,50,84', -'83,321,85,93,94,,80,81,,,,280,,215,219,224,225,226,221,223,231,232,227', -'228,,208,209,,,229,230,322,,,204,,,52,53,,,54,,,,212,,218,,214,213,210', -'211,222,220,216,,217,,,79,72,74,75,76,77,,,,73,78,-473,-473,-473,233', -'-473,,,,-473,-473,,,,-473,,-473,-473,-473,-473,-473,-473,-473,,-473', -',,-473,-473,-473,-473,-473,-473,-473,,,,,,,,,,-473,,,-473,-473,-473', -'-473,-473,-473,-473,-473,-473,-473,,-473,-473,,-473,-473,-473,,,,,,', -',,,,,,,,,,,,,-473,,,-473,-473,,-473,-473,,,-473,,-473,,-473,,-473,,', -',,,,,-473,,-473,,,-473,-473,-473,-473,-473,-473,,,,-473,-473,-474,-474', -'-474,,-474,,,,-474,-474,,,,-474,,-474,-474,-474,-474,-474,-474,-474', -',-474,,,-474,-474,-474,-474,-474,-474,-474,,,,,,,,,,-474,,,-474,-474', -'-474,-474,-474,-474,-474,-474,-474,-474,,-474,-474,,-474,-474,-474,', -',,,,,,,,,,,,,,,,,,-474,,,-474,-474,,-474,-474,,,-474,,-474,,-474,,-474', -',,,,,,,-474,,-474,,,-474,-474,-474,-474,-474,-474,,,,-474,-474,62,63', -'64,,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90', -',,17,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,', -',,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,18,,,,,79,72,74', -'75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,23,24,65,66', -',,,,22,28,27,88,87,89,90,,,17,,,,,,,41,,,92,91,82,50,84,83,86,85,93', -'94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40', -',,,,,,,18,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60', -',58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90,,,17,,,,,,,41,,,92,91', -'82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204', -',,52,53,,,54,,,,,,40,,,,,,,,18,,,,,79,72,74,75,76,77,,,,73,78,62,63', -'64,,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90', -',,17,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,', -',,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,18,,,,,79,72,74', -'75,76,77,,,,73,78,62,63,64,7,51,,,,56,57,,,,60,,58,59,61,23,24,65,66', -',,,,22,28,27,88,87,89,90,,,17,,,,,,6,41,8,9,92,91,82,50,84,83,86,85', -'93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,36,,,30,,,52,53,,,54,,32,', -',,40,,,,,,,,18,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57', -',,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90,,,,,,,,,,41,,,92', -'91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,', -',204,,,52,53,,,54,,369,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73', -'78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88', -'87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37', -',,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,369,,,,40,,,,,,,,207,,,,', -'79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,23', -'24,65,66,,,,,22,28,27,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86', -'85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54', -',,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56', -'57,,,,60,,58,59,61,246,247,65,66,,,,,245,28,27,88,87,89,90,,,,,,,,,', -'41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,', -',,,200,,,204,,,52,53,,,54,,299,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77', -',,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28', -'27,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38', -'39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,', -',,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61', -'23,24,65,66,,,,,22,28,27,88,87,89,90,,,17,,,,,,,41,,,92,91,82,50,84', -'83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53', -',,54,,,,,,40,,,,,,,,18,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,', -',,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90,,,17,,', -',,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,', -',,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,18,,,,,79,72,74,75,76,77', -',,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245', -'275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80', -'81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,', -',,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58', -'59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91', -'82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204', -',,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63', -'64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87', -'89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,', -',,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72', -'74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65', -'66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85', -'93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,', -',,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57', -',,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41', -',,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,', -'200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73', -'78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279', -'88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39', -'37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,', -'79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246', -'247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83', -'86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,', -'54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,', -',56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,', -',,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,', -',,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76', -'77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,', -'245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94', -',80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,', -',,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60', -',58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92', -'91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,', -',204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78', -'62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279', -'88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39', -'37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,', -'79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246', -'247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83', -'86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,', -'54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,', -',56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,', -',,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,', -',,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76', -'77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,', -'245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94', -',80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,', -',,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60', -',58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92', -'91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,', -',204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78', -'62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279', -'88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39', -'37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,', -'79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246', -'247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83', -'86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,', -'54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,', -',56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,', -',,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,', -',,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76', -'77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,', -'245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94', -',80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,', -',,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60', -',58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92', -'91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,', -',204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78', -'62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279', -'88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39', -'37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,', -'79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246', -'247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83', -'86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,', -'54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,', -',56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,', -',,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,', -',,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76', -'77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,', -'245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94', -',80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,', -',,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60', -',58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92', -'91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,', -',204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78', -'62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279', -'88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39', -'37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,', -'79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246', -'247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83', -'86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,', -'54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,', -',56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,', -',,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,', -',,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76', -'77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,', -'245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94', -',80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,', -',,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60', -',58,59,61,246,247,65,66,,,,,245,28,27,88,87,89,90,,,,,,,,,,41,,,92,91', -'82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204', -',,52,53,,,54,,241,,243,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78', -'62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,28,27,88', -'87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37', -',,,,,,,,,,,,,,,,,,,200,,,204,,,445,53,,,54,,241,,243,,40,,,,,,,,207', -',,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61', -'246,247,65,66,,,,,245,28,27,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84', -'83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,449,52', -'53,,,54,,241,,243,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63', -'64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87', -'89,90,,,,,,,,,,276,,,92,91,82,50,84,83,86,85,93,94,,80,81,,,,280,,215', -'219,224,225,226,221,223,231,232,227,228,,208,209,,,229,230,273,,,204', -',,52,53,,,54,,,,212,,218,,214,213,210,211,222,220,216,,217,,,79,72,74', -'75,76,77,,,,73,78,62,63,64,233,51,,,,56,57,,,,60,,58,59,61,246,247,65', -'66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85', -'93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,469,,52,53,,,54', -',,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56', -'57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,', -',,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,', -',,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77', -',,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28', -'27,88,87,89,90,,,17,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81', -',38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,18', -',,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61', -'23,24,65,66,,,,,22,28,27,88,87,89,90,,,17,,,,,,,41,,,92,91,82,50,84', -'83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53', -',,54,,,,,,40,,,,,,,,18,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,', -',,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90,,,17,,', -',,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,', -',,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,18,,,,,79,72,74,75,76,77', -',,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28', -'27,88,87,89,90,,,17,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81', -',38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,18', -',,,,79,72,74,75,76,77,,,,73,78,153,164,154,177,150,170,160,159,180,181', -'175,158,157,152,178,182,183,162,151,165,169,171,163,156,,,172,179,174', -'173,166,176,161,149,168,167,,,,,,148,155,146,147,144,145,109,111,,,110', -',,,,,,,139,140,,137,121,122,123,,126,128,,,124,,,,,141,142,129,130,', -',,,,,,,,,,,,134,133,,120,138,136,135,131,132,127,125,118,,119,,,143', -'79,,,62,63,64,,51,,,78,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275', -'279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,', -'38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207', -',,,,79,72,74,75,76,77,,,,73,78,-249,-249,-249,,-249,,,,-249,-249,,,', -'-249,,-249,-249,-249,-249,-249,-249,-249,,,,,-249,-249,-249,-249,-249', -'-249,-249,,,,,,,,,,-249,,,-249,-249,-249,-249,-249,-249,-249,-249,-249', -'-249,,-249,-249,,-249,-249,-249,,,,,,,,,,,,,,,,,,,,-249,,,-249,254,', -'-249,-249,,,-249,,-249,,-249,,-249,,,,,,,,-249,,,,,-249,-249,-249,-249', -'-249,-249,,,,-249,-249,-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,-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,-479,-479,-479,,-479,,,,-479,-479,,,,-479,,-479,-479,-479', -'-479,-479,-479,-479,,,,,-479,-479,-479,-479,-479,-479,-479,,,,,,,,,', -'-479,,,-479,-479,-479,-479,-479,-479,-479,-479,-479,-479,,-479,-479', -',-479,-479,-479,,,,,,,,,,,,,,,,,,,,-479,,,-479,-479,,-479,-479,,,-479', -',-479,,-479,,-479,,,,,,,,-479,,,,,-479,-479,-479,-479,-479,-479,,,,-479', -'-479,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,28', -'27,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38', -'39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,299,,,,40,,,,,,,,207', -',,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61', -'246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50', -'84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52', -'53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,', -'51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90', -',,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,', -',,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75', -'76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,', -',,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93', -'94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40', -',,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60', -',58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92', -'91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,', -',204,,,52,53,,,54,,560,,243,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,', -'73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275', -'279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,', -'38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,564,,243,,40,,,', -',,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,', -'58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92', -'91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,', -',204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78', -'62,63,64,,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87', -'89,90,,,17,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37', -',,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,584,,243,,40,,,,,,,,18,,', -',,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246', -'247,65,66,,,,,245,28,27,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83', -'86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,', -'54,,299,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51', -',,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,', -',,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,', -',,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75', -'76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,', -',,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93', -'94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40', -',,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60', -',58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92', -'91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,', -',204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78', -'62,63,64,,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87', -'89,90,,,17,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37', -',,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,18,,,,,79,72', -'74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65', -'66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85', -'93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,369', -',,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57', -',,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41', -',,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,', -'200,,,204,,,52,53,,,54,,612,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,', -',,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245', -'275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80', -'81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,', -',,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58', -'59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91', -'82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204', -',,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63', -'64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87', -'89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,', -',,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,628,,,,40,,,,,,,,207,,,,,79', -'72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247', -'65,66,,,,,245,28,27,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85', -'93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,299', -',,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57', -',,,60,,58,59,61,246,247,65,66,,,,,245,28,27,88,87,89,90,,,,,,,,,,41', -',,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,', -'200,,,204,,,52,53,,,54,,299,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,', -',,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28', -'27,88,87,89,90,,,17,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81', -',38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,18', -',,,,79,72,74,75,76,77,,,,73,78,153,164,154,177,150,170,160,159,180,181', -'175,158,157,152,178,182,183,162,151,165,169,171,163,156,,,172,179,174', -'173,166,176,161,149,168,167,,,,,,148,155,146,147,144,145,109,111,,,110', -',,,,,,,139,140,,137,121,122,123,,126,128,,,124,,,,,141,142,129,130,', -',,,,,,,,,,,,134,133,,120,138,136,135,131,132,127,125,118,,119,,,143', -'79,,,62,63,64,,51,,,78,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275', -'279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,', -'38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207', -',,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61', -'246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50', -'84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52', -'53,,,54,,679,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64', -',51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90,,', -',,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,', -',,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75', -'76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,', -',22,28,27,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80', -'81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,', -',,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58', -'59,61,23,24,65,66,,,,,22,28,27,88,87,89,90,,,,,,,,,,41,,,92,91,82,50', -'84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52', -'53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,', -'51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90', -',,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,', -',,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75', -'76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,', -',,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93', -'94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40', -',,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60', -',58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,276,,,92', -'91,82,50,84,83,86,85,93,94,,80,81,,,,280,,,,,,,,,,,,,,,,,,,,273,,,270', -',,52,53,,,54,,697,,698,,,,,,,,,699,,,,,,79,72,74,75,76,77,,,,73,78,62', -'63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88', -'87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37', -',,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79', -'72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247', -'65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86', -'85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54', -',,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56', -'57,,,,60,,58,59,61,246,247,65,66,,,,,245,28,27,88,87,89,90,,,,,,,,,', -'41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,', -',,,200,,,204,,,52,53,,,54,,560,,243,,40,,,,,,,,207,,,,,79,72,74,75,76', -'77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,', -'245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94', -',80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,', -',,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60', -',58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92', -'91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,', -',204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78', -'62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279', -'88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39', -'37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,', -'79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,23', -'24,65,66,,,,,22,28,27,88,87,89,90,,,17,,,,,,,41,,,92,91,82,50,84,83', -'86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,', -'54,,,,,,40,,,,,,,,18,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,', -'56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,', -',,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,', -',,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76', -'77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,23,24,65,66,,,,,22', -'28,27,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81', -',38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207', -',,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61', -'246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50', -'84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52', -'53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,', -'51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90', -',,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,', -',,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75', -'76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,', -',,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93', -'94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40', -',,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60', -',58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,276,,,92', -'91,82,50,84,83,86,85,93,94,,80,81,,,,280,,215,219,224,225,226,221,223', -'231,232,227,228,,208,209,,,229,230,772,,,204,,,52,53,,,54,,,,212,,218', -',214,213,210,211,222,220,216,,217,,,79,72,74,75,76,77,,,,73,78,62,63', -'64,233,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88', -'87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37', -',,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,780,,243,,40,,,,,,,,207,', -',,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61', -'246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50', -'84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52', -'53,,,54,,786,,243,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63', -'64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87', -'89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,', -',,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,788,,243,,40,,,,,,,,207,,', -',,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246', -'247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,276,,,92,91,82,50,84', -'83,86,85,93,94,,80,81,,,,280,,215,219,224,225,226,221,223,231,232,227', -'228,,208,209,,,229,230,772,,,204,,,52,53,,,54,,,,212,,218,,214,213,210', -'211,222,220,216,,217,,,79,72,74,75,76,77,,,,73,78,62,63,64,233,51,,', -',56,57,,,,60,,58,59,61,23,24,65,66,,,,,22,28,27,88,87,89,90,,,17,,,', -',,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,', -',,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,18,,,,,79,72,74,75,76,77', -',,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245', -'275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80', -'81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,802,,,,40,,', -',,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60', -',58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92', -'91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,', -',204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78', -'62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279', -'88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39', -'37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,', -'79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246', -'247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,276,,,92,91,82,50,84', -'83,86,85,93,94,,80,81,,,,280,,,,,,,,,,,,,,,,,,,,273,,,270,,,52,53,,', -'54,,821,,820,,,,,,,,,,,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,', -',,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,', -',,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,', -',,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75', -'76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,', -',,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93', -'94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40', -',,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60', -',58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92', -'91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,', -',204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78', -'62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279', -'88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39', -'37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,', -'79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246', -'247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,276,,,92,91,82,50,84', -'83,86,85,93,94,,80,81,,,,280,,215,219,224,225,226,221,223,231,232,227', -'228,,208,209,,,229,230,772,,,204,,,52,53,,,54,,,,212,,218,,214,213,210', -'211,222,220,216,,217,,,79,72,74,75,76,77,,,,73,78,62,63,64,233,51,,', -',56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,28,27,88,87,89,90,,,,,', -',,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,', -',,,,,,,200,,,204,,,52,53,,,54,,299,,,,40,,,,,,,,207,,,,,79,72,74,75', -'76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,', -',,,245,275,279,88,87,89,90,,,,,,,,,,276,,,92,91,82,50,84,83,86,85,93', -'94,,80,81,,,,280,,215,219,224,225,226,221,223,231,232,227,228,,208,209', -',,229,230,772,,,204,,,52,53,,,54,,,,212,,218,,214,213,210,211,222,220', -'216,,217,,,79,72,74,75,76,77,,,,73,78,62,63,64,233,51,,,,56,57,,,,60', -',58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92', -'91,82,50,84,83,86,85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,', -',204,,,52,53,,,54,,864,,243,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,', -'73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275', -'279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,', -'38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,867,,243,,40,,,', -',,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,', -'58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,276,,,92', -'91,82,50,84,83,86,85,93,94,,80,81,,,,280,,215,219,224,225,226,221,223', -'231,232,227,228,,208,209,,,229,230,772,,,204,,,52,53,,,54,,,,212,,218', -',214,213,210,211,222,220,216,,217,,,79,72,74,75,76,77,,,,73,78,62,63', -'64,233,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88', -'87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37', -',,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79', -'72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60,,58,59,61,246,247', -'65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86', -'85,93,94,,80,81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54', -',,,,,40,,,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56', -'57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,', -',,276,,,92,91,82,50,84,83,86,85,93,94,,80,81,,,,280,,215,219,224,225', -'226,221,223,231,232,227,228,,208,209,,,229,230,772,,,204,,,52,53,,,54', -',,,212,,218,,214,213,210,211,222,220,216,,217,,,79,72,74,75,76,77,,', -',73,78,62,63,64,233,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245', -'275,279,88,87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80', -'81,,38,39,37,,,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,889,,243,,40', -',,,,,,,207,,,,,79,72,74,75,76,77,,,,73,78,62,63,64,,51,,,,56,57,,,,60', -',58,59,61,246,247,65,66,,,,,245,275,279,88,87,89,90,,,,,,,,,,276,,,92', -'91,82,50,84,83,86,85,93,94,,80,81,,,,280,,215,219,224,225,226,221,223', -'231,232,227,228,,208,209,,,229,230,772,,,204,,,52,53,,,54,,,,212,,218', -',214,213,210,211,222,220,216,,217,,,79,72,74,75,76,77,,,,73,78,62,63', -'64,233,51,,,,56,57,,,,60,,58,59,61,246,247,65,66,,,,,245,275,279,88', -'87,89,90,,,,,,,,,,41,,,92,91,82,50,84,83,86,85,93,94,,80,81,,38,39,37', -',,,,,,,,,,,,,,,,,,,200,,,204,,,52,53,,,54,,,,,,40,,,,,,,,207,,,,,79', -'72,74,75,76,77,,,,73,78,153,164,154,177,150,170,160,159,180,181,175', -'158,157,152,178,182,183,162,151,165,169,171,163,156,,,172,179,174,336', -'335,337,334,149,168,167,,,,,,148,155,146,147,332,333,330,111,84,83,331', -'85,,,,,,,139,140,,137,121,122,123,,126,128,,,124,,,,,141,142,129,130', -',,,,,341,,,,,,,,134,133,,120,138,136,135,131,132,127,125,118,,119,,', -'143,153,164,154,177,150,170,160,159,180,181,175,158,157,152,178,182', -'183,162,151,165,169,171,163,156,,,172,179,174,173,166,176,161,149,168', -'167,,,,,,148,155,146,147,144,145,109,111,,,110,,,,,,,,139,140,,137,121', -'122,123,,126,128,,,124,,,,,141,142,129,130,,,,,,,,,,,,,,134,133,,120', -'138,136,135,131,132,127,125,118,,119,,,143,215,219,224,225,226,221,223', -'231,232,227,228,,208,209,,,229,230,,,,-215,,,,,,,,,,,212,,218,,214,213', -'210,211,222,220,216,,217,,,,,,,,376,379,,,377,,,,,233,,-215,139,140', -',137,121,122,123,,126,128,,,124,,,,,141,142,129,130,,,,,,,,,,,,,,134', -'133,,120,138,136,135,131,132,127,125,118,,119,381,385,143,,383,,,,,', -',,139,140,,137,121,122,123,,126,128,,,124,,,,,141,142,129,130,,,,,,', -',,,,,,,134,133,,120,138,136,135,131,132,127,125,118,,119,433,379,143', -',434,,,,,,,,139,140,,137,121,122,123,,126,128,,,124,,,,,141,142,129', -'130,,,,,,,,,,,,,,134,133,,120,138,136,135,131,132,127,125,118,,119,433', -'379,143,,434,,,,,,,,139,140,,137,121,122,123,,126,128,,,124,,,,,141', -'142,129,130,,,,,,,,,,,,,,134,133,,120,138,136,135,131,132,127,125,118', -',119,550,379,143,,551,,,,,,,,139,140,,137,121,122,123,,126,128,,,124', -',,,,141,142,129,130,,,,,,,,,,,,,,134,133,,120,138,136,135,131,132,127', -'125,118,,119,552,385,143,,553,,,,,,,,139,140,,137,121,122,123,,126,128', -',,124,,,,,141,142,129,130,,,,,,,,,,,,,,134,133,,120,138,136,135,131', -'132,127,125,118,,119,,,143,215,219,224,225,226,221,223,231,232,227,228', -',208,209,,,229,230,,,,,,,,,,,,,,,212,,218,,214,213,210,211,222,220,216', -',217,,,,,,,594,379,,,595,,,,,,233,556,139,140,,137,121,122,123,,126', -'128,,,124,,,,,141,142,129,130,,,,,,,,,,,,,,134,133,,120,138,136,135', -'131,132,127,125,118,,119,597,385,143,,598,,,,,,,,139,140,,137,121,122', -'123,,126,128,,,124,,,,,141,142,129,130,,,,,,,,,,,,,,134,133,,120,138', -'136,135,131,132,127,125,118,,119,550,379,143,,551,,,,,,,,139,140,,137', -'121,122,123,,126,128,,,124,,,,,141,142,129,130,,,,,,,,,,,,,,134,133', -',120,138,136,135,131,132,127,125,118,,119,552,385,143,,553,,,,,,,,139', -'140,,137,121,122,123,,126,128,,,124,,,,,141,142,129,130,,,,,,,,,,,,', -',134,133,,120,138,136,135,131,132,127,125,118,,119,630,379,143,,631', -',,,,,,,139,140,,137,121,122,123,,126,128,,,124,,,,,141,142,129,130,', -',,,,,,,,,,,,134,133,,120,138,136,135,131,132,127,125,118,,119,632,385', -'143,,633,,,,,,,,139,140,,137,121,122,123,,126,128,,,124,,,,,141,142', -'129,130,,,,,,,,,,,,,,134,133,,120,138,136,135,131,132,127,125,118,,119', -'635,385,143,,636,,,,,,,,139,140,,137,121,122,123,,126,128,,,124,,,,', -'141,142,129,130,,,,,,,,,,,,,,134,133,,120,138,136,135,131,132,127,125', -'118,,119,433,379,143,,434,,,,,,,,139,140,,137,121,122,123,,126,128,', -',124,,,,,141,142,129,130,,,,,,,,,,,,,,134,133,,120,138,136,135,131,132', -'127,125,118,,119,433,379,143,,434,,,,,,,,139,140,,137,121,122,123,,126', -'128,,,124,,,,,141,142,129,130,,,,,,,,,,,,,,134,133,,120,138,136,135', -'131,132,127,125,118,,119,433,379,143,,434,,,,,,,,139,140,,137,121,122', -'123,,126,128,,,124,,,,,141,142,129,130,,,,,,,,,,,,,,134,133,,120,138', -'136,135,131,132,127,125,118,,119,857,379,143,,858,,,,,,,,139,140,,137', -'121,122,123,,126,128,,,124,,,,,141,142,129,130,,,,,,,,,,,,,,134,133', -',120,138,136,135,131,132,127,125,118,,119,859,385,143,,860,,,,,,,,139', -'140,,137,121,122,123,,126,128,,,124,,,,,141,142,129,130,,,,,,,,,,,,', -',134,133,,120,138,136,135,131,132,127,125,118,,119,,,143,215,219,224', -'225,226,221,223,231,232,227,228,,208,209,,,229,230,,,,,,,,,,,,,,,212', -',218,,214,213,210,211,222,220,216,,217,,215,219,224,225,226,221,223', -'231,232,227,228,,208,209,291,233,229,230,,,,,,,,,,,,,,,212,,218,,214', -'213,210,211,222,220,216,,217,,215,219,224,225,226,221,223,231,232,227', -'228,,208,209,291,233,229,230,,,,,,,,,,,,,,,212,,218,,214,213,210,211', -'222,220,216,,217,,,,,,,,,,,,,,,,,233' ] - racc_action_table = arr = ::Array.new(24340, 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 = [ -'381,512,512,518,518,306,755,381,381,381,326,440,711,381,381,313,381', -'199,440,711,307,70,347,316,424,381,3,627,500,70,1,3,201,603,603,381', -'381,630,381,381,381,381,381,727,798,446,311,631,311,632,743,394,755', -'755,755,755,8,310,424,447,440,711,310,199,381,381,381,381,381,381,381', -'381,381,381,381,381,381,381,201,446,381,381,381,55,381,347,603,594,381', -'591,512,381,518,447,491,512,381,394,381,633,381,381,381,381,381,381', -'381,383,381,381,381,9,632,326,383,383,383,306,313,306,383,383,306,383', -'381,381,316,381,591,381,381,500,307,326,307,492,595,307,326,627,630', -'627,383,383,627,383,383,383,383,383,631,594,632,743,582,727,798,727', -'798,744,727,798,633,26,322,15,15,55,322,594,550,383,383,383,383,383', -'383,383,383,383,383,383,383,383,383,574,277,383,383,383,594,383,491', -'594,491,383,582,491,383,551,595,10,633,383,528,383,343,383,383,383,383', -'383,383,383,50,383,550,383,595,574,11,50,50,50,511,26,50,50,50,511,50', -'383,383,492,383,492,383,383,492,595,50,50,595,297,12,551,297,26,277', -'50,50,693,50,50,50,50,50,744,14,744,298,20,744,298,344,528,528,343,343', -'343,277,301,108,34,301,528,108,108,50,50,50,50,50,50,50,50,50,50,50', -'50,50,50,345,13,50,50,50,693,36,50,13,14,50,346,14,50,50,41,50,13,50', -'95,50,419,50,50,50,50,50,50,50,432,50,184,50,344,344,344,432,432,432', -'848,200,432,432,432,348,432,50,50,50,50,202,50,320,419,803,432,803,419', -'419,419,419,345,345,345,432,432,203,432,432,432,432,432,346,346,346', -'25,303,239,321,303,597,635,25,42,435,848,848,848,848,240,42,435,435', -'435,330,857,435,435,435,42,435,330,320,244,432,348,348,348,35,320,435', -'432,37,37,320,253,432,432,320,435,435,264,435,435,435,435,435,283,321', -'266,597,635,376,858,377,321,320,597,635,432,321,540,597,635,321,857', -'597,635,267,400,268,35,857,432,35,432,401,857,432,435,198,857,321,640', -'597,635,435,198,640,646,283,435,435,283,646,376,198,377,376,857,377', -'400,271,858,540,400,400,540,401,271,858,273,401,401,435,858,280,280', -'271,858,294,294,331,552,552,552,275,552,435,331,435,552,552,435,276', -'859,552,858,552,552,552,552,552,552,552,305,305,615,615,552,552,552', -'552,552,552,552,332,420,279,333,334,758,758,332,284,552,333,334,552', -'552,552,552,552,552,552,552,552,552,285,552,552,335,552,552,552,859', -'870,870,335,420,288,336,859,420,420,420,420,859,336,272,292,859,337', -'293,552,552,272,552,552,337,552,552,296,300,552,272,552,302,552,859', -'552,312,339,274,286,314,315,317,552,339,274,286,314,552,552,552,552', -'552,552,274,286,314,552,552,553,553,553,362,553,363,368,552,553,553', -'371,375,382,553,402,553,553,553,553,553,553,553,403,404,405,429,553', -'553,553,553,553,553,553,522,522,438,522,522,522,439,441,442,553,448', -'450,553,553,553,553,553,553,553,553,553,553,451,553,553,455,553,553', -'553,398,398,398,398,398,398,398,398,398,398,398,324,398,398,459,460', -'398,398,324,553,553,459,553,553,470,553,553,324,473,553,459,553,398', -'553,398,553,398,398,398,398,398,398,398,553,398,487,493,494,553,553', -'553,553,553,553,526,503,531,553,553,60,60,60,503,60,543,547,553,60,60', -'554,561,503,60,563,60,60,60,60,60,60,60,566,568,576,577,60,60,60,60', -'60,60,60,583,586,60,593,596,599,601,366,602,60,604,607,60,60,60,60,60', -'60,60,60,60,60,608,60,60,611,60,60,60,366,366,366,366,366,366,366,366', -'366,366,366,598,366,366,721,617,366,366,598,60,623,721,60,598,625,60', -'60,598,626,60,721,629,366,638,366,60,366,366,366,366,366,366,366,60', -'366,643,647,648,60,60,60,60,60,60,649,655,660,60,60,663,60,366,665,366', -'636,60,97,97,97,97,97,636,678,696,97,97,636,700,701,97,636,97,97,97', -'97,97,97,97,702,705,709,710,97,97,97,97,97,97,97,712,716,97,4,4,4,4', -'4,97,97,97,97,97,97,97,97,97,97,97,97,97,97,718,97,97,719,97,97,97,399', -'399,399,399,399,399,399,399,399,399,399,770,399,399,771,720,399,399', -'770,97,732,771,97,735,746,97,97,770,750,97,771,97,399,751,399,97,399', -'399,399,399,399,399,399,97,399,764,772,774,97,97,97,97,97,97,775,773', -'782,97,97,697,697,697,773,697,783,97,825,697,697,784,787,773,697,825', -'697,697,697,697,697,697,697,800,825,801,806,697,697,697,697,697,697', -'697,106,106,106,106,106,808,809,810,813,697,814,826,697,697,697,697', -'697,697,697,697,697,697,833,697,697,410,836,514,697,514,514,514,514', -'860,837,854,876,855,856,865,860,410,410,876,871,860,872,873,697,860', -'874,697,876,878,697,697,881,410,697,410,892,410,410,410,410,514,,410', -',410,,,,514,514,514,514,697,697,697,697,697,697,,,,697,697,,821,821', -'821,697,821,,,,821,821,,,,821,,821,821,821,821,821,821,821,,,,,821,821', -'821,821,821,821,821,350,350,350,350,350,,,555,,821,,,821,821,821,821', -'821,821,821,821,821,821,,821,821,,,,821,555,555,555,555,555,555,555', -'555,555,555,555,,555,555,,,555,555,,821,,,821,,,821,821,,,821,,,555', -',555,,555,555,555,555,555,555,555,,555,,,,821,821,821,821,821,821,,', -',821,821,,,555,,821,0,0,0,0,0,0,,,,0,0,,,,0,,0,0,0,0,0,0,0,,,,,0,0,0', -'0,0,0,0,,,0,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,0,0,,0,0,0,,,,,,,,,,,', -',,,,,,,,0,,,0,,,0,0,,,0,,0,,,,0,645,,645,645,645,645,,0,,,,,0,0,0,0', -'0,0,,,,0,0,30,30,30,30,30,30,,,,30,30,,,,30,,30,30,30,30,30,30,30,645', -'645,645,645,30,30,30,30,30,30,30,,,30,,,,,,30,30,30,30,30,30,30,30,30', -'30,30,30,30,30,,30,30,,30,30,30,,,,,,,,,,,,,,,,,,,,30,,,30,,,30,30,', -',30,,30,,,,30,753,,753,753,753,753,,30,,,,,30,30,30,30,30,30,,,,30,30', -'51,51,51,51,51,51,,,,51,51,,,,51,,51,51,51,51,51,51,51,753,753,753,753', -'51,51,51,51,51,51,51,,,51,,,,,,51,51,51,51,51,51,51,51,51,51,51,51,51', -'51,,51,51,,51,51,51,,,,,,,,,,,,,,,,,,,,51,,,51,,,51,51,,,51,,51,,,,51', -'817,,817,817,817,817,,51,,,,,51,51,51,51,51,51,,,,51,51,186,186,186', -'186,186,186,,,,186,186,,,,186,817,186,186,186,186,186,186,186,817,817', -'817,817,186,186,186,186,186,186,186,,,186,,,,,,186,186,186,186,186,186', -'186,186,186,186,186,186,186,186,,186,186,,186,186,186,409,409,409,409', -'409,409,409,,,409,409,,,,,,409,409,,186,,,186,,,186,186,,,186,,186,409', -',409,186,409,409,409,409,409,409,409,186,409,,,,186,186,186,186,186', -'186,,,,186,186,187,187,187,187,187,187,,,,187,187,,,,187,,187,187,187', -'187,187,187,187,,,,,187,187,187,187,187,187,187,,,187,,,,,,187,187,187', -'187,187,187,187,187,187,187,187,187,187,187,,187,187,,187,187,187,411', -',,,,,,,,,,,,,,,411,411,,187,,,187,,,187,187,,,187,,187,411,,411,187', -'411,411,411,411,,,411,187,411,,,,187,187,187,187,187,187,,,,187,187', -'204,204,204,204,204,204,,,,204,204,,,,204,,204,204,204,204,204,204,204', -',,,,204,204,204,204,204,204,204,,,204,,,,,,204,204,204,204,204,204,204', -'204,204,204,204,204,204,204,,204,204,,204,204,204,412,,,,,,,,,,,,,,', -',412,412,,204,,,204,,,204,204,,,204,,204,412,,412,204,412,412,412,412', -',,412,204,412,,,,204,204,204,204,204,204,,,,204,204,265,265,265,265', -'265,265,,,,265,265,,,,265,,265,265,265,265,265,265,265,,,,,265,265,265', -'265,265,265,265,,,265,,,,,,265,265,265,265,265,265,265,265,265,265,265', -'265,265,265,,265,265,,265,265,265,413,,,,,,,,,,,,,,,,413,413,,265,,', -'265,,,265,265,,,265,,265,413,,413,265,413,413,413,413,,,413,265,413', -',,,265,265,265,265,265,265,,,,265,265,270,270,270,270,270,270,,,,270', -'270,,,,270,,270,270,270,270,270,270,270,,,,,270,270,270,270,270,270', -'270,,,270,,,,,,270,270,270,270,270,270,270,270,270,270,270,270,270,270', -',270,270,,270,270,270,414,414,414,414,414,414,414,,,414,414,,,,,,414', -'414,,270,,,270,,,270,270,,,270,,270,414,,414,270,414,414,414,414,414', -'414,414,270,414,,,,270,270,270,270,270,270,,,,270,270,486,486,486,486', -'486,486,,,,486,486,,,,486,,486,486,486,486,486,486,486,,,,,486,486,486', -'486,486,486,486,,,486,,,,,,486,486,486,486,486,486,486,486,486,486,486', -'486,486,486,,486,486,,486,486,486,415,415,415,415,415,415,415,,,415', -'415,,,,,,415,415,,486,,,486,,,486,486,,,486,,486,415,,415,486,415,415', -'415,415,415,415,415,486,415,,,,486,486,486,486,486,486,,,,486,486,490', -'490,490,490,490,490,,,,490,490,,,,490,,490,490,490,490,490,490,490,', -',,,490,490,490,490,490,490,490,,,490,,,,,,490,490,490,490,490,490,490', -'490,490,490,490,490,490,490,,490,490,,490,490,490,416,416,416,416,416', -'416,416,,,416,416,,,,,,416,416,,490,,,490,,,490,490,,,490,,490,416,', -'416,490,416,416,416,416,416,416,416,490,416,,,,490,490,490,490,490,490', -',,,490,490,495,495,495,495,495,495,,,,495,495,,,,495,,495,495,495,495', -'495,495,495,,,,,495,495,495,495,495,495,495,,,495,,,,,,495,495,495,495', -'495,495,495,495,495,495,495,495,495,495,,495,495,,495,495,495,417,417', -'417,417,417,417,417,,,417,417,,,,,,417,417,,495,,,495,,,495,495,,,495', -',495,417,,417,495,417,417,417,417,417,417,417,495,417,,,,495,495,495', -'495,495,495,,,,495,495,513,513,513,513,513,513,,,,513,513,,,,513,,513', -'513,513,513,513,513,513,,,,,513,513,513,513,513,513,513,,,513,,,,,,513', -'513,513,513,513,513,513,513,513,513,513,513,513,513,,513,513,,513,513', -'513,418,418,418,418,418,418,418,,,418,418,,,,,,418,418,,513,,,513,,', -'513,513,,,513,,513,418,,418,513,418,418,418,418,418,418,418,513,418', -',,,513,513,513,513,513,513,,,,513,513,559,559,559,559,559,559,,,,559', -'559,,,,559,,559,559,559,559,559,559,559,,,,,559,559,559,559,559,559', -'559,,,559,,,,,,559,559,559,559,559,559,559,559,559,559,559,559,559,559', -',559,559,,559,559,559,421,421,421,421,421,421,421,,,421,421,,,,,,421', -'421,,559,,,559,,,559,559,,,559,,559,421,,421,559,421,421,421,421,421', -'421,421,559,421,,,,559,559,559,559,559,559,,,,559,559,588,588,588,588', -'588,588,,,,588,588,,,,588,,588,588,588,588,588,588,588,,,,,588,588,588', -'588,588,588,588,,,588,,,,,,588,588,588,588,588,588,588,588,588,588,588', -'588,588,588,,588,588,,588,588,588,422,422,422,422,422,422,422,422,,422', -'422,,,,,,422,422,,588,,,588,,,588,588,,,588,,588,422,,422,588,422,422', -'422,422,422,422,422,588,422,,,,588,588,588,588,588,588,,,,588,588,589', -'589,589,589,589,589,,,,589,589,,,,589,,589,589,589,589,589,589,589,', -',,,589,589,589,589,589,589,589,,,589,,,,,,589,589,589,589,589,589,589', -'589,589,589,589,589,589,589,,589,589,,589,589,589,406,,,,,,,,,,,,,,', -',406,406,,589,,,589,,,589,589,,,589,,589,406,,406,589,406,406,406,406', -',,,589,,,,,589,589,589,589,589,589,,,,589,589,606,606,606,606,606,606', -',,,606,606,,,,606,,606,606,606,606,606,606,606,,,,,606,606,606,606,606', -'606,606,,,606,,,,,,606,606,606,606,606,606,606,606,606,606,606,606,606', -'606,,606,606,,606,606,606,407,,,,,,,,,,,,,,,,407,407,,606,,,606,,,606', -'606,,,606,,606,407,,407,606,407,407,407,407,,,,606,,,,,606,606,606,606', -'606,606,,,,606,606,639,639,639,639,639,639,,,,639,639,,,,639,,639,639', -'639,639,639,639,639,,,,,639,639,639,639,639,639,639,,,639,,,,,,639,639', -'639,639,639,639,639,639,639,639,639,639,639,639,,639,639,,639,639,639', -'408,,,,,,,,,,,,,,,,408,408,,639,,,639,,,639,639,,,639,,639,408,,,639', -'408,408,408,408,,,,639,,,,,639,639,639,639,639,639,,,,639,639,644,644', -'644,644,644,644,,,,644,644,,,,644,,644,644,644,644,644,644,644,,,,,644', -'644,644,644,644,644,644,,,644,,,,,,644,644,644,644,644,644,644,644,644', -'644,644,644,644,644,,644,644,,644,644,644,,,,,,,,,,,,,,,,,,,,644,,,644', -',,644,644,,,644,,644,,,,644,,,,,,,,644,,,,,644,644,644,644,644,644,', -',,644,644,671,671,671,671,671,671,,,,671,671,,,,671,,671,671,671,671', -'671,671,671,,,,,671,671,671,671,671,671,671,,,671,,,,,,671,671,671,671', -'671,671,671,671,671,671,671,671,671,671,,671,671,,671,671,671,,,,,,', -',,,,,,,,,,,,,671,,,671,,,671,671,,,671,,671,,,,671,,,,,,,,671,,,,,671', -'671,671,671,671,671,,,,671,671,706,706,706,706,706,706,,,,706,706,,', -',706,,706,706,706,706,706,706,706,,,,,706,706,706,706,706,706,706,,', -'706,,,,,,706,706,706,706,706,706,706,706,706,706,706,706,706,706,,706', -'706,,706,706,706,,,,,,,,,,,,,,,,,,,,706,,,706,,,706,706,,,706,,706,', -',,706,,,,,,,,706,,,,,706,706,706,706,706,706,,,,706,706,724,724,724', -'724,724,724,,,,724,724,,,,724,,724,724,724,724,724,724,724,,,,,724,724', -'724,724,724,724,724,,,724,,,,,,724,724,724,724,724,724,724,724,724,724', -'724,724,724,724,,724,724,,724,724,724,,,,,,,,,,,,,,,,,,,,724,,,724,', -',724,724,,,724,,724,,,,724,,,,,,,,724,,,,,724,724,724,724,724,724,,', -',724,724,736,736,736,736,736,736,,,,736,736,,,,736,,736,736,736,736', -'736,736,736,,,,,736,736,736,736,736,736,736,,,736,,,,,,736,736,736,736', -'736,736,736,736,736,736,736,736,736,736,,736,736,,736,736,736,,,,,,', -',,,,,,,,,,,,,736,,,736,,,736,736,,,736,,736,,,,736,,,,,,,,736,,,,,736', -'736,736,736,736,736,,,,736,736,737,737,737,737,737,737,,,,737,737,,', -',737,,737,737,737,737,737,737,737,,,,,737,737,737,737,737,737,737,,', -'737,,,,,,737,737,737,737,737,737,737,737,737,737,737,737,737,737,,737', -'737,,737,737,737,,,,,,,,,,,,,,,,,,,,737,,,737,,,737,737,,,737,,737,', -',,737,,,,,,,,737,,,,,737,737,737,737,737,737,,,,737,737,741,741,741', -'741,741,741,,,,741,741,,,,741,,741,741,741,741,741,741,741,,,,,741,741', -'741,741,741,741,741,,,741,,,,,,741,741,741,741,741,741,741,741,741,741', -'741,741,741,741,,741,741,,741,741,741,,,,,,,,,,,,,,,,,,,,741,,,741,', -',741,741,,,741,,741,,,,741,,,,,,,,741,,,,,741,741,741,741,741,741,,', -',741,741,748,748,748,748,748,748,,,,748,748,,,,748,,748,748,748,748', -'748,748,748,,,,,748,748,748,748,748,748,748,,,748,,,,,,748,748,748,748', -'748,748,748,748,748,748,748,748,748,748,,748,748,,748,748,748,,,,,,', -',,,,,,,,,,,,,748,,,748,,,748,748,,,748,,748,,,,748,,,,,,,,748,,,,,748', -'748,748,748,748,748,,,,748,748,794,794,794,794,794,794,,,,794,794,,', -',794,,794,794,794,794,794,794,794,,,,,794,794,794,794,794,794,794,,', -'794,,,,,,794,794,794,794,794,794,794,794,794,794,794,794,794,794,,794', -'794,,794,794,794,,,,,,,,,,,,,,,,,,,,794,,,794,,,794,794,,,794,,794,', -',,794,,,,,,,,794,,,,,794,794,794,794,794,794,,,,794,794,838,838,838', -'838,838,838,,,,838,838,,,,838,,838,838,838,838,838,838,838,,,,,838,838', -'838,838,838,838,838,,,838,,,,,,838,838,838,838,838,838,838,838,838,838', -'838,838,838,838,,838,838,,838,838,838,,,,,,,,,,,,,,,,,,,,838,,,838,', -',838,838,,,838,,838,,,,838,,,,,,,,838,,,,,838,838,838,838,838,838,,', -',838,838,845,845,845,845,845,845,,,,845,845,,,,845,,845,845,845,845', -'845,845,845,,,,,845,845,845,845,845,845,845,,,845,,,,,,845,845,845,845', -'845,845,845,845,845,845,845,845,845,845,,845,845,,845,845,845,,,,,,', -',,,,,,,,,,,,,845,,,845,,,845,845,,,845,,845,,,,845,,,,,,,,845,,,,,845', -'845,845,845,845,845,,,,845,845,852,852,852,852,852,852,,,,852,852,,', -',852,,852,852,852,852,852,852,852,,,,,852,852,852,852,852,852,852,,', -'852,,,,,,852,852,852,852,852,852,852,852,852,852,852,852,852,852,,852', -'852,,852,852,852,,,,,,,,,,,,,,,,,,,,852,,,852,,,852,852,,,852,,852,', -',,852,,,,,,,,852,,,,,852,852,852,852,852,852,,,,852,852,5,5,5,5,5,,', -',5,5,,,,5,,5,5,5,5,5,5,5,,,,,5,5,5,5,5,5,5,,,5,,,,,,5,5,5,5,5,5,5,5', -'5,5,5,5,5,5,,5,5,,5,5,5,,,,,,,,,,,,,,,,,,,,5,,,5,,,5,5,,,5,,5,,,,5,', -',,,,,,5,,,,,5,5,5,5,5,5,,,,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6', -'6,6,6,6,6,,,6,6,6,6,6,6,6,6,6,6,,,,,,6,6,6,6,6,6,6,6,6,,6,,,,,,,,6,6', -',6,6,6,6,,6,6,,,6,,,,,6,6,6,6,,,,,,,,,,,,,,6,6,,6,6,6,6,6,6,6,6,6,,6', -',,6,6,,,,,,,,,,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,,,7', -'7,7,7,7,7,7,7,7,7,,,,,,7,7,7,7,7,7,7,7,,,7,,,,,,,,7,7,,7,7,7,7,,7,7', -',,7,,,,,7,7,7,7,,,,,,,,,,,,,,7,7,,7,7,7,7,7,7,7,7,7,,7,,,7,7,,,17,17', -'17,,17,,,7,17,17,,,,17,,17,17,17,17,17,17,17,,,,,17,17,17,17,17,17,17', -',,17,,,,,,,17,,,17,17,17,17,17,17,17,17,17,17,,17,17,,17,17,17,,,,,', -',,,,,,,,,,,,,,17,,,17,,,17,17,,,17,,,,,,17,,,,,,,,17,,,,,17,17,17,17', -'17,17,,,,17,17,18,18,18,,18,,,,18,18,,,,18,,18,18,18,18,18,18,18,,,', -',18,18,18,18,18,18,18,,,,,,,,,,18,,,18,18,18,18,18,18,18,18,18,18,,18', -'18,,18,18,18,,,,,,,,,,,,,,,,,,,,18,,,18,,,18,18,,,18,,,,,,18,,,,,,,', -'18,,,,,18,18,18,18,18,18,,,,18,18,22,22,22,,22,,,,22,22,,,,22,,22,22', -'22,22,22,22,22,,,,,22,22,22,22,22,22,22,,,,,,,,,,22,,,22,22,22,22,22', -'22,22,22,22,22,,22,22,,22,22,22,,,,,,,,,,,,,,,,,,,,22,,,22,,,22,22,', -',22,,22,,22,,22,,,,,,,,22,,,,,22,22,22,22,22,22,,,,22,22,23,23,23,,23', -',,,23,23,,,,23,,23,23,23,23,23,23,23,,,,,23,23,23,23,23,23,23,,,,,,', -',,,23,,,23,23,23,23,23,23,23,23,23,23,,23,23,,23,23,23,,,,,,,,,,,,,', -',,,,,,23,,,23,,,23,23,,,23,,23,,23,,23,,,,,,,,23,,,,,23,23,23,23,23', -'23,,,,23,23,24,24,24,,24,,,,24,24,,,,24,,24,24,24,24,24,24,24,,,,,24', -'24,24,24,24,24,24,,,,,,,,,,24,,,24,24,24,24,24,24,24,24,24,24,,24,24', -',24,24,24,,,,,,,,,,,,,,,,,,,,24,,,24,,,24,24,,,24,,24,,24,,24,,,,,,', -',24,,,,,24,24,24,24,24,24,,,,24,24,27,27,27,,27,,,,27,27,,,,27,,27,27', -'27,27,27,27,27,,,,,27,27,27,27,27,27,27,,,,,,,,,,27,,,27,27,27,27,27', -'27,27,27,27,27,,27,27,,27,27,27,,,,,,,,,,,,,,,,,,,,27,,,27,27,,27,27', -',,27,,27,,27,,27,,,,,,,,27,,,,,27,27,27,27,27,27,,,,27,27,28,28,28,', -'28,,,,28,28,,,,28,,28,28,28,28,28,28,28,,,,,28,28,28,28,28,28,28,,,', -',,,,,,28,,,28,28,28,28,28,28,28,28,28,28,,28,28,,28,28,28,,,,,,,,,,', -',,,,,,,,,28,,,28,28,,28,28,,,28,,28,,28,,28,,,,,,,,28,,,,,28,28,28,28', -'28,28,,,,28,28,31,31,31,,31,,,,31,31,,,,31,,31,31,31,31,31,31,31,,,', -',31,31,31,31,31,31,31,,,,,,,,,,31,,,31,31,31,31,31,31,31,31,31,31,,31', -'31,,,,31,,828,828,828,828,828,828,828,828,828,828,828,,828,828,,,828', -'828,31,,,31,,,31,31,,,31,,31,,828,,828,,828,828,828,828,828,828,828', -',828,,,31,31,31,31,31,31,,,,31,31,32,32,32,828,32,828,,,32,32,,,,32', -',32,32,32,32,32,32,32,,,,,32,32,32,32,32,32,32,,,,,,,,,,32,,,32,32,32', -'32,32,32,32,32,32,32,,32,32,,,,32,,19,19,19,19,19,19,19,19,19,19,19', -',19,19,,,19,19,32,,,32,,,32,32,,,32,,,,19,,19,,19,19,19,19,19,19,19', -',19,,,32,32,32,32,32,32,,,,32,32,38,38,38,19,38,,,,38,38,,,,38,,38,38', -'38,38,38,38,38,,,,,38,38,38,38,38,38,38,,,,,,,,,,38,,,38,38,38,38,38', -'38,38,38,38,38,,38,38,,38,38,38,,,,,,,,,,,,,,,,,,,,38,,,38,,,38,38,', -',38,,,,,,38,,,,,,,,38,,,,,38,38,38,38,38,38,,,,38,38,39,39,39,,39,,', -',39,39,,,,39,,39,39,39,39,39,39,39,,,,,39,39,39,39,39,39,39,,,,,,,,', -',39,,,39,39,39,39,39,39,39,39,39,39,,39,39,,39,39,39,,,,,,,,,,,,,,,', -',,,,39,,,39,,,39,39,,,39,,,,,,39,,,,,,,,39,,,,,39,39,39,39,39,39,,,', -'39,39,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', -'40,,,,,,,,,,,,,,,,,,,,40,,,40,,,40,40,,,40,,,,,,40,,,,,,,,40,,,,,40', -'40,40,40,40,40,,,,40,40,52,52,52,,52,,,,52,52,,,,52,,52,52,52,52,52', -'52,52,,,,,52,52,52,52,52,52,52,,,52,,,,,,,52,,,52,52,52,52,52,52,52', -'52,52,52,,52,52,,52,52,52,,,,,,,,,,,,,,,,,,,,52,,,52,,,52,52,,,52,,', -',,,52,,,,,,,,52,,,,,52,52,52,52,52,52,,,,52,52,53,53,53,,53,,,,53,53', -',,,53,,53,53,53,53,53,53,53,,,,,53,53,53,53,53,53,53,,,,,,,,,,53,,,53', -'53,53,53,53,53,53,53,53,53,,53,53,,53,53,53,,,,,,,,,,,,,,,,,,,,53,,', -'53,,,53,53,,,53,,53,,,,53,,,,,,,,53,,,,,53,53,53,53,53,53,,,,53,53,54', -'54,54,,54,,,,54,54,,,,54,,54,54,54,54,54,54,54,,,,,54,54,54,54,54,54', -'54,,,,,,,,,,54,,,54,54,54,54,54,54,54,54,54,54,,54,54,,54,54,54,,,,', -',,,,,,,,,,,,,,,54,,,54,,,54,54,,,54,,,,,,54,,,,,,,,54,,,,,54,54,54,54', -'54,54,,,,54,54,56,56,56,,56,,,,56,56,,,,56,,56,56,56,56,56,56,56,,,', -',56,56,56,56,56,56,56,,,56,,,,,,,56,,,56,56,56,56,56,56,56,56,56,56', -',56,56,,56,56,56,,,,,,,,,,,,,,,,,,,,56,,,56,,,56,56,,,56,,,,,,56,,,', -',,,,56,,,,,56,56,56,56,56,56,,,,56,56,57,57,57,,57,,,,57,57,,,,57,,57', -'57,57,57,57,57,57,,,,,57,57,57,57,57,57,57,,,57,,,,,,,57,,,57,57,57', -'57,57,57,57,57,57,57,,57,57,,57,57,57,,,,,,,,,,,,,,,,,,,,57,,,57,,,57', -'57,,,57,,,,,,57,,,,,,,,57,,,,,57,57,57,57,57,57,,,,57,57,61,61,61,,61', -',,,61,61,,,,61,,61,61,61,61,61,61,61,,,,,61,61,61,61,61,61,61,,,,,,', -',,,61,,,61,61,61,61,61,61,61,61,61,61,,61,61,,,,61,,237,237,237,237', -'237,237,237,237,237,237,237,,237,237,,,237,237,61,,,61,,,61,61,,,61', -',61,,237,,237,,237,237,237,237,237,237,237,,237,,,61,61,61,61,61,61', -',,,61,61,62,62,62,237,62,,,,62,62,,,,62,,62,62,62,62,62,62,62,,,,,62', -'62,62,62,62,62,62,,,,,,,,,,62,,,62,62,62,62,62,62,62,62,62,62,,62,62', -',,,62,,374,374,374,374,374,374,374,374,374,374,374,,374,374,,62,374', -'374,62,,,62,,,62,62,,,62,,,,374,,374,,374,374,374,374,374,374,374,,374', -',,62,62,62,62,62,62,,,,62,62,63,63,63,374,63,,,,63,63,,,,63,,63,63,63', -'63,63,63,63,,,,,63,63,63,63,63,63,63,,,,,,,,,,63,,,63,63,63,63,63,63', -'63,63,63,63,,63,63,,,,63,,388,388,388,388,388,388,388,388,388,388,388', -',388,388,,,388,388,63,,,63,,,63,63,,,63,,,,388,,388,,388,388,388,388', -'388,388,388,,388,,,63,63,63,63,63,63,,,,63,63,82,82,82,388,82,,,,82', -'82,,,,82,,82,82,82,82,82,82,82,,82,,,82,82,82,82,82,82,82,,,,,,,,,,82', -',,82,82,82,82,82,82,82,82,82,82,,82,82,,82,82,82,,,,,,,,,,,,,,,,,,,', -'82,,,82,82,,82,82,,,82,,82,,82,,82,,,,,,,,82,,82,,,82,82,82,82,82,82', -',,,82,82,86,86,86,,86,,,,86,86,,,,86,,86,86,86,86,86,86,86,,86,,,86', -'86,86,86,86,86,86,,,,,,,,,,86,,,86,86,86,86,86,86,86,86,86,86,,86,86', -',86,86,86,,,,,,,,,,,,,,,,,,,,86,,,86,86,,86,86,,,86,,86,,86,,86,,,,', -',,,86,,86,,,86,86,86,86,86,86,,,,86,86,101,101,101,,101,,,,101,101,', -',,101,,101,101,101,101,101,101,101,,,,,101,101,101,101,101,101,101,', -',101,,,,,,,101,,,101,101,101,101,101,101,101,101,101,101,,101,101,,101', -'101,101,,,,,,,,,,,,,,,,,,,,101,,,101,,,101,101,,,101,,,,,,101,,,,,,', -',101,,,,,101,101,101,101,101,101,,,,101,101,102,102,102,,102,,,,102', -'102,,,,102,,102,102,102,102,102,102,102,,,,,102,102,102,102,102,102', -'102,,,102,,,,,,,102,,,102,102,102,102,102,102,102,102,102,102,,102,102', -',102,102,102,,,,,,,,,,,,,,,,,,,,102,,,102,,,102,102,,,102,,,,,,102,', -',,,,,,102,,,,,102,102,102,102,102,102,,,,102,102,103,103,103,,103,,', -',103,103,,,,103,,103,103,103,103,103,103,103,,,,,103,103,103,103,103', -'103,103,,,103,,,,,,,103,,,103,103,103,103,103,103,103,103,103,103,,103', -'103,,103,103,103,,,,,,,,,,,,,,,,,,,,103,,,103,,,103,103,,,103,,,,,,103', -',,,,,,,103,,,,,103,103,103,103,103,103,,,,103,103,104,104,104,,104,', -',,104,104,,,,104,,104,104,104,104,104,104,104,,,,,104,104,104,104,104', -'104,104,,,104,,,,,,,104,,,104,104,104,104,104,104,104,104,104,104,,104', -'104,,104,104,104,,,,,,,,,,,,,,,,,,,,104,,,104,,,104,104,,,104,,,,,,104', -',,,,,,,104,,,,,104,104,104,104,104,104,,,,104,104,105,105,105,105,105', -',,,105,105,,,,105,,105,105,105,105,105,105,105,,,,,105,105,105,105,105', -'105,105,,,105,,,,,,105,105,105,105,105,105,105,105,105,105,105,105,105', -'105,,105,105,,105,105,105,,,,,,,,,,,,,,,,,,,,105,,,105,,,105,105,,,105', -',105,,,,105,,,,,,,,105,,,,,105,105,105,105,105,105,,,,105,105,188,188', -'188,,188,,,,188,188,,,,188,,188,188,188,188,188,188,188,,,,,188,188', -'188,188,188,188,188,,,,,,,,,,188,,,188,188,188,188,188,188,188,188,188', -'188,,188,188,,188,188,188,,,,,,,,,,,,,,,,,,,,188,,,188,,,188,188,,,188', -',188,,,,188,,,,,,,,188,,,,,188,188,188,188,188,188,,,,188,188,189,189', -'189,,189,,,,189,189,,,,189,,189,189,189,189,189,189,189,,,,,189,189', -'189,189,189,189,189,,,,,,,,,,189,,,189,189,189,189,189,189,189,189,189', -'189,,189,189,,189,189,189,,,,,,,,,,,,,,,,,,,,189,,,189,,,189,189,,,189', -',189,,,,189,,,,,,,,189,,,,,189,189,189,189,189,189,,,,189,189,190,190', -'190,,190,,,,190,190,,,,190,,190,190,190,190,190,190,190,,,,,190,190', -'190,190,190,190,190,,,,,,,,,,190,,,190,190,190,190,190,190,190,190,190', -'190,,190,190,,190,190,190,,,,,,,,,,,,,,,,,,,,190,,,190,,,190,190,,,190', -',,,,,190,,,,,,,,190,,,,,190,190,190,190,190,190,,,,190,190,191,191,191', -',191,,,,191,191,,,,191,,191,191,191,191,191,191,191,,,,,191,191,191', -'191,191,191,191,,,,,,,,,,191,,,191,191,191,191,191,191,191,191,191,191', -',191,191,,191,191,191,,,,,,,,,,,,,,,,,,,,191,,,191,,,191,191,,,191,', -'191,,,,191,,,,,,,,191,,,,,191,191,191,191,191,191,,,,191,191,194,194', -'194,,194,,,,194,194,,,,194,,194,194,194,194,194,194,194,,,,,194,194', -'194,194,194,194,194,,,,,,,,,,194,,,194,194,194,194,194,194,194,194,194', -'194,,194,194,,194,194,194,,,,,,,,,,,,,,,,,,,,194,,,194,,,194,194,,,194', -',,,,,194,,,,,,,,194,,,,,194,194,194,194,194,194,,,,194,194,195,195,195', -',195,,,,195,195,,,,195,,195,195,195,195,195,195,195,,,,,195,195,195', -'195,195,195,195,,,195,,,,,,,195,,,195,195,195,195,195,195,195,195,195', -'195,,195,195,,195,195,195,,,,,,,,,,,,,,,,,,,,195,,,195,,,195,195,,,195', -',,,,,195,,,,,,,,195,,,,,195,195,195,195,195,195,,,,195,195,196,196,196', -',196,,,,196,196,,,,196,,196,196,196,196,196,196,196,,,,,196,196,196', -'196,196,196,196,,,196,,,,,,,196,,,196,196,196,196,196,196,196,196,196', -'196,,196,196,,196,196,196,,,,,,,,,,,,,,,,,,,,196,,,196,,,196,196,,,196', -',,,,,196,,,,,,,,196,,,,,196,196,196,196,196,196,,,,196,196,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,207,207,207,207', -',207,207,,207,207,207,,,,,,,,,,,,,,,,,,,,207,,,207,,,207,207,,,207,', -',,,,207,,,,,,,,207,,,,,207,207,207,207,207,207,,,,207,207,208,208,208', -',208,,,,208,208,,,,208,,208,208,208,208,208,208,208,,,,,208,208,208', -'208,208,208,208,,,,,,,,,,208,,,208,208,208,208,208,208,208,208,208,208', -',208,208,,208,208,208,,,,,,,,,,,,,,,,,,,,208,,,208,,,208,208,,,208,', -',,,,208,,,,,,,,208,,,,,208,208,208,208,208,208,,,,208,208,209,209,209', -',209,,,,209,209,,,,209,,209,209,209,209,209,209,209,,,,,209,209,209', -'209,209,209,209,,,,,,,,,,209,,,209,209,209,209,209,209,209,209,209,209', -',209,209,,209,209,209,,,,,,,,,,,,,,,,,,,,209,,,209,,,209,209,,,209,', -',,,,209,,,,,,,,209,,,,,209,209,209,209,209,209,,,,209,209,210,210,210', -',210,,,,210,210,,,,210,,210,210,210,210,210,210,210,,,,,210,210,210', -'210,210,210,210,,,,,,,,,,210,,,210,210,210,210,210,210,210,210,210,210', -',210,210,,210,210,210,,,,,,,,,,,,,,,,,,,,210,,,210,,,210,210,,,210,', -',,,,210,,,,,,,,210,,,,,210,210,210,210,210,210,,,,210,210,211,211,211', -',211,,,,211,211,,,,211,,211,211,211,211,211,211,211,,,,,211,211,211', -'211,211,211,211,,,,,,,,,,211,,,211,211,211,211,211,211,211,211,211,211', -',211,211,,211,211,211,,,,,,,,,,,,,,,,,,,,211,,,211,,,211,211,,,211,', -',,,,211,,,,,,,,211,,,,,211,211,211,211,211,211,,,,211,211,212,212,212', -',212,,,,212,212,,,,212,,212,212,212,212,212,212,212,,,,,212,212,212', -'212,212,212,212,,,,,,,,,,212,,,212,212,212,212,212,212,212,212,212,212', -',212,212,,212,212,212,,,,,,,,,,,,,,,,,,,,212,,,212,,,212,212,,,212,', -',,,,212,,,,,,,,212,,,,,212,212,212,212,212,212,,,,212,212,213,213,213', -',213,,,,213,213,,,,213,,213,213,213,213,213,213,213,,,,,213,213,213', -'213,213,213,213,,,,,,,,,,213,,,213,213,213,213,213,213,213,213,213,213', -',213,213,,213,213,213,,,,,,,,,,,,,,,,,,,,213,,,213,,,213,213,,,213,', -',,,,213,,,,,,,,213,,,,,213,213,213,213,213,213,,,,213,213,214,214,214', -',214,,,,214,214,,,,214,,214,214,214,214,214,214,214,,,,,214,214,214', -'214,214,214,214,,,,,,,,,,214,,,214,214,214,214,214,214,214,214,214,214', -',214,214,,214,214,214,,,,,,,,,,,,,,,,,,,,214,,,214,,,214,214,,,214,', -',,,,214,,,,,,,,214,,,,,214,214,214,214,214,214,,,,214,214,215,215,215', -',215,,,,215,215,,,,215,,215,215,215,215,215,215,215,,,,,215,215,215', -'215,215,215,215,,,,,,,,,,215,,,215,215,215,215,215,215,215,215,215,215', -',215,215,,215,215,215,,,,,,,,,,,,,,,,,,,,215,,,215,,,215,215,,,215,', -',,,,215,,,,,,,,215,,,,,215,215,215,215,215,215,,,,215,215,216,216,216', -',216,,,,216,216,,,,216,,216,216,216,216,216,216,216,,,,,216,216,216', -'216,216,216,216,,,,,,,,,,216,,,216,216,216,216,216,216,216,216,216,216', -',216,216,,216,216,216,,,,,,,,,,,,,,,,,,,,216,,,216,,,216,216,,,216,', -',,,,216,,,,,,,,216,,,,,216,216,216,216,216,216,,,,216,216,217,217,217', -',217,,,,217,217,,,,217,,217,217,217,217,217,217,217,,,,,217,217,217', -'217,217,217,217,,,,,,,,,,217,,,217,217,217,217,217,217,217,217,217,217', -',217,217,,217,217,217,,,,,,,,,,,,,,,,,,,,217,,,217,,,217,217,,,217,', -',,,,217,,,,,,,,217,,,,,217,217,217,217,217,217,,,,217,217,218,218,218', -',218,,,,218,218,,,,218,,218,218,218,218,218,218,218,,,,,218,218,218', -'218,218,218,218,,,,,,,,,,218,,,218,218,218,218,218,218,218,218,218,218', -',218,218,,218,218,218,,,,,,,,,,,,,,,,,,,,218,,,218,,,218,218,,,218,', -',,,,218,,,,,,,,218,,,,,218,218,218,218,218,218,,,,218,218,219,219,219', -',219,,,,219,219,,,,219,,219,219,219,219,219,219,219,,,,,219,219,219', -'219,219,219,219,,,,,,,,,,219,,,219,219,219,219,219,219,219,219,219,219', -',219,219,,219,219,219,,,,,,,,,,,,,,,,,,,,219,,,219,,,219,219,,,219,', -',,,,219,,,,,,,,219,,,,,219,219,219,219,219,219,,,,219,219,220,220,220', -',220,,,,220,220,,,,220,,220,220,220,220,220,220,220,,,,,220,220,220', -'220,220,220,220,,,,,,,,,,220,,,220,220,220,220,220,220,220,220,220,220', -',220,220,,220,220,220,,,,,,,,,,,,,,,,,,,,220,,,220,,,220,220,,,220,', -',,,,220,,,,,,,,220,,,,,220,220,220,220,220,220,,,,220,220,221,221,221', -',221,,,,221,221,,,,221,,221,221,221,221,221,221,221,,,,,221,221,221', -'221,221,221,221,,,,,,,,,,221,,,221,221,221,221,221,221,221,221,221,221', -',221,221,,221,221,221,,,,,,,,,,,,,,,,,,,,221,,,221,,,221,221,,,221,', -',,,,221,,,,,,,,221,,,,,221,221,221,221,221,221,,,,221,221,222,222,222', -',222,,,,222,222,,,,222,,222,222,222,222,222,222,222,,,,,222,222,222', -'222,222,222,222,,,,,,,,,,222,,,222,222,222,222,222,222,222,222,222,222', -',222,222,,222,222,222,,,,,,,,,,,,,,,,,,,,222,,,222,,,222,222,,,222,', -',,,,222,,,,,,,,222,,,,,222,222,222,222,222,222,,,,222,222,223,223,223', -',223,,,,223,223,,,,223,,223,223,223,223,223,223,223,,,,,223,223,223', -'223,223,223,223,,,,,,,,,,223,,,223,223,223,223,223,223,223,223,223,223', -',223,223,,223,223,223,,,,,,,,,,,,,,,,,,,,223,,,223,,,223,223,,,223,', -',,,,223,,,,,,,,223,,,,,223,223,223,223,223,223,,,,223,223,224,224,224', -',224,,,,224,224,,,,224,,224,224,224,224,224,224,224,,,,,224,224,224', -'224,224,224,224,,,,,,,,,,224,,,224,224,224,224,224,224,224,224,224,224', -',224,224,,224,224,224,,,,,,,,,,,,,,,,,,,,224,,,224,,,224,224,,,224,', -',,,,224,,,,,,,,224,,,,,224,224,224,224,224,224,,,,224,224,225,225,225', -',225,,,,225,225,,,,225,,225,225,225,225,225,225,225,,,,,225,225,225', -'225,225,225,225,,,,,,,,,,225,,,225,225,225,225,225,225,225,225,225,225', -',225,225,,225,225,225,,,,,,,,,,,,,,,,,,,,225,,,225,,,225,225,,,225,', -',,,,225,,,,,,,,225,,,,,225,225,225,225,225,225,,,,225,225,226,226,226', -',226,,,,226,226,,,,226,,226,226,226,226,226,226,226,,,,,226,226,226', -'226,226,226,226,,,,,,,,,,226,,,226,226,226,226,226,226,226,226,226,226', -',226,226,,226,226,226,,,,,,,,,,,,,,,,,,,,226,,,226,,,226,226,,,226,', -',,,,226,,,,,,,,226,,,,,226,226,226,226,226,226,,,,226,226,227,227,227', -',227,,,,227,227,,,,227,,227,227,227,227,227,227,227,,,,,227,227,227', -'227,227,227,227,,,,,,,,,,227,,,227,227,227,227,227,227,227,227,227,227', -',227,227,,227,227,227,,,,,,,,,,,,,,,,,,,,227,,,227,,,227,227,,,227,', -',,,,227,,,,,,,,227,,,,,227,227,227,227,227,227,,,,227,227,228,228,228', -',228,,,,228,228,,,,228,,228,228,228,228,228,228,228,,,,,228,228,228', -'228,228,228,228,,,,,,,,,,228,,,228,228,228,228,228,228,228,228,228,228', -',228,228,,228,228,228,,,,,,,,,,,,,,,,,,,,228,,,228,,,228,228,,,228,', -',,,,228,,,,,,,,228,,,,,228,228,228,228,228,228,,,,228,228,229,229,229', -',229,,,,229,229,,,,229,,229,229,229,229,229,229,229,,,,,229,229,229', -'229,229,229,229,,,,,,,,,,229,,,229,229,229,229,229,229,229,229,229,229', -',229,229,,229,229,229,,,,,,,,,,,,,,,,,,,,229,,,229,,,229,229,,,229,', -',,,,229,,,,,,,,229,,,,,229,229,229,229,229,229,,,,229,229,230,230,230', -',230,,,,230,230,,,,230,,230,230,230,230,230,230,230,,,,,230,230,230', -'230,230,230,230,,,,,,,,,,230,,,230,230,230,230,230,230,230,230,230,230', -',230,230,,230,230,230,,,,,,,,,,,,,,,,,,,,230,,,230,,,230,230,,,230,', -',,,,230,,,,,,,,230,,,,,230,230,230,230,230,230,,,,230,230,231,231,231', -',231,,,,231,231,,,,231,,231,231,231,231,231,231,231,,,,,231,231,231', -'231,231,231,231,,,,,,,,,,231,,,231,231,231,231,231,231,231,231,231,231', -',231,231,,231,231,231,,,,,,,,,,,,,,,,,,,,231,,,231,,,231,231,,,231,', -',,,,231,,,,,,,,231,,,,,231,231,231,231,231,231,,,,231,231,232,232,232', -',232,,,,232,232,,,,232,,232,232,232,232,232,232,232,,,,,232,232,232', -'232,232,232,232,,,,,,,,,,232,,,232,232,232,232,232,232,232,232,232,232', -',232,232,,232,232,232,,,,,,,,,,,,,,,,,,,,232,,,232,,,232,232,,,232,', -',,,,232,,,,,,,,232,,,,,232,232,232,232,232,232,,,,232,232,233,233,233', -',233,,,,233,233,,,,233,,233,233,233,233,233,233,233,,,,,233,233,233', -'233,233,233,233,,,,,,,,,,233,,,233,233,233,233,233,233,233,233,233,233', -',233,233,,233,233,233,,,,,,,,,,,,,,,,,,,,233,,,233,,,233,233,,,233,', -',,,,233,,,,,,,,233,,,,,233,233,233,233,233,233,,,,233,233,241,241,241', -',241,,,,241,241,,,,241,,241,241,241,241,241,241,241,,,,,241,241,241', -'241,241,241,241,,,,,,,,,,241,,,241,241,241,241,241,241,241,241,241,241', -',241,241,,241,241,241,,,,,,,,,,,,,,,,,,,,241,,,241,,,241,241,,,241,', -',,,,241,,,,,,,,241,,,,,241,241,241,241,241,241,,,,241,241,243,243,243', -',243,,,,243,243,,,,243,,243,243,243,243,243,243,243,,,,,243,243,243', -'243,243,243,243,,,,,,,,,,243,,,243,243,243,243,243,243,243,243,243,243', -',243,243,,243,243,243,,,,,,,,,,,,,,,,,,,,243,,,243,,,243,243,,,243,', -',,,,243,,,,,,,,243,,,,,243,243,243,243,243,243,,,,243,243,254,254,254', -',254,,,,254,254,,,,254,,254,254,254,254,254,254,254,,,,,254,254,254', -'254,254,254,254,,,,,,,,,,254,,,254,254,254,254,254,254,254,254,254,254', -',254,254,,254,254,254,,,,,,,,,,,,,,,,,,,,254,,,254,,,254,254,,,254,', -'254,,254,,254,,,,,,,,254,,,,,254,254,254,254,254,254,,,,254,254,255', -'255,255,,255,,,,255,255,,,,255,,255,255,255,255,255,255,255,,,,,255', -'255,255,255,255,255,255,,,,,,,,,,255,,,255,255,255,255,255,255,255,255', -'255,255,,255,255,,255,255,255,,,,,,,,,,,,,,,,,,,,255,,,255,,,255,255', -',,255,,255,,255,,255,,,,,,,,255,,,,,255,255,255,255,255,255,,,,255,255', -'263,263,263,,263,,,,263,263,,,,263,,263,263,263,263,263,263,263,,,,', -'263,263,263,263,263,263,263,,,,,,,,,,263,,,263,263,263,263,263,263,263', -'263,263,263,,263,263,,263,263,263,,,,,,,,,,,,,,,,,,,,263,,,263,,263', -'263,263,,,263,,263,,263,,263,,,,,,,,263,,,,,263,263,263,263,263,263', -',,,263,263,269,269,269,,269,,,,269,269,,,,269,,269,269,269,269,269,269', -'269,,,,,269,269,269,269,269,269,269,,,,,,,,,,269,,,269,269,269,269,269', -'269,269,269,269,269,,269,269,,,,269,,468,468,468,468,468,468,468,468', -'468,468,468,,468,468,,,468,468,269,,,269,,,269,269,,,269,,,,468,,468', -',468,468,468,468,468,468,468,,468,,,269,269,269,269,269,269,,,,269,269', -'290,290,290,468,290,,,,290,290,,,,290,,290,290,290,290,290,290,290,', -',,,290,290,290,290,290,290,290,,,,,,,,,,290,,,290,290,290,290,290,290', -'290,290,290,290,,290,290,,290,290,290,,,,,,,,,,,,,,,,,,,,290,,,290,290', -',290,290,,,290,,,,,,290,,,,,,,,290,,,,,290,290,290,290,290,290,,,,290', -'290,299,299,299,,299,,,,299,299,,,,299,,299,299,299,299,299,299,299', -',,,,299,299,299,299,299,299,299,,,,,,,,,,299,,,299,299,299,299,299,299', -'299,299,299,299,,299,299,,299,299,299,,,,,,,,,,,,,,,,,,,,299,,,299,', -',299,299,,,299,,,,,,299,,,,,,,,299,,,,,299,299,299,299,299,299,,,,299', -'299,308,308,308,,308,,,,308,308,,,,308,,308,308,308,308,308,308,308', -',,,,308,308,308,308,308,308,308,,,308,,,,,,,308,,,308,308,308,308,308', -'308,308,308,308,308,,308,308,,308,308,308,,,,,,,,,,,,,,,,,,,,308,,,308', -',,308,308,,,308,,,,,,308,,,,,,,,308,,,,,308,308,308,308,308,308,,,,308', -'308,309,309,309,,309,,,,309,309,,,,309,,309,309,309,309,309,309,309', -',,,,309,309,309,309,309,309,309,,,309,,,,,,,309,,,309,309,309,309,309', -'309,309,309,309,309,,309,309,,309,309,309,,,,,,,,,,,,,,,,,,,,309,,,309', -',,309,309,,,309,,,,,,309,,,,,,,,309,,,,,309,309,309,309,309,309,,,,309', -'309,327,327,327,,327,,,,327,327,,,,327,,327,327,327,327,327,327,327', -',,,,327,327,327,327,327,327,327,,,327,,,,,,,327,,,327,327,327,327,327', -'327,327,327,327,327,,327,327,,327,327,327,,,,,,,,,,,,,,,,,,,,327,,,327', -',,327,327,,,327,,,,,,327,,,,,,,,327,,,,,327,327,327,327,327,327,,,,327', -'327,341,341,341,,341,,,,341,341,,,,341,,341,341,341,341,341,341,341', -',,,,341,341,341,341,341,341,341,,,341,,,,,,,341,,,341,341,341,341,341', -'341,341,341,341,341,,341,341,,341,341,341,,,,,,,,,,,,,,,,,,,,341,,,341', -',,341,341,,,341,,,,,,341,,,,,,,,341,,,,,341,341,341,341,341,341,,,,341', -'341,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357', -'357,357,357,357,357,357,357,357,,,357,357,357,357,357,357,357,357,357', -'357,,,,,,357,357,357,357,357,357,357,357,,,357,,,,,,,,357,357,,357,357', -'357,357,,357,357,,,357,,,,,357,357,357,357,,,,,,,,,,,,,,357,357,,357', -'357,357,357,357,357,357,357,357,,357,,,357,357,,,369,369,369,,369,,', -'357,369,369,,,,369,,369,369,369,369,369,369,369,,,,,369,369,369,369', -'369,369,369,,,,,,,,,,369,,,369,369,369,369,369,369,369,369,369,369,', -'369,369,,369,369,369,,,,,,,,,,,,,,,,,,,,369,,,369,,,369,369,,,369,,', -',,,369,,,,,,,,369,,,,,369,369,369,369,369,369,,,,369,369,378,378,378', -',378,,,,378,378,,,,378,,378,378,378,378,378,378,378,,,,,378,378,378', -'378,378,378,378,,,,,,,,,,378,,,378,378,378,378,378,378,378,378,378,378', -',378,378,,378,378,378,,,,,,,,,,,,,,,,,,,,378,,,378,378,,378,378,,,378', -',378,,378,,378,,,,,,,,378,,,,,378,378,378,378,378,378,,,,378,378,385', -'385,385,,385,,,,385,385,,,,385,,385,385,385,385,385,385,385,,,,,385', -'385,385,385,385,385,385,,,,,,,,,,385,,,385,385,385,385,385,385,385,385', -'385,385,,385,385,,385,385,385,,,,,,,,,,,,,,,,,,,,385,,,385,385,,385', -'385,,,385,,385,,385,,385,,,,,,,,385,,,,,385,385,385,385,385,385,,,,385', -'385,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', -'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,393,393,393,,393,,,,393,393,,,,393,,393,393,393,393,393,393', -'393,,,,,393,393,393,393,393,393,393,,,,,,,,,,393,,,393,393,393,393,393', -'393,393,393,393,393,,393,393,,393,393,393,,,,,,,,,,,,,,,,,,,,393,,,393', -',,393,393,,,393,,393,,,,393,,,,,,,,393,,,,,393,393,393,393,393,393,', -',,393,393,395,395,395,,395,,,,395,395,,,,395,,395,395,395,395,395,395', -'395,,,,,395,395,395,395,395,395,395,,,,,,,,,,395,,,395,395,395,395,395', -'395,395,395,395,395,,395,395,,395,395,395,,,,,,,,,,,,,,,,,,,,395,,,395', -',,395,395,,,395,,,,,,395,,,,,,,,395,,,,,395,395,395,395,395,395,,,,395', -'395,396,396,396,,396,,,,396,396,,,,396,,396,396,396,396,396,396,396', -',,,,396,396,396,396,396,396,396,,,,,,,,,,396,,,396,396,396,396,396,396', -'396,396,396,396,,396,396,,396,396,396,,,,,,,,,,,,,,,,,,,,396,,,396,', -',396,396,,,396,,,,,,396,,,,,,,,396,,,,,396,396,396,396,396,396,,,,396', -'396,397,397,397,,397,,,,397,397,,,,397,,397,397,397,397,397,397,397', -',,,,397,397,397,397,397,397,397,,,,,,,,,,397,,,397,397,397,397,397,397', -'397,397,397,397,,397,397,,397,397,397,,,,,,,,,,,,,,,,,,,,397,,,397,', -',397,397,,,397,,,,,,397,,,,,,,,397,,,,,397,397,397,397,397,397,,,,397', -'397,426,426,426,,426,,,,426,426,,,,426,,426,426,426,426,426,426,426', -',,,,426,426,426,426,426,426,426,,,,,,,,,,426,,,426,426,426,426,426,426', -'426,426,426,426,,426,426,,426,426,426,,,,,,,,,,,,,,,,,,,,426,,,426,', -',426,426,,,426,,426,,426,,426,,,,,,,,426,,,,,426,426,426,426,426,426', -',,,426,426,428,428,428,,428,,,,428,428,,,,428,,428,428,428,428,428,428', -'428,,,,,428,428,428,428,428,428,428,,,,,,,,,,428,,,428,428,428,428,428', -'428,428,428,428,428,,428,428,,428,428,428,,,,,,,,,,,,,,,,,,,,428,,,428', -',,428,428,,,428,,428,,428,,428,,,,,,,,428,,,,,428,428,428,428,428,428', -',,,428,428,431,431,431,,431,,,,431,431,,,,431,,431,431,431,431,431,431', -'431,,,,,431,431,431,431,431,431,431,,,,,,,,,,431,,,431,431,431,431,431', -'431,431,431,431,431,,431,431,,431,431,431,,,,,,,,,,,,,,,,,,,,431,,,431', -',,431,431,,,431,,,,,,431,,,,,,,,431,,,,,431,431,431,431,431,431,,,,431', -'431,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', -'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,456,456,456,,456,,,,456,456,,,,456,,456,456,456,456,456,456', -'456,,,,,456,456,456,456,456,456,456,,,,,,,,,,456,,,456,456,456,456,456', -'456,456,456,456,456,,456,456,,456,456,456,,,,,,,,,,,,,,,,,,,,456,,,456', -',,456,456,,,456,,456,,,,456,,,,,,,,456,,,,,456,456,456,456,456,456,', -',,456,456,463,463,463,,463,,,,463,463,,,,463,,463,463,463,463,463,463', -'463,,,,,463,463,463,463,463,463,463,,,,,,,,,,463,,,463,463,463,463,463', -'463,463,463,463,463,,463,463,,463,463,463,,,,,,,,,,,,,,,,,,,,463,,,463', -',,463,463,,,463,,,,,,463,,,,,,,,463,,,,,463,463,463,463,463,463,,,,463', -'463,464,464,464,,464,,,,464,464,,,,464,,464,464,464,464,464,464,464', -',,,,464,464,464,464,464,464,464,,,,,,,,,,464,,,464,464,464,464,464,464', -'464,464,464,464,,464,464,,464,464,464,,,,,,,,,,,,,,,,,,,,464,,,464,', -',464,464,,,464,,,,,,464,,,,,,,,464,,,,,464,464,464,464,464,464,,,,464', -'464,465,465,465,,465,,,,465,465,,,,465,,465,465,465,465,465,465,465', -',,,,465,465,465,465,465,465,465,,,,,,,,,,465,,,465,465,465,465,465,465', -'465,465,465,465,,465,465,,465,465,465,,,,,,,,,,,,,,,,,,,,465,,,465,', -',465,465,,,465,,,,,,465,,,,,,,,465,,,,,465,465,465,465,465,465,,,,465', -'465,469,469,469,,469,,,,469,469,,,,469,,469,469,469,469,469,469,469', -',,,,469,469,469,469,469,469,469,,,469,,,,,,,469,,,469,469,469,469,469', -'469,469,469,469,469,,469,469,,469,469,469,,,,,,,,,,,,,,,,,,,,469,,,469', -',,469,469,,,469,,,,,,469,,,,,,,,469,,,,,469,469,469,469,469,469,,,,469', -'469,471,471,471,,471,,,,471,471,,,,471,,471,471,471,471,471,471,471', -',,,,471,471,471,471,471,471,471,,,,,,,,,,471,,,471,471,471,471,471,471', -'471,471,471,471,,471,471,,471,471,471,,,,,,,,,,,,,,,,,,,,471,,,471,', -',471,471,,,471,,471,,,,471,,,,,,,,471,,,,,471,471,471,471,471,471,,', -',471,471,476,476,476,,476,,,,476,476,,,,476,,476,476,476,476,476,476', -'476,,,,,476,476,476,476,476,476,476,,,,,,,,,,476,,,476,476,476,476,476', -'476,476,476,476,476,,476,476,,476,476,476,,,,,,,,,,,,,,,,,,,,476,,,476', -',,476,476,,,476,,476,,,,476,,,,,,,,476,,,,,476,476,476,476,476,476,', -',,476,476,479,479,479,,479,,,,479,479,,,,479,,479,479,479,479,479,479', -'479,,,,,479,479,479,479,479,479,479,,,,,,,,,,479,,,479,479,479,479,479', -'479,479,479,479,479,,479,479,,479,479,479,,,,,,,,,,,,,,,,,,,,479,,,479', -',,479,479,,,479,,,,,,479,,,,,,,,479,,,,,479,479,479,479,479,479,,,,479', -'479,482,482,482,,482,,,,482,482,,,,482,,482,482,482,482,482,482,482', -',,,,482,482,482,482,482,482,482,,,,,,,,,,482,,,482,482,482,482,482,482', -'482,482,482,482,,482,482,,482,482,482,,,,,,,,,,,,,,,,,,,,482,,,482,', -',482,482,,,482,,,,,,482,,,,,,,,482,,,,,482,482,482,482,482,482,,,,482', -'482,496,496,496,,496,,,,496,496,,,,496,,496,496,496,496,496,496,496', -',,,,496,496,496,496,496,496,496,,,,,,,,,,496,,,496,496,496,496,496,496', -'496,496,496,496,,496,496,,496,496,496,,,,,,,,,,,,,,,,,,,,496,,,496,', -',496,496,,,496,,496,,,,496,,,,,,,,496,,,,,496,496,496,496,496,496,,', -',496,496,497,497,497,,497,,,,497,497,,,,497,,497,497,497,497,497,497', -'497,,,,,497,497,497,497,497,497,497,,,,,,,,,,497,,,497,497,497,497,497', -'497,497,497,497,497,,497,497,,497,497,497,,,,,,,,,,,,,,,,,,,,497,,,497', -',,497,497,,,497,,497,,,,497,,,,,,,,497,,,,,497,497,497,497,497,497,', -',,497,497,506,506,506,,506,,,,506,506,,,,506,,506,506,506,506,506,506', -'506,,,,,506,506,506,506,506,506,506,,,,,,,,,,506,,,506,506,506,506,506', -'506,506,506,506,506,,506,506,,506,506,506,,,,,,,,,,,,,,,,,,,,506,,,506', -',,506,506,,,506,,506,,,,506,,,,,,,,506,,,,,506,506,506,506,506,506,', -',,506,506,510,510,510,,510,,,,510,510,,,,510,,510,510,510,510,510,510', -'510,,,,,510,510,510,510,510,510,510,,,510,,,,,,,510,,,510,510,510,510', -'510,510,510,510,510,510,,510,510,,510,510,510,,,,,,,,,,,,,,,,,,,,510', -',,510,,,510,510,,,510,,,,,,510,,,,,,,,510,,,,,510,510,510,510,510,510', -',,,510,510,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534', -'534,534,534,534,534,534,534,534,534,,,534,534,534,534,534,534,534,534', -'534,534,,,,,,534,534,534,534,534,534,534,534,,,534,,,,,,,,534,534,,534', -'534,534,534,,534,534,,,534,,,,,534,534,534,534,,,,,,,,,,,,,,534,534', -',534,534,534,534,534,534,534,534,534,,534,,,534,534,,,537,537,537,,537', -',,534,537,537,,,,537,,537,537,537,537,537,537,537,,,,,537,537,537,537', -'537,537,537,,,,,,,,,,537,,,537,537,537,537,537,537,537,537,537,537,', -'537,537,,537,537,537,,,,,,,,,,,,,,,,,,,,537,,,537,,,537,537,,,537,,', -',,,537,,,,,,,,537,,,,,537,537,537,537,537,537,,,,537,537,538,538,538', -',538,,,,538,538,,,,538,,538,538,538,538,538,538,538,,,,,538,538,538', -'538,538,538,538,,,,,,,,,,538,,,538,538,538,538,538,538,538,538,538,538', -',538,538,,538,538,538,,,,,,,,,,,,,,,,,,,,538,,,538,,,538,538,,,538,', -'538,,,,538,,,,,,,,538,,,,,538,538,538,538,538,538,,,,538,538,541,541', -'541,,541,,,,541,541,,,,541,,541,541,541,541,541,541,541,,,,,541,541', -'541,541,541,541,541,,,,,,,,,,541,,,541,541,541,541,541,541,541,541,541', -'541,,541,541,,541,541,541,,,,,,,,,,,,,,,,,,,,541,,,541,,,541,541,,,541', -',,,,,541,,,,,,,,541,,,,,541,541,541,541,541,541,,,,541,541,542,542,542', -',542,,,,542,542,,,,542,,542,542,542,542,542,542,542,,,,,542,542,542', -'542,542,542,542,,,,,,,,,,542,,,542,542,542,542,542,542,542,542,542,542', -',542,542,,542,542,542,,,,,,,,,,,,,,,,,,,,542,,,542,,,542,542,,,542,', -',,,,542,,,,,,,,542,,,,,542,542,542,542,542,542,,,,542,542,546,546,546', -',546,,,,546,546,,,,546,,546,546,546,546,546,546,546,,,,,546,546,546', -'546,546,546,546,,,,,,,,,,546,,,546,546,546,546,546,546,546,546,546,546', -',546,546,,546,546,546,,,,,,,,,,,,,,,,,,,,546,,,546,,,546,546,,,546,', -',,,,546,,,,,,,,546,,,,,546,546,546,546,546,546,,,,546,546,549,549,549', -',549,,,,549,549,,,,549,,549,549,549,549,549,549,549,,,,,549,549,549', -'549,549,549,549,,,,,,,,,,549,,,549,549,549,549,549,549,549,549,549,549', -',549,549,,549,549,549,,,,,,,,,,,,,,,,,,,,549,,,549,,,549,549,,,549,', -',,,,549,,,,,,,,549,,,,,549,549,549,549,549,549,,,,549,549,556,556,556', -',556,,,,556,556,,,,556,,556,556,556,556,556,556,556,,,,,556,556,556', -'556,556,556,556,,,,,,,,,,556,,,556,556,556,556,556,556,556,556,556,556', -',556,556,,556,556,556,,,,,,,,,,,,,,,,,,,,556,,,556,,,556,556,,,556,', -',,,,556,,,,,,,,556,,,,,556,556,556,556,556,556,,,,556,556,557,557,557', -',557,,,,557,557,,,,557,,557,557,557,557,557,557,557,,,,,557,557,557', -'557,557,557,557,,,,,,,,,,557,,,557,557,557,557,557,557,557,557,557,557', -',557,557,,,,557,,,,,,,,,,,,,,,,,,,,557,,,557,,,557,557,,,557,,557,,557', -',,,,,,,,557,,,,,,557,557,557,557,557,557,,,,557,557,560,560,560,,560', -',,,560,560,,,,560,,560,560,560,560,560,560,560,,,,,560,560,560,560,560', -'560,560,,,,,,,,,,560,,,560,560,560,560,560,560,560,560,560,560,,560', -'560,,560,560,560,,,,,,,,,,,,,,,,,,,,560,,,560,,,560,560,,,560,,,,,,560', -',,,,,,,560,,,,,560,560,560,560,560,560,,,,560,560,564,564,564,,564,', -',,564,564,,,,564,,564,564,564,564,564,564,564,,,,,564,564,564,564,564', -'564,564,,,,,,,,,,564,,,564,564,564,564,564,564,564,564,564,564,,564', -'564,,564,564,564,,,,,,,,,,,,,,,,,,,,564,,,564,,,564,564,,,564,,,,,,564', -',,,,,,,564,,,,,564,564,564,564,564,564,,,,564,564,580,580,580,,580,', -',,580,580,,,,580,,580,580,580,580,580,580,580,,,,,580,580,580,580,580', -'580,580,,,,,,,,,,580,,,580,580,580,580,580,580,580,580,580,580,,580', -'580,,580,580,580,,,,,,,,,,,,,,,,,,,,580,,,580,,,580,580,,,580,,580,', -'580,,580,,,,,,,,580,,,,,580,580,580,580,580,580,,,,580,580,584,584,584', -',584,,,,584,584,,,,584,,584,584,584,584,584,584,584,,,,,584,584,584', -'584,584,584,584,,,,,,,,,,584,,,584,584,584,584,584,584,584,584,584,584', -',584,584,,584,584,584,,,,,,,,,,,,,,,,,,,,584,,,584,,,584,584,,,584,', -',,,,584,,,,,,,,584,,,,,584,584,584,584,584,584,,,,584,584,612,612,612', -',612,,,,612,612,,,,612,,612,612,612,612,612,612,612,,,,,612,612,612', -'612,612,612,612,,,,,,,,,,612,,,612,612,612,612,612,612,612,612,612,612', -',612,612,,612,612,612,,,,,,,,,,,,,,,,,,,,612,,,612,,,612,612,,,612,', -',,,,612,,,,,,,,612,,,,,612,612,612,612,612,612,,,,612,612,628,628,628', -',628,,,,628,628,,,,628,,628,628,628,628,628,628,628,,,,,628,628,628', -'628,628,628,628,,,,,,,,,,628,,,628,628,628,628,628,628,628,628,628,628', -',628,628,,628,628,628,,,,,,,,,,,,,,,,,,,,628,,,628,,,628,628,,,628,', -',,,,628,,,,,,,,628,,,,,628,628,628,628,628,628,,,,628,628,634,634,634', -',634,,,,634,634,,,,634,,634,634,634,634,634,634,634,,,,,634,634,634', -'634,634,634,634,,,634,,,,,,,634,,,634,634,634,634,634,634,634,634,634', -'634,,634,634,,634,634,634,,,,,,,,,,,,,,,,,,,,634,,,634,,,634,634,,,634', -',,,,,634,,,,,,,,634,,,,,634,634,634,634,634,634,,,,634,634,679,679,679', -',679,,,,679,679,,,,679,,679,679,679,679,679,679,679,,,,,679,679,679', -'679,679,679,679,,,,,,,,,,679,,,679,679,679,679,679,679,679,679,679,679', -',679,679,,679,679,679,,,,,,,,,,,,,,,,,,,,679,,,679,,,679,679,,,679,', -',,,,679,,,,,,,,679,,,,,679,679,679,679,679,679,,,,679,679,680,680,680', -',680,,,,680,680,,,,680,,680,680,680,680,680,680,680,,,,,680,680,680', -'680,680,680,680,,,,,,,,,,680,,,680,680,680,680,680,680,680,680,680,680', -',680,680,,680,680,680,,,,,,,,,,,,,,,,,,,,680,,,680,,,680,680,,,680,', -',,,,680,,,,,,,,680,,,,,680,680,680,680,680,680,,,,680,680,690,690,690', -',690,,,,690,690,,,,690,,690,690,690,690,690,690,690,,,,,690,690,690', -'690,690,690,690,,,,,,,,,,690,,,690,690,690,690,690,690,690,690,690,690', -',690,690,,690,690,690,,,,,,,,,,,,,,,,,,,,690,,,690,,,690,690,,,690,', -',,,,690,,,,,,,,690,,,,,690,690,690,690,690,690,,,,690,690,691,691,691', -',691,,,,691,691,,,,691,,691,691,691,691,691,691,691,,,,,691,691,691', -'691,691,691,691,,,,,,,,,,691,,,691,691,691,691,691,691,691,691,691,691', -',691,691,,691,691,691,,,,,,,,,,,,,,,,,,,,691,,,691,,,691,691,,,691,', -',,,,691,,,,,,,,691,,,,,691,691,691,691,691,691,,,,691,691,692,692,692', -',692,,,,692,692,,,,692,,692,692,692,692,692,692,692,,,,,692,692,692', -'692,692,692,692,,,,,,,,,,692,,,692,692,692,692,692,692,692,692,692,692', -',692,692,,692,692,692,,,,,,,,,,,,,,,,,,,,692,,,692,,,692,692,,,692,', -',,,,692,,,,,,,,692,,,,,692,692,692,692,692,692,,,,692,692,698,698,698', -',698,,,,698,698,,,,698,,698,698,698,698,698,698,698,,,,,698,698,698', -'698,698,698,698,,,,,,,,,,698,,,698,698,698,698,698,698,698,698,698,698', -',698,698,,,,698,,600,600,600,600,600,600,600,600,600,600,600,,600,600', -',,600,600,698,,,698,,,698,698,,,698,,,,600,,600,,600,600,600,600,600', -'600,600,,600,,,698,698,698,698,698,698,,,,698,698,704,704,704,600,704', -',,,704,704,,,,704,,704,704,704,704,704,704,704,,,,,704,704,704,704,704', -'704,704,,,,,,,,,,704,,,704,704,704,704,704,704,704,704,704,704,,704', -'704,,704,704,704,,,,,,,,,,,,,,,,,,,,704,,,704,,,704,704,,,704,,704,', -'704,,704,,,,,,,,704,,,,,704,704,704,704,704,704,,,,704,704,713,713,713', -',713,,,,713,713,,,,713,,713,713,713,713,713,713,713,,,,,713,713,713', -'713,713,713,713,,,,,,,,,,713,,,713,713,713,713,713,713,713,713,713,713', -',713,713,,713,713,713,,,,,,,,,,,,,,,,,,,,713,,,713,,,713,713,,,713,', -'713,,713,,713,,,,,,,,713,,,,,713,713,713,713,713,713,,,,713,713,715', -'715,715,,715,,,,715,715,,,,715,,715,715,715,715,715,715,715,,,,,715', -'715,715,715,715,715,715,,,,,,,,,,715,,,715,715,715,715,715,715,715,715', -'715,715,,715,715,,715,715,715,,,,,,,,,,,,,,,,,,,,715,,,715,,,715,715', -',,715,,715,,715,,715,,,,,,,,715,,,,,715,715,715,715,715,715,,,,715,715', -'728,728,728,,728,,,,728,728,,,,728,,728,728,728,728,728,728,728,,,,', -'728,728,728,728,728,728,728,,,,,,,,,,728,,,728,728,728,728,728,728,728', -'728,728,728,,728,728,,,,728,,677,677,677,677,677,677,677,677,677,677', -'677,,677,677,,,677,677,728,,,728,,,728,728,,,728,,,,677,,677,,677,677', -'677,677,677,677,677,,677,,,728,728,728,728,728,728,,,,728,728,734,734', -'734,677,734,,,,734,734,,,,734,,734,734,734,734,734,734,734,,,,,734,734', -'734,734,734,734,734,,,734,,,,,,,734,,,734,734,734,734,734,734,734,734', -'734,734,,734,734,,734,734,734,,,,,,,,,,,,,,,,,,,,734,,,734,,,734,734', -',,734,,,,,,734,,,,,,,,734,,,,,734,734,734,734,734,734,,,,734,734,740', -'740,740,,740,,,,740,740,,,,740,,740,740,740,740,740,740,740,,,,,740', -'740,740,740,740,740,740,,,,,,,,,,740,,,740,740,740,740,740,740,740,740', -'740,740,,740,740,,740,740,740,,,,,,,,,,,,,,,,,,,,740,,,740,,,740,740', -',,740,,740,,,,740,,,,,,,,740,,,,,740,740,740,740,740,740,,,,740,740', -'759,759,759,,759,,,,759,759,,,,759,,759,759,759,759,759,759,759,,,,', -'759,759,759,759,759,759,759,,,,,,,,,,759,,,759,759,759,759,759,759,759', -'759,759,759,,759,759,,759,759,759,,,,,,,,,,,,,,,,,,,,759,,,759,,,759', -'759,,,759,,,,,,759,,,,,,,,759,,,,,759,759,759,759,759,759,,,,759,759', -'768,768,768,,768,,,,768,768,,,,768,,768,768,768,768,768,768,768,,,,', -'768,768,768,768,768,768,768,,,,,,,,,,768,,,768,768,768,768,768,768,768', -'768,768,768,,768,768,,768,768,768,,,,,,,,,,,,,,,,,,,,768,,,768,,,768', -'768,,,768,,,,,,768,,,,,,,,768,,,,,768,768,768,768,768,768,,,,768,768', -'769,769,769,,769,,,,769,769,,,,769,,769,769,769,769,769,769,769,,,,', -'769,769,769,769,769,769,769,,,,,,,,,,769,,,769,769,769,769,769,769,769', -'769,769,769,,769,769,,,,769,,,,,,,,,,,,,,,,,,,,769,,,769,,,769,769,', -',769,,769,,769,,,,,,,,,,,,,,,769,769,769,769,769,769,,,,769,769,780', -'780,780,,780,,,,780,780,,,,780,,780,780,780,780,780,780,780,,,,,780', -'780,780,780,780,780,780,,,,,,,,,,780,,,780,780,780,780,780,780,780,780', -'780,780,,780,780,,780,780,780,,,,,,,,,,,,,,,,,,,,780,,,780,,,780,780', -',,780,,,,,,780,,,,,,,,780,,,,,780,780,780,780,780,780,,,,780,780,786', -'786,786,,786,,,,786,786,,,,786,,786,786,786,786,786,786,786,,,,,786', -'786,786,786,786,786,786,,,,,,,,,,786,,,786,786,786,786,786,786,786,786', -'786,786,,786,786,,786,786,786,,,,,,,,,,,,,,,,,,,,786,,,786,,,786,786', -',,786,,,,,,786,,,,,,,,786,,,,,786,786,786,786,786,786,,,,786,786,788', -'788,788,,788,,,,788,788,,,,788,,788,788,788,788,788,788,788,,,,,788', -'788,788,788,788,788,788,,,,,,,,,,788,,,788,788,788,788,788,788,788,788', -'788,788,,788,788,,788,788,788,,,,,,,,,,,,,,,,,,,,788,,,788,,,788,788', -',,788,,,,,,788,,,,,,,,788,,,,,788,788,788,788,788,788,,,,788,788,802', -'802,802,,802,,,,802,802,,,,802,,802,802,802,802,802,802,802,,,,,802', -'802,802,802,802,802,802,,,,,,,,,,802,,,802,802,802,802,802,802,802,802', -'802,802,,802,802,,802,802,802,,,,,,,,,,,,,,,,,,,,802,,,802,,,802,802', -',,802,,,,,,802,,,,,,,,802,,,,,802,802,802,802,802,802,,,,802,802,820', -'820,820,,820,,,,820,820,,,,820,,820,820,820,820,820,820,820,,,,,820', -'820,820,820,820,820,820,,,,,,,,,,820,,,820,820,820,820,820,820,820,820', -'820,820,,820,820,,,,820,,682,682,682,682,682,682,682,682,682,682,682', -',682,682,,,682,682,820,,,820,,,820,820,,,820,,,,682,,682,,682,682,682', -'682,682,682,682,,682,,,820,820,820,820,820,820,,,,820,820,822,822,822', -'682,822,,,,822,822,,,,822,,822,822,822,822,822,822,822,,,,,822,822,822', -'822,822,822,822,,,,,,,,,,822,,,822,822,822,822,822,822,822,822,822,822', -',822,822,,822,822,822,,,,,,,,,,,,,,,,,,,,822,,,822,,,822,822,,,822,', -'822,,,,822,,,,,,,,822,,,,,822,822,822,822,822,822,,,,822,822,827,827', -'827,,827,,,,827,827,,,,827,,827,827,827,827,827,827,827,,,,,827,827', -'827,827,827,827,827,,,,,,,,,,827,,,827,827,827,827,827,827,827,827,827', -'827,,827,827,,,,827,,684,684,684,684,684,684,684,684,684,684,684,,684', -'684,,,684,684,827,,,827,,,827,827,,,827,,,,684,,684,,684,684,684,684', -'684,684,684,,684,,,827,827,827,827,827,827,,,,827,827,832,832,832,684', -'832,,,,832,832,,,,832,,832,832,832,832,832,832,832,,,,,832,832,832,832', -'832,832,832,,,,,,,,,,832,,,832,832,832,832,832,832,832,832,832,832,', -'832,832,,832,832,832,,,,,,,,,,,,,,,,,,,,832,,,832,,,832,832,,,832,,832', -',832,,832,,,,,,,,832,,,,,832,832,832,832,832,832,,,,832,832,835,835', -'835,,835,,,,835,835,,,,835,,835,835,835,835,835,835,835,,,,,835,835', -'835,835,835,835,835,,,,,,,,,,835,,,835,835,835,835,835,835,835,835,835', -'835,,835,835,,835,835,835,,,,,,,,,,,,,,,,,,,,835,,,835,,,835,835,,,835', -',835,,835,,835,,,,,,,,835,,,,,835,835,835,835,835,835,,,,835,835,861', -'861,861,,861,,,,861,861,,,,861,,861,861,861,861,861,861,861,,,,,861', -'861,861,861,861,861,861,,,,,,,,,,861,,,861,861,861,861,861,861,861,861', -'861,861,,861,861,,,,861,,687,687,687,687,687,687,687,687,687,687,687', -',687,687,,,687,687,861,,,861,,,861,861,,,861,,,,687,,687,,687,687,687', -'687,687,687,687,,687,,,861,861,861,861,861,861,,,,861,861,864,864,864', -'687,864,,,,864,864,,,,864,,864,864,864,864,864,864,864,,,,,864,864,864', -'864,864,864,864,,,,,,,,,,864,,,864,864,864,864,864,864,864,864,864,864', -',864,864,,864,864,864,,,,,,,,,,,,,,,,,,,,864,,,864,,,864,864,,,864,', -',,,,864,,,,,,,,864,,,,,864,864,864,864,864,864,,,,864,864,867,867,867', -',867,,,,867,867,,,,867,,867,867,867,867,867,867,867,,,,,867,867,867', -'867,867,867,867,,,,,,,,,,867,,,867,867,867,867,867,867,867,867,867,867', -',867,867,,867,867,867,,,,,,,,,,,,,,,,,,,,867,,,867,,,867,867,,,867,', -',,,,867,,,,,,,,867,,,,,867,867,867,867,867,867,,,,867,867,875,875,875', -',875,,,,875,875,,,,875,,875,875,875,875,875,875,875,,,,,875,875,875', -'875,875,875,875,,,,,,,,,,875,,,875,875,875,875,875,875,875,875,875,875', -',875,875,,,,875,,689,689,689,689,689,689,689,689,689,689,689,,689,689', -',,689,689,875,,,875,,,875,875,,,875,,,,689,,689,,689,689,689,689,689', -'689,689,,689,,,875,875,875,875,875,875,,,,875,875,880,880,880,689,880', -',,,880,880,,,,880,,880,880,880,880,880,880,880,,,,,880,880,880,880,880', -'880,880,,,,,,,,,,880,,,880,880,880,880,880,880,880,880,880,880,,880', -'880,,880,880,880,,,,,,,,,,,,,,,,,,,,880,,,880,,,880,880,,,880,,880,', -'880,,880,,,,,,,,880,,,,,880,880,880,880,880,880,,,,880,880,886,886,886', -',886,,,,886,886,,,,886,,886,886,886,886,886,886,886,,,,,886,886,886', -'886,886,886,886,,,,,,,,,,886,,,886,886,886,886,886,886,886,886,886,886', -',886,886,,,,886,,694,694,694,694,694,694,694,694,694,694,694,,694,694', -',,694,694,886,,,886,,,886,886,,,886,,,,694,,694,,694,694,694,694,694', -'694,694,,694,,,886,886,886,886,886,886,,,,886,886,889,889,889,694,889', -',,,889,889,,,,889,,889,889,889,889,889,889,889,,,,,889,889,889,889,889', -'889,889,,,,,,,,,,889,,,889,889,889,889,889,889,889,889,889,889,,889', -'889,,889,889,889,,,,,,,,,,,,,,,,,,,,889,,,889,,,889,889,,,889,,,,,,889', -',,,,,,,889,,,,,889,889,889,889,889,889,,,,889,889,64,64,64,64,64,64', -'64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,,,64,64,64,64', -'64,64,64,64,64,64,,,,,,64,64,64,64,64,64,64,64,64,64,64,64,,,,,,,64', -'64,,64,64,64,64,,64,64,,,64,,,,,64,64,64,64,,,,,,64,,,,,,,,64,64,,64', -'64,64,64,64,64,64,64,64,,64,,,64,664,664,664,664,664,664,664,664,664', -'664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,,,664,664', -'664,664,664,664,664,664,664,664,,,,,,664,664,664,664,664,664,664,664', -',,664,,,,,,,,664,664,,664,664,664,664,,664,664,,,664,,,,,664,664,664', -'664,,,,,,,,,,,,,,664,664,,664,664,664,664,664,664,664,664,664,,664,', -',664,581,581,581,581,581,581,581,581,581,581,581,,581,581,,,581,581', -',,,581,,,,,,,,,,,581,,581,,581,581,581,581,581,581,581,,581,,,,,,,,192', -'192,,,192,,,,,581,,581,192,192,,192,192,192,192,,192,192,,,192,,,,,192', -'192,192,192,,,,,,,,,,,,,,192,192,,192,192,192,192,192,192,192,192,192', -',192,193,193,192,,193,,,,,,,,193,193,,193,193,193,193,,193,193,,,193', -',,,,193,193,193,193,,,,,,,,,,,,,,193,193,,193,193,193,193,193,193,193', -'193,193,,193,251,251,193,,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,252,252,251,,252,,,,,,,,252,252,,252,252,252,252', -',252,252,,,252,,,,,252,252,252,252,,,,,,,,,,,,,,252,252,,252,252,252', -'252,252,252,252,252,252,,252,391,391,252,,391,,,,,,,,391,391,,391,391', -'391,391,,391,391,,,391,,,,,391,391,391,391,,,,,,,,,,,,,,391,391,,391', -'391,391,391,391,391,391,391,391,,391,392,392,391,,392,,,,,,,,392,392', -',392,392,392,392,,392,392,,,392,,,,,392,392,392,392,,,,,,,,,,,,,,392', -'392,,392,392,392,392,392,392,392,392,392,,392,,,392,423,423,423,423', -'423,423,423,423,423,423,423,,423,423,,,423,423,,,,,,,,,,,,,,,423,,423', -',423,423,423,423,423,423,423,,423,,,,,,,457,457,,,457,,,,,,423,423,457', -'457,,457,457,457,457,,457,457,,,457,,,,,457,457,457,457,,,,,,,,,,,,', -',457,457,,457,457,457,457,457,457,457,457,457,,457,458,458,457,,458', -',,,,,,,458,458,,458,458,458,458,,458,458,,,458,,,,,458,458,458,458,', -',,,,,,,,,,,,458,458,,458,458,458,458,458,458,458,458,458,,458,466,466', -'458,,466,,,,,,,,466,466,,466,466,466,466,,466,466,,,466,,,,,466,466', -'466,466,,,,,,,,,,,,,,466,466,,466,466,466,466,466,466,466,466,466,,466', -'467,467,466,,467,,,,,,,,467,467,,467,467,467,467,,467,467,,,467,,,,', -'467,467,467,467,,,,,,,,,,,,,,467,467,,467,467,467,467,467,467,467,467', -'467,,467,498,498,467,,498,,,,,,,,498,498,,498,498,498,498,,498,498,', -',498,,,,,498,498,498,498,,,,,,,,,,,,,,498,498,,498,498,498,498,498,498', -'498,498,498,,498,499,499,498,,499,,,,,,,,499,499,,499,499,499,499,,499', -'499,,,499,,,,,499,499,499,499,,,,,,,,,,,,,,499,499,,499,499,499,499', -'499,499,499,499,499,,499,505,505,499,,505,,,,,,,,505,505,,505,505,505', -'505,,505,505,,,505,,,,,505,505,505,505,,,,,,,,,,,,,,505,505,,505,505', -'505,505,505,505,505,505,505,,505,507,507,505,,507,,,,,,,,507,507,,507', -'507,507,507,,507,507,,,507,,,,,507,507,507,507,,,,,,,,,,,,,,507,507', -',507,507,507,507,507,507,507,507,507,,507,578,578,507,,578,,,,,,,,578', -'578,,578,578,578,578,,578,578,,,578,,,,,578,578,578,578,,,,,,,,,,,,', -',578,578,,578,578,578,578,578,578,578,578,578,,578,579,579,578,,579', -',,,,,,,579,579,,579,579,579,579,,579,579,,,579,,,,,579,579,579,579,', -',,,,,,,,,,,,579,579,,579,579,579,579,579,579,579,579,579,,579,823,823', -'579,,823,,,,,,,,823,823,,823,823,823,823,,823,823,,,823,,,,,823,823', -'823,823,,,,,,,,,,,,,,823,823,,823,823,823,823,823,823,823,823,823,,823', -'824,824,823,,824,,,,,,,,824,824,,824,824,824,824,,824,824,,,824,,,,', -'824,824,824,824,,,,,,,,,,,,,,824,824,,824,824,824,824,824,824,824,824', -'824,,824,,,824,480,480,480,480,480,480,480,480,480,480,480,,480,480', -',,480,480,,,,,,,,,,,,,,,480,,480,,480,480,480,480,480,480,480,,480,', -'731,731,731,731,731,731,731,731,731,731,731,,731,731,480,480,731,731', -',,,,,,,,,,,,,,731,,731,,731,731,731,731,731,731,731,,731,,767,767,767', -'767,767,767,767,767,767,767,767,,767,767,731,731,767,767,,,,,,,,,,,', -',,,767,,767,,767,767,767,767,767,767,767,,767,,,,,,,,,,,,,,,,,767' ] - racc_action_check = arr = ::Array.new(24340, 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 = [ - 1233, 30, nil, -98, 863, 4770, 4891, 5012, -53, 2, - 71, 90, 160, 218, 174, 130, nil, 5125, 5246, 6094, - 234, nil, 5367, 5488, 5609, 292, 138, 5730, 5851, nil, - 1355, 5972, 6093, nil, 146, 316, 245, 346, 6214, 6335, - 6456, 183, 300, nil, nil, nil, nil, nil, nil, nil, - 214, 1477, 6577, 6698, 6819, 58, 6940, 7061, nil, nil, - 735, 7182, 7303, 7424, 22775, nil, nil, nil, nil, nil, - -92, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 7545, nil, nil, nil, 7666, nil, nil, nil, - nil, nil, nil, nil, nil, 311, nil, 863, nil, nil, - nil, 7787, 7908, 8029, 8150, 8271, 981, nil, 221, 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, 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, 196, nil, 1599, 1721, 8392, 8513, - 8634, 8755, 23000, 23060, 8876, 8997, 9118, nil, 377, -67, - 279, -52, 212, 274, 1843, nil, nil, 9239, 9360, 9481, - 9602, 9723, 9844, 9965, 10086, 10207, 10328, 10449, 10570, 10691, - 10812, 10933, 11054, 11175, 11296, 11417, 11538, 11659, 11780, 11901, - 12022, 12143, 12264, 12385, nil, nil, nil, 7183, nil, 242, - 254, 12506, nil, 12627, 310, nil, nil, nil, nil, nil, - nil, 23120, 23180, 313, 12748, 12869, nil, nil, nil, nil, - nil, nil, nil, 12990, 325, 1965, 333, 352, 315, 13111, - 2087, 399, 496, 430, 520, 411, 382, 161, nil, 443, - 430, nil, nil, 335, 472, 486, 521, nil, 498, nil, - 13232, nil, 565, 566, 457, nil, 460, 119, 136, 13353, - 493, 147, 479, 244, nil, 482, -7, 8, 13474, 13595, - -67, 32, 464, -9, 522, 545, -1, 575, nil, nil, - 319, 345, 115, nil, 614, nil, 9, 13716, nil, nil, - 311, 419, 453, 456, 457, 478, 488, 499, nil, 519, - nil, 13837, nil, 149, 207, 235, 246, -35, 279, nil, - 1103, nil, nil, nil, nil, nil, nil, 13958, nil, nil, - nil, nil, 509, 511, nil, nil, 735, nil, 495, 14071, - nil, 499, nil, nil, 7304, 535, 340, 342, 14192, nil, - nil, 0, 541, 107, nil, 14313, 14434, nil, 7425, nil, - nil, 23240, 23300, 14555, -33, 14676, 14797, 14918, 614, 863, - 377, 384, 566, 574, 575, 576, 2941, 3063, 3185, 1599, - 980, 1721, 1843, 1965, 2087, 2209, 2331, 2453, 2575, 249, - 465, 2697, 2819, 23348, -48, nil, 15039, nil, 15160, 514, - nil, 15281, 321, nil, nil, 376, nil, nil, 563, 531, - -64, 529, 630, nil, nil, 15402, -27, -13, 571, nil, - 572, 544, nil, nil, nil, 586, 15523, 23414, 23474, 617, - 606, nil, nil, 15644, 15765, 15886, 23534, 23594, 13112, 16007, - 688, 16128, nil, 582, nil, nil, 16249, nil, nil, 16370, - 24122, nil, 16491, nil, nil, nil, 2209, 711, nil, nil, - 2331, 68, 109, 708, 716, 2453, 16612, 16733, 23654, 23714, - 4, nil, nil, 658, nil, 23774, 16854, 23834, nil, nil, - 16975, 100, -34, 2575, 997, nil, nil, nil, -32, nil, - nil, nil, 598, nil, nil, nil, 609, nil, 147, nil, - nil, 606, nil, nil, 17096, nil, nil, 17209, 17330, nil, - 349, 17451, 17572, 648, nil, nil, 17693, 649, nil, 17814, - 86, 115, 493, 614, 655, 1106, 17935, 18056, nil, 2697, - 18177, 621, nil, 666, 18298, nil, 674, nil, 663, nil, - nil, nil, nil, nil, 113, nil, 673, 674, 23894, 23954, - 18419, 22933, 69, 643, 18540, nil, 683, nil, 2819, 2941, - nil, 1, nil, 681, 63, 112, 687, 347, 735, 688, - 19630, 712, 714, -2, 772, nil, 3063, 654, 707, nil, - nil, 707, 18661, nil, nil, 506, nil, 800, nil, nil, - nil, nil, nil, 810, nil, 814, 700, 15, 18782, 738, - 13, 23, 25, 75, 18903, 348, 788, nil, 740, 3185, - 331, nil, nil, 835, 3307, 1284, 337, 718, 719, 726, - nil, nil, nil, nil, nil, 724, nil, nil, nil, nil, - 806, nil, nil, 809, 22885, 773, nil, nil, nil, nil, - nil, 3429, nil, nil, nil, nil, nil, 20114, 744, 19024, - 19145, nil, 21324, nil, 21566, nil, nil, 21929, nil, 22292, - 19266, 19387, 19508, 167, 22534, nil, 745, 984, 19629, nil, - 770, 868, 760, nil, 19750, 761, 3551, nil, nil, 802, - 803, -63, 871, 19871, nil, 19992, 772, nil, 832, 813, - 933, 738, nil, nil, 3673, nil, nil, 31, 20113, nil, - nil, 24168, 938, nil, 20234, 941, 3795, 3917, nil, nil, - 20355, 4039, nil, 26, 133, nil, 942, nil, 4161, nil, - 946, 836, nil, 1406, nil, -43, nil, nil, 436, 20476, - nil, nil, nil, nil, 862, nil, nil, 24214, 20597, 20718, - 863, 866, 920, 907, 847, 884, nil, nil, nil, nil, - 20839, nil, 873, 903, 869, nil, 20960, 870, 21081, nil, - nil, nil, nil, nil, 4283, nil, nil, nil, 32, nil, - 999, 1001, 21202, 332, nil, nil, 1002, nil, 936, 898, - 899, nil, nil, 900, 899, nil, nil, 1528, nil, nil, - 21323, 1106, 21444, 24014, 24074, 918, 933, 21565, 5973, nil, - nil, nil, 21686, 914, nil, 21807, 918, 1046, 4405, nil, - nil, nil, nil, nil, nil, 4527, nil, nil, 282, nil, - nil, nil, 4649, nil, 927, 959, 965, 362, 400, 482, - 977, 21928, nil, nil, 22049, 931, nil, 22170, nil, nil, - 545, 1054, 938, 1057, 972, 22291, 980, nil, 945, nil, - 22412, 948, nil, nil, nil, nil, 22533, nil, nil, 22654, - nil, nil, 952, nil ] - -racc_action_default = [ - -4, -497, -1, -485, -5, -497, -497, -497, -497, -497, - -497, -497, -497, -497, -271, -32, -33, -497, -497, -38, - -40, -41, -282, -315, -316, -45, -249, -361, -285, -58, - -4, -62, -67, -68, -497, -428, -497, -497, -497, -497, - -497, -487, -214, -264, -265, -266, -267, -268, -269, -270, - -475, -4, -497, -496, -467, -288, -497, -497, -292, -295, - -485, -497, -497, -497, -497, -317, -318, -381, -382, -383, - -384, -385, -399, -388, -401, -401, -392, -397, -411, -401, - -413, -414, -417, -418, -419, -420, -421, -422, -423, -424, - -425, -426, -427, -430, -431, -497, -3, -486, -492, -493, - -494, -497, -497, -497, -497, -497, -6, -8, -497, -93, - -94, -95, -96, -97, -98, -99, -100, -101, -105, -106, - -107, -108, -109, -110, -111, -112, -113, -114, -115, -116, - -117, -118, -119, -120, -121, -122, -123, -124, -125, -126, - -127, -128, -129, -130, -131, -132, -133, -134, -135, -136, - -137, -138, -139, -140, -141, -142, -143, -144, -145, -146, - -147, -148, -149, -150, -151, -152, -153, -154, -155, -156, - -157, -158, -159, -160, -161, -162, -163, -164, -165, -166, - -167, -168, -169, -170, -13, -102, -4, -4, -497, -497, - -497, -496, -497, -497, -497, -497, -497, -36, -497, -428, - -497, -271, -497, -497, -4, -37, -206, -497, -497, -497, - -497, -497, -497, -497, -497, -497, -497, -497, -497, -497, - -497, -497, -497, -497, -497, -497, -497, -497, -497, -497, - -497, -497, -497, -497, -351, -353, -42, -215, -228, -258, - -258, -497, -236, -497, -259, -282, -315, -316, -470, -43, - -44, -497, -497, -50, -496, -497, -287, -356, -362, -364, - -56, -360, -57, -497, -58, -4, -497, -497, -63, -65, - -4, -72, -497, -497, -79, -285, -487, -497, -319, -361, - -497, -66, -70, -278, -415, -416, -497, -191, -192, -207, - -497, -488, -373, -497, -274, -216, -487, -489, -489, -497, - -497, -489, -497, -489, -289, -39, -497, -497, -497, -497, - -485, -497, -486, -428, -497, -497, -271, -497, -331, -332, - -88, -89, -497, -91, -497, -271, -497, -497, -428, -308, - -93, -94, -131, -132, -148, -153, -160, -163, -310, -497, - -465, -497, -386, -497, -497, -497, -497, -497, -497, 894, - -7, -495, -14, -15, -16, -17, -18, -497, -10, -11, - -12, -103, -497, -497, -21, -29, -171, -259, -497, -497, - -22, -30, -31, -23, -173, -497, -476, -477, -226, -478, - -479, -476, -249, -477, -359, -481, -482, -28, -180, -34, - -35, -497, -497, -496, -278, -497, -497, -497, -181, -182, - -183, -184, -185, -186, -187, -188, -193, -194, -195, -196, - -197, -198, -199, -200, -201, -202, -203, -204, -205, -208, - -209, -210, -211, -497, -347, -229, -497, -231, -497, -258, - -256, -497, -249, -476, -477, -249, -48, -51, -497, -487, - -487, -258, -228, -250, -251, -252, -347, -347, -497, -284, - -497, -59, -276, -71, -64, -497, -496, -497, -497, -78, - -497, -415, -416, -497, -497, -497, -497, -497, -212, -497, - -496, -496, -273, -487, -217, -218, -491, -490, -220, -491, - -487, -280, -491, -469, -281, -468, -4, -320, -321, -322, - -4, -497, -497, -497, -497, -4, -497, -496, -497, -497, - -278, -301, -88, -89, -90, -497, -496, -497, -304, -432, - -497, -497, -497, -4, -445, -312, -483, -484, -487, -387, - -400, -403, -497, -405, -389, -402, -497, -391, -497, -394, - -396, -497, -412, -9, -497, -19, -20, -497, -497, -263, - -279, -497, -497, -52, -227, -357, -497, -54, -358, -497, - -476, -477, -480, -277, -497, -171, -497, -497, -349, -4, - -497, -258, -257, -260, -497, -471, -497, -235, -497, -472, - -46, -354, -47, -355, -347, -222, -497, -497, -497, -497, - -497, -38, -497, -258, -497, -248, -497, -254, -4, -4, - -283, -59, -69, -497, -476, -477, -226, -75, -77, -497, - -179, -189, -190, -497, -496, -329, -4, -374, -496, -375, - -376, -497, -497, -260, -221, -496, -323, -496, -293, -324, - -325, -326, -296, -497, -299, -497, -367, -497, -497, -497, - -476, -477, -480, -277, -497, -88, -89, -92, -497, -4, - -497, -434, -306, -497, -4, -445, -497, -464, -464, -464, - -444, -446, -447, -448, -449, -450, -451, -454, -456, -457, - -459, -460, -461, -497, -497, -497, -404, -407, -408, -409, - -410, -4, -390, -393, -395, -398, -104, -172, -261, -497, - -497, -25, -175, -26, -176, -53, -27, -177, -55, -178, - -497, -497, -497, -279, -213, -333, -335, -345, -497, -348, - -497, -497, -258, -233, -497, -258, -4, -223, -224, -226, - -226, -487, -497, -497, -241, -497, -258, -253, -497, -497, - -497, -73, -286, -2, -4, -380, -330, -497, -497, -378, - -275, -487, -497, -327, -497, -497, -4, -4, -298, -300, - -497, -4, -369, -279, -497, -279, -497, -433, -4, -309, - -497, -487, -436, -497, -440, -497, -442, -443, -497, -497, - -458, -462, -313, -466, -497, -262, -24, -174, -497, -336, - -80, -497, -497, -87, -344, -497, -346, -350, -352, -230, - -497, -232, -497, -497, -258, -238, -497, -258, -497, -247, - -255, -363, -365, -379, -4, -377, -219, -290, -497, -291, - -497, -497, -497, -496, -302, -305, -497, -311, -497, -464, - -464, -452, -463, -464, -497, -455, -453, -445, -406, -334, - -497, -341, -496, -497, -497, -86, -497, -497, -258, -49, - -225, -237, -497, -258, -243, -497, -258, -373, -4, -294, - -297, -368, -366, -370, -371, -4, -307, -435, -497, -438, - -439, -441, -4, -337, -340, -497, -497, -82, -84, -83, - -85, -497, -343, -234, -497, -258, -239, -497, -242, -372, - -496, -497, -464, -497, -497, -497, -81, -342, -258, -244, - -497, -258, -328, -303, -437, -314, -497, -339, -240, -497, - -245, -338, -258, -246 ] - -clist = [ -'10,205,240,240,240,10,268,438,112,112,100,300,338,470,293,644,242,242', -'242,440,107,185,238,238,238,115,115,117,117,494,10,486,490,650,303,437', -'239,239,239,253,260,262,604,290,365,372,732,618,622,96,565,10,815,296', -'257,261,281,571,504,520,573,318,529,236,249,250,112,100,301,559,810', -'264,813,266,106,475,478,344,345,483,1,485,348,723,754,756,757,326,329', -'306,307,588,589,310,97,13,184,10,319,357,13,565,574,534,587,10,311,443', -'586,718,340,302,198,198,304,317,508,198,198,198,339,515,473,308,736', -'13,272,272,309,737,634,278,278,845,352,353,354,355,639,748,513,197,514', -'664,817,815,13,198,198,375,696,198,198,700,424,198,314,324,324,446,447', -'278,278,278,650,872,350,627,842,608,727,364,370,373,356,342,294,387', -'343,346,305,305,528,347,305,666,10,10,671,735,751,296,13,809,811,386', -'198,198,198,198,13,2,368,368,10,,,,,,,623,,,,,,,,706,,,,605,610,305', -'305,305,305,,,267,,,240,240,,,,,,637,,240,674,,849,850,242,242,851,', -',,442,238,,242,,,,,,238,,10,,,441,239,10,,,,,,,239,460,,,13,13,198,198', -'198,198,,,198,198,198,14,454,,439,444,14,474,13,804,882,,427,448,257', -'264,261,450,884,,264,,455,,,,100,852,389,390,,14,274,274,685,565,609', -',688,,,,509,571,573,650,565,,,,491,492,14,,711,,,,198,198,554,741,316', -'325,325,493,725,198,112,13,729,,,272,13,,,605,278,605,533,,,,843,115', -',117,,,,,,,,,362,363,14,,543,,296,386,547,,14,,,,,,198,198,267,561,', -',,548,,,,593,,,,,,,,198,,,583,,,,,,,305,305,,,198,,,585,,576,577,,,570', -',,572,,,512,794,,,629,296,565,,,386,,,,638,518,267,,,386,,267,,,,611', -'643,,14,14,,,614,,,368,10,,198,,10,,567,,,10,14,296,619,619,,386,565', -',,,296,386,,,626,,,10,,,,,641,642,665,844,,838,681,683,,,,686,,,695', -',,,112,,,,198,,,640,,,,,676,,,198,,115,,117,605,14,869,10,561,274,14', -',198,,,,,294,,,,,,,,,,,712,13,,,,13,,,10,10,13,,198,603,,,378,382,35', -',,198,746,35,,198,10,750,13,,,,762,12,,,,,12,,,,,605,703,,,548,35,271', -'271,,,,305,,198,198,,10,,198,,12,10,,714,747,,35,,,272,752,13,432,435', -'278,,313,328,328,328,766,12,,112,744,,,,10,,,,198,,,,,,,,13,13,,,615', -',,,617,,787,,35,625,774,776,,,13,,35,,,10,785,,,12,806,,783,,,,,12,', -',,,,10,,,784,795,198,,,,796,13,,10,10,,13,,10,,,819,,,,10,,,619,,808', -',,,,305,,701,,,,,779,13,798,781,,,,,,,198,,,14,789,856,,14,,35,35,,14', -',719,720,,771,771,10,378,382,278,278,12,12,13,35,,,14,,726,,,,,865,', -'670,873,,12,,13,853,854,296,771,,,386,862,278,198,,13,13,,,,13,,10,', -',,,13,,10,,831,,274,834,14,10,,,,,,305,,,877,599,35,272,,,271,35,278', -',599,764,,,887,,,12,,14,14,,12,,,891,,,13,,863,,,,,866,,14,868,,,,599', -',,,782,,599,,,,,,771,771,198,,,278,278,771,,,793,,278,879,,,14,,13,', -',14,800,801,,13,888,803,,890,,,13,,,,,,,,893,771,,,,,278,,14,,,,,,,771', -',,,,278,,,,,,771,709,710,,,278,,,773,773,,,,,837,,,14,,,,,,,,,,,,,,', -',,,14,,,,773,,,,,,,,14,14,,,,14,,,,,,870,14,,,,,,871,,,,,,,,,,,,,,,274', -',,,,,,,,,,,,,,,,,,,,,,35,,14,,35,,,,,35,,,,,,12,,,,12,,,,,12,,,35,773', -'773,,,,,,773,,,,,,,12,,,,14,,,,,,,14,,,,,,,14,,,,,,,,,773,,271,,35,', -',,,,,,,,773,,,,,12,,,,,,773,,,,,,,,35,35,,,,,,,,,,,,,,12,12,,35,,,,', -',,,,,,,,,,12,,,,,,,,,599,,,,,,,,,35,,,,,35,,,,,,,,,,12,,,,,12,,,,,,', -',,,,,35,,,,,,,,,,,,,,,12,,,,,,,,,,,770,770,,,,,,,,35,,,206,,,,237,237', -'237,,,,,,12,,,35,,,,770,287,288,289,,,,,35,35,,12,,35,,,237,237,,,35', -',,12,12,,,,12,,,,,367,371,12,,,,,,271,,,,,,,,,,,,,,,,,,,,,,,,,35,,,', -',,,,,,,,,,,12,,,,,429,,430,,,,770,770,,,,,,770,,,,,,,,,,,35,,,,,,,35', -',,,,,,35,12,,,,,,,12,770,,,,,,12,,,,,,,,770,,,,366,237,374,237,,,388', -'770,,,,,,,,,,,,206,398,399,400,401,402,403,404,405,406,407,408,409,410', -'411,412,413,414,415,416,417,418,419,420,421,422,423,,,,,,,,237,,237', -',,,,,,,539,,,237,237,,,,,,,,237,,,,,,,,,,,,,,,,,,,,,,,,,,,468,,,,,,', -',,480,,,,,,,,,563,,566,,,569,,,,,,,,,,,,,,582,,,,,,,,,,,,,,,,,,,,,,', -',,,607,,,,,613,,,566,,,613,,,,,237,,,,,,,,,367,,,,,,,,,,,,,,,237,,388', -'555,374,,,,,,,,,,,,,,,,,,,,,,,678,,,,,,237,,237,,,237,,,,,,,,,,,702', -',,581,705,,,,,,,,,,237,,,,,,563,600,601,602,716,,26,,,237,,26,,,237', -',,237,,,237,,,26,26,,,,26,26,26,,,,237,237,26,,,,,,,,237,,,,742,,,,', -',,,,26,26,26,,,26,26,,,26,,,,,,,,,677,237,,,682,684,,,,687,,,689,,,', -',,,694,,,,237,765,,,237,26,,,,26,26,26,26,26,,,,,,,237,,,,237,,566,', -',,,,,,,,,566,,,,,,,,,,,,,,,731,,,,,,,,,,613,,,,,,237,,,,,,,,,,,,,816', -',,,,,,,,,,,,26,26,26,26,26,26,,,26,26,26,,,,833,,836,,26,,,,,,,237,767', -',,,841,,,,,,682,684,687,,,,,,,,,,,,237,,,,,,,,,237,563,237,,566,,,,', -'26,26,,,,,,,,26,,26,,,,,26,,237,,,,,,878,,,881,,,,,,,,,,237,,,566,,', -',,,767,,,892,,,,,26,26,,,828,,,,,,237,,237,,,,,,,26,,,,,,,237,,,,,,', -'26,,,,,,,,,,,,,237,,,,,,,,,,237,,,237,,,,,,,,,,,,,,,,,,,,,,,,,,26,,', -'237,,,237,,,,,,,,,,,,,237,,,,,,,,,237,,,,,,,,,,,,,,,,,,,,,,,,26,,,,', -',,,,,,26,,,,,,,,,,,,,26,,,,,,,,,,,,,,,,,26,,,,26,,,,,26,,26,,,,,,,,', -'26,,,,26,,,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,26,26,,,,26,,,,,,,,,,,,,26', -',,,,,,,,,,,,,,,,,,,,26,,,,,,,,26,26,,,,,,,,,,,,,,,,,26,,,,,,,,,,,,,', -',,,,,,,,,,,,,,26,,,,,26,,,,,26,,,,,,,,,,,,,,,,,,,,,,,,,,,26,,,,,,,,', -'26,,,,,,,,,,,,,,,,,,,,,,,,,,26,,,,,,,,,,,,,,,,,,26,,,,,,,,,,26,,26,26', -',,,26,,,,,,,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,26,,,,,', -',,,,,,,,,,,,,,,,,,,,,,26,,,,,,,,,,,,,,,,26,,,,,,,26,,,,,,,26' ] - racc_goto_table = arr = ::Array.new(2610, 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 = [ -'14,15,56,56,56,14,39,53,45,45,82,19,44,4,3,83,60,60,60,29,11,11,26,26', -'26,48,48,49,49,79,14,76,76,126,56,32,54,54,54,31,31,31,5,51,21,21,77', -'78,78,8,131,14,128,26,57,57,40,58,42,117,58,14,117,28,28,28,45,82,54', -'33,124,36,124,37,9,55,55,114,114,55,1,55,114,6,125,125,125,43,43,13', -'13,33,33,13,10,18,12,14,16,24,18,131,34,50,61,14,8,62,64,65,72,73,18', -'18,74,80,81,18,18,18,84,85,86,87,88,18,18,18,89,90,91,52,52,92,13,13', -'13,13,93,94,95,23,96,97,98,128,18,18,18,19,99,18,18,100,102,18,18,18', -'18,104,105,52,52,52,126,124,9,106,107,108,109,15,15,15,9,112,23,15,113', -'115,23,23,116,118,23,119,14,14,120,5,121,26,18,123,127,45,18,18,18,18', -'18,2,54,54,14,,,,,,,79,,,,,,,,33,,,,53,53,23,23,23,23,,,2,,,56,56,,', -',,,42,,56,117,,125,125,60,60,125,,,,26,26,,60,,,,,,26,,14,,,54,54,14', -',,,,,,54,51,,,18,18,18,18,18,18,,,18,18,18,20,40,,28,28,20,51,18,78', -'77,,59,28,57,36,57,37,125,,36,,37,,,,82,83,23,23,,20,20,20,32,131,21', -',32,,,,82,58,58,126,131,,,,13,13,20,,29,,,,18,18,19,76,20,20,20,8,53', -'18,45,18,53,,,18,18,,,53,52,53,11,,,,5,48,,49,,,,,,,,,2,2,20,,31,,26', -'45,31,,20,,,,,,18,18,2,56,,,,57,,,,19,,,,,,,,18,,,56,,,,,,,23,23,,,18', -',,60,,51,51,,,31,,,31,,,23,76,,,19,26,131,,,45,,,,19,23,2,,,45,,2,,', -',51,3,,20,20,,,51,,,54,14,,18,,14,,59,,,14,20,26,82,82,,45,131,,,,26', -'45,,,54,,,14,,,,,82,82,51,79,,76,15,15,,,,15,,,39,,,,45,,,,18,,,13,', -',,,11,,,18,,48,,49,53,20,4,14,56,20,20,,18,,,,,23,,,,,,,,,,,26,18,,', -',18,,,14,14,18,,18,23,,,30,30,41,,,18,3,41,,18,14,3,18,,,,44,17,,,,', -'17,,,,,53,59,,,57,41,41,41,,,,23,,18,18,,14,,18,,17,14,,59,82,,41,,', -'18,82,18,30,30,52,,41,41,41,41,15,17,,45,13,,,,14,,,,18,,,,,,,,18,18', -',,2,,,,2,,56,,41,2,14,14,,,18,,41,,,14,60,,,17,3,,51,,,,,17,,,,,,14', -',,54,14,18,,,,51,18,,14,14,,18,,14,,,39,,,,14,,,82,,51,,,,,23,,2,,,', -',59,18,13,59,,,,,,,18,,,20,59,19,,20,,41,41,,20,,2,2,,18,18,14,30,30', -'52,52,17,17,18,41,,,20,,2,,,,,56,,20,3,,17,,18,14,14,26,18,,,45,14,52', -'18,,18,18,,,,18,,14,,,,,18,,14,,59,,20,59,20,14,,,,,,23,,,14,30,41,18', -',,41,41,52,,30,2,,,14,,,17,,20,20,,17,,,14,,,18,,59,,,,,59,,20,59,,', -',30,,,,2,,30,,,,,,18,18,18,,,52,52,18,,,2,,52,59,,,20,,18,,,20,2,2,', -'18,59,2,,59,,,18,,,,,,,,59,18,,,,,52,,20,,,,,,,18,,,,,52,,,,,,18,30', -'30,,,52,,,20,20,,,,,2,,,20,,,,,,,,,,,,,,,,,,20,,,,20,,,,,,,,20,20,,', -',20,,,,,,2,20,,,,,,2,,,,,,,,,,,,,,,20,,,,,,,,,,,,,,,,,,,,,,,41,,20,', -'41,,,,,41,,,,,,17,,,,17,,,,,17,,,41,20,20,,,,,,20,,,,,,,17,,,,20,,,', -',,,20,,,,,,,20,,,,,,,,,20,,41,,41,,,,,,,,,,20,,,,,17,,,,,,20,,,,,,,', -'41,41,,,,,,,,,,,,,,17,17,,41,,,,,,,,,,,,,,,17,,,,,,,,,30,,,,,,,,,41', -',,,,41,,,,,,,,,,17,,,,,17,,,,,,,,,,,,41,,,,,,,,,,,,,,,17,,,,,,,,,,,41', -'41,,,,,,,,41,,,25,,,,25,25,25,,,,,,17,,,41,,,,41,25,25,25,,,,,41,41', -',17,,41,,,25,25,,,41,,,17,17,,,,17,,,,,22,22,17,,,,,,41,,,,,,,,,,,,', -',,,,,,,,,,,,41,,,,,,,,,,,,,,,17,,,,,22,,22,,,,41,41,,,,,,41,,,,,,,,', -',,41,,,,,,,41,,,,,,,41,17,,,,,,,17,41,,,,,,17,,,,,,,,41,,,,25,25,25', -'25,,,25,41,,,,,,,,,,,,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25', -'25,25,25,25,25,25,25,25,25,25,25,,,,,,,,25,,25,,,,,,,,22,,,25,25,,,', -',,,,25,,,,,,,,,,,,,,,,,,,,,,,,,,,25,,,,,,,,,25,,,,,,,,,22,,22,,,22,', -',,,,,,,,,,,,22,,,,,,,,,,,,,,,,,,,,,,,,,,22,,,,,22,,,22,,,22,,,,,25,', -',,,,,,,22,,,,,,,,,,,,,,,25,,25,25,25,,,,,,,,,,,,,,,,,,,,,,,22,,,,,,25', -',25,,,25,,,,,,,,,,,22,,,25,22,,,,,,,,,,25,,,,,,22,25,25,25,22,,35,,', -'25,,35,,,25,,,25,,,25,,,35,35,,,,35,35,35,,,,25,25,35,,,,,,,,25,,,,22', -',,,,,,,,35,35,35,,,35,35,,,35,,,,,,,,,25,25,,,25,25,,,,25,,,25,,,,,', -',25,,,,25,22,,,25,35,,,,35,35,35,35,35,,,,,,,25,,,,25,,22,,,,,,,,,,', -'22,,,,,,,,,,,,,,,25,,,,,,,,,,22,,,,,,25,,,,,,,,,,,,,22,,,,,,,,,,,,,35', -'35,35,35,35,35,,,35,35,35,,,,22,,22,,35,,,,,,,25,25,,,,22,,,,,,25,25', -'25,,,,,,,,,,,,25,,,,,,,,,25,22,25,,22,,,,,35,35,,,,,,,,35,,35,,,,,35', -',25,,,,,,22,,,22,,,,,,,,,,25,,,22,,,,,,25,,,22,,,,,35,35,,,25,,,,,,25', -',25,,,,,,,35,,,,,,,25,,,,,,,35,,,,,,,,,,,,,25,,,,,,,,,,25,,,25,,,,,', -',,,,,,,,,,,,,,,,,,,,35,,,25,,,25,,,,,,,,,,,,,25,,,,,,,,,25,,,,,,,,,', -',,,,,,,,,,,,,,35,,,,,,,,,,,35,,,,,,,,,,,,,35,,,,,,,,,,,,,,,,,35,,,,35', -',,,,35,,35,,,,,,,,,35,,,,35,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,35,35,,', -',35,,,,,,,,,,,,,35,,,,,,,,,,,,,,,,,,,,,35,,,,,,,,35,35,,,,,,,,,,,,,', -',,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,35,,,,,35,,,,,35,,,,,,,,,,,,,,,,,,', -',,,,,,,,35,,,,,,,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,35,,,,,,,,,,,,,,,,,,35', -',,,,,,,,,35,,35,35,,,,35,,,,,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,', -',,,,,,,,,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,35,,,,,,,,,,,,,,,,35,,,,,,', -'35,,,,,,,35' ] - racc_goto_check = arr = ::Array.new(2610, 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_goto_pointer = [ - nil, 80, 201, -37, -279, -428, -521, nil, 46, 69, - 91, 14, 89, 33, 0, -17, 37, 613, 95, -42, - 292, -144, 1171, 124, -8, 1289, 0, nil, 41, -235, - 404, 13, -218, -355, -334, 1757, 41, 43, nil, -25, - 24, 598, -264, 25, -52, 2, nil, nil, 19, 21, - -258, 2, 100, -247, 14, -222, -20, 28, -375, 63, - -6, -341, -148, nil, -337, -478, nil, nil, nil, nil, - nil, nil, 46, 57, 59, nil, -275, -569, -444, -282, - 54, -210, 7, -499, 56, -218, -172, 65, -494, 69, - -493, -371, -671, -370, -503, -189, -196, -372, -618, -407, - -404, nil, -80, nil, -99, -99, -329, -635, -302, -438, - nil, nil, 105, 106, 3, 103, -164, -284, 106, -337, - -335, -455, nil, -560, -683, -563, -481, -559, -703, nil, - nil, -378 ] - -racc_goto_default = [ - nil, nil, 292, nil, nil, 733, nil, 3, nil, 4, - 312, nil, nil, nil, 202, 16, 11, 203, 286, nil, - 201, nil, 244, 15, nil, 19, 20, 21, nil, 25, - 596, nil, nil, nil, nil, 277, 29, nil, 31, 34, - 33, 199, 323, nil, 114, 380, 113, 116, 68, 69, - nil, nil, 42, 295, 297, nil, 298, 544, 545, 425, - 562, nil, nil, 255, nil, nil, 43, 44, 45, 46, - 47, 48, 49, nil, 256, 55, nil, nil, nil, nil, - nil, nil, 487, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 235, nil, 384, nil, nil, nil, nil, nil, nil, - 67, 70, 71, nil, nil, nil, nil, 525, nil, nil, - nil, 646, 647, 648, 649, nil, 812, 656, 657, 660, - 663, 248 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 133, :_reduce_1, - 4, 135, :_reduce_2, - 2, 134, :_reduce_3, - 0, 139, :_reduce_4, - 1, 139, :_reduce_5, - 2, 139, :_reduce_6, - 3, 139, :_reduce_7, - 0, 156, :_reduce_8, - 4, 141, :_reduce_9, - 3, 141, :_reduce_10, - 3, 141, :_reduce_11, - 3, 141, :_reduce_12, - 2, 141, :_reduce_13, - 3, 141, :_reduce_14, - 3, 141, :_reduce_15, - 3, 141, :_reduce_16, - 3, 141, :_reduce_17, - 3, 141, :_reduce_18, - 4, 141, :_reduce_19, - 4, 141, :_reduce_20, - 3, 141, :_reduce_21, - 3, 141, :_reduce_22, - 3, 141, :_reduce_23, - 6, 141, :_reduce_24, - 5, 141, :_reduce_25, - 5, 141, :_reduce_26, - 5, 141, :_reduce_27, - 3, 141, :_reduce_28, - 3, 141, :_reduce_29, - 3, 141, :_reduce_30, - 3, 141, :_reduce_31, - 1, 141, :_reduce_none, - 1, 155, :_reduce_none, - 3, 155, :_reduce_34, - 3, 155, :_reduce_35, - 2, 155, :_reduce_36, - 2, 155, :_reduce_37, - 1, 155, :_reduce_none, - 1, 145, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 2, 147, :_reduce_42, - 2, 147, :_reduce_43, - 2, 147, :_reduce_44, - 1, 159, :_reduce_none, - 4, 159, :_reduce_46, - 4, 159, :_reduce_47, - 0, 166, :_reduce_48, - 5, 164, :_reduce_49, - 2, 158, :_reduce_50, - 3, 158, :_reduce_51, - 4, 158, :_reduce_52, - 5, 158, :_reduce_53, - 4, 158, :_reduce_54, - 5, 158, :_reduce_55, - 2, 158, :_reduce_56, - 2, 158, :_reduce_57, - 1, 148, :_reduce_58, - 3, 148, :_reduce_59, - 1, 169, :_reduce_60, - 3, 169, :_reduce_61, - 1, 168, :_reduce_62, - 2, 168, :_reduce_63, - 3, 168, :_reduce_64, - 2, 168, :_reduce_65, - 2, 168, :_reduce_66, - 1, 168, :_reduce_67, - 1, 171, :_reduce_none, - 3, 171, :_reduce_69, - 2, 170, :_reduce_70, - 3, 170, :_reduce_71, - 1, 172, :_reduce_72, - 4, 172, :_reduce_73, - 3, 172, :_reduce_74, - 3, 172, :_reduce_75, - 3, 172, :_reduce_76, - 3, 172, :_reduce_77, - 2, 172, :_reduce_78, - 1, 172, :_reduce_79, - 1, 146, :_reduce_80, - 4, 146, :_reduce_81, - 3, 146, :_reduce_82, - 3, 146, :_reduce_83, - 3, 146, :_reduce_84, - 3, 146, :_reduce_85, - 2, 146, :_reduce_86, - 1, 146, :_reduce_87, - 1, 174, :_reduce_88, - 1, 174, :_reduce_none, - 2, 175, :_reduce_90, - 1, 175, :_reduce_91, - 3, 175, :_reduce_92, - 1, 176, :_reduce_none, - 1, 176, :_reduce_none, - 1, 176, :_reduce_none, - 1, 176, :_reduce_none, - 1, 176, :_reduce_none, - 1, 179, :_reduce_98, - 1, 179, :_reduce_none, - 1, 143, :_reduce_none, - 1, 143, :_reduce_none, - 1, 144, :_reduce_102, - 0, 182, :_reduce_103, - 4, 144, :_reduce_104, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 3, 157, :_reduce_171, - 5, 157, :_reduce_172, - 3, 157, :_reduce_173, - 6, 157, :_reduce_174, - 5, 157, :_reduce_175, - 5, 157, :_reduce_176, - 5, 157, :_reduce_177, - 5, 157, :_reduce_178, - 4, 157, :_reduce_179, - 3, 157, :_reduce_180, - 3, 157, :_reduce_181, - 3, 157, :_reduce_182, - 3, 157, :_reduce_183, - 3, 157, :_reduce_184, - 3, 157, :_reduce_185, - 3, 157, :_reduce_186, - 3, 157, :_reduce_187, - 3, 157, :_reduce_188, - 4, 157, :_reduce_189, - 4, 157, :_reduce_190, - 2, 157, :_reduce_191, - 2, 157, :_reduce_192, - 3, 157, :_reduce_193, - 3, 157, :_reduce_194, - 3, 157, :_reduce_195, - 3, 157, :_reduce_196, - 3, 157, :_reduce_197, - 3, 157, :_reduce_198, - 3, 157, :_reduce_199, - 3, 157, :_reduce_200, - 3, 157, :_reduce_201, - 3, 157, :_reduce_202, - 3, 157, :_reduce_203, - 3, 157, :_reduce_204, - 3, 157, :_reduce_205, - 2, 157, :_reduce_206, - 2, 157, :_reduce_207, - 3, 157, :_reduce_208, - 3, 157, :_reduce_209, - 3, 157, :_reduce_210, - 3, 157, :_reduce_211, - 3, 157, :_reduce_212, - 5, 157, :_reduce_213, - 1, 157, :_reduce_none, - 1, 154, :_reduce_none, - 1, 151, :_reduce_none, - 2, 151, :_reduce_217, - 2, 151, :_reduce_218, - 5, 151, :_reduce_219, - 2, 151, :_reduce_220, - 3, 151, :_reduce_221, - 3, 189, :_reduce_222, - 4, 189, :_reduce_223, - 4, 189, :_reduce_224, - 6, 189, :_reduce_225, - 0, 190, :_reduce_226, - 1, 190, :_reduce_none, - 1, 160, :_reduce_228, - 2, 160, :_reduce_229, - 5, 160, :_reduce_230, - 2, 160, :_reduce_231, - 5, 160, :_reduce_232, - 4, 160, :_reduce_233, - 7, 160, :_reduce_234, - 3, 160, :_reduce_235, - 1, 160, :_reduce_236, - 4, 193, :_reduce_237, - 3, 193, :_reduce_238, - 5, 193, :_reduce_239, - 7, 193, :_reduce_240, - 2, 193, :_reduce_241, - 5, 193, :_reduce_242, - 4, 193, :_reduce_243, - 6, 193, :_reduce_244, - 7, 193, :_reduce_245, - 9, 193, :_reduce_246, - 3, 193, :_reduce_247, - 1, 193, :_reduce_248, - 0, 195, :_reduce_249, - 2, 163, :_reduce_250, - 1, 194, :_reduce_251, - 0, 196, :_reduce_252, - 3, 194, :_reduce_253, - 0, 197, :_reduce_254, - 4, 194, :_reduce_255, - 2, 192, :_reduce_256, - 2, 191, :_reduce_257, - 0, 191, :_reduce_258, - 1, 186, :_reduce_259, - 3, 186, :_reduce_260, - 3, 153, :_reduce_261, - 4, 153, :_reduce_262, - 2, 153, :_reduce_263, - 1, 184, :_reduce_none, - 1, 184, :_reduce_none, - 1, 184, :_reduce_none, - 1, 184, :_reduce_none, - 1, 184, :_reduce_none, - 1, 184, :_reduce_none, - 1, 184, :_reduce_none, - 1, 184, :_reduce_none, - 1, 184, :_reduce_272, - 3, 184, :_reduce_273, - 0, 218, :_reduce_274, - 5, 184, :_reduce_275, - 3, 184, :_reduce_276, - 3, 184, :_reduce_277, - 2, 184, :_reduce_278, - 4, 184, :_reduce_279, - 3, 184, :_reduce_280, - 3, 184, :_reduce_281, - 1, 184, :_reduce_282, - 4, 184, :_reduce_283, - 3, 184, :_reduce_284, - 1, 184, :_reduce_285, - 5, 184, :_reduce_286, - 2, 184, :_reduce_287, - 1, 184, :_reduce_none, - 2, 184, :_reduce_289, - 6, 184, :_reduce_290, - 6, 184, :_reduce_291, - 0, 219, :_reduce_292, - 0, 220, :_reduce_293, - 7, 184, :_reduce_294, - 0, 221, :_reduce_295, - 0, 222, :_reduce_296, - 7, 184, :_reduce_297, - 5, 184, :_reduce_298, - 4, 184, :_reduce_299, - 5, 184, :_reduce_300, - 0, 223, :_reduce_301, - 0, 224, :_reduce_302, - 9, 184, :_reduce_303, - 0, 225, :_reduce_304, - 6, 184, :_reduce_305, - 0, 226, :_reduce_306, - 7, 184, :_reduce_307, - 0, 227, :_reduce_308, - 5, 184, :_reduce_309, - 0, 228, :_reduce_310, - 6, 184, :_reduce_311, - 0, 229, :_reduce_312, - 0, 230, :_reduce_313, - 9, 184, :_reduce_314, - 1, 184, :_reduce_315, - 1, 184, :_reduce_316, - 1, 184, :_reduce_317, - 1, 184, :_reduce_318, - 1, 150, :_reduce_none, - 1, 208, :_reduce_none, - 1, 208, :_reduce_none, - 1, 208, :_reduce_none, - 2, 208, :_reduce_323, - 1, 210, :_reduce_none, - 1, 210, :_reduce_none, - 1, 210, :_reduce_none, - 1, 209, :_reduce_none, - 5, 209, :_reduce_328, - 1, 137, :_reduce_none, - 2, 137, :_reduce_330, - 1, 212, :_reduce_none, - 1, 212, :_reduce_none, - 1, 231, :_reduce_333, - 3, 231, :_reduce_334, - 1, 232, :_reduce_none, - 2, 232, :_reduce_none, - 4, 232, :_reduce_337, - 7, 232, :_reduce_338, - 6, 232, :_reduce_339, - 4, 232, :_reduce_340, - 3, 232, :_reduce_341, - 5, 232, :_reduce_342, - 4, 232, :_reduce_343, - 2, 232, :_reduce_344, - 1, 232, :_reduce_345, - 2, 232, :_reduce_346, - 0, 165, :_reduce_347, - 2, 165, :_reduce_348, - 1, 165, :_reduce_349, - 3, 165, :_reduce_350, - 0, 234, :_reduce_351, - 5, 233, :_reduce_352, - 2, 161, :_reduce_353, - 4, 161, :_reduce_354, - 4, 161, :_reduce_355, - 2, 207, :_reduce_356, - 4, 207, :_reduce_357, - 4, 207, :_reduce_358, - 3, 207, :_reduce_359, - 2, 207, :_reduce_360, - 1, 207, :_reduce_361, - 0, 236, :_reduce_362, - 5, 206, :_reduce_363, - 0, 237, :_reduce_364, - 5, 206, :_reduce_365, - 5, 211, :_reduce_366, - 1, 238, :_reduce_none, - 4, 238, :_reduce_368, - 2, 238, :_reduce_369, - 1, 239, :_reduce_370, - 1, 239, :_reduce_none, - 6, 136, :_reduce_372, - 0, 136, :_reduce_373, - 1, 240, :_reduce_374, - 1, 240, :_reduce_none, - 1, 240, :_reduce_none, - 2, 241, :_reduce_377, - 1, 241, :_reduce_none, - 2, 138, :_reduce_379, - 1, 138, :_reduce_none, - 1, 198, :_reduce_none, - 1, 198, :_reduce_none, - 1, 198, :_reduce_none, - 1, 199, :_reduce_384, - 1, 243, :_reduce_385, - 2, 243, :_reduce_386, - 3, 244, :_reduce_387, - 1, 244, :_reduce_388, - 3, 200, :_reduce_389, - 4, 201, :_reduce_390, - 3, 202, :_reduce_391, - 0, 247, :_reduce_392, - 3, 247, :_reduce_393, - 1, 248, :_reduce_394, - 2, 248, :_reduce_395, - 3, 203, :_reduce_396, - 0, 250, :_reduce_397, - 3, 250, :_reduce_398, - 0, 245, :_reduce_399, - 2, 245, :_reduce_400, - 0, 246, :_reduce_401, - 2, 246, :_reduce_402, - 1, 249, :_reduce_403, - 2, 249, :_reduce_404, - 0, 252, :_reduce_405, - 4, 249, :_reduce_406, - 1, 251, :_reduce_407, - 1, 251, :_reduce_408, - 1, 251, :_reduce_409, - 1, 251, :_reduce_none, - 1, 180, :_reduce_411, - 3, 181, :_reduce_412, - 1, 242, :_reduce_413, - 1, 242, :_reduce_414, - 2, 242, :_reduce_415, - 2, 242, :_reduce_416, - 1, 173, :_reduce_417, - 1, 173, :_reduce_418, - 1, 173, :_reduce_419, - 1, 173, :_reduce_420, - 1, 173, :_reduce_421, - 1, 173, :_reduce_422, - 1, 173, :_reduce_423, - 1, 173, :_reduce_424, - 1, 173, :_reduce_425, - 1, 173, :_reduce_426, - 1, 173, :_reduce_427, - 1, 204, :_reduce_428, - 1, 149, :_reduce_429, - 1, 152, :_reduce_430, - 1, 152, :_reduce_431, - 1, 213, :_reduce_432, - 3, 213, :_reduce_433, - 2, 213, :_reduce_434, - 4, 215, :_reduce_435, - 2, 215, :_reduce_436, - 6, 253, :_reduce_437, - 4, 253, :_reduce_438, - 4, 253, :_reduce_439, - 2, 253, :_reduce_440, - 4, 253, :_reduce_441, - 2, 253, :_reduce_442, - 2, 253, :_reduce_443, - 1, 253, :_reduce_444, - 0, 253, :_reduce_445, - 1, 259, :_reduce_446, - 1, 259, :_reduce_447, - 1, 259, :_reduce_448, - 1, 259, :_reduce_449, - 1, 259, :_reduce_450, - 1, 254, :_reduce_451, - 3, 254, :_reduce_452, - 3, 260, :_reduce_453, - 1, 255, :_reduce_454, - 3, 255, :_reduce_455, - 1, 261, :_reduce_none, - 1, 261, :_reduce_none, - 2, 256, :_reduce_458, - 1, 256, :_reduce_459, - 1, 262, :_reduce_none, - 1, 262, :_reduce_none, - 2, 258, :_reduce_462, - 2, 257, :_reduce_463, - 0, 257, :_reduce_464, - 1, 216, :_reduce_none, - 4, 216, :_reduce_466, - 0, 205, :_reduce_467, - 2, 205, :_reduce_468, - 2, 205, :_reduce_469, - 1, 188, :_reduce_470, - 3, 188, :_reduce_471, - 3, 263, :_reduce_472, - 1, 167, :_reduce_none, - 1, 167, :_reduce_none, - 1, 167, :_reduce_none, - 1, 162, :_reduce_none, - 1, 162, :_reduce_none, - 1, 162, :_reduce_none, - 1, 162, :_reduce_none, - 1, 235, :_reduce_none, - 1, 235, :_reduce_none, - 1, 235, :_reduce_none, - 1, 217, :_reduce_none, - 1, 217, :_reduce_none, - 0, 140, :_reduce_none, - 1, 140, :_reduce_none, - 0, 183, :_reduce_none, - 1, 183, :_reduce_none, - 0, 187, :_reduce_none, - 1, 187, :_reduce_none, - 1, 187, :_reduce_none, - 1, 214, :_reduce_492, - 1, 214, :_reduce_none, - 1, 142, :_reduce_none, - 2, 142, :_reduce_none, - 0, 185, :_reduce_496 ] - -racc_reduce_n = 497 - -racc_shift_n = 894 - -racc_token_table = { - false => 0, - :error => 1, - :kCLASS => 2, - :kMODULE => 3, - :kDEF => 4, - :kUNDEF => 5, - :kBEGIN => 6, - :kRESCUE => 7, - :kENSURE => 8, - :kEND => 9, - :kIF => 10, - :kUNLESS => 11, - :kTHEN => 12, - :kELSIF => 13, - :kELSE => 14, - :kCASE => 15, - :kWHEN => 16, - :kWHILE => 17, - :kUNTIL => 18, - :kFOR => 19, - :kBREAK => 20, - :kNEXT => 21, - :kREDO => 22, - :kRETRY => 23, - :kIN => 24, - :kDO => 25, - :kDO_COND => 26, - :kDO_BLOCK => 27, - :kRETURN => 28, - :kYIELD => 29, - :kSUPER => 30, - :kSELF => 31, - :kNIL => 32, - :kTRUE => 33, - :kFALSE => 34, - :kAND => 35, - :kOR => 36, - :kNOT => 37, - :kIF_MOD => 38, - :kUNLESS_MOD => 39, - :kWHILE_MOD => 40, - :kUNTIL_MOD => 41, - :kRESCUE_MOD => 42, - :kALIAS => 43, - :kDEFINED => 44, - :klBEGIN => 45, - :klEND => 46, - :k__LINE__ => 47, - :k__FILE__ => 48, - :tIDENTIFIER => 49, - :tFID => 50, - :tGVAR => 51, - :tIVAR => 52, - :tCONSTANT => 53, - :tCVAR => 54, - :tNTH_REF => 55, - :tBACK_REF => 56, - :tSTRING_CONTENT => 57, - :tINTEGER => 58, - :tFLOAT => 59, - :tREGEXP_END => 60, - :tUPLUS => 61, - :tUMINUS => 62, - :tUMINUS_NUM => 63, - :tPOW => 64, - :tCMP => 65, - :tEQ => 66, - :tEQQ => 67, - :tNEQ => 68, - :tGEQ => 69, - :tLEQ => 70, - :tANDOP => 71, - :tOROP => 72, - :tMATCH => 73, - :tNMATCH => 74, - :tDOT => 75, - :tDOT2 => 76, - :tDOT3 => 77, - :tAREF => 78, - :tASET => 79, - :tLSHFT => 80, - :tRSHFT => 81, - :tCOLON2 => 82, - :tCOLON3 => 83, - :tOP_ASGN => 84, - :tASSOC => 85, - :tLPAREN => 86, - :tLPAREN2 => 87, - :tRPAREN => 88, - :tLPAREN_ARG => 89, - :tLBRACK => 90, - :tLBRACK2 => 91, - :tRBRACK => 92, - :tLBRACE => 93, - :tLBRACE_ARG => 94, - :tSTAR => 95, - :tSTAR2 => 96, - :tAMPER => 97, - :tAMPER2 => 98, - :tTILDE => 99, - :tPERCENT => 100, - :tDIVIDE => 101, - :tPLUS => 102, - :tMINUS => 103, - :tLT => 104, - :tGT => 105, - :tPIPE => 106, - :tBANG => 107, - :tCARET => 108, - :tLCURLY => 109, - :tRCURLY => 110, - :tBACK_REF2 => 111, - :tSYMBEG => 112, - :tSTRING_BEG => 113, - :tXSTRING_BEG => 114, - :tREGEXP_BEG => 115, - :tWORDS_BEG => 116, - :tQWORDS_BEG => 117, - :tSTRING_DBEG => 118, - :tSTRING_DVAR => 119, - :tSTRING_END => 120, - :tSTRING => 121, - :tSYMBOL => 122, - :tREGEXP_OPT => 123, - :tNL => 124, - :tEH => 125, - :tCOLON => 126, - :tCOMMA => 127, - :tSPACE => 128, - :tSEMI => 129, - :tEQL => 130, - :tLOWEST => 131 } - -racc_nt_base = 132 - -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", - "kCLASS", - "kMODULE", - "kDEF", - "kUNDEF", - "kBEGIN", - "kRESCUE", - "kENSURE", - "kEND", - "kIF", - "kUNLESS", - "kTHEN", - "kELSIF", - "kELSE", - "kCASE", - "kWHEN", - "kWHILE", - "kUNTIL", - "kFOR", - "kBREAK", - "kNEXT", - "kREDO", - "kRETRY", - "kIN", - "kDO", - "kDO_COND", - "kDO_BLOCK", - "kRETURN", - "kYIELD", - "kSUPER", - "kSELF", - "kNIL", - "kTRUE", - "kFALSE", - "kAND", - "kOR", - "kNOT", - "kIF_MOD", - "kUNLESS_MOD", - "kWHILE_MOD", - "kUNTIL_MOD", - "kRESCUE_MOD", - "kALIAS", - "kDEFINED", - "klBEGIN", - "klEND", - "k__LINE__", - "k__FILE__", - "tIDENTIFIER", - "tFID", - "tGVAR", - "tIVAR", - "tCONSTANT", - "tCVAR", - "tNTH_REF", - "tBACK_REF", - "tSTRING_CONTENT", - "tINTEGER", - "tFLOAT", - "tREGEXP_END", - "tUPLUS", - "tUMINUS", - "tUMINUS_NUM", - "tPOW", - "tCMP", - "tEQ", - "tEQQ", - "tNEQ", - "tGEQ", - "tLEQ", - "tANDOP", - "tOROP", - "tMATCH", - "tNMATCH", - "tDOT", - "tDOT2", - "tDOT3", - "tAREF", - "tASET", - "tLSHFT", - "tRSHFT", - "tCOLON2", - "tCOLON3", - "tOP_ASGN", - "tASSOC", - "tLPAREN", - "tLPAREN2", - "tRPAREN", - "tLPAREN_ARG", - "tLBRACK", - "tLBRACK2", - "tRBRACK", - "tLBRACE", - "tLBRACE_ARG", - "tSTAR", - "tSTAR2", - "tAMPER", - "tAMPER2", - "tTILDE", - "tPERCENT", - "tDIVIDE", - "tPLUS", - "tMINUS", - "tLT", - "tGT", - "tPIPE", - "tBANG", - "tCARET", - "tLCURLY", - "tRCURLY", - "tBACK_REF2", - "tSYMBEG", - "tSTRING_BEG", - "tXSTRING_BEG", - "tREGEXP_BEG", - "tWORDS_BEG", - "tQWORDS_BEG", - "tSTRING_DBEG", - "tSTRING_DVAR", - "tSTRING_END", - "tSTRING", - "tSYMBOL", - "tREGEXP_OPT", - "tNL", - "tEH", - "tCOLON", - "tCOMMA", - "tSPACE", - "tSEMI", - "tEQL", - "tLOWEST", - "$start", - "program", - "compstmt", - "bodystmt", - "opt_rescue", - "opt_else", - "opt_ensure", - "stmts", - "opt_terms", - "stmt", - "terms", - "fitem", - "undef_list", - "expr_value", - "lhs", - "command_call", - "mlhs", - "var_lhs", - "primary_value", - "aref_args", - "backref", - "mrhs", - "arg_value", - "expr", - "@1", - "arg", - "command", - "block_command", - "call_args", - "block_call", - "operation2", - "command_args", - "cmd_brace_block", - "opt_block_var", - "@2", - "operation", - "mlhs_basic", - "mlhs_entry", - "mlhs_head", - "mlhs_item", - "mlhs_node", - "variable", - "cname", - "cpath", - "fname", - "op", - "reswords", - "fsym", - "symbol", - "dsym", - "@3", - "opt_nl", - "primary", - "none", - "args", - "trailer", - "assocs", - "paren_args", - "opt_paren_args", - "opt_block_arg", - "block_arg", - "call_args2", - "open_args", - "@4", - "@5", - "@6", - "literal", - "strings", - "xstring", - "regexp", - "words", - "qwords", - "var_ref", - "assoc_list", - "brace_block", - "method_call", - "then", - "if_tail", - "do", - "case_body", - "for_var", - "superclass", - "term", - "f_arglist", - "singleton", - "dot_or_colon", - "@7", - "@8", - "@9", - "@10", - "@11", - "@12", - "@13", - "@14", - "@15", - "@16", - "@17", - "@18", - "@19", - "block_par", - "block_var", - "do_block", - "@20", - "operation3", - "@21", - "@22", - "when_args", - "cases", - "exc_list", - "exc_var", - "numeric", - "string", - "string1", - "string_contents", - "xstring_contents", - "word_list", - "word", - "string_content", - "qword_list", - "string_dvar", - "@23", - "f_args", - "f_arg", - "f_optarg", - "f_rest_arg", - "opt_f_block_arg", - "f_block_arg", - "f_norm_arg", - "f_opt", - "restarg_mark", - "blkarg_mark", - "assoc" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'ruby18.y', 73) - def _reduce_1(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 78) - def _reduce_2(val, _values, result) - rescue_bodies = val[1] - else_t, else_ = val[2] - ensure_t, ensure_ = val[3] - - if rescue_bodies.empty? && !else_.nil? - diagnostic :warning, :useless_else, nil, else_t - end - - result = @builder.begin_body(val[0], - rescue_bodies, - else_t, else_, - ensure_t, ensure_) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 94) - def _reduce_3(val, _values, result) - result = @builder.compstmt(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 99) - def _reduce_4(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 103) - def _reduce_5(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 107) - def _reduce_6(val, _values, result) - result = [ val[1] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 111) - def _reduce_7(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 116) - def _reduce_8(val, _values, result) - @lexer.state = :expr_fname - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 120) - def _reduce_9(val, _values, result) - result = @builder.alias(val[0], val[1], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 124) - def _reduce_10(val, _values, result) - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.gvar(val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 130) - def _reduce_11(val, _values, result) - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.back_ref(val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 136) - def _reduce_12(val, _values, result) - diagnostic :error, :nth_ref_alias, nil, val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 140) - def _reduce_13(val, _values, result) - result = @builder.undef_method(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 144) - def _reduce_14(val, _values, result) - result = @builder.condition_mod(val[0], nil, - val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 149) - def _reduce_15(val, _values, result) - result = @builder.condition_mod(nil, val[0], - val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 154) - def _reduce_16(val, _values, result) - result = @builder.loop_mod(:while, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 158) - def _reduce_17(val, _values, result) - result = @builder.loop_mod(:until, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 162) - def _reduce_18(val, _values, result) - rescue_body = @builder.rescue_body(val[1], - nil, nil, nil, - nil, val[2]) - - result = @builder.begin_body(val[0], [ rescue_body ]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 170) - def _reduce_19(val, _values, result) - if in_def? - diagnostic :error, :begin_in_method, nil, val[0] - end - - result = @builder.preexe(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 178) - def _reduce_20(val, _values, result) - result = @builder.postexe(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 182) - def _reduce_21(val, _values, result) - result = @builder.assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 186) - def _reduce_22(val, _values, result) - result = @builder.multi_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 190) - def _reduce_23(val, _values, result) - result = @builder.op_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 194) - def _reduce_24(val, _values, result) - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 201) - def _reduce_25(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 208) - def _reduce_26(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 215) - def _reduce_27(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 222) - def _reduce_28(val, _values, result) - @builder.op_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 226) - def _reduce_29(val, _values, result) - result = @builder.assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 231) - def _reduce_30(val, _values, result) - result = @builder.multi_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 235) - def _reduce_31(val, _values, result) - result = @builder.multi_assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - - result - end -.,., - -# reduce 32 omitted - -# reduce 33 omitted - -module_eval(<<'.,.,', 'ruby18.y', 243) - def _reduce_34(val, _values, result) - result = @builder.logical_op(:and, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 247) - def _reduce_35(val, _values, result) - result = @builder.logical_op(:or, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 251) - def _reduce_36(val, _values, result) - result = @builder.not_op(val[0], nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 255) - def _reduce_37(val, _values, result) - result = @builder.not_op(val[0], nil, val[1], nil) - - result - end -.,., - -# reduce 38 omitted - -# reduce 39 omitted - -# reduce 40 omitted - -# reduce 41 omitted - -module_eval(<<'.,.,', 'ruby18.y', 265) - def _reduce_42(val, _values, result) - result = @builder.keyword_cmd(:return, val[0], - nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 270) - def _reduce_43(val, _values, result) - result = @builder.keyword_cmd(:break, val[0], - nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 275) - def _reduce_44(val, _values, result) - result = @builder.keyword_cmd(:next, val[0], - nil, val[1], nil) - - result - end -.,., - -# reduce 45 omitted - -module_eval(<<'.,.,', 'ruby18.y', 282) - def _reduce_46(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 288) - def _reduce_47(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 295) - def _reduce_48(val, _values, result) - @static_env.extend_dynamic - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 299) - def _reduce_49(val, _values, result) - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 306) - def _reduce_50(val, _values, result) - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 312) - def _reduce_51(val, _values, result) - lparen_t, args, rparen_t = val[1] - method_call = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - - begin_t, block_args, body, end_t = val[2] - result = @builder.block(method_call, - begin_t, block_args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 322) - def _reduce_52(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 329) - def _reduce_53(val, _values, result) - lparen_t, args, rparen_t = val[3] - method_call = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - begin_t, block_args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, block_args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 339) - def _reduce_54(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 345) - def _reduce_55(val, _values, result) - lparen_t, args, rparen_t = val[3] - method_call = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - begin_t, block_args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, block_args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 355) - def _reduce_56(val, _values, result) - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 361) - def _reduce_57(val, _values, result) - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:yield, val[0], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 368) - def _reduce_58(val, _values, result) - result = @builder.multi_lhs(nil, val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 372) - def _reduce_59(val, _values, result) - result = @builder.begin(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 377) - def _reduce_60(val, _values, result) - result = @builder.multi_lhs(nil, val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 381) - def _reduce_61(val, _values, result) - result = @builder.multi_lhs(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 386) - def _reduce_62(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 390) - def _reduce_63(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 394) - def _reduce_64(val, _values, result) - result = val[0] << @builder.splat(val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 398) - def _reduce_65(val, _values, result) - result = val[0] << @builder.splat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 402) - def _reduce_66(val, _values, result) - result = [ @builder.splat(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 406) - def _reduce_67(val, _values, result) - result = [ @builder.splat(val[0]) ] - - result - end -.,., - -# reduce 68 omitted - -module_eval(<<'.,.,', 'ruby18.y', 412) - def _reduce_69(val, _values, result) - result = @builder.begin(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 417) - def _reduce_70(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 421) - def _reduce_71(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 426) - def _reduce_72(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 430) - def _reduce_73(val, _values, result) - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 434) - def _reduce_74(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 438) - def _reduce_75(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 442) - def _reduce_76(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 446) - def _reduce_77(val, _values, result) - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 451) - def _reduce_78(val, _values, result) - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 456) - def _reduce_79(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 461) - def _reduce_80(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 465) - def _reduce_81(val, _values, result) - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 469) - def _reduce_82(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 473) - def _reduce_83(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 477) - def _reduce_84(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 481) - def _reduce_85(val, _values, result) - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 486) - def _reduce_86(val, _values, result) - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 491) - def _reduce_87(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 496) - def _reduce_88(val, _values, result) - diagnostic :error, :module_name_const, nil, val[0] - - result - end -.,., - -# reduce 89 omitted - -module_eval(<<'.,.,', 'ruby18.y', 502) - def _reduce_90(val, _values, result) - result = @builder.const_global(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 506) - def _reduce_91(val, _values, result) - result = @builder.const(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 510) - def _reduce_92(val, _values, result) - result = @builder.const_fetch(val[0], val[1], val[2]) - - result - end -.,., - -# reduce 93 omitted - -# reduce 94 omitted - -# reduce 95 omitted - -# reduce 96 omitted - -# reduce 97 omitted - -module_eval(<<'.,.,', 'ruby18.y', 519) - def _reduce_98(val, _values, result) - result = @builder.symbol(val[0]) - - result - end -.,., - -# reduce 99 omitted - -# reduce 100 omitted - -# reduce 101 omitted - -module_eval(<<'.,.,', 'ruby18.y', 528) - def _reduce_102(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 532) - def _reduce_103(val, _values, result) - @lexer.state = :expr_fname - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 536) - def _reduce_104(val, _values, result) - result = val[0] << val[3] - - result - end -.,., - -# reduce 105 omitted - -# reduce 106 omitted - -# reduce 107 omitted - -# reduce 108 omitted - -# reduce 109 omitted - -# reduce 110 omitted - -# reduce 111 omitted - -# reduce 112 omitted - -# reduce 113 omitted - -# reduce 114 omitted - -# reduce 115 omitted - -# reduce 116 omitted - -# reduce 117 omitted - -# reduce 118 omitted - -# reduce 119 omitted - -# reduce 120 omitted - -# reduce 121 omitted - -# reduce 122 omitted - -# reduce 123 omitted - -# reduce 124 omitted - -# reduce 125 omitted - -# reduce 126 omitted - -# reduce 127 omitted - -# reduce 128 omitted - -# reduce 129 omitted - -# reduce 130 omitted - -# reduce 131 omitted - -# reduce 132 omitted - -# reduce 133 omitted - -# reduce 134 omitted - -# reduce 135 omitted - -# reduce 136 omitted - -# reduce 137 omitted - -# reduce 138 omitted - -# reduce 139 omitted - -# reduce 140 omitted - -# reduce 141 omitted - -# reduce 142 omitted - -# reduce 143 omitted - -# reduce 144 omitted - -# reduce 145 omitted - -# reduce 146 omitted - -# reduce 147 omitted - -# reduce 148 omitted - -# reduce 149 omitted - -# reduce 150 omitted - -# reduce 151 omitted - -# reduce 152 omitted - -# reduce 153 omitted - -# reduce 154 omitted - -# reduce 155 omitted - -# reduce 156 omitted - -# reduce 157 omitted - -# reduce 158 omitted - -# reduce 159 omitted - -# reduce 160 omitted - -# reduce 161 omitted - -# reduce 162 omitted - -# reduce 163 omitted - -# reduce 164 omitted - -# reduce 165 omitted - -# reduce 166 omitted - -# reduce 167 omitted - -# reduce 168 omitted - -# reduce 169 omitted - -# reduce 170 omitted - -module_eval(<<'.,.,', 'ruby18.y', 555) - def _reduce_171(val, _values, result) - result = @builder.assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 559) - def _reduce_172(val, _values, result) - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.assign(val[0], val[1], rescue_) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 569) - def _reduce_173(val, _values, result) - result = @builder.op_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 573) - def _reduce_174(val, _values, result) - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 580) - def _reduce_175(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 587) - def _reduce_176(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 594) - def _reduce_177(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 601) - def _reduce_178(val, _values, result) - diagnostic :error, :dynamic_const, nil, val[2], [ val[3] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 605) - def _reduce_179(val, _values, result) - diagnostic :error, :dynamic_const, nil, val[1], [ val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 609) - def _reduce_180(val, _values, result) - result = @builder.op_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 613) - def _reduce_181(val, _values, result) - result = @builder.range_inclusive(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 617) - def _reduce_182(val, _values, result) - result = @builder.range_exclusive(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 621) - def _reduce_183(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 625) - def _reduce_184(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 629) - def _reduce_185(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 633) - def _reduce_186(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 637) - def _reduce_187(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 641) - def _reduce_188(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 645) - def _reduce_189(val, _values, result) - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.integer(val[1]), - val[2], val[3])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 652) - def _reduce_190(val, _values, result) - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.float(val[1]), - val[2], val[3])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 659) - def _reduce_191(val, _values, result) - result = @builder.unary_op(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 663) - def _reduce_192(val, _values, result) - result = @builder.unary_op(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 667) - def _reduce_193(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 671) - def _reduce_194(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 675) - def _reduce_195(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 679) - def _reduce_196(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 683) - def _reduce_197(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 687) - def _reduce_198(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 691) - def _reduce_199(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 695) - def _reduce_200(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 699) - def _reduce_201(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 703) - def _reduce_202(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 707) - def _reduce_203(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 711) - def _reduce_204(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 715) - def _reduce_205(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 719) - def _reduce_206(val, _values, result) - result = @builder.not_op(val[0], nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 723) - def _reduce_207(val, _values, result) - result = @builder.unary_op(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 727) - def _reduce_208(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 731) - def _reduce_209(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 735) - def _reduce_210(val, _values, result) - result = @builder.logical_op(:and, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 739) - def _reduce_211(val, _values, result) - result = @builder.logical_op(:or, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 743) - def _reduce_212(val, _values, result) - result = @builder.keyword_cmd(:defined?, val[0], nil, [ val[2] ], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 747) - def _reduce_213(val, _values, result) - result = @builder.ternary(val[0], val[1], - val[2], val[3], val[4]) - - result - end -.,., - -# reduce 214 omitted - -# reduce 215 omitted - -# reduce 216 omitted - -module_eval(<<'.,.,', 'ruby18.y', 757) - def _reduce_217(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 761) - def _reduce_218(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 765) - def _reduce_219(val, _values, result) - result = val[0] << @builder.splat(val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 769) - def _reduce_220(val, _values, result) - result = [ @builder.associate(nil, val[0], nil) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 773) - def _reduce_221(val, _values, result) - result = [ @builder.splat(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 778) - def _reduce_222(val, _values, result) - result = [ val[0], [], val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 782) - def _reduce_223(val, _values, result) - result = [ val[0], val[1], val[3] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 786) - def _reduce_224(val, _values, result) - result = [ val[0], [ val[1] ], val[3] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 790) - def _reduce_225(val, _values, result) - result = [ val[0], val[1] << val[3], val[5] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 795) - def _reduce_226(val, _values, result) - result = [ nil, [], nil ] - - result - end -.,., - -# reduce 227 omitted - -module_eval(<<'.,.,', 'ruby18.y', 801) - def _reduce_228(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 805) - def _reduce_229(val, _values, result) - result = val[0].concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 809) - def _reduce_230(val, _values, result) - result = val[0].concat( - [ @builder.splat(val[2], val[3]), - *val[4] ]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 815) - def _reduce_231(val, _values, result) - result = [ @builder.associate(nil, val[0], nil), - *val[1] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 820) - def _reduce_232(val, _values, result) - result = [ @builder.associate(nil, val[0], nil), - @builder.splat(val[2], val[3]), - *val[4] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 826) - def _reduce_233(val, _values, result) - result = val[0].concat( - [ @builder.associate(nil, val[2], nil), - *val[3] ]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 832) - def _reduce_234(val, _values, result) - result = val[0].concat( - [ @builder.associate(nil, val[2], nil), - @builder.splat(val[4], val[5]), - *val[6] ]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 839) - def _reduce_235(val, _values, result) - result = [ @builder.splat(val[0], val[1]), - *val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 844) - def _reduce_236(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 849) - def _reduce_237(val, _values, result) - result = [ val[0], *val[2].concat(val[3]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 853) - def _reduce_238(val, _values, result) - result = [ val[0], val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 857) - def _reduce_239(val, _values, result) - result = [ val[0], - @builder.splat(val[2], val[3]), - *val[4] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 863) - def _reduce_240(val, _values, result) - result = [ val[0], - *val[2]. - push(@builder.splat(val[4], val[5])). - concat(val[6]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 870) - def _reduce_241(val, _values, result) - result = [ @builder.associate(nil, val[0], nil), - *val[1] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 875) - def _reduce_242(val, _values, result) - result = [ @builder.associate(nil, val[0], nil), - @builder.splat(val[2], val[3]), - *val[4] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 881) - def _reduce_243(val, _values, result) - result = [ val[0], - @builder.associate(nil, val[2], nil), - *val[3] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 887) - def _reduce_244(val, _values, result) - result = [ val[0], - *val[2]. - push(@builder.associate(nil, val[4], nil)). - concat(val[5]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 894) - def _reduce_245(val, _values, result) - result = [ val[0], - @builder.associate(nil, val[2], nil), - @builder.splat(val[4], val[5]), - *val[6] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 901) - def _reduce_246(val, _values, result) - result = [ val[0], - *val[2]. - push(@builder.associate(nil, val[4], nil)). - push(@builder.splat(val[6], val[7])). - concat(val[8]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 909) - def _reduce_247(val, _values, result) - result = [ @builder.splat(val[0], val[1]), - *val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 914) - def _reduce_248(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 918) - def _reduce_249(val, _values, result) - result = @lexer.cmdarg.dup - @lexer.cmdarg.push(true) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 923) - def _reduce_250(val, _values, result) - @lexer.cmdarg = val[0] - - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 930) - def _reduce_251(val, _values, result) - result = [ nil, val[0], nil ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 934) - def _reduce_252(val, _values, result) - @lexer.state = :expr_endarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 938) - def _reduce_253(val, _values, result) - result = [ val[0], [], val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 942) - def _reduce_254(val, _values, result) - @lexer.state = :expr_endarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 946) - def _reduce_255(val, _values, result) - result = [ val[0], val[1], val[3] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 951) - def _reduce_256(val, _values, result) - result = @builder.block_pass(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 956) - def _reduce_257(val, _values, result) - result = [ val[1] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 960) - def _reduce_258(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 965) - def _reduce_259(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 969) - def _reduce_260(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 974) - def _reduce_261(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 978) - def _reduce_262(val, _values, result) - result = val[0] << @builder.splat(val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 982) - def _reduce_263(val, _values, result) - result = [ @builder.splat(val[0], val[1]) ] - - result - end -.,., - -# reduce 264 omitted - -# reduce 265 omitted - -# reduce 266 omitted - -# reduce 267 omitted - -# reduce 268 omitted - -# reduce 269 omitted - -# reduce 270 omitted - -# reduce 271 omitted - -module_eval(<<'.,.,', 'ruby18.y', 995) - def _reduce_272(val, _values, result) - result = @builder.call_method(nil, nil, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 999) - def _reduce_273(val, _values, result) - result = @builder.begin_keyword(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1003) - def _reduce_274(val, _values, result) - @lexer.state = :expr_endarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1007) - def _reduce_275(val, _values, result) - result = @builder.begin(val[0], val[1], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1011) - def _reduce_276(val, _values, result) - result = @builder.begin(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1015) - def _reduce_277(val, _values, result) - result = @builder.const_fetch(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1019) - def _reduce_278(val, _values, result) - result = @builder.const_global(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1023) - def _reduce_279(val, _values, result) - result = @builder.index(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1027) - def _reduce_280(val, _values, result) - result = @builder.array(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1031) - def _reduce_281(val, _values, result) - result = @builder.associate(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1035) - def _reduce_282(val, _values, result) - result = @builder.keyword_cmd(:return, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1039) - def _reduce_283(val, _values, result) - result = @builder.keyword_cmd(:yield, val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1043) - def _reduce_284(val, _values, result) - result = @builder.keyword_cmd(:yield, val[0], val[1], [], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1047) - def _reduce_285(val, _values, result) - result = @builder.keyword_cmd(:yield, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1051) - def _reduce_286(val, _values, result) - result = @builder.keyword_cmd(:defined?, val[0], - val[2], [ val[3] ], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1056) - def _reduce_287(val, _values, result) - method_call = @builder.call_method(nil, nil, val[0]) - - begin_t, args, body, end_t = val[1] - result = @builder.block(method_call, - begin_t, args, body, end_t) - - result - end -.,., - -# reduce 288 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1065) - def _reduce_289(val, _values, result) - begin_t, args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1071) - def _reduce_290(val, _values, result) - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1078) - def _reduce_291(val, _values, result) - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - else_, else_t, - val[3], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1085) - def _reduce_292(val, _values, result) - @lexer.cond.push(true) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1089) - def _reduce_293(val, _values, result) - @lexer.cond.pop - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1093) - def _reduce_294(val, _values, result) - result = @builder.loop(:while, val[0], val[2], val[3], - val[5], val[6]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1098) - def _reduce_295(val, _values, result) - @lexer.cond.push(true) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1102) - def _reduce_296(val, _values, result) - @lexer.cond.pop - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1106) - def _reduce_297(val, _values, result) - result = @builder.loop(:until, val[0], val[2], val[3], - val[5], val[6]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1111) - def _reduce_298(val, _values, result) - when_bodies = val[3][0..-2] - else_t, else_body = val[3][-1] - - result = @builder.case(val[0], val[1], - when_bodies, else_t, else_body, - val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1120) - def _reduce_299(val, _values, result) - when_bodies = val[2][0..-2] - else_t, else_body = val[2][-1] - - result = @builder.case(val[0], nil, - when_bodies, else_t, else_body, - val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1129) - def _reduce_300(val, _values, result) - result = @builder.case(val[0], nil, - [], val[2], val[3], - val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1135) - def _reduce_301(val, _values, result) - @lexer.cond.push(true) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1139) - def _reduce_302(val, _values, result) - @lexer.cond.pop - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1143) - def _reduce_303(val, _values, result) - result = @builder.for(val[0], val[1], - val[2], val[4], - val[5], val[7], val[8]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1149) - def _reduce_304(val, _values, result) - @static_env.extend_static - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1153) - def _reduce_305(val, _values, result) - if in_def? - diagnostic :error, :class_in_def, nil, val[0] - end - - lt_t, superclass = val[2] - result = @builder.def_class(val[0], val[1], - lt_t, superclass, - val[4], val[5]) - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1166) - def _reduce_306(val, _values, result) - result = @def_level - @def_level = 0 - - @static_env.extend_static - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1173) - def _reduce_307(val, _values, result) - result = @builder.def_sclass(val[0], val[1], val[2], - val[5], val[6]) - - @static_env.unextend - - @def_level = val[4] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1182) - def _reduce_308(val, _values, result) - @static_env.extend_static - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1186) - def _reduce_309(val, _values, result) - if in_def? - diagnostic :error, :module_in_def, nil, val[0] - end - - result = @builder.def_module(val[0], val[1], - val[3], val[4]) - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1197) - def _reduce_310(val, _values, result) - @def_level += 1 - @static_env.extend_static - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1202) - def _reduce_311(val, _values, result) - result = @builder.def_method(val[0], val[1], - val[3], val[4], val[5]) - - @static_env.unextend - @def_level -= 1 - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1210) - def _reduce_312(val, _values, result) - @lexer.state = :expr_fname - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1214) - def _reduce_313(val, _values, result) - @def_level += 1 - @static_env.extend_static - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1219) - def _reduce_314(val, _values, result) - result = @builder.def_singleton(val[0], val[1], val[2], - val[4], val[6], val[7], val[8]) - - @static_env.unextend - @def_level -= 1 - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1227) - def _reduce_315(val, _values, result) - result = @builder.keyword_cmd(:break, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1231) - def _reduce_316(val, _values, result) - result = @builder.keyword_cmd(:next, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1235) - def _reduce_317(val, _values, result) - result = @builder.keyword_cmd(:redo, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1239) - def _reduce_318(val, _values, result) - result = @builder.keyword_cmd(:retry, val[0]) - - result - end -.,., - -# reduce 319 omitted - -# reduce 320 omitted - -# reduce 321 omitted - -# reduce 322 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1249) - def _reduce_323(val, _values, result) - result = val[1] - - result - end -.,., - -# reduce 324 omitted - -# reduce 325 omitted - -# reduce 326 omitted - -# reduce 327 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1259) - def _reduce_328(val, _values, result) - else_t, else_ = val[4] - result = [ val[0], - @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, nil), - ] - - result - end -.,., - -# reduce 329 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1270) - def _reduce_330(val, _values, result) - result = val - - result - end -.,., - -# reduce 331 omitted - -# reduce 332 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1278) - def _reduce_333(val, _values, result) - result = [ @builder.arg_expr(val[0]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1282) - def _reduce_334(val, _values, result) - result = val[0] << @builder.arg_expr(val[2]) - - result - end -.,., - -# reduce 335 omitted - -# reduce 336 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1289) - def _reduce_337(val, _values, result) - result = val[0]. - push(@builder.blockarg_expr(val[2], val[3])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1294) - def _reduce_338(val, _values, result) - result = val[0]. - push(@builder.restarg_expr(val[2], val[3])). - push(@builder.blockarg_expr(val[5], val[6])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1300) - def _reduce_339(val, _values, result) - result = val[0]. - push(@builder.restarg_expr(val[2])). - push(@builder.blockarg_expr(val[4], val[5])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1306) - def _reduce_340(val, _values, result) - result = val[0]. - push(@builder.restarg_expr(val[2], val[3])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1311) - def _reduce_341(val, _values, result) - result = val[0]. - push(@builder.restarg_expr(val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1316) - def _reduce_342(val, _values, result) - result = [ @builder.restarg_expr(val[0], val[1]), - @builder.blockarg_expr(val[3], val[4]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1321) - def _reduce_343(val, _values, result) - result = [ @builder.restarg_expr(val[0]), - @builder.blockarg_expr(val[2], val[3]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1326) - def _reduce_344(val, _values, result) - result = [ @builder.restarg_expr(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1330) - def _reduce_345(val, _values, result) - result = [ @builder.restarg_expr(val[0]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1334) - def _reduce_346(val, _values, result) - result = [ @builder.blockarg_expr(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1340) - def _reduce_347(val, _values, result) - result = @builder.args(nil, [], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1344) - def _reduce_348(val, _values, result) - result = @builder.args(val[0], [], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1348) - def _reduce_349(val, _values, result) - result = @builder.args(val[0], [], val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1352) - def _reduce_350(val, _values, result) - result = @builder.args(val[0], val[1], val[2], false) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1357) - def _reduce_351(val, _values, result) - @static_env.extend_dynamic - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1361) - def _reduce_352(val, _values, result) - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1368) - def _reduce_353(val, _values, result) - begin_t, block_args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, block_args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1374) - def _reduce_354(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1380) - def _reduce_355(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1387) - def _reduce_356(val, _values, result) - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1393) - def _reduce_357(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1399) - def _reduce_358(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1405) - def _reduce_359(val, _values, result) - result = @builder.call_method(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1409) - def _reduce_360(val, _values, result) - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1415) - def _reduce_361(val, _values, result) - result = @builder.keyword_cmd(:zsuper, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1420) - def _reduce_362(val, _values, result) - @static_env.extend_dynamic - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1424) - def _reduce_363(val, _values, result) - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1430) - def _reduce_364(val, _values, result) - @static_env.extend_dynamic - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1434) - def _reduce_365(val, _values, result) - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1441) - def _reduce_366(val, _values, result) - result = [ @builder.when(val[0], val[1], val[2], val[3]), - *val[4] ] - - result - end -.,., - -# reduce 367 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1448) - def _reduce_368(val, _values, result) - result = val[0] << @builder.splat(val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1452) - def _reduce_369(val, _values, result) - result = [ @builder.splat(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1457) - def _reduce_370(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -# reduce 371 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1463) - def _reduce_372(val, _values, result) - assoc_t, exc_var = val[2] - - if val[1] - exc_list = @builder.array(nil, val[1], nil) - end - - result = [ @builder.rescue_body(val[0], - exc_list, assoc_t, exc_var, - val[3], val[4]), - *val[5] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1476) - def _reduce_373(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1481) - def _reduce_374(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -# reduce 375 omitted - -# reduce 376 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1488) - def _reduce_377(val, _values, result) - result = [ val[0], val[1] ] - - result - end -.,., - -# reduce 378 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1494) - def _reduce_379(val, _values, result) - result = [ val[0], val[1] ] - - result - end -.,., - -# reduce 380 omitted - -# reduce 381 omitted - -# reduce 382 omitted - -# reduce 383 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1504) - def _reduce_384(val, _values, result) - result = @builder.string_compose(nil, val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1509) - def _reduce_385(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1513) - def _reduce_386(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1518) - def _reduce_387(val, _values, result) - result = @builder.string_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1522) - def _reduce_388(val, _values, result) - result = @builder.string(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1527) - def _reduce_389(val, _values, result) - result = @builder.xstring_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1532) - def _reduce_390(val, _values, result) - opts = @builder.regexp_options(val[3]) - result = @builder.regexp_compose(val[0], val[1], val[2], opts) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1538) - def _reduce_391(val, _values, result) - result = @builder.words_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1543) - def _reduce_392(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1547) - def _reduce_393(val, _values, result) - result = val[0] << @builder.word(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1552) - def _reduce_394(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1556) - def _reduce_395(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1561) - def _reduce_396(val, _values, result) - result = @builder.words_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1566) - def _reduce_397(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1570) - def _reduce_398(val, _values, result) - result = val[0] << @builder.string_internal(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1575) - def _reduce_399(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1579) - def _reduce_400(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1584) - def _reduce_401(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1588) - def _reduce_402(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1593) - def _reduce_403(val, _values, result) - result = @builder.string_internal(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1597) - def _reduce_404(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1601) - def _reduce_405(val, _values, result) - @lexer.cond.push(false) - @lexer.cmdarg.push(false) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1606) - def _reduce_406(val, _values, result) - @lexer.cond.lexpop - @lexer.cmdarg.lexpop - - result = @builder.begin(val[0], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1614) - def _reduce_407(val, _values, result) - result = @builder.gvar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1618) - def _reduce_408(val, _values, result) - result = @builder.ivar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1622) - def _reduce_409(val, _values, result) - result = @builder.cvar(val[0]) - - result - end -.,., - -# reduce 410 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1629) - def _reduce_411(val, _values, result) - result = @builder.symbol(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1634) - def _reduce_412(val, _values, result) - result = @builder.symbol_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1639) - def _reduce_413(val, _values, result) - result = @builder.integer(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1643) - def _reduce_414(val, _values, result) - result = @builder.float(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1647) - def _reduce_415(val, _values, result) - result = @builder.negate(val[0], - @builder.integer(val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1652) - def _reduce_416(val, _values, result) - result = @builder.negate(val[0], - @builder.float(val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1658) - def _reduce_417(val, _values, result) - result = @builder.ident(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1662) - def _reduce_418(val, _values, result) - result = @builder.ivar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1666) - def _reduce_419(val, _values, result) - result = @builder.gvar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1670) - def _reduce_420(val, _values, result) - result = @builder.cvar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1674) - def _reduce_421(val, _values, result) - result = @builder.const(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1678) - def _reduce_422(val, _values, result) - result = @builder.nil(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1682) - def _reduce_423(val, _values, result) - result = @builder.self(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1686) - def _reduce_424(val, _values, result) - result = @builder.true(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1690) - def _reduce_425(val, _values, result) - result = @builder.false(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1694) - def _reduce_426(val, _values, result) - result = @builder.__FILE__(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1698) - def _reduce_427(val, _values, result) - result = @builder.__LINE__(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1703) - def _reduce_428(val, _values, result) - result = @builder.accessible(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1708) - def _reduce_429(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1713) - def _reduce_430(val, _values, result) - result = @builder.nth_ref(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1717) - def _reduce_431(val, _values, result) - result = @builder.back_ref(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1722) - def _reduce_432(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1726) - def _reduce_433(val, _values, result) - result = [ val[0], val[1] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1730) - def _reduce_434(val, _values, result) - yyerrok - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1736) - def _reduce_435(val, _values, result) - result = @builder.args(val[0], val[1], val[3]) - - @lexer.state = :expr_beg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1742) - def _reduce_436(val, _values, result) - result = @builder.args(nil, val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1747) - def _reduce_437(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1754) - def _reduce_438(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1760) - def _reduce_439(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1766) - def _reduce_440(val, _values, result) - result = val[0]. - concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1771) - def _reduce_441(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1777) - def _reduce_442(val, _values, result) - result = val[0]. - concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1782) - def _reduce_443(val, _values, result) - result = val[0]. - concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1787) - def _reduce_444(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1791) - def _reduce_445(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1796) - def _reduce_446(val, _values, result) - diagnostic :error, :argument_const, nil, val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1800) - def _reduce_447(val, _values, result) - diagnostic :error, :argument_ivar, nil, val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1804) - def _reduce_448(val, _values, result) - diagnostic :error, :argument_gvar, nil, val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1808) - def _reduce_449(val, _values, result) - diagnostic :error, :argument_cvar, nil, val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1812) - def _reduce_450(val, _values, result) - @static_env.declare val[0][0] - - result = @builder.arg(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1819) - def _reduce_451(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1823) - def _reduce_452(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1828) - def _reduce_453(val, _values, result) - @static_env.declare val[0][0] - - result = @builder.optarg(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1835) - def _reduce_454(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1839) - def _reduce_455(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -# reduce 456 omitted - -# reduce 457 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1846) - def _reduce_458(val, _values, result) - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1852) - def _reduce_459(val, _values, result) - result = [ @builder.restarg(val[0]) ] - - result - end -.,., - -# reduce 460 omitted - -# reduce 461 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1859) - def _reduce_462(val, _values, result) - @static_env.declare val[1][0] - - result = @builder.blockarg(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1866) - def _reduce_463(val, _values, result) - result = [ val[1] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1870) - def _reduce_464(val, _values, result) - result = [] - - result - end -.,., - -# reduce 465 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1876) - def _reduce_466(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1881) - def _reduce_467(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1885) - def _reduce_468(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1889) - def _reduce_469(val, _values, result) - result = @builder.pair_list_18(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1894) - def _reduce_470(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1898) - def _reduce_471(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1903) - def _reduce_472(val, _values, result) - result = @builder.pair(val[0], val[1], val[2]) - - result - end -.,., - -# reduce 473 omitted - -# reduce 474 omitted - -# reduce 475 omitted - -# reduce 476 omitted - -# reduce 477 omitted - -# reduce 478 omitted - -# reduce 479 omitted - -# reduce 480 omitted - -# reduce 481 omitted - -# reduce 482 omitted - -# reduce 483 omitted - -# reduce 484 omitted - -# reduce 485 omitted - -# reduce 486 omitted - -# reduce 487 omitted - -# reduce 488 omitted - -# reduce 489 omitted - -# reduce 490 omitted - -# reduce 491 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1916) - def _reduce_492(val, _values, result) - yyerrok - - result - end -.,., - -# reduce 493 omitted - -# reduce 494 omitted - -# reduce 495 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1925) - def _reduce_496(val, _values, result) - result = nil - - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Ruby18 -end # module Parser diff --git a/test/racc/regress/ruby22 b/test/racc/regress/ruby22 deleted file mode 100644 index 101119a232..0000000000 --- a/test/racc/regress/ruby22 +++ /dev/null @@ -1,7460 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - - -require 'parser' - -Parser.check_for_encoding_support - -module Parser - class Ruby22 < Racc::Parser - -module_eval(<<'...end ruby22.y/module_eval...', 'ruby22.y', 2374) - - def version - 22 - end - - def default_encoding - Encoding::UTF_8 - end -...end ruby22.y/module_eval... -##### State transition tables begin ### - -clist = [ -'-476,-97,268,214,215,-98,-105,-476,-476,-476,-490,568,-476,-476,-476', -'610,-476,580,217,612,-288,581,214,215,-476,-491,-476,-476,-476,647,268', -'268,214,215,-104,589,-476,-476,568,-476,-476,-476,-476,-476,568,568', -'212,109,568,815,-100,121,-100,-83,-102,-99,214,215,268,218,-288,806', -'-69,574,646,-102,-97,-476,-476,-476,-476,-476,-476,-476,-476,-476,-476', -'-476,-476,-476,-476,-98,609,-476,-476,-476,611,-476,-476,715,267,-476', -'206,-96,-476,-476,263,-476,218,-476,207,-476,-105,-476,-476,-99,-476', -'-476,-476,-476,-476,-88,-476,-479,-476,-89,-96,218,267,267,-479,-479', -'-479,263,-101,-479,-479,-479,-476,-479,113,-476,-476,-476,-476,112,-476', -'-479,-476,-479,-479,-479,588,-476,-95,715,267,-101,715,-479,-479,218', -'-479,-479,-479,-479,-479,113,208,814,-91,-91,112,113,113,113,842,113', -'112,112,112,-100,112,-102,-99,-93,-100,213,-102,-99,-479,-479,-479,-479', -'-479,-479,-479,-479,-479,-479,-479,-479,-479,-479,113,257,-479,-479', -'-479,112,-479,-479,-574,-93,-479,316,-103,-479,-479,317,-479,597,-479', -'-574,-479,-90,-479,-479,444,-479,-479,-479,-479,-479,-291,-479,218,-479', -'-91,214,215,-291,-291,-291,647,260,527,-291,-291,526,-291,-479,261,-101', -'-479,-479,-479,-479,-101,-479,113,-479,-571,113,113,112,-479,-92,112', -'112,-291,-291,386,-291,-291,-291,-291,-291,-91,646,-93,-91,-575,396', -'-105,399,599,598,398,397,-91,548,597,545,544,543,747,546,443,91,92,-291', -'-291,-291,-291,-291,-291,-291,-291,-291,-291,-291,-291,-291,-291,-476', -'-572,-291,-291,-291,-93,630,-476,-93,-490,-291,-94,-571,-291,91,92,-476', -'-93,-291,113,-291,515,-291,-291,112,-291,-291,-291,-291,-291,597,-291', -'-578,-291,445,-571,-491,-476,446,-578,-578,-578,599,598,-476,-578,-578', -'-291,-578,647,-291,-291,749,-94,-479,-291,-88,-578,217,833,-578,-479', -'-103,93,94,-97,-572,477,-578,-578,-479,-578,-578,-578,-578,-578,548', -'-104,545,544,543,515,546,-89,646,527,647,597,529,-572,597,486,-98,93', -'94,599,598,595,-412,-578,-578,-578,-578,-578,-578,-578,-578,-578,-578', -'-578,-578,-578,-578,-578,625,-578,-578,-578,597,631,-578,646,113,-578', -'626,-574,-578,112,-95,-578,597,-578,770,-578,-578,-578,-578,-104,-578', -'-578,-578,-578,-578,488,-578,-578,-578,597,-578,490,597,-412,599,598', -'595,599,598,600,-412,957,-578,-91,756,-578,-578,-578,-92,-412,-578,662', -'-100,-93,-578,-578,-578,-101,498,-578,-578,-578,-102,-578,-479,599,598', -'602,-412,-578,-100,-479,-578,-578,-578,-578,-578,599,598,604,771,-574', -'-68,-578,-578,-578,-578,-578,-578,-578,-578,-90,218,860,599,598,608', -'599,598,613,-99,214,215,-486,-578,548,-485,545,544,543,-486,546,501', -'-485,-578,-578,-578,-578,-578,-578,-578,-578,-578,-578,-578,-578,-578', -'-578,553,502,-578,-578,-578,-487,772,-578,-102,509,-578,556,-487,-578', -'-578,701,-578,272,-578,218,-578,-99,-578,-578,704,-578,-578,-578,-578', -'-578,553,-578,-578,-578,527,-484,79,529,113,-481,263,556,-484,112,564', -'563,-481,-578,80,557,-578,-578,-578,-578,238,-578,-291,-578,81,-482', -'210,512,-101,-291,-291,-291,-482,211,-291,-291,-291,-334,-291,440,564', -'563,209,516,-334,557,441,-483,-291,-291,-291,238,235,-334,-483,442,237', -'236,-291,-291,260,-291,-291,-291,-291,-291,548,261,545,544,543,-488', -'546,548,218,545,544,543,-488,546,548,530,545,544,543,527,546,-488,529', -'-291,-291,-291,-291,-291,-291,-291,-291,-291,-291,-291,-291,-291,-291', -'238,701,-291,-291,-291,-489,773,-291,701,238,-291,531,-489,-291,-291', -'701,-291,704,-291,490,-291,-489,-291,-291,904,-291,-291,-291,-291,-291', -'113,-291,235,-291,574,112,237,236,238,233,234,235,214,215,388,237,236', -'-291,233,234,-291,-291,-291,-291,113,-291,113,-291,578,112,579,112,-103', -'5,69,70,71,9,57,614,235,507,63,64,237,236,617,67,508,65,66,68,30,31', -'72,73,218,506,-263,981,619,29,28,27,101,100,102,103,741,742,19,218,743', -'107,108,635,8,45,7,10,105,104,106,95,56,97,96,98,623,99,107,108,624', -'91,92,263,42,43,41,238,242,247,248,249,244,246,254,255,250,251,-281', -'231,232,517,634,252,253,-281,40,637,518,33,564,563,58,59,-281,238,60', -'442,35,235,238,241,44,237,236,238,233,234,245,243,239,20,240,837,806', -'238,89,79,82,83,576,84,86,85,87,837,806,577,218,80,88,218,256,218,-240', -'-83,575,62,666,81,93,94,290,69,70,71,9,57,218,520,584,63,64,677,682', -'683,67,583,65,66,68,30,31,72,73,685,585,689,692,693,29,28,27,101,100', -'102,103,695,697,19,699,707,708,709,620,8,45,292,10,105,104,106,95,56', -'97,96,98,711,99,107,108,574,91,92,718,42,43,41,238,242,247,248,249,244', -'246,254,255,250,251,-292,231,232,-292,736,252,253,-292,40,746,-292,294', -'750,751,58,59,-292,-264,60,-292,35,235,757,241,44,237,236,477,233,234', -'245,243,239,20,240,477,218,257,89,79,82,83,584,84,86,85,87,488,490,939', -'799,80,88,677,256,218,263,263,585,62,677,81,93,94,5,69,70,71,9,57,238', -'806,584,63,64,218,218,831,67,939,65,66,68,30,31,72,73,218,585,806,841', -'218,29,28,27,101,100,102,103,218,850,19,-265,859,861,862,635,8,45,7', -'10,105,104,106,95,56,97,96,98,692,99,107,108,865,91,92,867,42,43,41', -'238,242,247,248,249,244,246,254,255,250,251,-291,231,232,-488,869,252', -'253,-291,40,871,-488,33,-575,218,58,59,-291,873,60,-488,35,235,874,241', -'44,237,236,877,233,234,245,243,239,20,240,879,880,677,89,79,82,83,-489', -'84,86,85,87,882,-263,-489,886,80,88,888,256,891,692,893,-489,62,895', -'81,93,94,290,69,70,71,9,57,897,899,986,63,64,899,218,905,67,987,65,66', -'68,30,31,72,73,907,985,909,915,918,29,28,27,101,100,102,103,218,936', -'19,545,544,543,922,546,8,45,292,10,105,104,106,95,56,97,96,98,-266,99', -'107,108,933,91,92,940,42,43,41,238,242,247,248,249,244,246,254,255,250', -'251,-291,231,232,-281,941,252,253,-291,40,950,-281,33,-575,951,58,59', -'-291,959,60,-281,35,235,961,241,44,237,236,962,233,234,245,243,239,20', -'240,967,736,692,89,79,82,83,-292,84,86,85,87,971,973,-292,975,80,88', -'977,256,977,988,989,-292,62,899,81,93,94,290,69,70,71,9,57,899,899,994', -'63,64,959,-575,-574,67,682,65,66,68,30,31,72,73,116,117,118,119,120', -'29,28,27,101,100,102,103,959,936,19,545,544,543,1013,546,8,45,292,10', -'105,104,106,95,56,97,96,98,1014,99,107,108,1015,91,92,977,42,43,41,238', -'242,247,248,249,244,246,254,255,250,251,-291,231,232,977,977,252,253', -'-291,40,218,899,33,-575,959,58,59,-291,977,60,,35,235,,241,44,237,236', -',233,234,245,243,239,20,240,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,256', -',,,,62,,81,93,94,290,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72', -'73,116,117,118,119,120,29,28,27,101,100,102,103,,,19,116,117,118,119', -'120,8,45,292,10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43', -'41,238,242,247,248,249,244,246,254,255,250,251,,231,232,,,252,253,,40', -',,294,,,58,59,,,60,,35,235,,241,44,237,236,,233,234,245,243,239,20,240', -',,,89,79,82,83,,84,86,85,87,,,,,80,88,,256,,,,,62,,81,93,94,290,69,70', -'71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102', -'103,,,19,,,,,,8,45,292,10,105,104,106,95,56,97,96,98,,99,107,108,,91', -'92,,42,43,41,238,242,247,248,249,244,246,254,255,250,251,,231,232,,', -'252,253,,40,,,294,,,58,59,,,60,,35,235,,241,44,237,236,,233,234,245', -'243,239,20,240,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,256,,,,,62,,81', -'93,94,290,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29', -'28,27,101,100,102,103,,,19,,,,,,8,45,292,10,105,104,106,95,56,97,96', -'98,,99,107,108,,91,92,,42,43,41,238,242,247,248,249,244,246,254,255', -'250,251,,231,232,,,252,253,,40,,,33,,,58,59,,,60,,35,235,,241,44,237', -'236,,233,234,245,243,239,20,240,,,,89,79,82,83,,84,86,85,87,,,,,80,88', -'218,256,,,,,62,,81,93,94,5,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30', -'31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45,7,10,105,104,106', -'95,56,97,96,98,,99,107,108,,91,92,,42,43,41,238,242,247,248,249,244', -'246,254,255,250,251,,231,232,,,252,253,,40,,,33,,,58,59,,,60,,35,235', -',241,44,237,236,,233,234,245,243,239,20,240,,,,89,79,82,83,,84,86,85', -'87,,,,,80,88,,256,,,,,62,,81,93,94,290,69,70,71,9,57,,,,63,64,,,,67', -',65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45,292', -'10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,238,242,247', -'248,249,244,246,254,255,250,251,,231,232,,,252,253,,40,,,33,,,58,59', -',,60,,35,235,,241,44,237,236,,233,234,245,243,239,20,240,,,,89,79,82', -'83,,84,86,85,87,,,,,80,88,,256,,,,,62,,81,93,94,290,69,70,71,9,57,,', -',63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19', -',,,,,8,45,292,10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43', -'41,238,242,247,248,249,244,246,254,255,250,251,,231,232,,,252,253,,40', -',,33,,,58,59,,,60,,35,235,,241,44,237,236,,233,234,245,243,239,20,240', -',,,89,79,82,83,,84,86,85,87,,,,,80,88,,256,,,,,62,,81,93,94,290,69,70', -'71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102', -'103,,,19,,,,,,8,45,292,10,105,104,106,95,56,97,96,98,,99,107,108,,91', -'92,,42,43,41,238,242,247,248,249,244,246,254,255,250,251,,231,232,,', -'252,253,,40,,,33,,,58,59,,,60,,35,235,,241,44,237,236,,233,234,245,243', -'239,20,240,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,256,,,,,62,,81,93', -'94,290,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28', -'27,101,100,102,103,,,19,,,,,,8,45,292,10,105,104,106,95,56,97,96,98', -',99,107,108,,91,92,,42,43,41,238,242,247,248,249,244,246,254,255,250', -'251,,231,232,,,252,253,,40,,,33,,,58,59,,,60,,35,235,,241,44,237,236', -',233,234,245,243,239,20,240,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,256', -',,,,62,,81,93,94,290,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72', -'73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45,292,10,105,104,106,95', -'56,97,96,98,,99,107,108,,91,92,,42,43,41,238,242,247,248,249,244,246', -'254,255,250,251,,231,232,,,252,253,,40,,,33,,,58,59,,,60,,35,235,,241', -'44,237,236,,233,234,245,243,239,20,240,,,,89,79,82,83,,84,86,85,87,', -',,,80,88,,256,,,,,62,,81,93,94,290,69,70,71,9,57,,,,63,64,,,,67,,65', -'66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45,292,10', -'105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,238,242,247', -'248,249,244,246,254,255,250,251,,231,232,,,252,253,,40,,,33,,,58,59', -',,60,,35,235,,241,44,237,236,,233,234,245,243,239,20,240,,,,89,79,82', -'83,,84,86,85,87,,,,,80,88,,256,,,,,62,,81,93,94,290,69,70,71,9,57,,', -',63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19', -',,,,,8,45,292,10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43', -'41,238,242,247,248,249,244,246,254,255,250,251,,231,232,,,252,253,,40', -',,33,,,58,59,,,60,,35,235,,241,44,237,236,,233,234,245,243,239,20,240', -',,,89,79,82,83,,84,86,85,87,,,,,80,88,,256,,,,,62,,81,93,94,290,69,70', -'71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102', -'103,,,19,,,,,,8,45,292,10,105,104,106,95,56,97,96,98,,99,107,108,,91', -'92,,42,43,41,238,242,247,248,249,244,246,254,255,250,251,,231,232,,', -'252,253,,40,,,33,,,58,59,,,60,,35,235,,241,44,237,236,,233,234,245,243', -'239,20,240,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,256,,,,,62,,81,93', -'94,290,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28', -'27,101,100,102,103,,,19,,,,,,8,45,292,10,105,104,106,95,56,97,96,98', -',99,107,108,,91,92,,42,43,41,238,242,247,248,249,244,246,254,255,250', -'251,,-597,-597,,,252,253,,40,,,33,,,58,59,,,60,,35,235,,241,44,237,236', -',233,234,245,243,239,20,240,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,', -',,,,62,,81,93,94,290,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72', -'73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45,292,10,105,104,106,95', -'56,97,96,98,,99,107,108,,91,92,,42,43,41,238,242,247,248,249,244,246', -'254,255,250,251,,-597,-597,,,252,253,,40,,,33,,,58,59,,,60,,35,235,', -'241,44,237,236,,233,234,245,243,239,20,240,,,,89,79,82,83,,84,86,85', -'87,,,,,80,88,,,,,,,62,,81,93,94,290,69,70,71,9,57,,,,63,64,,,,67,,65', -'66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,548,19,545,544,543', -',546,8,45,292,10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43', -'41,238,-597,-597,-597,-597,244,246,,701,-597,-597,,,,,,252,253,,40,', -',33,,,58,59,,,60,,35,235,,241,44,237,236,,233,234,245,243,239,20,240', -',,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93,94,290,69,70,71', -'9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102', -'103,,548,19,545,544,543,,546,8,45,292,10,105,104,106,95,56,97,96,98', -',99,107,108,,91,92,,42,43,41,238,,,548,,545,544,543,701,546,,,,,,,252', -'253,,40,,,33,,,58,59,,,60,,35,235,,241,44,237,236,,233,234,701,,239', -'20,240,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93,94,290', -'69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101', -'100,102,103,,548,19,545,544,543,,546,8,45,292,10,105,104,106,95,56,97', -'96,98,,99,107,108,,91,92,,42,43,41,238,,,,,,,,701,,,,,,,,252,253,,40', -',,33,,,58,59,,,60,,35,235,,241,44,237,236,,233,234,,,239,20,240,,,,89', -'79,82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93,94,290,69,70,71,9,57', -',,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,', -',19,,,,,,8,45,292,10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,', -'42,43,41,238,,,,,,,,,,,,,,,,252,253,,40,,,33,,,58,59,,,60,,35,235,,241', -'44,237,236,,233,234,,,239,20,240,,,,89,79,82,83,,84,86,85,87,,,,,80', -'88,,,,,,,62,,81,93,94,290,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30', -'31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45,292,10,105,104', -'106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,238,,,,,,,,,,,,,,,,252', -'253,,40,,,33,,,58,59,,,60,,35,235,,241,44,237,236,,233,234,,,239,20', -'240,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93,94,290,69', -'70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100', -'102,103,,,19,,,,,,8,45,292,10,105,104,106,95,56,97,96,98,,99,107,108', -',91,92,,42,43,41,238,-597,-597,-597,-597,244,246,,,-597,-597,,,,,,252', -'253,,40,,,33,,,58,59,,,60,,35,235,,241,44,237,236,,233,234,245,243,239', -'20,240,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93,94,290', -'69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101', -'100,102,103,,,19,,,,,,8,45,292,10,105,104,106,95,56,97,96,98,,99,107', -'108,,91,92,,42,43,41,238,-597,-597,-597,-597,244,246,,,-597,-597,,,', -',,252,253,,40,,,33,,,58,59,,,60,,35,235,,241,44,237,236,,233,234,245', -'243,239,20,240,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93', -'94,290,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28', -'27,101,100,102,103,,,19,,,,,,8,45,292,10,105,104,106,95,56,97,96,98', -',99,107,108,,91,92,,42,43,41,238,-597,-597,-597,-597,244,246,,,-597', -'-597,,,,,,252,253,,40,,,33,,,58,59,,,60,,35,235,,241,44,237,236,,233', -'234,245,243,239,20,240,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,,,,62', -',81,93,94,290,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,', -',,29,28,27,101,100,102,103,,,19,,,,,,8,45,292,10,105,104,106,95,56,97', -'96,98,,99,107,108,,91,92,,42,43,41,238,-597,-597,-597,-597,244,246,', -',-597,-597,,,,,,252,253,,40,,,33,,,58,59,,,60,,35,235,,241,44,237,236', -',233,234,245,243,239,20,240,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,', -',,,,62,,81,93,94,290,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72', -'73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45,292,10,105,104,106,95', -'56,97,96,98,,99,107,108,,91,92,,42,43,41,238,-597,-597,-597,-597,244', -'246,,,-597,-597,,,,,,252,253,,40,,,33,,,58,59,,,60,,35,235,,241,44,237', -'236,,233,234,245,243,239,20,240,,,,89,79,82,83,,84,86,85,87,,,,,80,88', -',,,,,,62,,81,93,94,290,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31', -'72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45,292,10,105,104,106', -'95,56,97,96,98,,99,107,108,,91,92,,42,43,41,238,242,247,248,249,244', -'246,,,250,251,,,,,,252,253,,40,,,33,,,58,59,,,60,,35,235,,241,44,237', -'236,,233,234,245,243,239,20,240,,,,89,79,82,83,,84,86,85,87,,,,,80,88', -',,,,,,62,,81,93,94,290,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31', -'72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45,292,10,105,104,106', -'95,56,97,96,98,,99,107,108,,91,92,,42,43,41,238,242,247,248,249,244', -'246,254,,250,251,,,,,,252,253,,40,,,33,,,58,59,,,60,,35,235,,241,44', -'237,236,,233,234,245,243,239,20,240,,,,89,79,82,83,,84,86,85,87,,,,', -'80,88,,,,,,,62,,81,93,94,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31', -'72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45,7,10,105,104,106', -'95,56,97,96,98,,99,107,108,,91,92,,42,43,41,238,,,,,,,,,,,,,,,,252,253', -',40,,,33,,,58,59,,,60,,35,235,,241,44,237,236,,233,234,,,,20,,,,,89', -'79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,', -'67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,230,,,,,,,45', -',,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,238,,,,,,', -',,,,,,,,,252,253,,223,,,229,,,58,59,,,60,,,235,,241,44,237,236,,233', -'234,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57', -'81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102', -'103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,284,99,107,108,,91,92', -',42,43,41,238,,,,,,,,,,,,,,,,252,253,,223,,,229,,,58,59,,,60,,281,235', -'279,,44,237,236,285,233,234,,,,228,,,,,89,282,82,83,,84,86,85,87,,,', -',80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73', -',,,,,29,28,27,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97', -'96,98,284,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,', -',58,59,,,60,,281,,279,,44,,,285,,,,,,228,,,,,89,282,82,83,,84,86,85', -'87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31', -'72,73,,,,,,29,28,27,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95', -'56,97,96,98,284,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,', -',229,,,58,59,,,60,,281,,279,,44,,,285,,,,,,228,,,,,89,282,82,83,,84', -'86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68', -'309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,,,,,,307,,,105', -'104,106,95,56,97,96,98,,99,107,108,,91,92,,,,313,,,,,,,,,,,,,,,,,,,', -'303,,,299,,,58,59,,,60,,298,,,,,,,,,,,,,,,,,,89,79,82,83,,84,86,85,87', -',,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72', -'73,,,,,,305,306,312,101,100,102,103,,,230,,,,,,,307,,,105,104,106,95', -'56,97,96,98,,99,107,108,,91,92,,,,313,,,,,,,,,,,,,,,,,,,,303,,,229,', -',58,59,,,60,,548,,545,544,543,553,546,,,,,,,,,,556,,89,79,82,83,,84', -'86,85,87,,,,,80,88,,,,315,,551,62,,81,93,94,69,70,71,,57,564,563,,63', -'64,557,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103', -',,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43', -'41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,', -',89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64', -',,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230', -',,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,', -',,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89', -'79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,', -'67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,', -',,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,', -',,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79', -'82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67', -',65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,,,,', -',45,,,105,104,106,95,56,97,96,98,284,99,107,108,,91,92,,42,43,41,,,', -',,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,281,,,,44,,,285,,,,,,228,,,', -',89,282,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64', -',,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230', -',,,,,,45,,,105,104,106,95,56,97,96,98,284,99,107,108,,91,92,,42,43,41', -',,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,285,,,,,,228,,,', -',89,282,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64', -',,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,', -',45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,', -',,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82', -'83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65', -'66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105', -'104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,', -',,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86', -'85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30', -'31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105,104,106,95', -'56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229', -',,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80', -'88,113,,,,,112,62,,81,93,94,69,70,71,,57,,,,63,64,,,,67,,65,66,68,309', -'310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,,,,,,307,,,105,104', -'106,95,56,97,96,98,,99,107,108,,91,92,,,,313,,,,,,,,,,,,,,,,,,,,348', -',,33,,,58,59,,,60,,35,,,,,,,,,,,,,,,,,,89,79,82,83,,84,86,85,87,,,,', -'80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73', -',,,,,305,306,312,101,100,102,103,,,230,,,,,,,307,,,105,104,106,353,56', -'97,96,354,,99,107,108,,91,92,,,,313,,,,,,,,,,,,,,,,,360,,,355,,,229', -',,58,59,,,60,,,,,,,,,,,,,,,,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,', -',,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305', -'306,312,101,100,102,103,,,230,,,,,,,307,,,105,104,106,353,56,97,96,354', -',99,107,108,,91,92,,,,313,,,,,,,,,,,,,,,,,,,,355,,,229,,,58,59,,,60', -',548,,545,544,543,553,546,,,,,,,,,,556,,89,79,82,83,,84,86,85,87,,,', -',80,88,,,,,,551,62,,81,93,94,69,70,71,9,57,564,563,,63,64,557,,,67,', -'65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,8,45,7', -'10,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,', -',,,,,,,,,,40,,,33,,,58,59,,,60,,35,,,,44,,,,,,,,,20,,,,,89,79,82,83', -',84,86,85,87,,,,,80,88,,,,,,388,62,,81,93,94,69,70,71,,57,,,,63,64,', -',,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,', -'45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,', -',,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83', -',84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66', -'68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105,104', -'106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223', -',,229,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,', -',,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73', -',,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105,104,106,95,56,97,96', -'98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59', -',,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69', -'70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27', -'101,100,102,103,,,19,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108', -',91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,', -',,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93,94', -'69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101', -'100,102,103,,,19,,,,,,8,45,,10,105,104,106,95,56,97,96,98,,99,107,108', -',91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,40,,,33,,,58,59,,,60,,35,,,,44,', -',,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81', -'93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103', -',,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43', -'41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,404,,,,44,,,,,,,,,228', -',,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63', -'64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,230,', -',,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,', -',,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79', -'82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67', -',65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,230,,,,,,,45,', -',105,104,106,95,56,97,96,98,284,99,107,108,,91,92,,42,43,41,,,,,,,,', -',,,,,,,,,,,223,,,229,,,58,59,,,60,,281,,279,,44,,,285,,,,,,228,,,,,89', -'282,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,', -',67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,230,,,,,,', -'45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,', -',,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82', -'83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65', -'66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,230,,,,,,,45,,,105', -'104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,', -',,,223,,,229,,,58,59,,,60,,404,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84', -'86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68', -'30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105,104,106', -'95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,', -',229,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,', -',,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73', -',,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105,104,106,95,56,97,96', -'98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59', -',,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69', -'70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27', -'101,100,102,103,,,19,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108', -',91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,', -',,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81', -'93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103', -',,19,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43', -'41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,', -'89,79,82,83,,84,86,85,87,,,,,80,88,218,,,69,70,71,62,57,81,93,94,63', -'64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,', -'230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43', -'41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,', -',89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64', -',,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230', -',,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,', -',,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89', -'79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,', -'67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,', -',,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,', -',,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79', -'82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67', -',65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,,,,', -',45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,', -',,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82', -'83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65', -'66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,,,,,,45', -',,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,', -',,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83', -',84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66', -'68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,,,,,,45,,,105', -'104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,', -',,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86', -'85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309', -'310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,,,,,,45,,,105,104', -'106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223', -',,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87', -',,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72', -'73,,,,,,305,306,312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95', -'56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229', -',,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80', -'88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,', -',,,305,306,312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97', -'96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58', -'59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,', -',,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305', -'306,312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98', -',99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,', -'60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69', -'70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306', -'312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99', -'107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,', -',,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71', -'62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312', -'101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107', -'108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,', -'44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62', -'57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101', -'100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108', -',91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,', -',,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57', -'81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100', -'102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91', -'92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,', -',,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93', -'94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102', -'103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,', -'42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228', -',,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63', -'64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,', -'230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43', -'41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,', -',89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64', -',,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230', -',,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,', -',,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89', -'79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,', -'67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,', -',,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,', -',,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79', -'82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67', -',65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,,,,', -',45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,', -',,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82', -'83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65', -'66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,,,,,,45', -',,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,', -',,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83', -',84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66', -'68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,,,,,,45,,,105', -'104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,', -',,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86', -'85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309', -'310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,,,,,,45,,,105,104', -'106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223', -',,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87', -',,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72', -'73,,,,,,305,306,312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95', -'56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229', -',,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80', -'88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,', -',,,305,306,312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97', -'96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58', -'59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,', -',,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305', -'306,312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98', -',99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,', -'60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69', -'70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306', -'312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99', -'107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,', -',,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71', -'62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100', -'102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,284,99,107,108,', -'91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,281,,279', -',44,,,285,,,,,,228,,,,,89,282,82,83,,84,86,85,87,,,,,80,88,,,,69,70', -'71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101', -'100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,284,99,107,108', -',91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,281,,279', -',44,,,285,,,,,,228,,,,,89,282,82,83,,84,86,85,87,,,,,80,88,,,,69,70', -'71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101', -'100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,284,99,107,108', -',91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,281,,279', -',44,,,285,,,,,,228,,,,,89,282,82,83,,84,86,85,87,,,,,80,88,218,,,69', -'70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306', -'312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99', -'107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,', -',,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71', -'62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312', -'101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107', -'108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,', -'44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62', -'57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101', -'100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108', -',91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,', -',,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57', -'81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100', -'102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91', -'92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,', -',,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93,94,69', -'70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100', -'102,103,,,19,,,,,,8,45,,10,105,104,106,95,56,97,96,98,,99,107,108,,91', -'92,,42,43,41,,,,,,,,,,,,,,,,,,,,40,,,33,,,58,59,,,60,,35,,,,44,,,,,', -',,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93', -'94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102', -'103,,,230,,,,,,,307,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92', -',,,313,,,,,,,,,,,,,,,,,,,,303,,,229,,,58,59,,,60,,548,,545,544,543,553', -'546,,,,,,,,,,556,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,504,,551,62', -',81,93,94,69,70,71,,57,564,563,,63,64,557,,,67,,65,66,68,309,310,72', -'73,,,,,,305,306,312,101,100,102,103,,,230,,,,,,,307,,,105,104,106,95', -'56,97,96,98,,99,107,108,,91,92,,,,313,,,,,,,,,,,,,,,,,,,,303,,,299,', -',58,59,,,60,,,,,,,,,,,,,,,,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,', -',69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305', -'306,312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98', -',99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,520,,58,59', -',,60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69', -'70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27', -'101,100,102,103,,,19,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108', -',91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,', -',,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81', -'93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103', -',,19,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43', -'41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,', -'89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64', -',,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,', -',45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,', -',,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82', -'83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65', -'66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105', -'104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,', -',,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86', -'85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30', -'31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105,104,106,95', -'56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229', -',,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80', -'88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,', -',,,305,306,312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97', -'96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58', -'59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,', -',,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29', -'28,27,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,284', -'99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60', -',281,,279,,44,,,285,,,,,,228,,,,,89,282,82,83,,84,86,85,87,,,,,80,88', -',,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,', -'305,306,312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96', -'98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59', -',,60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69', -'70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306', -'312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99', -'107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,', -',,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71', -'62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312', -'101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107', -'108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,', -'44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62', -'57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101', -'100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108', -',91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,', -',,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57', -'81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100', -'102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,284,99,107,108,', -'91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,659,,279', -',44,,,285,,,,,,228,,,,,89,282,82,83,,84,86,85,87,,,,,80,88,,,,69,70', -'71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312', -'101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,284,99,107', -'108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,279', -',44,,,285,,,,,,228,,,,,89,282,82,83,,84,86,85,87,,,,,80,88,,,,69,70', -'71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312', -'101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107', -'108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,', -'44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,,,,62,,81,93', -'94,69,70,71,9,57,,,,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27', -'101,100,102,103,,,19,,,,,,8,45,292,10,105,104,106,95,56,97,96,98,,99', -'107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,40,,,33,,,58,59,,,60,,35', -',,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,,,388,62', -',81,93,94,69,70,71,,57,,,,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305', -'306,312,101,100,102,103,,,230,,,,,,,307,,,105,104,106,95,56,97,96,98', -',99,107,108,,91,92,,,,313,,,,,,,,,,,,,,,,,,,,303,,,299,,,58,59,,,60', -',,,,,,,,,,,,,,,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62', -'57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100', -'102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,284,99,107,108,', -'91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,281,,279', -',44,,,285,,,,,,228,,,,,89,282,82,83,,84,86,85,87,,,,,80,88,,,,69,70', -'71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312', -'101,100,102,103,,,230,,,,,,,307,,,105,104,106,95,56,97,96,98,,99,107', -'108,,91,92,,,,313,,,,,,,,,,,,,,,,,,,,303,,,299,,,58,59,,,60,,,,,,,,', -',,,,,,,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93', -'94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102', -'103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,', -'42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228', -',,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63', -'64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,', -'230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43', -'41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,', -',89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64', -',,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,', -',45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,', -',,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82', -'83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65', -'66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,,,,,,45', -',,105,104,106,95,56,97,96,98,284,99,107,108,,91,92,,42,43,41,,,,,,,', -',,,,,,,,,,,,223,,,229,,,58,59,,,60,,659,,,,44,,,285,,,,,,228,,,,,89', -'282,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,', -',67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230,', -',,,,,45,,,105,104,106,95,56,97,96,98,284,99,107,108,,91,92,,42,43,41', -',,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,285,,,,,,228,,,', -',89,282,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64', -',,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230', -',,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,', -',,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89', -'79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,', -'67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,', -',,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,', -',,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,281,,,,44,,,,,,,,,228,,,,,89', -'79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,', -'67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,230,,,,,,,45', -',,105,104,106,95,56,97,96,98,284,99,107,108,,91,92,,42,43,41,,,,,,,', -',,,,,,,,,,,,223,,,229,,,58,59,,,60,,281,,279,,44,,,285,,,,,,228,,,,', -'89,282,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64', -',,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,230,,,,', -',,45,,,105,104,106,95,56,97,96,98,284,99,107,108,,91,92,,42,43,41,,', -',,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,281,,279,,44,,,285,,,,,,228', -',,,,89,282,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63', -'64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,', -'230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43', -'41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,754,,,,44,,,,,,,,,228', -',,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63', -'64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,', -'230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43', -'41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,', -',89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64', -',,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230', -',,,,,,45,,,105,104,106,95,56,97,96,98,284,99,107,108,,91,92,,42,43,41', -',,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,659,,279,,44,,,285,,,,,,228', -',,,,89,282,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63', -'64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,', -'230,,,,,,,45,,,105,104,106,95,56,97,96,98,284,99,107,108,,91,92,,42', -'43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,279,,44,,,285,,,', -',,228,,,,,89,282,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93', -'94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,', -',230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43', -'41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,', -',89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64', -',,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,230,,,,', -',,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,', -',,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82', -'83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65', -'66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,230,,,,,,,45,,,105', -'104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,', -',,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86', -'85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30', -'31,72,73,,,,,,29,28,27,101,100,102,103,,,230,,,,,,,45,,,105,104,106', -'95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,', -',229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,', -',,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73', -',,,,,29,28,27,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97', -'96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58', -'59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,', -',,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305', -'306,312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98', -',99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,', -'60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69', -'70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306', -'312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99', -'107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,', -',,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71', -'62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312', -'101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107', -'108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,', -'44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62', -'57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101', -'100,102,103,,,230,,,,,,,307,,,105,104,106,95,56,97,96,98,,99,107,108', -',91,92,,,,313,,,,,,,,,,,,,,,,,,,,303,,,299,,,58,59,,,60,,,,,,,,,,,,', -',,,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94', -'63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103', -',,230,,,,,,,307,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,,,313', -',,,,,,,,,,,,,,,,,,,303,,,299,,,58,59,,,60,,,,,,,,,,,,,,,,,,,,89,79,82', -'83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65', -'66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,,,,,,45', -',,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,', -',,,,,,,,,223,,,229,,,58,59,,,60,,404,,,,44,,,,,,,,,228,,,,,89,79,82', -'83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65', -'66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,,,,,,45', -',,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,', -',,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83', -',84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66', -'68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105,104', -'106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223', -',,229,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,', -',,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73', -',,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105,104,106,95,56,97,96', -'98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59', -',,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69', -'70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306', -'312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99', -'107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,', -',,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71', -'62,57,81,93,94,63,64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100', -'102,103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91', -'92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,', -',,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93', -'94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102', -'103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,', -'42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228', -',,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63', -'64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,', -'230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43', -'41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,', -',89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64', -',,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230', -',,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,', -',,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89', -'79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,', -'67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,', -',,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,', -',,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79', -'82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67', -',65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102,103,,,230,,,,,', -',307,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,,,,313,,,,,,,,', -',,,,,,,,,,,876,,,229,,,58,59,,,60,,,,,,,,,,,,,,,,,,,,89,79,82,83,,84', -'86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68', -'30,31,72,73,,,,,,29,28,27,101,100,102,103,,,19,,,,,,,45,,,105,104,106', -'95,56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,', -',229,,,58,59,,,60,,,,,,44,,,,,,,,,20,,,,,89,79,82,83,,84,86,85,87,,', -',,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72', -'73,,,,,,305,306,312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95', -'56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229', -',,58,59,,,60,,659,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,', -',80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73', -',,,,,305,306,312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95,56', -'97,96,98,284,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229', -',,58,59,,,60,,,,279,,44,,,285,,,,,,228,,,,,89,282,82,83,,84,86,85,87', -',,,,80,88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72', -'73,,,,,,305,306,312,101,100,102,103,,,230,,,,,,,45,,,105,104,106,95', -'56,97,96,98,,99,107,108,,91,92,,42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229', -',,58,59,,,60,,,,,,44,,,,,,,,,228,,,,,89,79,82,83,,84,86,85,87,,,,,80', -'88,,,,69,70,71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,', -',,,305,306,312,101,100,102,103,,,230,,,,,,,307,,,105,104,106,95,56,97', -'96,98,,99,107,108,,91,92,,,,313,,,,,,,,,,,,,,,,,,,,876,,,229,,,58,59', -',,60,,,,,,,,,,,,,,,,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70', -'71,62,57,81,93,94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312', -'101,100,102,103,,,230,,,,,,,307,,,105,104,106,95,56,97,96,98,,99,107', -'108,,91,92,,,,313,,,,,,,,,,,,,,,,,,,,947,,,229,,,58,59,,,60,,,,,,,,', -',,,,,,,,,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93', -'94,63,64,,,,67,,65,66,68,309,310,72,73,,,,,,305,306,312,101,100,102', -'103,,,230,,,,,,,45,,,105,104,106,95,56,97,96,98,,99,107,108,,91,92,', -'42,43,41,,,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,,,,,44,,,,,,,,,228', -',,,,89,79,82,83,,84,86,85,87,,,,,80,88,,,,69,70,71,62,57,81,93,94,63', -'64,,,,67,,65,66,68,30,31,72,73,,,,,,29,28,27,101,100,102,103,,,230,', -',,,,,45,,,105,104,106,95,56,97,96,98,284,99,107,108,,91,92,,42,43,41', -',,,,,,,,,,,,,,,,,,,223,,,229,,,58,59,,,60,,281,,279,,44,,,285,,,,,,228', -',,,,89,282,82,83,,84,86,85,87,,,,,80,88,,,,,-282,,62,,81,93,94,-282', -'-282,-282,,,-282,-282,-282,,-282,,,,,,,,,,-282,-282,-282,,,,,,,,-282', -'-282,,-282,-282,-282,-282,-282,,,,,,,,,,,,,,,,,,,,,,,,-282,-282,-282', -'-282,-282,-282,-282,-282,-282,-282,-282,-282,-282,-282,,,-282,-282,-282', -',,-282,,,-282,,,-282,-282,,-282,,-282,,-282,,-282,-282,,-282,-282,-282', -'-282,-282,,-282,,-282,,,,,,,,,,,,,,-282,,,-282,-282,-282,-282,-579,-282', -',-282,,,,-579,-579,-579,,,-579,-579,-579,,-579,,,,,,,,,-579,-579,-579', -'-579,,,,,,,,-579,-579,,-579,-579,-579,-579,-579,,,,,,,,,,,,,,,,,,,,', -',,,-579,-579,-579,-579,-579,-579,-579,-579,-579,-579,-579,-579,-579', -'-579,,,-579,-579,-579,,,-579,,,-579,,,-579,-579,,-579,,-579,,-579,,-579', -'-579,,-579,-579,-579,-579,-579,,-579,-579,-579,,,,,,,,,,,,,,-579,,,-579', -'-579,-579,-579,-580,-579,,-579,,,,-580,-580,-580,,,-580,-580,-580,,-580', -',,,,,,,,-580,-580,-580,-580,,,,,,,,-580,-580,,-580,-580,-580,-580,-580', -',,,,,,,,,,,,,,,,,,,,,,,-580,-580,-580,-580,-580,-580,-580,-580,-580', -'-580,-580,-580,-580,-580,,,-580,-580,-580,,,-580,,,-580,,,-580,-580', -',-580,,-580,,-580,,-580,-580,,-580,-580,-580,-580,-580,,-580,-580,-580', -',,,,,,,,,,,,,-580,,,-580,-580,-580,-580,-411,-580,,-580,,,,-411,-411', -'-411,,,-411,-411,-411,,-411,,,,,,,,,-411,-411,-411,,,,,,,,,-411,-411', -',-411,-411,-411,-411,-411,,,,,,,,,,,,,,,,,,,,,,,,-411,-411,-411,-411', -'-411,-411,-411,-411,-411,-411,-411,-411,-411,-411,,,-411,-411,-411,', -',-411,,263,-411,,,-411,-411,,-411,,-411,,-411,,-411,-411,,-411,-411', -'-411,-411,-411,-298,-411,-411,-411,,,,-298,-298,-298,,,-298,-298,-298', -',-298,-411,,,-411,-411,,-411,,-411,-298,-298,,,,,,,,,-298,-298,,-298', -'-298,-298,-298,-298,,,,,,,,,,,,,,,,,,,,,,,,-298,-298,-298,-298,-298', -'-298,-298,-298,-298,-298,-298,-298,-298,-298,,,-298,-298,-298,,,-298', -',272,-298,,,-298,-298,,-298,,-298,,-298,,-298,-298,,-298,-298,-298,-298', -'-298,,-298,-246,-298,,,,,,-246,-246,-246,,,-246,-246,-246,-298,-246', -',-298,-298,,-298,,-298,,-246,-246,-246,,,,,,,,,-246,-246,,-246,-246', -'-246,-246,-246,,,,,,,,,,,,,,,,,,,,,,,,-246,-246,-246,-246,-246,-246', -'-246,-246,-246,-246,-246,-246,-246,-246,,,-246,-246,-246,,,-246,,263', -'-246,,,-246,-246,,-246,,-246,,-246,,-246,-246,,-246,-246,-246,-246,-246', -',-246,-246,-246,,,,,,,,,,,,,,-246,,-246,-246,-246,,-246,,-246,-246,-246', -'-246,,,-246,-246,-246,548,-246,545,544,543,553,546,,,,-246,-246,,,,', -'556,,,,,-246,-246,,-246,-246,-246,-246,-246,,,,,,,,,,551,548,,545,544', -'543,553,546,,561,560,564,563,,,,557,556,548,,545,544,543,553,546,-246', -',,,,,,-246,,556,,,263,-246,551,534,,218,,,,,,561,560,564,563,,,,557', -'551,,,,-246,-246,,,,561,560,564,563,,,,557,,,-246,,,-246,,,,,-246,173', -'184,174,197,170,190,180,179,200,201,195,178,177,172,198,202,203,182', -'171,185,189,191,183,176,,,,192,199,194,193,186,196,181,169,188,187,', -',,,,168,175,166,167,163,164,165,124,126,123,,125,,,,,,,,,157,158,,154', -'136,137,138,145,142,144,,,139,140,,,,159,160,146,147,,,,,,,,,,,,,,151', -'150,,135,156,153,152,161,148,149,143,141,133,155,134,,,162,89,,,,,,', -',,,,,,,88,173,184,174,197,170,190,180,179,200,201,195,178,177,172,198', -'202,203,182,171,185,189,191,183,176,,,,192,199,194,193,186,196,181,169', -'188,187,,,,,,168,175,166,167,163,164,165,124,126,,,125,,,,,,,,,157,158', -',154,136,137,138,145,142,144,,,139,140,,,,159,160,146,147,,,,,,,,,,', -',,,151,150,,135,156,153,152,161,148,149,143,141,133,155,134,,,162,89', -',,,,,,,,,,,,,88,173,184,174,197,170,190,180,179,200,201,195,178,177', -'172,198,202,203,182,171,185,189,191,183,176,,,,192,199,194,193,186,196', -'181,169,188,187,,,,,,168,175,166,167,163,164,165,124,126,,,125,,,,,', -',,,157,158,,154,136,137,138,145,142,144,,,139,140,,,,159,160,146,147', -',,,,,,,,,,,,,151,150,,135,156,153,152,161,148,149,143,141,133,155,134', -',,162,89,,,,,,,,,,,,,,88,173,184,174,197,170,190,180,179,200,201,195', -'178,177,172,198,202,203,182,171,185,189,191,183,176,,,,192,199,194,193', -'186,196,181,169,188,187,,,,,,168,175,166,167,163,164,165,124,126,,,125', -',,,,,,,,157,158,,154,136,137,138,145,142,144,,,139,140,,,,159,160,146', -'147,,,,,,,,,,,,,,151,150,,135,156,153,152,161,148,149,143,141,133,155', -'134,,,162,89,,,,,,,,,,,,,,88,173,184,174,197,170,190,180,179,200,201', -'195,178,177,172,198,202,203,182,171,185,189,191,183,176,,,,192,199,194', -'371,370,372,369,169,188,187,,,,,,168,175,166,167,366,367,368,364,126', -'97,96,365,,99,,,,,,,157,158,,154,136,137,138,145,142,144,,,139,140,', -',,159,160,146,147,,,,,,376,,,,,,,,151,150,,135,156,153,152,161,148,149', -'143,141,133,155,134,,,162,173,184,174,197,170,190,180,179,200,201,195', -'178,177,172,198,202,203,182,171,185,189,191,183,176,,,,192,199,194,193', -'186,196,181,169,188,187,,,,,,168,175,166,167,163,164,165,124,126,,,125', -',,,,,,,,157,158,,154,136,137,138,145,142,144,,,139,140,,,,159,160,146', -'147,,,,,,,,,,,,,,151,150,,135,156,153,152,161,148,149,143,141,133,155', -'134,413,417,162,,414,,,,,,,,,157,158,,154,136,137,138,145,142,144,,', -'139,140,,,,159,160,146,147,,,,,,263,,,,,,,,151,150,,135,156,153,152', -'161,148,149,143,141,133,155,134,420,424,162,,419,,,,,,,,,157,158,,154', -'136,137,138,145,142,144,,,139,140,,,,159,160,146,147,,,,,,263,,,,,,', -',151,150,,135,156,153,152,161,148,149,143,141,133,155,134,475,417,162', -',476,,,,,,,,,157,158,,154,136,137,138,145,142,144,,,139,140,,,,159,160', -'146,147,,,,,,,,,,,,,,151,150,,135,156,153,152,161,148,149,143,141,133', -'155,134,638,417,162,,639,,,,,,,,,157,158,,154,136,137,138,145,142,144', -',,139,140,,,,159,160,146,147,,,,,,263,,,,,,,,151,150,,135,156,153,152', -'161,148,149,143,141,133,155,134,640,424,162,,641,,,,,,,,,157,158,,154', -'136,137,138,145,142,144,,,139,140,,,,159,160,146,147,,,,,,263,,,,,,', -',151,150,,135,156,153,152,161,148,149,143,141,133,155,134,670,417,162', -',671,,,,,,,,,157,158,,154,136,137,138,145,142,144,,,139,140,,,,159,160', -'146,147,,,,,,263,,,,,,,,151,150,,135,156,153,152,161,148,149,143,141', -'133,155,134,673,424,162,,674,,,,,,,,,157,158,,154,136,137,138,145,142', -'144,,,139,140,,,,159,160,146,147,,,,,,263,,,,,,,,151,150,,135,156,153', -'152,161,148,149,143,141,133,155,134,638,417,162,,639,,,,,,,,,157,158', -',154,136,137,138,145,142,144,,,139,140,,,,159,160,146,147,,,,,,263,', -',,,,,,151,150,,135,156,153,152,161,148,149,143,141,133,155,134,640,424', -'162,,641,,,,,,,,,157,158,,154,136,137,138,145,142,144,,,139,140,,,,159', -'160,146,147,,,,,,263,,,,,,,,151,150,,135,156,153,152,161,148,149,143', -'141,133,155,134,721,417,162,,722,,,,,,,,,157,158,,154,136,137,138,145', -'142,144,,,139,140,,,,159,160,146,147,,,,,,263,,,,,,,,151,150,,135,156', -'153,152,161,148,149,143,141,133,155,134,723,424,162,,724,,,,,,,,,157', -'158,,154,136,137,138,145,142,144,,,139,140,,,,159,160,146,147,,,,,,263', -',,,,,,,151,150,,135,156,153,152,161,148,149,143,141,133,155,134,726', -'424,162,,727,,,,,,,,,157,158,,154,136,137,138,145,142,144,,,139,140', -',,,159,160,146,147,,,,,,263,,,,,,,,151,150,,135,156,153,152,161,148', -'149,143,141,133,155,134,475,417,162,,476,,,,,,,,,157,158,,154,136,137', -'138,145,142,144,,,139,140,,,,159,160,146,147,,,,,,263,,,,,,,,151,150', -',135,156,153,152,161,148,149,143,141,133,155,134,983,424,162,,982,,', -',,,,,,157,158,,154,136,137,138,145,142,144,,,139,140,,,,159,160,146', -'147,,,,,,263,,,,,,,,151,150,,135,156,153,152,161,148,149,143,141,133', -'155,134,1006,417,162,,1007,,,,,,,,,157,158,,154,136,137,138,145,142', -'144,,,139,140,,,,159,160,146,147,,,,,,263,,,,,,,,151,150,,135,156,153', -'152,161,148,149,143,141,133,155,134,1008,424,162,,1009,,,,,,,,,157,158', -',154,136,137,138,145,142,144,,,139,140,,,,159,160,146,147,,,,,,263,', -',,,,,,151,150,,135,156,153,152,161,148,149,143,141,133,155,134,,548', -'162,545,544,543,553,546,,548,,545,544,543,553,546,,556,,,,,,,548,556', -'545,544,543,553,546,,,,,,,,,551,556,,,,,,,551,561,560,564,563,,,,557', -'561,560,564,563,,,551,557,548,,545,544,543,553,546,561,560,564,563,', -',,557,548,556,545,544,543,553,546,,548,,545,544,543,553,546,,556,,,', -',,,551,556,548,,545,544,543,553,546,561,560,564,563,,,551,557,,556,', -',,,551,561,560,564,563,,,,557,561,560,564,563,,,,557,551,548,,545,544', -'543,553,546,,561,560,564,563,,,,557,556,548,,545,544,543,553,546,,548', -',545,544,543,553,546,,556,,,,,551,,548,556,545,544,543,553,546,,,564', -'563,,,,557,551,556,,,,,,,551,,,564,563,,,,557,561,560,564,563,,,551', -'557,548,,545,544,543,553,546,,,564,563,,,,557,548,556,545,544,543,553', -'546,,548,,545,544,543,553,546,548,556,545,544,543,553,546,,551,556,', -',,,,,556,,,564,563,,,551,557,,,,,,,551,,,564,563,,,551,557,,,564,563', -',,,557,,564,563,,,,557' ] - racc_action_table = arr = ::Array.new(25292, 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 = [ -'95,345,61,437,437,346,349,95,95,95,221,338,95,95,95,383,95,355,19,384', -'58,355,594,594,95,222,95,95,95,473,650,26,17,17,578,359,95,95,339,95', -'95,95,95,95,719,885,15,1,908,687,721,7,1006,665,1007,1020,680,680,308', -'19,58,913,665,913,473,722,221,95,95,95,95,95,95,95,95,95,95,95,95,95', -'95,222,383,95,95,95,384,95,95,570,61,95,10,15,95,95,26,95,437,95,12', -'95,15,95,95,844,95,95,95,95,95,345,95,98,95,346,349,594,650,26,98,98', -'98,308,1008,98,98,98,95,98,338,95,95,95,95,338,95,98,95,98,98,98,359', -'95,578,571,308,723,845,98,98,680,98,98,98,98,98,339,13,687,721,670,339', -'719,885,359,719,908,719,885,359,1006,908,1007,1020,722,1006,16,1007', -'1020,98,98,98,98,98,98,98,98,98,98,98,98,98,98,570,22,98,98,98,570,98', -'98,1008,671,98,37,724,98,98,40,98,605,98,723,98,844,98,98,224,98,98', -'98,98,98,419,98,45,98,670,590,590,419,419,419,481,24,328,419,419,328', -'419,98,24,1008,98,98,98,98,1008,98,571,98,353,845,3,571,98,723,845,3', -'419,419,109,419,419,419,419,419,670,481,671,670,724,123,224,204,605', -'605,123,123,670,704,607,704,704,704,605,704,223,41,41,419,419,419,419', -'419,419,419,419,419,419,419,419,419,419,353,354,419,419,419,671,419', -'353,671,38,419,724,353,419,313,313,353,671,419,590,419,443,419,419,590', -'419,419,419,419,419,378,419,420,419,225,353,39,364,226,420,420,420,607', -'607,364,420,420,419,420,482,419,419,607,419,354,419,38,420,230,704,673', -'354,419,41,41,38,354,262,420,420,354,420,420,420,420,420,904,443,904', -'904,904,317,904,39,482,329,651,492,329,354,379,276,39,313,313,378,378', -'378,801,420,420,420,420,420,420,420,420,420,420,420,420,420,420,673', -'413,420,420,420,380,420,673,651,288,420,414,673,420,288,317,673,381', -'420,638,420,726,420,420,317,420,420,420,420,420,277,420,420,420,382', -'673,280,385,801,492,492,492,379,379,379,801,904,420,413,621,420,420', -'640,420,801,420,492,413,414,640,640,640,420,292,640,640,640,414,640', -'365,380,380,380,801,726,638,365,640,640,640,640,726,381,381,381,639', -'726,293,640,640,726,640,640,640,640,640,621,295,774,382,382,382,385', -'385,385,621,337,337,366,726,551,367,551,551,551,366,551,296,367,640', -'640,640,640,640,640,640,640,640,640,640,640,640,640,689,297,640,640', -'640,368,640,640,639,303,640,689,368,640,640,551,640,306,640,307,640', -'774,640,640,551,640,640,640,640,640,862,640,640,640,332,369,77,332,342', -'370,312,862,369,342,689,689,370,640,77,689,640,640,640,640,449,640,641', -'640,77,371,14,314,640,641,641,641,371,14,641,641,641,46,641,220,862', -'862,14,318,46,862,220,372,641,641,641,321,449,46,372,220,449,449,641', -'641,374,641,641,641,641,641,833,374,833,833,833,300,833,701,326,701', -'701,701,300,701,831,330,831,831,831,686,831,300,686,641,641,641,641', -'641,641,641,641,641,641,641,641,641,641,468,833,641,641,641,301,641', -'641,701,469,641,331,301,641,641,831,641,701,641,333,641,301,641,641', -'831,641,641,641,641,641,589,641,468,641,343,589,468,468,450,468,468', -'469,523,523,344,469,469,641,469,469,641,641,641,641,848,641,853,641', -'348,848,350,853,641,0,0,0,0,0,0,394,450,302,0,0,450,450,400,0,302,0', -'0,0,0,0,0,0,934,302,403,934,405,0,0,0,0,0,0,0,598,598,0,409,598,598', -'598,432,0,0,0,0,0,0,0,0,0,0,0,0,411,0,0,0,412,0,0,421,0,0,0,432,432', -'432,432,432,432,432,432,432,432,432,304,432,432,319,429,432,432,304', -'0,439,319,0,692,692,0,0,304,451,0,319,0,432,452,432,0,432,432,453,432', -'432,432,432,432,0,432,710,710,454,0,0,0,0,347,0,0,0,0,996,996,347,479', -'0,0,483,432,499,432,500,347,0,503,0,0,0,33,33,33,33,33,33,505,510,357', -'33,33,513,521,522,33,357,33,33,33,33,33,33,33,524,357,536,537,539,33', -'33,33,33,33,33,33,540,541,33,550,558,562,565,408,33,33,33,33,33,33,33', -'33,33,33,33,33,567,33,33,33,572,33,33,573,33,33,33,408,408,408,408,408', -'408,408,408,408,408,408,509,408,408,581,592,408,408,509,33,602,581,33', -'610,612,33,33,509,618,33,581,33,408,622,408,33,408,408,627,408,408,408', -'408,408,33,408,632,642,649,33,33,33,33,875,33,33,33,33,656,658,875,664', -'33,33,667,408,669,672,675,875,33,676,33,33,33,121,121,121,121,121,121', -'679,681,938,121,121,684,688,703,121,938,121,121,121,121,121,121,121', -'705,938,712,717,720,121,121,121,121,121,121,121,729,734,121,753,758', -'775,776,643,121,121,121,121,121,121,121,121,121,121,121,121,777,121', -'121,121,779,121,121,780,121,121,121,643,643,643,643,643,643,643,643', -'643,643,643,674,643,643,944,781,643,643,674,121,783,944,121,674,784', -'121,121,674,785,121,944,121,643,786,643,121,643,643,790,643,643,643', -'643,643,121,643,794,795,800,121,121,121,121,945,121,121,121,121,804', -'807,945,808,121,121,811,643,816,817,821,945,121,822,121,121,121,206', -'206,206,206,206,206,824,825,946,206,206,827,830,832,206,946,206,206', -'206,206,206,206,206,835,946,838,847,851,206,206,206,206,206,206,206', -'852,873,206,873,873,873,855,873,206,206,206,206,206,206,206,206,206', -'206,206,206,856,206,206,206,872,206,206,876,206,206,206,21,21,21,21', -'21,21,21,21,21,21,21,727,21,21,948,878,21,21,727,206,889,948,206,727', -'890,206,206,727,906,206,948,206,21,910,21,206,21,21,911,21,21,21,21', -'21,206,21,917,921,924,206,206,206,206,988,206,206,206,206,927,928,988', -'929,206,206,930,21,932,947,952,988,206,953,206,206,206,229,229,229,229', -'229,229,954,955,956,229,229,958,982,983,229,984,229,229,229,229,229', -'229,229,6,6,6,6,6,229,229,229,229,229,229,229,995,981,229,981,981,981', -'997,981,229,229,229,229,229,229,229,229,229,229,229,229,998,229,229', -'229,999,229,229,1000,229,229,229,274,274,274,274,274,274,274,274,274', -'274,274,1009,274,274,1001,1002,274,274,1009,229,1005,1010,229,1009,1011', -'229,229,1009,1022,229,,229,274,,274,229,274,274,,274,274,274,274,274', -'229,274,,,,229,229,229,229,,229,229,229,229,,,,,229,229,,274,,,,,229', -',229,229,229,294,294,294,294,294,294,,,,294,294,,,,294,,294,294,294', -'294,294,294,294,291,291,291,291,291,294,294,294,294,294,294,294,,,294', -'497,497,497,497,497,294,294,294,294,294,294,294,294,294,294,294,294', -',294,294,294,,294,294,,294,294,294,427,427,427,427,427,427,427,427,427', -'427,427,,427,427,,,427,427,,294,,,294,,,294,294,,,294,,294,427,,427', -'294,427,427,,427,427,427,427,427,294,427,,,,294,294,294,294,,294,294', -'294,294,,,,,294,294,,427,,,,,294,,294,294,294,299,299,299,299,299,299', -',,,299,299,,,,299,,299,299,299,299,299,299,299,,,,,,299,299,299,299', -'299,299,299,,,299,,,,,,299,299,299,299,299,299,299,299,299,299,299,299', -',299,299,299,,299,299,,299,299,299,519,519,519,519,519,519,519,519,519', -'519,519,,519,519,,,519,519,,299,,,299,,,299,299,,,299,,299,519,,519', -'299,519,519,,519,519,519,519,519,299,519,,,,299,299,299,299,,299,299', -'299,299,,,,,299,299,,519,,,,,299,,299,299,299,324,324,324,324,324,324', -',,,324,324,,,,324,,324,324,324,324,324,324,324,,,,,,324,324,324,324', -'324,324,324,,,324,,,,,,324,324,324,324,324,324,324,324,324,324,324,324', -',324,324,324,,324,324,,324,324,324,644,644,644,644,644,644,644,644,644', -'644,644,,644,644,,,644,644,,324,,,324,,,324,324,,,324,,324,644,,644', -'324,644,644,,644,644,644,644,644,324,644,,,,324,324,324,324,,324,324', -'324,324,,,,,324,324,644,644,,,,,324,,324,324,324,498,498,498,498,498', -'498,,,,498,498,,,,498,,498,498,498,498,498,498,498,,,,,,498,498,498', -'498,498,498,498,,,498,,,,,,498,498,498,498,498,498,498,498,498,498,498', -'498,,498,498,498,,498,498,,498,498,498,678,678,678,678,678,678,678,678', -'678,678,678,,678,678,,,678,678,,498,,,498,,,498,498,,,498,,498,678,', -'678,498,678,678,,678,678,678,678,678,498,678,,,,498,498,498,498,,498', -'498,498,498,,,,,498,498,,678,,,,,498,,498,498,498,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,566,566,,566,566,,566,566,566,755,755,755,755,755,755,755,755', -'755,755,755,,755,755,,,755,755,,566,,,566,,,566,566,,,566,,566,755,', -'755,566,755,755,,755,755,755,755,755,566,755,,,,566,566,566,566,,566', -'566,566,566,,,,,566,566,,755,,,,,566,,566,566,566,569,569,569,569,569', -'569,,,,569,569,,,,569,,569,569,569,569,569,569,569,,,,,,569,569,569', -'569,569,569,569,,,569,,,,,,569,569,569,569,569,569,569,569,569,569,569', -'569,,569,569,569,,569,569,,569,569,569,760,760,760,760,760,760,760,760', -'760,760,760,,760,760,,,760,760,,569,,,569,,,569,569,,,569,,569,760,', -'760,569,760,760,,760,760,760,760,760,569,760,,,,569,569,569,569,,569', -'569,569,569,,,,,569,569,,760,,,,,569,,569,569,569,591,591,591,591,591', -'591,,,,591,591,,,,591,,591,591,591,591,591,591,591,,,,,,591,591,591', -'591,591,591,591,,,591,,,,,,591,591,591,591,591,591,591,591,591,591,591', -'591,,591,591,591,,591,591,,591,591,591,762,762,762,762,762,762,762,762', -'762,762,762,,762,762,,,762,762,,591,,,591,,,591,591,,,591,,591,762,', -'762,591,762,762,,762,762,762,762,762,591,762,,,,591,591,591,591,,591', -'591,591,591,,,,,591,591,,762,,,,,591,,591,591,591,648,648,648,648,648', -'648,,,,648,648,,,,648,,648,648,648,648,648,648,648,,,,,,648,648,648', -'648,648,648,648,,,648,,,,,,648,648,648,648,648,648,648,648,648,648,648', -'648,,648,648,648,,648,648,,648,648,648,765,765,765,765,765,765,765,765', -'765,765,765,,765,765,,,765,765,,648,,,648,,,648,648,,,648,,648,765,', -'765,648,765,765,,765,765,765,765,765,648,765,,,,648,648,648,648,,648', -'648,648,648,,,,,648,648,,765,,,,,648,,648,648,648,653,653,653,653,653', -'653,,,,653,653,,,,653,,653,653,653,653,653,653,653,,,,,,653,653,653', -'653,653,653,653,,,653,,,,,,653,653,653,653,653,653,653,653,653,653,653', -'653,,653,653,653,,653,653,,653,653,653,767,767,767,767,767,767,767,767', -'767,767,767,,767,767,,,767,767,,653,,,653,,,653,653,,,653,,653,767,', -'767,653,767,767,,767,767,767,767,767,653,767,,,,653,653,653,653,,653', -'653,653,653,,,,,653,653,,767,,,,,653,,653,653,653,654,654,654,654,654', -'654,,,,654,654,,,,654,,654,654,654,654,654,654,654,,,,,,654,654,654', -'654,654,654,654,,,654,,,,,,654,654,654,654,654,654,654,654,654,654,654', -'654,,654,654,654,,654,654,,654,654,654,769,769,769,769,769,769,769,769', -'769,769,769,,769,769,,,769,769,,654,,,654,,,654,654,,,654,,654,769,', -'769,654,769,769,,769,769,769,769,769,654,769,,,,654,654,654,654,,654', -'654,654,654,,,,,654,654,,769,,,,,654,,654,654,654,730,730,730,730,730', -'730,,,,730,730,,,,730,,730,730,730,730,730,730,730,,,,,,730,730,730', -'730,730,730,730,,,730,,,,,,730,730,730,730,730,730,730,730,730,730,730', -'730,,730,730,730,,730,730,,730,730,730,858,858,858,858,858,858,858,858', -'858,858,858,,858,858,,,858,858,,730,,,730,,,730,730,,,730,,730,858,', -'858,730,858,858,,858,858,858,858,858,730,858,,,,730,730,730,730,,730', -'730,730,730,,,,,730,730,,858,,,,,730,,730,730,730,735,735,735,735,735', -'735,,,,735,735,,,,735,,735,735,735,735,735,735,735,,,,,,735,735,735', -'735,735,735,735,,,735,,,,,,735,735,735,735,735,735,735,735,735,735,735', -'735,,735,735,735,,735,735,,735,735,735,969,969,969,969,969,969,969,969', -'969,969,969,,969,969,,,969,969,,735,,,735,,,735,735,,,735,,735,969,', -'969,735,969,969,,969,969,969,969,969,735,969,,,,735,735,735,735,,735', -'735,735,735,,,,,735,735,,969,,,,,735,,735,735,735,745,745,745,745,745', -'745,,,,745,745,,,,745,,745,745,745,745,745,745,745,,,,,,745,745,745', -'745,745,745,745,,,745,,,,,,745,745,745,745,745,745,745,745,745,745,745', -'745,,745,745,745,,745,745,,745,745,745,447,447,447,447,447,447,447,447', -'447,447,447,,447,447,,,447,447,,745,,,745,,,745,745,,,745,,745,447,', -'447,745,447,447,,447,447,447,447,447,745,447,,,,745,745,745,745,,745', -'745,745,745,,,,,745,745,,,,,,,745,,745,745,745,793,793,793,793,793,793', -',,,793,793,,,,793,,793,793,793,793,793,793,793,,,,,,793,793,793,793', -'793,793,793,,,793,,,,,,793,793,793,793,793,793,793,793,793,793,793,793', -',793,793,793,,793,793,,793,793,793,448,448,448,448,448,448,448,448,448', -'448,448,,448,448,,,448,448,,793,,,793,,,793,793,,,793,,793,448,,448', -'793,448,448,,448,448,448,448,448,793,448,,,,793,793,793,793,,793,793', -'793,793,,,,,793,793,,,,,,,793,,793,793,793,806,806,806,806,806,806,', -',,806,806,,,,806,,806,806,806,806,806,806,806,,,,,,806,806,806,806,806', -'806,806,,905,806,905,905,905,,905,806,806,806,806,806,806,806,806,806', -'806,806,806,,806,806,806,,806,806,,806,806,806,458,458,458,458,458,458', -'458,,905,458,458,,,,,,458,458,,806,,,806,,,806,806,,,806,,806,458,,458', -'806,458,458,,458,458,458,458,458,806,458,,,,806,806,806,806,,806,806', -'806,806,,,,,806,806,,,,,,,806,,806,806,806,814,814,814,814,814,814,', -',,814,814,,,,814,,814,814,814,814,814,814,814,,,,,,814,814,814,814,814', -'814,814,,957,814,957,957,957,,957,814,814,814,814,814,814,814,814,814', -'814,814,814,,814,814,814,,814,814,,814,814,814,459,,,959,,959,959,959', -'957,959,,,,,,,459,459,,814,,,814,,,814,814,,,814,,814,459,,459,814,459', -'459,,459,459,959,,459,814,459,,,,814,814,814,814,,814,814,814,814,,', -',,814,814,,,,,,,814,,814,814,814,815,815,815,815,815,815,,,,815,815', -',,,815,,815,815,815,815,815,815,815,,,,,,815,815,815,815,815,815,815', -',994,815,994,994,994,,994,815,815,815,815,815,815,815,815,815,815,815', -'815,,815,815,815,,815,815,,815,815,815,460,,,,,,,,994,,,,,,,,460,460', -',815,,,815,,,815,815,,,815,,815,460,,460,815,460,460,,460,460,,,460', -'815,460,,,,815,815,815,815,,815,815,815,815,,,,,815,815,,,,,,,815,,815', -'815,815,839,839,839,839,839,839,,,,839,839,,,,839,,839,839,839,839,839', -'839,839,,,,,,839,839,839,839,839,839,839,,,839,,,,,,839,839,839,839', -'839,839,839,839,839,839,839,839,,839,839,839,,839,839,,839,839,839,461', -',,,,,,,,,,,,,,,461,461,,839,,,839,,,839,839,,,839,,839,461,,461,839', -'461,461,,461,461,,,461,839,461,,,,839,839,839,839,,839,839,839,839,', -',,,839,839,,,,,,,839,,839,839,839,840,840,840,840,840,840,,,,840,840', -',,,840,,840,840,840,840,840,840,840,,,,,,840,840,840,840,840,840,840', -',,840,,,,,,840,840,840,840,840,840,840,840,840,840,840,840,,840,840', -'840,,840,840,,840,840,840,462,,,,,,,,,,,,,,,,462,462,,840,,,840,,,840', -'840,,,840,,840,462,,462,840,462,462,,462,462,,,462,840,462,,,,840,840', -'840,840,,840,840,840,840,,,,,840,840,,,,,,,840,,840,840,840,843,843', -'843,843,843,843,,,,843,843,,,,843,,843,843,843,843,843,843,843,,,,,', -'843,843,843,843,843,843,843,,,843,,,,,,843,843,843,843,843,843,843,843', -'843,843,843,843,,843,843,843,,843,843,,843,843,843,463,463,463,463,463', -'463,463,,,463,463,,,,,,463,463,,843,,,843,,,843,843,,,843,,843,463,', -'463,843,463,463,,463,463,463,463,463,843,463,,,,843,843,843,843,,843', -'843,843,843,,,,,843,843,,,,,,,843,,843,843,843,849,849,849,849,849,849', -',,,849,849,,,,849,,849,849,849,849,849,849,849,,,,,,849,849,849,849', -'849,849,849,,,849,,,,,,849,849,849,849,849,849,849,849,849,849,849,849', -',849,849,849,,849,849,,849,849,849,464,464,464,464,464,464,464,,,464', -'464,,,,,,464,464,,849,,,849,,,849,849,,,849,,849,464,,464,849,464,464', -',464,464,464,464,464,849,464,,,,849,849,849,849,,849,849,849,849,,,', -',849,849,,,,,,,849,,849,849,849,882,882,882,882,882,882,,,,882,882,', -',,882,,882,882,882,882,882,882,882,,,,,,882,882,882,882,882,882,882', -',,882,,,,,,882,882,882,882,882,882,882,882,882,882,882,882,,882,882', -'882,,882,882,,882,882,882,465,465,465,465,465,465,465,,,465,465,,,,', -',465,465,,882,,,882,,,882,882,,,882,,882,465,,465,882,465,465,,465,465', -'465,465,465,882,465,,,,882,882,882,882,,882,882,882,882,,,,,882,882', -',,,,,,882,,882,882,882,943,943,943,943,943,943,,,,943,943,,,,943,,943', -'943,943,943,943,943,943,,,,,,943,943,943,943,943,943,943,,,943,,,,,', -'943,943,943,943,943,943,943,943,943,943,943,943,,943,943,943,,943,943', -',943,943,943,466,466,466,466,466,466,466,,,466,466,,,,,,466,466,,943', -',,943,,,943,943,,,943,,943,466,,466,943,466,466,,466,466,466,466,466', -'943,466,,,,943,943,943,943,,943,943,943,943,,,,,943,943,,,,,,,943,,943', -'943,943,960,960,960,960,960,960,,,,960,960,,,,960,,960,960,960,960,960', -'960,960,,,,,,960,960,960,960,960,960,960,,,960,,,,,,960,960,960,960', -'960,960,960,960,960,960,960,960,,960,960,960,,960,960,,960,960,960,467', -'467,467,467,467,467,467,,,467,467,,,,,,467,467,,960,,,960,,,960,960', -',,960,,960,467,,467,960,467,467,,467,467,467,467,467,960,467,,,,960', -'960,960,960,,960,960,960,960,,,,,960,960,,,,,,,960,,960,960,960,966', -'966,966,966,966,966,,,,966,966,,,,966,,966,966,966,966,966,966,966,', -',,,,966,966,966,966,966,966,966,,,966,,,,,,966,966,966,966,966,966,966', -'966,966,966,966,966,,966,966,966,,966,966,,966,966,966,470,470,470,470', -'470,470,470,,,470,470,,,,,,470,470,,966,,,966,,,966,966,,,966,,966,470', -',470,966,470,470,,470,470,470,470,470,966,470,,,,966,966,966,966,,966', -'966,966,966,,,,,966,966,,,,,,,966,,966,966,966,968,968,968,968,968,968', -',,,968,968,,,,968,,968,968,968,968,968,968,968,,,,,,968,968,968,968', -'968,968,968,,,968,,,,,,968,968,968,968,968,968,968,968,968,968,968,968', -',968,968,968,,968,968,,968,968,968,471,471,471,471,471,471,471,471,', -'471,471,,,,,,471,471,,968,,,968,,,968,968,,,968,,968,471,,471,968,471', -'471,,471,471,471,471,471,968,471,,,,968,968,968,968,,968,968,968,968', -',,,,968,968,,,,,,,968,,968,968,968,5,5,5,5,5,,,,5,5,,,,5,,5,5,5,5,5', -'5,5,,,,,,5,5,5,5,5,5,5,,,5,,,,,,5,5,5,5,5,5,5,5,5,5,5,5,,5,5,5,,5,5', -',5,5,5,455,,,,,,,,,,,,,,,,455,455,,5,,,5,,,5,5,,,5,,5,455,,455,5,455', -'455,,455,455,,,,5,,,,,5,5,5,5,,5,5,5,5,,,,,5,5,,,,20,20,20,5,20,5,5', -'5,20,20,,,,20,,20,20,20,20,20,20,20,,,,,,20,20,20,20,20,20,20,,,20,', -',,,,,20,,,20,20,20,20,20,20,20,20,,20,20,20,,20,20,,20,20,20,456,,,', -',,,,,,,,,,,,456,456,,20,,,20,,,20,20,,,20,,,456,,456,20,456,456,,456', -'456,,,,20,,,,,20,20,20,20,,20,20,20,20,,,,,20,20,,,,29,29,29,20,29,20', -'20,20,29,29,,,,29,,29,29,29,29,29,29,29,,,,,,29,29,29,29,29,29,29,,', -'29,,,,,,,29,,,29,29,29,29,29,29,29,29,29,29,29,29,,29,29,,29,29,29,457', -',,,,,,,,,,,,,,,457,457,,29,,,29,,,29,29,,,29,,29,457,29,,29,457,457', -'29,457,457,,,,29,,,,,29,29,29,29,,29,29,29,29,,,,,29,29,,,,30,30,30', -'29,30,29,29,29,30,30,,,,30,,30,30,30,30,30,30,30,,,,,,30,30,30,30,30', -'30,30,,,30,,,,,,,30,,,30,30,30,30,30,30,30,30,30,30,30,30,,30,30,,30', -'30,30,,,,,,,,,,,,,,,,,,,,30,,,30,,,30,30,,,30,,30,,30,,30,,,30,,,,,', -'30,,,,,30,30,30,30,,30,30,30,30,,,,,30,30,,,,31,31,31,30,31,30,30,30', -'31,31,,,,31,,31,31,31,31,31,31,31,,,,,,31,31,31,31,31,31,31,,,31,,,', -',,,31,,,31,31,31,31,31,31,31,31,31,31,31,31,,31,31,,31,31,31,,,,,,,', -',,,,,,,,,,,,31,,,31,,,31,31,,,31,,31,,31,,31,,,31,,,,,,31,,,,,31,31', -'31,31,,31,31,31,31,,,,,31,31,,,,34,34,34,31,34,31,31,31,34,34,,,,34', -',34,34,34,34,34,34,34,,,,,,34,34,34,34,34,34,34,,,34,,,,,,,34,,,34,34', -'34,34,34,34,34,34,,34,34,34,,34,34,,,,34,,,,,,,,,,,,,,,,,,,,34,,,34', -',,34,34,,,34,,34,,,,,,,,,,,,,,,,,,34,34,34,34,,34,34,34,34,,,,,34,34', -',,,35,35,35,34,35,34,34,34,35,35,,,,35,,35,35,35,35,35,35,35,,,,,,35', -'35,35,35,35,35,35,,,35,,,,,,,35,,,35,35,35,35,35,35,35,35,,35,35,35', -',35,35,,,,35,,,,,,,,,,,,,,,,,,,,35,,,35,,,35,35,,,35,,697,,697,697,697', -'697,697,,,,,,,,,,697,,35,35,35,35,,35,35,35,35,,,,,35,35,,,,35,,697', -'35,,35,35,35,42,42,42,,42,697,697,,42,42,697,,,42,,42,42,42,42,42,42', -'42,,,,,,42,42,42,42,42,42,42,,,42,,,,,,,42,,,42,42,42,42,42,42,42,42', -',42,42,42,,42,42,,42,42,42,,,,,,,,,,,,,,,,,,,,42,,,42,,,42,42,,,42,', -',,,,42,,,,,,,,,42,,,,,42,42,42,42,,42,42,42,42,,,,,42,42,,,,43,43,43', -'42,43,42,42,42,43,43,,,,43,,43,43,43,43,43,43,43,,,,,,43,43,43,43,43', -'43,43,,,43,,,,,,,43,,,43,43,43,43,43,43,43,43,,43,43,43,,43,43,,43,43', -'43,,,,,,,,,,,,,,,,,,,,43,,,43,,,43,43,,,43,,,,,,43,,,,,,,,,43,,,,,43', -'43,43,43,,43,43,43,43,,,,,43,43,,,,44,44,44,43,44,43,43,43,44,44,,,', -'44,,44,44,44,44,44,44,44,,,,,,44,44,44,44,44,44,44,,,44,,,,,,,44,,,44', -'44,44,44,44,44,44,44,,44,44,44,,44,44,,44,44,44,,,,,,,,,,,,,,,,,,,,44', -',,44,,,44,44,,,44,,,,,,44,,,,,,,,,44,,,,,44,44,44,44,,44,44,44,44,,', -',,44,44,,,,59,59,59,44,59,44,44,44,59,59,,,,59,,59,59,59,59,59,59,59', -',,,,,59,59,59,59,59,59,59,,,59,,,,,,,59,,,59,59,59,59,59,59,59,59,59', -'59,59,59,,59,59,,59,59,59,,,,,,,,,,,,,,,,,,,,59,,,59,,,59,59,,,59,,59', -',,,59,,,59,,,,,,59,,,,,59,59,59,59,,59,59,59,59,,,,,59,59,,,,60,60,60', -'59,60,59,59,59,60,60,,,,60,,60,60,60,60,60,60,60,,,,,,60,60,60,60,60', -'60,60,,,60,,,,,,,60,,,60,60,60,60,60,60,60,60,60,60,60,60,,60,60,,60', -'60,60,,,,,,,,,,,,,,,,,,,,60,,,60,,,60,60,,,60,,,,,,60,,,60,,,,,,60,', -',,,60,60,60,60,,60,60,60,60,,,,,60,60,,,,63,63,63,60,63,60,60,60,63', -'63,,,,63,,63,63,63,63,63,63,63,,,,,,63,63,63,63,63,63,63,,,63,,,,,,', -'63,,,63,63,63,63,63,63,63,63,,63,63,63,,63,63,,63,63,63,,,,,,,,,,,,', -',,,,,,,63,,,63,,,63,63,,,63,,,,,,63,,,,,,,,,63,,,,,63,63,63,63,,63,63', -'63,63,,,,,63,63,,,,64,64,64,63,64,63,63,63,64,64,,,,64,,64,64,64,64', -'64,64,64,,,,,,64,64,64,64,64,64,64,,,64,,,,,,,64,,,64,64,64,64,64,64', -'64,64,,64,64,64,,64,64,,64,64,64,,,,,,,,,,,,,,,,,,,,64,,,64,,,64,64', -',,64,,,,,,64,,,,,,,,,64,,,,,64,64,64,64,,64,64,64,64,,,,,64,64,,,,67', -'67,67,64,67,64,64,64,67,67,,,,67,,67,67,67,67,67,67,67,,,,,,67,67,67', -'67,67,67,67,,,67,,,,,,,67,,,67,67,67,67,67,67,67,67,,67,67,67,,67,67', -',67,67,67,,,,,,,,,,,,,,,,,,,,67,,,67,,,67,67,,,67,,,,,,67,,,,,,,,,67', -',,,,67,67,67,67,,67,67,67,67,,,,,67,67,67,,,,,67,67,,67,67,67,68,68', -'68,,68,,,,68,68,,,,68,,68,68,68,68,68,68,68,,,,,,68,68,68,68,68,68,68', -',,68,,,,,,,68,,,68,68,68,68,68,68,68,68,,68,68,68,,68,68,,,,68,,,,,', -',,,,,,,,,,,,,,68,,,68,,,68,68,,,68,,68,,,,,,,,,,,,,,,,,,68,68,68,68', -',68,68,68,68,,,,,68,68,,,,69,69,69,68,69,68,68,68,69,69,,,,69,,69,69', -'69,69,69,69,69,,,,,,69,69,69,69,69,69,69,,,69,,,,,,,69,,,69,69,69,69', -'69,69,69,69,,69,69,69,,69,69,,,,69,,,,,,,,,,,,,,,,,69,,,69,,,69,,,69', -'69,,,69,,,,,,,,,,,,,,,,,,,,69,69,69,69,,69,69,69,69,,,,,69,69,,,,70', -'70,70,69,70,69,69,69,70,70,,,,70,,70,70,70,70,70,70,70,,,,,,70,70,70', -'70,70,70,70,,,70,,,,,,,70,,,70,70,70,70,70,70,70,70,,70,70,70,,70,70', -',,,70,,,,,,,,,,,,,,,,,,,,70,,,70,,,70,70,,,70,,869,,869,869,869,869', -'869,,,,,,,,,,869,,70,70,70,70,,70,70,70,70,,,,,70,70,,,,,,869,70,,70', -'70,70,111,111,111,111,111,869,869,,111,111,869,,,111,,111,111,111,111', -'111,111,111,,,,,,111,111,111,111,111,111,111,,,111,,,,,,111,111,111', -'111,111,111,111,111,111,111,111,111,,111,111,111,,111,111,,111,111,111', -',,,,,,,,,,,,,,,,,,,111,,,111,,,111,111,,,111,,111,,,,111,,,,,,,,,111', -',,,,111,111,111,111,,111,111,111,111,,,,,111,111,,,,,,111,111,,111,111', -'111,116,116,116,,116,,,,116,116,,,,116,,116,116,116,116,116,116,116', -',,,,,116,116,116,116,116,116,116,,,116,,,,,,,116,,,116,116,116,116,116', -'116,116,116,,116,116,116,,116,116,,116,116,116,,,,,,,,,,,,,,,,,,,,116', -',,116,,,116,116,,,116,,,,,,116,,,,,,,,,116,,,,,116,116,116,116,,116', -'116,116,116,,,,,116,116,,,,117,117,117,116,117,116,116,116,117,117,', -',,117,,117,117,117,117,117,117,117,,,,,,117,117,117,117,117,117,117', -',,117,,,,,,,117,,,117,117,117,117,117,117,117,117,,117,117,117,,117', -'117,,117,117,117,,,,,,,,,,,,,,,,,,,,117,,,117,,,117,117,,,117,,,,,,117', -',,,,,,,,117,,,,,117,117,117,117,,117,117,117,117,,,,,117,117,,,,118', -'118,118,117,118,117,117,117,118,118,,,,118,,118,118,118,118,118,118', -'118,,,,,,118,118,118,118,118,118,118,,,118,,,,,,,118,,,118,118,118,118', -'118,118,118,118,,118,118,118,,118,118,,118,118,118,,,,,,,,,,,,,,,,,', -',,118,,,118,,,118,118,,,118,,,,,,118,,,,,,,,,118,,,,,118,118,118,118', -',118,118,118,118,,,,,118,118,,,,119,119,119,118,119,118,118,118,119', -'119,,,,119,,119,119,119,119,119,119,119,,,,,,119,119,119,119,119,119', -'119,,,119,,,,,,,119,,,119,119,119,119,119,119,119,119,,119,119,119,', -'119,119,,119,119,119,,,,,,,,,,,,,,,,,,,,119,,,119,,,119,119,,,119,,', -',,,119,,,,,,,,,119,,,,,119,119,119,119,,119,119,119,119,,,,,119,119', -',,,,,,119,,119,119,119,120,120,120,120,120,,,,120,120,,,,120,,120,120', -'120,120,120,120,120,,,,,,120,120,120,120,120,120,120,,,120,,,,,,120', -'120,,120,120,120,120,120,120,120,120,120,,120,120,120,,120,120,,120', -'120,120,,,,,,,,,,,,,,,,,,,,120,,,120,,,120,120,,,120,,120,,,,120,,,', -',,,,,120,,,,,120,120,120,120,,120,120,120,120,,,,,120,120,,,,207,207', -'207,120,207,120,120,120,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,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,,,,208,208,208,207,208,207,207,207,208,208,', -',,208,,208,208,208,208,208,208,208,,,,,,208,208,208,208,208,208,208', -',,208,,,,,,,208,,,208,208,208,208,208,208,208,208,,208,208,208,,208', -'208,,208,208,208,,,,,,,,,,,,,,,,,,,,208,,,208,,,208,208,,,208,,,,,,208', -',,,,,,,,208,,,,,208,208,208,208,,208,208,208,208,,,,,208,208,,,,209', -'209,209,208,209,208,208,208,209,209,,,,209,,209,209,209,209,209,209', -'209,,,,,,209,209,209,209,209,209,209,,,209,,,,,,,209,,,209,209,209,209', -'209,209,209,209,209,209,209,209,,209,209,,209,209,209,,,,,,,,,,,,,,', -',,,,,209,,,209,,,209,209,,,209,,209,,209,,209,,,209,,,,,,209,,,,,209', -'209,209,209,,209,209,209,209,,,,,209,209,,,,212,212,212,209,212,209', -'209,209,212,212,,,,212,,212,212,212,212,212,212,212,,,,,,212,212,212', -'212,212,212,212,,,212,,,,,,,212,,,212,212,212,212,212,212,212,212,,212', -'212,212,,212,212,,212,212,212,,,,,,,,,,,,,,,,,,,,212,,,212,,,212,212', -',,212,,,,,,212,,,,,,,,,212,,,,,212,212,212,212,,212,212,212,212,,,,', -'212,212,,,,213,213,213,212,213,212,212,212,213,213,,,,213,,213,213,213', -'213,213,213,213,,,,,,213,213,213,213,213,213,213,,,213,,,,,,,213,,,213', -'213,213,213,213,213,213,213,,213,213,213,,213,213,,213,213,213,,,,,', -',,,,,,,,,,,,,,213,,,213,,,213,213,,,213,,213,,,,213,,,,,,,,,213,,,,', -'213,213,213,213,,213,213,213,213,,,,,213,213,,,,214,214,214,213,214', -'213,213,213,214,214,,,,214,,214,214,214,214,214,214,214,,,,,,214,214', -'214,214,214,214,214,,,214,,,,,,,214,,,214,214,214,214,214,214,214,214', -',214,214,214,,214,214,,214,214,214,,,,,,,,,,,,,,,,,,,,214,,,214,,,214', -'214,,,214,,,,,,214,,,,,,,,,214,,,,,214,214,214,214,,214,214,214,214', -',,,,214,214,,,,215,215,215,214,215,214,214,214,215,215,,,,215,,215,215', -'215,215,215,215,215,,,,,,215,215,215,215,215,215,215,,,215,,,,,,,215', -',,215,215,215,215,215,215,215,215,,215,215,215,,215,215,,215,215,215', -',,,,,,,,,,,,,,,,,,,215,,,215,,,215,215,,,215,,,,,,215,,,,,,,,,215,,', -',,215,215,215,215,,215,215,215,215,,,,,215,215,,,,216,216,216,215,216', -'215,215,215,216,216,,,,216,,216,216,216,216,216,216,216,,,,,,216,216', -'216,216,216,216,216,,,216,,,,,,,216,,,216,216,216,216,216,216,216,216', -',216,216,216,,216,216,,216,216,216,,,,,,,,,,,,,,,,,,,,216,,,216,,,216', -'216,,,216,,,,,,216,,,,,,,,,216,,,,,216,216,216,216,,216,216,216,216', -',,,,216,216,,,,217,217,217,216,217,216,216,216,217,217,,,,217,,217,217', -'217,217,217,217,217,,,,,,217,217,217,217,217,217,217,,,217,,,,,,,217', -',,217,217,217,217,217,217,217,217,,217,217,217,,217,217,,217,217,217', -',,,,,,,,,,,,,,,,,,,217,,,217,,,217,217,,,217,,,,,,217,,,,,,,,,217,,', -',,217,217,217,217,,217,217,217,217,,,,,217,217,217,,,228,228,228,217', -'228,217,217,217,228,228,,,,228,,228,228,228,228,228,228,228,,,,,,228', -'228,228,228,228,228,228,,,228,,,,,,,228,,,228,228,228,228,228,228,228', -'228,,228,228,228,,228,228,,228,228,228,,,,,,,,,,,,,,,,,,,,228,,,228', -',,228,228,,,228,,,,,,228,,,,,,,,,228,,,,,228,228,228,228,,228,228,228', -'228,,,,,228,228,,,,231,231,231,228,231,228,228,228,231,231,,,,231,,231', -'231,231,231,231,231,231,,,,,,231,231,231,231,231,231,231,,,231,,,,,', -',231,,,231,231,231,231,231,231,231,231,,231,231,231,,231,231,,231,231', -'231,,,,,,,,,,,,,,,,,,,,231,,,231,,,231,231,,,231,,,,,,231,,,,,,,,,231', -',,,,231,231,231,231,,231,231,231,231,,,,,231,231,,,,232,232,232,231', -'232,231,231,231,232,232,,,,232,,232,232,232,232,232,232,232,,,,,,232', -'232,232,232,232,232,232,,,232,,,,,,,232,,,232,232,232,232,232,232,232', -'232,,232,232,232,,232,232,,232,232,232,,,,,,,,,,,,,,,,,,,,232,,,232', -',,232,232,,,232,,,,,,232,,,,,,,,,232,,,,,232,232,232,232,,232,232,232', -'232,,,,,232,232,,,,233,233,233,232,233,232,232,232,233,233,,,,233,,233', -'233,233,233,233,233,233,,,,,,233,233,233,233,233,233,233,,,233,,,,,', -',233,,,233,233,233,233,233,233,233,233,,233,233,233,,233,233,,233,233', -'233,,,,,,,,,,,,,,,,,,,,233,,,233,,,233,233,,,233,,,,,,233,,,,,,,,,233', -',,,,233,233,233,233,,233,233,233,233,,,,,233,233,,,,234,234,234,233', -'234,233,233,233,234,234,,,,234,,234,234,234,234,234,234,234,,,,,,234', -'234,234,234,234,234,234,,,234,,,,,,,234,,,234,234,234,234,234,234,234', -'234,,234,234,234,,234,234,,234,234,234,,,,,,,,,,,,,,,,,,,,234,,,234', -',,234,234,,,234,,,,,,234,,,,,,,,,234,,,,,234,234,234,234,,234,234,234', -'234,,,,,234,234,,,,235,235,235,234,235,234,234,234,235,235,,,,235,,235', -'235,235,235,235,235,235,,,,,,235,235,235,235,235,235,235,,,235,,,,,', -',235,,,235,235,235,235,235,235,235,235,,235,235,235,,235,235,,235,235', -'235,,,,,,,,,,,,,,,,,,,,235,,,235,,,235,235,,,235,,,,,,235,,,,,,,,,235', -',,,,235,235,235,235,,235,235,235,235,,,,,235,235,,,,236,236,236,235', -'236,235,235,235,236,236,,,,236,,236,236,236,236,236,236,236,,,,,,236', -'236,236,236,236,236,236,,,236,,,,,,,236,,,236,236,236,236,236,236,236', -'236,,236,236,236,,236,236,,236,236,236,,,,,,,,,,,,,,,,,,,,236,,,236', -',,236,236,,,236,,,,,,236,,,,,,,,,236,,,,,236,236,236,236,,236,236,236', -'236,,,,,236,236,,,,237,237,237,236,237,236,236,236,237,237,,,,237,,237', -'237,237,237,237,237,237,,,,,,237,237,237,237,237,237,237,,,237,,,,,', -',237,,,237,237,237,237,237,237,237,237,,237,237,237,,237,237,,237,237', -'237,,,,,,,,,,,,,,,,,,,,237,,,237,,,237,237,,,237,,,,,,237,,,,,,,,,237', -',,,,237,237,237,237,,237,237,237,237,,,,,237,237,,,,238,238,238,237', -'238,237,237,237,238,238,,,,238,,238,238,238,238,238,238,238,,,,,,238', -'238,238,238,238,238,238,,,238,,,,,,,238,,,238,238,238,238,238,238,238', -'238,,238,238,238,,238,238,,238,238,238,,,,,,,,,,,,,,,,,,,,238,,,238', -',,238,238,,,238,,,,,,238,,,,,,,,,238,,,,,238,238,238,238,,238,238,238', -'238,,,,,238,238,,,,239,239,239,238,239,238,238,238,239,239,,,,239,,239', -'239,239,239,239,239,239,,,,,,239,239,239,239,239,239,239,,,239,,,,,', -',239,,,239,239,239,239,239,239,239,239,,239,239,239,,239,239,,239,239', -'239,,,,,,,,,,,,,,,,,,,,239,,,239,,,239,239,,,239,,,,,,239,,,,,,,,,239', -',,,,239,239,239,239,,239,239,239,239,,,,,239,239,,,,240,240,240,239', -'240,239,239,239,240,240,,,,240,,240,240,240,240,240,240,240,,,,,,240', -'240,240,240,240,240,240,,,240,,,,,,,240,,,240,240,240,240,240,240,240', -'240,,240,240,240,,240,240,,240,240,240,,,,,,,,,,,,,,,,,,,,240,,,240', -',,240,240,,,240,,,,,,240,,,,,,,,,240,,,,,240,240,240,240,,240,240,240', -'240,,,,,240,240,,,,241,241,241,240,241,240,240,240,241,241,,,,241,,241', -'241,241,241,241,241,241,,,,,,241,241,241,241,241,241,241,,,241,,,,,', -',241,,,241,241,241,241,241,241,241,241,,241,241,241,,241,241,,241,241', -'241,,,,,,,,,,,,,,,,,,,,241,,,241,,,241,241,,,241,,,,,,241,,,,,,,,,241', -',,,,241,241,241,241,,241,241,241,241,,,,,241,241,,,,242,242,242,241', -'242,241,241,241,242,242,,,,242,,242,242,242,242,242,242,242,,,,,,242', -'242,242,242,242,242,242,,,242,,,,,,,242,,,242,242,242,242,242,242,242', -'242,,242,242,242,,242,242,,242,242,242,,,,,,,,,,,,,,,,,,,,242,,,242', -',,242,242,,,242,,,,,,242,,,,,,,,,242,,,,,242,242,242,242,,242,242,242', -'242,,,,,242,242,,,,243,243,243,242,243,242,242,242,243,243,,,,243,,243', -'243,243,243,243,243,243,,,,,,243,243,243,243,243,243,243,,,243,,,,,', -',243,,,243,243,243,243,243,243,243,243,,243,243,243,,243,243,,243,243', -'243,,,,,,,,,,,,,,,,,,,,243,,,243,,,243,243,,,243,,,,,,243,,,,,,,,,243', -',,,,243,243,243,243,,243,243,243,243,,,,,243,243,,,,244,244,244,243', -'244,243,243,243,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,,,244', -',,244,244,,,244,,,,,,244,,,,,,,,,244,,,,,244,244,244,244,,244,244,244', -'244,,,,,244,244,,,,245,245,245,244,245,244,244,244,245,245,,,,245,,245', -'245,245,245,245,245,245,,,,,,245,245,245,245,245,245,245,,,245,,,,,', -',245,,,245,245,245,245,245,245,245,245,,245,245,245,,245,245,,245,245', -'245,,,,,,,,,,,,,,,,,,,,245,,,245,,,245,245,,,245,,,,,,245,,,,,,,,,245', -',,,,245,245,245,245,,245,245,245,245,,,,,245,245,,,,246,246,246,245', -'246,245,245,245,246,246,,,,246,,246,246,246,246,246,246,246,,,,,,246', -'246,246,246,246,246,246,,,246,,,,,,,246,,,246,246,246,246,246,246,246', -'246,,246,246,246,,246,246,,246,246,246,,,,,,,,,,,,,,,,,,,,246,,,246', -',,246,246,,,246,,,,,,246,,,,,,,,,246,,,,,246,246,246,246,,246,246,246', -'246,,,,,246,246,,,,247,247,247,246,247,246,246,246,247,247,,,,247,,247', -'247,247,247,247,247,247,,,,,,247,247,247,247,247,247,247,,,247,,,,,', -',247,,,247,247,247,247,247,247,247,247,,247,247,247,,247,247,,247,247', -'247,,,,,,,,,,,,,,,,,,,,247,,,247,,,247,247,,,247,,,,,,247,,,,,,,,,247', -',,,,247,247,247,247,,247,247,247,247,,,,,247,247,,,,248,248,248,247', -'248,247,247,247,248,248,,,,248,,248,248,248,248,248,248,248,,,,,,248', -'248,248,248,248,248,248,,,248,,,,,,,248,,,248,248,248,248,248,248,248', -'248,,248,248,248,,248,248,,248,248,248,,,,,,,,,,,,,,,,,,,,248,,,248', -',,248,248,,,248,,,,,,248,,,,,,,,,248,,,,,248,248,248,248,,248,248,248', -'248,,,,,248,248,,,,249,249,249,248,249,248,248,248,249,249,,,,249,,249', -'249,249,249,249,249,249,,,,,,249,249,249,249,249,249,249,,,249,,,,,', -',249,,,249,249,249,249,249,249,249,249,,249,249,249,,249,249,,249,249', -'249,,,,,,,,,,,,,,,,,,,,249,,,249,,,249,249,,,249,,,,,,249,,,,,,,,,249', -',,,,249,249,249,249,,249,249,249,249,,,,,249,249,,,,250,250,250,249', -'250,249,249,249,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,250,250,,250,250,,250,250,250,,,,,,,,,,,,,,,,,,,,250,,,250', -',,250,250,,,250,,,,,,250,,,,,,,,,250,,,,,250,250,250,250,,250,250,250', -'250,,,,,250,250,,,,251,251,251,250,251,250,250,250,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,251,251,,251,251,,251,251', -'251,,,,,,,,,,,,,,,,,,,,251,,,251,,,251,251,,,251,,,,,,251,,,,,,,,,251', -',,,,251,251,251,251,,251,251,251,251,,,,,251,251,,,,252,252,252,251', -'252,251,251,251,252,252,,,,252,,252,252,252,252,252,252,252,,,,,,252', -'252,252,252,252,252,252,,,252,,,,,,,252,,,252,252,252,252,252,252,252', -'252,,252,252,252,,252,252,,252,252,252,,,,,,,,,,,,,,,,,,,,252,,,252', -',,252,252,,,252,,,,,,252,,,,,,,,,252,,,,,252,252,252,252,,252,252,252', -'252,,,,,252,252,,,,253,253,253,252,253,252,252,252,253,253,,,,253,,253', -'253,253,253,253,253,253,,,,,,253,253,253,253,253,253,253,,,253,,,,,', -',253,,,253,253,253,253,253,253,253,253,,253,253,253,,253,253,,253,253', -'253,,,,,,,,,,,,,,,,,,,,253,,,253,,,253,253,,,253,,,,,,253,,,,,,,,,253', -',,,,253,253,253,253,,253,253,253,253,,,,,253,253,,,,254,254,254,253', -'254,253,253,253,254,254,,,,254,,254,254,254,254,254,254,254,,,,,,254', -'254,254,254,254,254,254,,,254,,,,,,,254,,,254,254,254,254,254,254,254', -'254,,254,254,254,,254,254,,254,254,254,,,,,,,,,,,,,,,,,,,,254,,,254', -',,254,254,,,254,,,,,,254,,,,,,,,,254,,,,,254,254,254,254,,254,254,254', -'254,,,,,254,254,,,,255,255,255,254,255,254,254,254,255,255,,,,255,,255', -'255,255,255,255,255,255,,,,,,255,255,255,255,255,255,255,,,255,,,,,', -',255,,,255,255,255,255,255,255,255,255,,255,255,255,,255,255,,255,255', -'255,,,,,,,,,,,,,,,,,,,,255,,,255,,,255,255,,,255,,,,,,255,,,,,,,,,255', -',,,,255,255,255,255,,255,255,255,255,,,,,255,255,,,,263,263,263,255', -'263,255,255,255,263,263,,,,263,,263,263,263,263,263,263,263,,,,,,263', -'263,263,263,263,263,263,,,263,,,,,,,263,,,263,263,263,263,263,263,263', -'263,263,263,263,263,,263,263,,263,263,263,,,,,,,,,,,,,,,,,,,,263,,,263', -',,263,263,,,263,,263,,263,,263,,,263,,,,,,263,,,,,263,263,263,263,,263', -'263,263,263,,,,,263,263,,,,264,264,264,263,264,263,263,263,264,264,', -',,264,,264,264,264,264,264,264,264,,,,,,264,264,264,264,264,264,264', -',,264,,,,,,,264,,,264,264,264,264,264,264,264,264,264,264,264,264,,264', -'264,,264,264,264,,,,,,,,,,,,,,,,,,,,264,,,264,,,264,264,,,264,,264,', -'264,,264,,,264,,,,,,264,,,,,264,264,264,264,,264,264,264,264,,,,,264', -'264,,,,272,272,272,264,272,264,264,264,272,272,,,,272,,272,272,272,272', -'272,272,272,,,,,,272,272,272,272,272,272,272,,,272,,,,,,,272,,,272,272', -'272,272,272,272,272,272,272,272,272,272,,272,272,,272,272,272,,,,,,', -',,,,,,,,,,,,,272,,,272,,,272,272,,,272,,272,,272,,272,,,272,,,,,,272', -',,,,272,272,272,272,,272,272,272,272,,,,,272,272,272,,,279,279,279,272', -'279,272,272,272,279,279,,,,279,,279,279,279,279,279,279,279,,,,,,279', -'279,279,279,279,279,279,,,279,,,,,,,279,,,279,279,279,279,279,279,279', -'279,,279,279,279,,279,279,,279,279,279,,,,,,,,,,,,,,,,,,,,279,,,279', -',,279,279,,,279,,,,,,279,,,,,,,,,279,,,,,279,279,279,279,,279,279,279', -'279,,,,,279,279,,,,281,281,281,279,281,279,279,279,281,281,,,,281,,281', -'281,281,281,281,281,281,,,,,,281,281,281,281,281,281,281,,,281,,,,,', -',281,,,281,281,281,281,281,281,281,281,,281,281,281,,281,281,,281,281', -'281,,,,,,,,,,,,,,,,,,,,281,,,281,,,281,281,,,281,,,,,,281,,,,,,,,,281', -',,,,281,281,281,281,,281,281,281,281,,,,,281,281,,,,284,284,284,281', -'284,281,281,281,284,284,,,,284,,284,284,284,284,284,284,284,,,,,,284', -'284,284,284,284,284,284,,,284,,,,,,,284,,,284,284,284,284,284,284,284', -'284,,284,284,284,,284,284,,284,284,284,,,,,,,,,,,,,,,,,,,,284,,,284', -',,284,284,,,284,,,,,,284,,,,,,,,,284,,,,,284,284,284,284,,284,284,284', -'284,,,,,284,284,,,,285,285,285,284,285,284,284,284,285,285,,,,285,,285', -'285,285,285,285,285,285,,,,,,285,285,285,285,285,285,285,,,285,,,,,', -',285,,,285,285,285,285,285,285,285,285,,285,285,285,,285,285,,285,285', -'285,,,,,,,,,,,,,,,,,,,,285,,,285,,,285,285,,,285,,,,,,285,,,,,,,,,285', -',,,,285,285,285,285,,285,285,285,285,,,,,285,285,,,,,,,285,,285,285', -'285,290,290,290,290,290,,,,290,290,,,,290,,290,290,290,290,290,290,290', -',,,,,290,290,290,290,290,290,290,,,290,,,,,,290,290,,290,290,290,290', -'290,290,290,290,290,,290,290,290,,290,290,,290,290,290,,,,,,,,,,,,,', -',,,,,,290,,,290,,,290,290,,,290,,290,,,,290,,,,,,,,,290,,,,,290,290', -'290,290,,290,290,290,290,,,,,290,290,,,,298,298,298,290,298,290,290', -'290,298,298,,,,298,,298,298,298,298,298,298,298,,,,,,298,298,298,298', -'298,298,298,,,298,,,,,,,298,,,298,298,298,298,298,298,298,298,,298,298', -'298,,298,298,,,,298,,,,,,,,,,,,,,,,,,,,298,,,298,,,298,298,,,298,,895', -',895,895,895,895,895,,,,,,,,,,895,,298,298,298,298,,298,298,298,298', -',,,,298,298,,,,298,,895,298,,298,298,298,315,315,315,,315,895,895,,315', -'315,895,,,315,,315,315,315,315,315,315,315,,,,,,315,315,315,315,315', -'315,315,,,315,,,,,,,315,,,315,315,315,315,315,315,315,315,,315,315,315', -',315,315,,,,315,,,,,,,,,,,,,,,,,,,,315,,,315,,,315,315,,,315,,,,,,,', -',,,,,,,,,,,,315,315,315,315,,315,315,315,315,,,,,315,315,,,,323,323', -'323,315,323,315,315,315,323,323,,,,323,,323,323,323,323,323,323,323', -',,,,,323,323,323,323,323,323,323,,,323,,,,,,,323,,,323,323,323,323,323', -'323,323,323,,323,323,323,,323,323,,323,323,323,,,,,,,,,,,,,,,,,,,,323', -',,323,323,,323,323,,,323,,,,,,323,,,,,,,,,323,,,,,323,323,323,323,,323', -'323,323,323,,,,,323,323,,,,325,325,325,323,325,323,323,323,325,325,', -',,325,,325,325,325,325,325,325,325,,,,,,325,325,325,325,325,325,325', -',,325,,,,,,,325,,,325,325,325,325,325,325,325,325,,325,325,325,,325', -'325,,325,325,325,,,,,,,,,,,,,,,,,,,,325,,,325,,,325,325,,,325,,,,,,325', -',,,,,,,,325,,,,,325,325,325,325,,325,325,325,325,,,,,325,325,,,,340', -'340,340,325,340,325,325,325,340,340,,,,340,,340,340,340,340,340,340', -'340,,,,,,340,340,340,340,340,340,340,,,340,,,,,,,340,,,340,340,340,340', -'340,340,340,340,,340,340,340,,340,340,,340,340,340,,,,,,,,,,,,,,,,,', -',,340,,,340,,,340,340,,,340,,,,,,340,,,,,,,,,340,,,,,340,340,340,340', -',340,340,340,340,,,,,340,340,,,,341,341,341,340,341,340,340,340,341', -'341,,,,341,,341,341,341,341,341,341,341,,,,,,341,341,341,341,341,341', -'341,,,341,,,,,,,341,,,341,341,341,341,341,341,341,341,,341,341,341,', -'341,341,,341,341,341,,,,,,,,,,,,,,,,,,,,341,,,341,,,341,341,,,341,,', -',,,341,,,,,,,,,341,,,,,341,341,341,341,,341,341,341,341,,,,,341,341', -',,,360,360,360,341,360,341,341,341,360,360,,,,360,,360,360,360,360,360', -'360,360,,,,,,360,360,360,360,360,360,360,,,360,,,,,,,360,,,360,360,360', -'360,360,360,360,360,,360,360,360,,360,360,,360,360,360,,,,,,,,,,,,,', -',,,,,,360,,,360,,,360,360,,,360,,,,,,360,,,,,,,,,360,,,,,360,360,360', -'360,,360,360,360,360,,,,,360,360,,,,376,376,376,360,376,360,360,360', -'376,376,,,,376,,376,376,376,376,376,376,376,,,,,,376,376,376,376,376', -'376,376,,,376,,,,,,,376,,,376,376,376,376,376,376,376,376,,376,376,376', -',376,376,,376,376,376,,,,,,,,,,,,,,,,,,,,376,,,376,,,376,376,,,376,', -',,,,376,,,,,,,,,376,,,,,376,376,376,376,,376,376,376,376,,,,,376,376', -',,,404,404,404,376,404,376,376,376,404,404,,,,404,,404,404,404,404,404', -'404,404,,,,,,404,404,404,404,404,404,404,,,404,,,,,,,404,,,404,404,404', -'404,404,404,404,404,,404,404,404,,404,404,,404,404,404,,,,,,,,,,,,,', -',,,,,,404,,,404,,,404,404,,,404,,,,,,404,,,,,,,,,404,,,,,404,404,404', -'404,,404,404,404,404,,,,,404,404,,,,442,442,442,404,442,404,404,404', -'442,442,,,,442,,442,442,442,442,442,442,442,,,,,,442,442,442,442,442', -'442,442,,,442,,,,,,,442,,,442,442,442,442,442,442,442,442,442,442,442', -'442,,442,442,,442,442,442,,,,,,,,,,,,,,,,,,,,442,,,442,,,442,442,,,442', -',442,,442,,442,,,442,,,,,,442,,,,,442,442,442,442,,442,442,442,442,', -',,,442,442,,,,444,444,444,442,444,442,442,442,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,444,444,,444,444,,444,444,444', -',,,,,,,,,,,,,,,,,,,444,,,444,,,444,444,,,444,,,,,,444,,,,,,,,,444,,', -',,444,444,444,444,,444,444,444,444,,,,,444,444,,,,445,445,445,444,445', -'444,444,444,445,445,,,,445,,445,445,445,445,445,445,445,,,,,,445,445', -'445,445,445,445,445,,,445,,,,,,,445,,,445,445,445,445,445,445,445,445', -',445,445,445,,445,445,,445,445,445,,,,,,,,,,,,,,,,,,,,445,,,445,,,445', -'445,,,445,,,,,,445,,,,,,,,,445,,,,,445,445,445,445,,445,445,445,445', -',,,,445,445,,,,446,446,446,445,446,445,445,445,446,446,,,,446,,446,446', -'446,446,446,446,446,,,,,,446,446,446,446,446,446,446,,,446,,,,,,,446', -',,446,446,446,446,446,446,446,446,,446,446,446,,446,446,,446,446,446', -',,,,,,,,,,,,,,,,,,,446,,,446,,,446,446,,,446,,,,,,446,,,,,,,,,446,,', -',,446,446,446,446,,446,446,446,446,,,,,446,446,,,,472,472,472,446,472', -'446,446,446,472,472,,,,472,,472,472,472,472,472,472,472,,,,,,472,472', -'472,472,472,472,472,,,472,,,,,,,472,,,472,472,472,472,472,472,472,472', -',472,472,472,,472,472,,472,472,472,,,,,,,,,,,,,,,,,,,,472,,,472,,,472', -'472,,,472,,,,,,472,,,,,,,,,472,,,,,472,472,472,472,,472,472,472,472', -',,,,472,472,,,,486,486,486,472,486,472,472,472,486,486,,,,486,,486,486', -'486,486,486,486,486,,,,,,486,486,486,486,486,486,486,,,486,,,,,,,486', -',,486,486,486,486,486,486,486,486,486,486,486,486,,486,486,,486,486', -'486,,,,,,,,,,,,,,,,,,,,486,,,486,,,486,486,,,486,,486,,486,,486,,,486', -',,,,,486,,,,,486,486,486,486,,486,486,486,486,,,,,486,486,,,,488,488', -'488,486,488,486,486,486,488,488,,,,488,,488,488,488,488,488,488,488', -',,,,,488,488,488,488,488,488,488,,,488,,,,,,,488,,,488,488,488,488,488', -'488,488,488,488,488,488,488,,488,488,,488,488,488,,,,,,,,,,,,,,,,,,', -',488,,,488,,,488,488,,,488,,,,488,,488,,,488,,,,,,488,,,,,488,488,488', -'488,,488,488,488,488,,,,,488,488,,,,490,490,490,488,490,488,488,488', -'490,490,,,,490,,490,490,490,490,490,490,490,,,,,,490,490,490,490,490', -'490,490,,,490,,,,,,,490,,,490,490,490,490,490,490,490,490,,490,490,490', -',490,490,,490,490,490,,,,,,,,,,,,,,,,,,,,490,,,490,,,490,490,,,490,', -',,,,490,,,,,,,,,490,,,,,490,490,490,490,,490,490,490,490,,,,,490,490', -',,,,,,490,,490,490,490,496,496,496,496,496,,,,496,496,,,,496,,496,496', -'496,496,496,496,496,,,,,,496,496,496,496,496,496,496,,,496,,,,,,496', -'496,496,496,496,496,496,496,496,496,496,496,,496,496,496,,496,496,,496', -'496,496,,,,,,,,,,,,,,,,,,,,496,,,496,,,496,496,,,496,,496,,,,496,,,', -',,,,,496,,,,,496,496,496,496,,496,496,496,496,,,,,496,496,,,,,,496,496', -',496,496,496,504,504,504,,504,,,,504,504,,,,504,,504,504,504,504,504', -'504,504,,,,,,504,504,504,504,504,504,504,,,504,,,,,,,504,,,504,504,504', -'504,504,504,504,504,,504,504,504,,504,504,,,,504,,,,,,,,,,,,,,,,,,,', -'504,,,504,,,504,504,,,504,,,,,,,,,,,,,,,,,,,,504,504,504,504,,504,504', -'504,504,,,,,504,504,,,,506,506,506,504,506,504,504,504,506,506,,,,506', -',506,506,506,506,506,506,506,,,,,,506,506,506,506,506,506,506,,,506', -',,,,,,506,,,506,506,506,506,506,506,506,506,506,506,506,506,,506,506', -',506,506,506,,,,,,,,,,,,,,,,,,,,506,,,506,,,506,506,,,506,,506,,506', -',506,,,506,,,,,,506,,,,,506,506,506,506,,506,506,506,506,,,,,506,506', -',,,512,512,512,506,512,506,506,506,512,512,,,,512,,512,512,512,512,512', -'512,512,,,,,,512,512,512,512,512,512,512,,,512,,,,,,,512,,,512,512,512', -'512,512,512,512,512,,512,512,512,,512,512,,,,512,,,,,,,,,,,,,,,,,,,', -'512,,,512,,,512,512,,,512,,,,,,,,,,,,,,,,,,,,512,512,512,512,,512,512', -'512,512,,,,,512,512,,,,515,515,515,512,515,512,512,512,515,515,,,,515', -',515,515,515,515,515,515,515,,,,,,515,515,515,515,515,515,515,,,515', -',,,,,,515,,,515,515,515,515,515,515,515,515,,515,515,515,,515,515,,515', -'515,515,,,,,,,,,,,,,,,,,,,,515,,,515,,,515,515,,,515,,,,,,515,,,,,,', -',,515,,,,,515,515,515,515,,515,515,515,515,,,,,515,515,,,,516,516,516', -'515,516,515,515,515,516,516,,,,516,,516,516,516,516,516,516,516,,,,', -',516,516,516,516,516,516,516,,,516,,,,,,,516,,,516,516,516,516,516,516', -'516,516,,516,516,516,,516,516,,516,516,516,,,,,,,,,,,,,,,,,,,,516,,', -'516,,,516,516,,,516,,,,,,516,,,,,,,,,516,,,,,516,516,516,516,,516,516', -'516,516,,,,,516,516,,,,520,520,520,516,520,516,516,516,520,520,,,,520', -',520,520,520,520,520,520,520,,,,,,520,520,520,520,520,520,520,,,520', -',,,,,,520,,,520,520,520,520,520,520,520,520,,520,520,520,,520,520,,520', -'520,520,,,,,,,,,,,,,,,,,,,,520,,,520,,,520,520,,,520,,,,,,520,,,,,,', -',,520,,,,,520,520,520,520,,520,520,520,520,,,,,520,520,,,,526,526,526', -'520,526,520,520,520,526,526,,,,526,,526,526,526,526,526,526,526,,,,', -',526,526,526,526,526,526,526,,,526,,,,,,,526,,,526,526,526,526,526,526', -'526,526,526,526,526,526,,526,526,,526,526,526,,,,,,,,,,,,,,,,,,,,526', -',,526,,,526,526,,,526,,526,,,,526,,,526,,,,,,526,,,,,526,526,526,526', -',526,526,526,526,,,,,526,526,,,,529,529,529,526,529,526,526,526,529', -'529,,,,529,,529,529,529,529,529,529,529,,,,,,529,529,529,529,529,529', -'529,,,529,,,,,,,529,,,529,529,529,529,529,529,529,529,529,529,529,529', -',529,529,,529,529,529,,,,,,,,,,,,,,,,,,,,529,,,529,,,529,529,,,529,', -',,,,529,,,529,,,,,,529,,,,,529,529,529,529,,529,529,529,529,,,,,529', -'529,,,,554,554,554,529,554,529,529,529,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,554,554,,554,554,,554,554,554,,,,,,,,,', -',,,,,,,,,,554,,,554,,,554,554,,,554,,,,,,554,,,,,,,,,554,,,,,554,554', -'554,554,,554,554,554,554,,,,,554,554,,,,574,574,574,554,574,554,554', -'554,574,574,,,,574,,574,574,574,574,574,574,574,,,,,,574,574,574,574', -'574,574,574,,,574,,,,,,,574,,,574,574,574,574,574,574,574,574,,574,574', -'574,,574,574,,574,574,574,,,,,,,,,,,,,,,,,,,,574,,,574,,,574,574,,,574', -',574,,,,574,,,,,,,,,574,,,,,574,574,574,574,,574,574,574,574,,,,,574', -'574,,,,575,575,575,574,575,574,574,574,575,575,,,,575,,575,575,575,575', -'575,575,575,,,,,,575,575,575,575,575,575,575,,,575,,,,,,,575,,,575,575', -'575,575,575,575,575,575,575,575,575,575,,575,575,,575,575,575,,,,,,', -',,,,,,,,,,,,,575,,,575,,,575,575,,,575,,575,,575,,575,,,575,,,,,,575', -',,,,575,575,575,575,,575,575,575,575,,,,,575,575,,,,585,585,585,575', -'585,575,575,575,585,585,,,,585,,585,585,585,585,585,585,585,,,,,,585', -'585,585,585,585,585,585,,,585,,,,,,,585,,,585,585,585,585,585,585,585', -'585,585,585,585,585,,585,585,,585,585,585,,,,,,,,,,,,,,,,,,,,585,,,585', -',,585,585,,,585,,585,,585,,585,,,585,,,,,,585,,,,,585,585,585,585,,585', -'585,585,585,,,,,585,585,,,,619,619,619,585,619,585,585,585,619,619,', -',,619,,619,619,619,619,619,619,619,,,,,,619,619,619,619,619,619,619', -',,619,,,,,,,619,,,619,619,619,619,619,619,619,619,,619,619,619,,619', -'619,,619,619,619,,,,,,,,,,,,,,,,,,,,619,,,619,,,619,619,,,619,,619,', -',,619,,,,,,,,,619,,,,,619,619,619,619,,619,619,619,619,,,,,619,619,', -',,620,620,620,619,620,619,619,619,620,620,,,,620,,620,620,620,620,620', -'620,620,,,,,,620,620,620,620,620,620,620,,,620,,,,,,,620,,,620,620,620', -'620,620,620,620,620,,620,620,620,,620,620,,620,620,620,,,,,,,,,,,,,', -',,,,,,620,,,620,,,620,620,,,620,,,,,,620,,,,,,,,,620,,,,,620,620,620', -'620,,620,620,620,620,,,,,620,620,,,,623,623,623,620,623,620,620,620', -'623,623,,,,623,,623,623,623,623,623,623,623,,,,,,623,623,623,623,623', -'623,623,,,623,,,,,,,623,,,623,623,623,623,623,623,623,623,623,623,623', -'623,,623,623,,623,623,623,,,,,,,,,,,,,,,,,,,,623,,,623,,,623,623,,,623', -',623,,623,,623,,,623,,,,,,623,,,,,623,623,623,623,,623,623,623,623,', -',,,623,623,,,,624,624,624,623,624,623,623,623,624,624,,,,624,,624,624', -'624,624,624,624,624,,,,,,624,624,624,624,624,624,624,,,624,,,,,,,624', -',,624,624,624,624,624,624,624,624,624,624,624,624,,624,624,,624,624', -'624,,,,,,,,,,,,,,,,,,,,624,,,624,,,624,624,,,624,,,,624,,624,,,624,', -',,,,624,,,,,624,624,624,624,,624,624,624,624,,,,,624,624,,,,625,625', -'625,624,625,624,624,624,625,625,,,,625,,625,625,625,625,625,625,625', -',,,,,625,625,625,625,625,625,625,,,625,,,,,,,625,,,625,625,625,625,625', -'625,625,625,,625,625,625,,625,625,,625,625,625,,,,,,,,,,,,,,,,,,,,625', -',,625,,,625,625,,,625,,,,,,625,,,,,,,,,625,,,,,625,625,625,625,,625', -'625,625,625,,,,,625,625,,,,626,626,626,625,626,625,625,625,626,626,', -',,626,,626,626,626,626,626,626,626,,,,,,626,626,626,626,626,626,626', -',,626,,,,,,,626,,,626,626,626,626,626,626,626,626,,626,626,626,,626', -'626,,626,626,626,,,,,,,,,,,,,,,,,,,,626,,,626,,,626,626,,,626,,,,,,626', -',,,,,,,,626,,,,,626,626,626,626,,626,626,626,626,,,,,626,626,,,,630', -'630,630,626,630,626,626,626,630,630,,,,630,,630,630,630,630,630,630', -'630,,,,,,630,630,630,630,630,630,630,,,630,,,,,,,630,,,630,630,630,630', -'630,630,630,630,,630,630,630,,630,630,,630,630,630,,,,,,,,,,,,,,,,,', -',,630,,,630,,,630,630,,,630,,,,,,630,,,,,,,,,630,,,,,630,630,630,630', -',630,630,630,630,,,,,630,630,,,,631,631,631,630,631,630,630,630,631', -'631,,,,631,,631,631,631,631,631,631,631,,,,,,631,631,631,631,631,631', -'631,,,631,,,,,,,631,,,631,631,631,631,631,631,631,631,,631,631,631,', -'631,631,,631,631,631,,,,,,,,,,,,,,,,,,,,631,,,631,,,631,631,,,631,,', -',,,631,,,,,,,,,631,,,,,631,631,631,631,,631,631,631,631,,,,,631,631', -',,,634,634,634,631,634,631,631,631,634,634,,,,634,,634,634,634,634,634', -'634,634,,,,,,634,634,634,634,634,634,634,,,634,,,,,,,634,,,634,634,634', -'634,634,634,634,634,,634,634,634,,634,634,,634,634,634,,,,,,,,,,,,,', -',,,,,,634,,,634,,,634,634,,,634,,,,,,634,,,,,,,,,634,,,,,634,634,634', -'634,,634,634,634,634,,,,,634,634,,,,635,635,635,634,635,634,634,634', -'635,635,,,,635,,635,635,635,635,635,635,635,,,,,,635,635,635,635,635', -'635,635,,,635,,,,,,,635,,,635,635,635,635,635,635,635,635,,635,635,635', -',635,635,,635,635,635,,,,,,,,,,,,,,,,,,,,635,,,635,,,635,635,,,635,', -',,,,635,,,,,,,,,635,,,,,635,635,635,635,,635,635,635,635,,,,,635,635', -',,,659,659,659,635,659,635,635,635,659,659,,,,659,,659,659,659,659,659', -'659,659,,,,,,659,659,659,659,659,659,659,,,659,,,,,,,659,,,659,659,659', -'659,659,659,659,659,,659,659,659,,659,659,,659,659,659,,,,,,,,,,,,,', -',,,,,,659,,,659,,,659,659,,,659,,,,,,659,,,,,,,,,659,,,,,659,659,659', -'659,,659,659,659,659,,,,,659,659,,,,662,662,662,659,662,659,659,659', -'662,662,,,,662,,662,662,662,662,662,662,662,,,,,,662,662,662,662,662', -'662,662,,,662,,,,,,,662,,,662,662,662,662,662,662,662,662,,662,662,662', -',662,662,,662,662,662,,,,,,,,,,,,,,,,,,,,662,,,662,,,662,662,,,662,', -',,,,662,,,,,,,,,662,,,,,662,662,662,662,,662,662,662,662,,,,,662,662', -',,,666,666,666,662,666,662,662,662,666,666,,,,666,,666,666,666,666,666', -'666,666,,,,,,666,666,666,666,666,666,666,,,666,,,,,,,666,,,666,666,666', -'666,666,666,666,666,,666,666,666,,666,666,,,,666,,,,,,,,,,,,,,,,,,,', -'666,,,666,,,666,666,,,666,,,,,,,,,,,,,,,,,,,,666,666,666,666,,666,666', -'666,666,,,,,666,666,,,,677,677,677,666,677,666,666,666,677,677,,,,677', -',677,677,677,677,677,677,677,,,,,,677,677,677,677,677,677,677,,,677', -',,,,,,677,,,677,677,677,677,677,677,677,677,,677,677,677,,677,677,,', -',677,,,,,,,,,,,,,,,,,,,,677,,,677,,,677,677,,,677,,,,,,,,,,,,,,,,,,', -',677,677,677,677,,677,677,677,677,,,,,677,677,,,,682,682,682,677,682', -'677,677,677,682,682,,,,682,,682,682,682,682,682,682,682,,,,,,682,682', -'682,682,682,682,682,,,682,,,,,,,682,,,682,682,682,682,682,682,682,682', -',682,682,682,,682,682,,682,682,682,,,,,,,,,,,,,,,,,,,,682,,,682,,,682', -'682,,,682,,682,,,,682,,,,,,,,,682,,,,,682,682,682,682,,682,682,682,682', -',,,,682,682,,,,699,699,699,682,699,682,682,682,699,699,,,,699,,699,699', -'699,699,699,699,699,,,,,,699,699,699,699,699,699,699,,,699,,,,,,,699', -',,699,699,699,699,699,699,699,699,,699,699,699,,699,699,,699,699,699', -',,,,,,,,,,,,,,,,,,,699,,,699,,,699,699,,,699,,,,,,699,,,,,,,,,699,,', -',,699,699,699,699,,699,699,699,699,,,,,699,699,,,,725,725,725,699,725', -'699,699,699,725,725,,,,725,,725,725,725,725,725,725,725,,,,,,725,725', -'725,725,725,725,725,,,725,,,,,,,725,,,725,725,725,725,725,725,725,725', -',725,725,725,,725,725,,725,725,725,,,,,,,,,,,,,,,,,,,,725,,,725,,,725', -'725,,,725,,,,,,725,,,,,,,,,725,,,,,725,725,725,725,,725,725,725,725', -',,,,725,725,,,,731,731,731,725,731,725,725,725,731,731,,,,731,,731,731', -'731,731,731,731,731,,,,,,731,731,731,731,731,731,731,,,731,,,,,,,731', -',,731,731,731,731,731,731,731,731,,731,731,731,,731,731,,731,731,731', -',,,,,,,,,,,,,,,,,,,731,,,731,,,731,731,,,731,,,,,,731,,,,,,,,,731,,', -',,731,731,731,731,,731,731,731,731,,,,,731,731,,,,754,754,754,731,754', -'731,731,731,754,754,,,,754,,754,754,754,754,754,754,754,,,,,,754,754', -'754,754,754,754,754,,,754,,,,,,,754,,,754,754,754,754,754,754,754,754', -',754,754,754,,754,754,,754,754,754,,,,,,,,,,,,,,,,,,,,754,,,754,,,754', -'754,,,754,,,,,,754,,,,,,,,,754,,,,,754,754,754,754,,754,754,754,754', -',,,,754,754,,,,756,756,756,754,756,754,754,754,756,756,,,,756,,756,756', -'756,756,756,756,756,,,,,,756,756,756,756,756,756,756,,,756,,,,,,,756', -',,756,756,756,756,756,756,756,756,,756,756,756,,756,756,,756,756,756', -',,,,,,,,,,,,,,,,,,,756,,,756,,,756,756,,,756,,,,,,756,,,,,,,,,756,,', -',,756,756,756,756,,756,756,756,756,,,,,756,756,,,,770,770,770,756,770', -'756,756,756,770,770,,,,770,,770,770,770,770,770,770,770,,,,,,770,770', -'770,770,770,770,770,,,770,,,,,,,770,,,770,770,770,770,770,770,770,770', -',770,770,770,,770,770,,770,770,770,,,,,,,,,,,,,,,,,,,,770,,,770,,,770', -'770,,,770,,,,,,770,,,,,,,,,770,,,,,770,770,770,770,,770,770,770,770', -',,,,770,770,,,,771,771,771,770,771,770,770,770,771,771,,,,771,,771,771', -'771,771,771,771,771,,,,,,771,771,771,771,771,771,771,,,771,,,,,,,771', -',,771,771,771,771,771,771,771,771,,771,771,771,,771,771,,771,771,771', -',,,,,,,,,,,,,,,,,,,771,,,771,,,771,771,,,771,,,,,,771,,,,,,,,,771,,', -',,771,771,771,771,,771,771,771,771,,,,,771,771,,,,772,772,772,771,772', -'771,771,771,772,772,,,,772,,772,772,772,772,772,772,772,,,,,,772,772', -'772,772,772,772,772,,,772,,,,,,,772,,,772,772,772,772,772,772,772,772', -',772,772,772,,772,772,,772,772,772,,,,,,,,,,,,,,,,,,,,772,,,772,,,772', -'772,,,772,,,,,,772,,,,,,,,,772,,,,,772,772,772,772,,772,772,772,772', -',,,,772,772,,,,773,773,773,772,773,772,772,772,773,773,,,,773,,773,773', -'773,773,773,773,773,,,,,,773,773,773,773,773,773,773,,,773,,,,,,,773', -',,773,773,773,773,773,773,773,773,,773,773,773,,773,773,,773,773,773', -',,,,,,,,,,,,,,,,,,,773,,,773,,,773,773,,,773,,,,,,773,,,,,,,,,773,,', -',,773,773,773,773,,773,773,773,773,,,,,773,773,,,,787,787,787,773,787', -'773,773,773,787,787,,,,787,,787,787,787,787,787,787,787,,,,,,787,787', -'787,787,787,787,787,,,787,,,,,,,787,,,787,787,787,787,787,787,787,787', -',787,787,787,,787,787,,,,787,,,,,,,,,,,,,,,,,,,,787,,,787,,,787,787', -',,787,,,,,,,,,,,,,,,,,,,,787,787,787,787,,787,787,787,787,,,,,787,787', -',,,837,837,837,787,837,787,787,787,837,837,,,,837,,837,837,837,837,837', -'837,837,,,,,,837,837,837,837,837,837,837,,,837,,,,,,,837,,,837,837,837', -'837,837,837,837,837,,837,837,837,,837,837,,837,837,837,,,,,,,,,,,,,', -',,,,,,837,,,837,,,837,837,,,837,,,,,,837,,,,,,,,,837,,,,,837,837,837', -'837,,837,837,837,837,,,,,837,837,,,,842,842,842,837,842,837,837,837', -'842,842,,,,842,,842,842,842,842,842,842,842,,,,,,842,842,842,842,842', -'842,842,,,842,,,,,,,842,,,842,842,842,842,842,842,842,842,,842,842,842', -',842,842,,842,842,842,,,,,,,,,,,,,,,,,,,,842,,,842,,,842,842,,,842,', -'842,,,,842,,,,,,,,,842,,,,,842,842,842,842,,842,842,842,842,,,,,842', -'842,,,,859,859,859,842,859,842,842,842,859,859,,,,859,,859,859,859,859', -'859,859,859,,,,,,859,859,859,859,859,859,859,,,859,,,,,,,859,,,859,859', -'859,859,859,859,859,859,859,859,859,859,,859,859,,859,859,859,,,,,,', -',,,,,,,,,,,,,859,,,859,,,859,859,,,859,,,,859,,859,,,859,,,,,,859,,', -',,859,859,859,859,,859,859,859,859,,,,,859,859,,,,860,860,860,859,860', -'859,859,859,860,860,,,,860,,860,860,860,860,860,860,860,,,,,,860,860', -'860,860,860,860,860,,,860,,,,,,,860,,,860,860,860,860,860,860,860,860', -',860,860,860,,860,860,,860,860,860,,,,,,,,,,,,,,,,,,,,860,,,860,,,860', -'860,,,860,,,,,,860,,,,,,,,,860,,,,,860,860,860,860,,860,860,860,860', -',,,,860,860,,,,874,874,874,860,874,860,860,860,874,874,,,,874,,874,874', -'874,874,874,874,874,,,,,,874,874,874,874,874,874,874,,,874,,,,,,,874', -',,874,874,874,874,874,874,874,874,,874,874,874,,874,874,,,,874,,,,,', -',,,,,,,,,,,,,,874,,,874,,,874,874,,,874,,,,,,,,,,,,,,,,,,,,874,874,874', -'874,,874,874,874,874,,,,,874,874,,,,886,886,886,874,886,874,874,874', -'886,886,,,,886,,886,886,886,886,886,886,886,,,,,,886,886,886,886,886', -'886,886,,,886,,,,,,,886,,,886,886,886,886,886,886,886,886,,886,886,886', -',886,886,,,,886,,,,,,,,,,,,,,,,,,,,886,,,886,,,886,886,,,886,,,,,,,', -',,,,,,,,,,,,886,886,886,886,,886,886,886,886,,,,,886,886,,,,923,923', -'923,886,923,886,886,886,923,923,,,,923,,923,923,923,923,923,923,923', -',,,,,923,923,923,923,923,923,923,,,923,,,,,,,923,,,923,923,923,923,923', -'923,923,923,,923,923,923,,923,923,,923,923,923,,,,,,,,,,,,,,,,,,,,923', -',,923,,,923,923,,,923,,,,,,923,,,,,,,,,923,,,,,923,923,923,923,,923', -'923,923,923,,,,,923,923,,,,985,985,985,923,985,923,923,923,985,985,', -',,985,,985,985,985,985,985,985,985,,,,,,985,985,985,985,985,985,985', -',,985,,,,,,,985,,,985,985,985,985,985,985,985,985,985,985,985,985,,985', -'985,,985,985,985,,,,,,,,,,,,,,,,,,,,985,,,985,,,985,985,,,985,,985,', -'985,,985,,,985,,,,,,985,,,,,985,985,985,985,,985,985,985,985,,,,,985', -'985,,,,,56,,985,,985,985,985,56,56,56,,,56,56,56,,56,,,,,,,,,,56,56', -'56,,,,,,,,56,56,,56,56,56,56,56,,,,,,,,,,,,,,,,,,,,,,,,56,56,56,56,56', -'56,56,56,56,56,56,56,56,56,,,56,56,56,,,56,,,56,,,56,56,,56,,56,,56', -',56,56,,56,56,56,56,56,,56,,56,,,,,,,,,,,,,,56,,,56,56,56,56,424,56', -',56,,,,424,424,424,,,424,424,424,,424,,,,,,,,,424,424,424,424,,,,,,', -',424,424,,424,424,424,424,424,,,,,,,,,,,,,,,,,,,,,,,,424,424,424,424', -'424,424,424,424,424,424,424,424,424,424,,,424,424,424,,,424,,,424,,', -'424,424,,424,,424,,424,,424,424,,424,424,424,424,424,,424,424,424,,', -',,,,,,,,,,,424,,,424,424,424,424,425,424,,424,,,,425,425,425,,,425,425', -'425,,425,,,,,,,,,425,425,425,425,,,,,,,,425,425,,425,425,425,425,425', -',,,,,,,,,,,,,,,,,,,,,,,425,425,425,425,425,425,425,425,425,425,425,425', -'425,425,,,425,425,425,,,425,,,425,,,425,425,,425,,425,,425,,425,425', -',425,425,425,425,425,,425,425,425,,,,,,,,,,,,,,425,,,425,425,425,425', -'27,425,,425,,,,27,27,27,,,27,27,27,,27,,,,,,,,,27,27,27,,,,,,,,,27,27', -',27,27,27,27,27,,,,,,,,,,,,,,,,,,,,,,,,27,27,27,27,27,27,27,27,27,27', -'27,27,27,27,,,27,27,27,,,27,,27,27,,,27,27,,27,,27,,27,,27,27,,27,27', -'27,27,27,28,27,27,27,,,,28,28,28,,,28,28,28,,28,27,,,27,27,,27,,27,28', -'28,,,,,,,,,28,28,,28,28,28,28,28,,,,,,,,,,,,,,,,,,,,,,,,28,28,28,28', -'28,28,28,28,28,28,28,28,28,28,,,28,28,28,,,28,,28,28,,,28,28,,28,,28', -',28,,28,28,,28,28,28,28,28,,28,415,28,,,,,,415,415,415,,,415,415,415', -'28,415,,28,28,,28,,28,,415,415,415,,,,,,,,,415,415,,415,415,415,415', -'415,,,,,,,,,,,,,,,,,,,,,,,,415,415,415,415,415,415,415,415,415,415,415', -'415,415,415,,,415,415,415,,,415,,415,415,,,415,415,,415,,415,,415,,415', -'415,,415,415,415,415,415,,415,415,415,,,,,,,,,,,,,,415,,474,415,415', -',415,,415,474,474,474,,,474,474,474,646,474,646,646,646,646,646,,,,474', -'474,,,,,646,,,,,474,474,,474,474,474,474,474,,,,,,,,,,646,336,,336,336', -'336,336,336,,646,646,646,646,,,,646,336,534,,534,534,534,534,534,474', -',,,,,,474,,534,,,474,474,336,336,,646,,,,,,336,336,336,336,,,,336,534', -',,,474,474,,,,534,534,534,534,,,,534,,,474,,,474,,,,,474,8,8,8,8,8,8', -'8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,,,,8,8,8,8,8,8,8,8,8,8,,,,,,8,8', -'8,8,8,8,8,8,8,8,,8,,,,,,,,,8,8,,8,8,8,8,8,8,8,,,8,8,,,,8,8,8,8,,,,,', -',,,,,,,,8,8,,8,8,8,8,8,8,8,8,8,8,8,8,,,8,8,,,,,,,,,,,,,,8,9,9,9,9,9', -'9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,,,,9,9,9,9,9,9,9,9,9,9,,,,,,9', -'9,9,9,9,9,9,9,9,,,9,,,,,,,,,9,9,,9,9,9,9,9,9,9,,,9,9,,,,9,9,9,9,,,,', -',,,,,,,,,9,9,,9,9,9,9,9,9,9,9,9,9,9,9,,,9,9,,,,,,,,,,,,,,9,395,395,395', -'395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395', -'395,395,395,395,,,,395,395,395,395,395,395,395,395,395,395,,,,,,395', -'395,395,395,395,395,395,395,395,,,395,,,,,,,,,395,395,,395,395,395,395', -'395,395,395,,,395,395,,,,395,395,395,395,,,,,,,,,,,,,,395,395,,395,395', -'395,395,395,395,395,395,395,395,395,395,,,395,395,,,,,,,,,,,,,,395,616', -'616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616', -'616,616,616,616,616,616,,,,616,616,616,616,616,616,616,616,616,616,', -',,,,616,616,616,616,616,616,616,616,616,,,616,,,,,,,,,616,616,,616,616', -'616,616,616,616,616,,,616,616,,,,616,616,616,616,,,,,,,,,,,,,,616,616', -',616,616,616,616,616,616,616,616,616,616,616,616,,,616,616,,,,,,,,,', -',,,,616,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,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,,,71,71,,,,71', -'71,71,71,,,,,,71,,,,,,,,71,71,,71,71,71,71,71,71,71,71,71,71,71,71,', -',71,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738', -'738,738,738,738,738,738,738,738,,,,738,738,738,738,738,738,738,738,738', -'738,,,,,,738,738,738,738,738,738,738,738,738,,,738,,,,,,,,,738,738,', -'738,738,738,738,738,738,738,,,738,738,,,,738,738,738,738,,,,,,,,,,,', -',,738,738,,738,738,738,738,738,738,738,738,738,738,738,738,210,210,738', -',210,,,,,,,,,210,210,,210,210,210,210,210,210,210,,,210,210,,,,210,210', -'210,210,,,,,,210,,,,,,,,210,210,,210,210,210,210,210,210,210,210,210', -'210,210,210,211,211,210,,211,,,,,,,,,211,211,,211,211,211,211,211,211', -'211,,,211,211,,,,211,211,211,211,,,,,,211,,,,,,,,211,211,,211,211,211', -'211,211,211,211,211,211,211,211,211,259,259,211,,259,,,,,,,,,259,259', -',259,259,259,259,259,259,259,,,259,259,,,,259,259,259,259,,,,,,,,,,', -',,,259,259,,259,259,259,259,259,259,259,259,259,259,259,259,440,440', -'259,,440,,,,,,,,,440,440,,440,440,440,440,440,440,440,,,440,440,,,,440', -'440,440,440,,,,,,440,,,,,,,,440,440,,440,440,440,440,440,440,440,440', -'440,440,440,440,441,441,440,,441,,,,,,,,,441,441,,441,441,441,441,441', -'441,441,,,441,441,,,,441,441,441,441,,,,,,441,,,,,,,,441,441,,441,441', -'441,441,441,441,441,441,441,441,441,441,507,507,441,,507,,,,,,,,,507', -'507,,507,507,507,507,507,507,507,,,507,507,,,,507,507,507,507,,,,,,507', -',,,,,,,507,507,,507,507,507,507,507,507,507,507,507,507,507,507,508', -'508,507,,508,,,,,,,,,508,508,,508,508,508,508,508,508,508,,,508,508', -',,,508,508,508,508,,,,,,508,,,,,,,,508,508,,508,508,508,508,508,508', -'508,508,508,508,508,508,517,517,508,,517,,,,,,,,,517,517,,517,517,517', -'517,517,517,517,,,517,517,,,,517,517,517,517,,,,,,517,,,,,,,,517,517', -',517,517,517,517,517,517,517,517,517,517,517,517,518,518,517,,518,,', -',,,,,,518,518,,518,518,518,518,518,518,518,,,518,518,,,,518,518,518', -'518,,,,,,518,,,,,,,,518,518,,518,518,518,518,518,518,518,518,518,518', -'518,518,576,576,518,,576,,,,,,,,,576,576,,576,576,576,576,576,576,576', -',,576,576,,,,576,576,576,576,,,,,,576,,,,,,,,576,576,,576,576,576,576', -'576,576,576,576,576,576,576,576,577,577,576,,577,,,,,,,,,577,577,,577', -'577,577,577,577,577,577,,,577,577,,,,577,577,577,577,,,,,,577,,,,,,', -',577,577,,577,577,577,577,577,577,577,577,577,577,577,577,583,583,577', -',583,,,,,,,,,583,583,,583,583,583,583,583,583,583,,,583,583,,,,583,583', -'583,583,,,,,,583,,,,,,,,583,583,,583,583,583,583,583,583,583,583,583', -'583,583,583,584,584,583,,584,,,,,,,,,584,584,,584,584,584,584,584,584', -'584,,,584,584,,,,584,584,584,584,,,,,,584,,,,,,,,584,584,,584,584,584', -'584,584,584,584,584,584,584,584,584,939,939,584,,939,,,,,,,,,939,939', -',939,939,939,939,939,939,939,,,939,939,,,,939,939,939,939,,,,,,939,', -',,,,,,939,939,,939,939,939,939,939,939,939,939,939,939,939,939,986,986', -'939,,986,,,,,,,,,986,986,,986,986,986,986,986,986,986,,,986,986,,,,986', -'986,986,986,,,,,,986,,,,,,,,986,986,,986,986,986,986,986,986,986,986', -'986,986,986,986,987,987,986,,987,,,,,,,,,987,987,,987,987,987,987,987', -'987,987,,,987,987,,,,987,987,987,987,,,,,,987,,,,,,,,987,987,,987,987', -'987,987,987,987,987,987,987,987,987,987,,693,987,693,693,693,693,693', -',695,,695,695,695,695,695,,693,,,,,,,736,695,736,736,736,736,736,,,', -',,,,,693,736,,,,,,,695,693,693,693,693,,,,693,695,695,695,695,,,736', -'695,737,,737,737,737,737,737,736,736,736,736,,,,736,865,737,865,865', -'865,865,865,,867,,867,867,867,867,867,,865,,,,,,,737,867,893,,893,893', -'893,893,893,737,737,737,737,,,865,737,,893,,,,,867,865,865,865,865,', -',,865,867,867,867,867,,,,867,893,897,,897,897,897,897,897,,893,893,893', -'893,,,,893,897,899,,899,899,899,899,899,,971,,971,971,971,971,971,,899', -',,,,897,,973,971,973,973,973,973,973,,,897,897,,,,897,899,973,,,,,,', -'971,,,899,899,,,,899,971,971,971,971,,,973,971,975,,975,975,975,975', -'975,,,973,973,,,,973,977,975,977,977,977,977,977,,989,,989,989,989,989', -'989,1015,977,1015,1015,1015,1015,1015,,975,989,,,,,,,1015,,,975,975', -',,977,975,,,,,,,989,,,977,977,,,1015,977,,,989,989,,,,989,,1015,1015', -',,,1015' ] - racc_action_check = arr = ::Array.new(25292, 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 = [ - 750, 47, nil, 123, nil, 5120, 1299, -62, 23249, 23378, - -21, nil, -43, 71, 533, -41, 34, -4, nil, -72, - 5252, 1173, 168, nil, 157, nil, 6, 22760, 22871, 5384, - 5516, 5648, nil, 891, 5780, 5912, nil, 71, 227, 254, - 154, 228, 6052, 6184, 6316, 95, 544, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 22355, nil, -71, 6448, - 6580, -23, nil, 6712, 6844, nil, nil, 6976, 7116, 7248, - 7380, 23765, nil, nil, nil, nil, nil, 470, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 0, nil, nil, 113, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 262, - nil, 7520, nil, nil, nil, nil, 7660, 7792, 7924, 8056, - 8196, 1032, nil, 220, 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, 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, nil, nil, 141, nil, 1173, 8328, 8460, 8592, - 23941, 24003, 8724, 8856, 8988, 9120, 9252, 9384, nil, nil, - 546, -77, -62, 233, 131, 196, 256, nil, 9516, 1314, - 273, 9648, 9780, 9912, 10044, 10176, 10308, 10440, 10572, 10704, - 10836, 10968, 11100, 11232, 11364, 11496, 11628, 11760, 11892, 12024, - 12156, 12288, 12420, 12552, 12684, 12816, nil, nil, nil, 24065, - nil, nil, 275, 12948, 13080, nil, nil, nil, nil, nil, - nil, nil, 13212, nil, 1314, nil, 262, 314, nil, 13344, - 366, 13476, nil, nil, 13608, 13740, nil, nil, 296, nil, - 13880, 1440, 368, 362, 1455, 384, 444, 418, 14012, 1596, - 578, 615, 681, 505, 750, nil, 478, 439, 33, nil, - nil, nil, 501, 258, 478, 14152, nil, 299, 561, 753, - nil, 569, nil, 14284, 1737, 14416, 528, nil, 105, 259, - 571, 585, 454, 619, nil, nil, 23117, 488, -1, 26, - 14548, 14680, 458, 706, 596, -23, -19, 792, 691, -18, - 724, nil, nil, 227, 281, -34, nil, 822, nil, 34, - 14812, nil, nil, nil, 264, 409, 448, 451, 478, 508, - 512, 532, 554, nil, 567, nil, 14944, nil, 275, 335, - 363, 375, 392, -45, -41, 395, nil, nil, nil, nil, - nil, nil, nil, nil, 643, 23507, nil, nil, nil, nil, - 650, nil, nil, 642, 15076, 644, nil, nil, 891, 658, - nil, 672, 676, 332, 342, 22984, nil, nil, nil, 224, - 337, 723, nil, nil, 22490, 22625, nil, 1455, nil, 689, - nil, nil, 750, nil, nil, nil, nil, -33, nil, 746, - 24127, 24189, 15208, 239, 15340, 15472, 15604, 3147, 3288, 538, - 659, 778, 783, 788, 798, 5120, 5252, 5384, 3429, 3570, - 3711, 3852, 3993, 4134, 4275, 4416, 4557, 4698, 621, 630, - 4839, 4980, 15736, -46, 23114, nil, nil, nil, nil, 747, - nil, 159, 279, 750, nil, nil, 15868, nil, 16000, nil, - 16132, nil, 332, nil, nil, nil, 16272, 1455, 1878, 752, - 751, nil, nil, 754, 16412, 767, 16544, 24251, 24313, 891, - 809, nil, 16676, 769, nil, 16808, 16940, 24375, 24437, 1596, - 17072, 897, 896, 694, 824, nil, 17204, nil, nil, 17336, - nil, nil, nil, nil, 23134, nil, 783, 784, nil, 785, - 793, 794, nil, nil, nil, nil, nil, nil, nil, nil, - 787, 477, nil, nil, 17468, nil, nil, nil, 880, nil, - nil, nil, 881, nil, nil, 882, 2019, 935, nil, 2160, - 63, 119, 935, 945, 17600, 17732, 24499, 24561, 10, nil, - nil, 894, nil, 24623, 24685, 17864, nil, nil, nil, 587, - 193, 2301, 883, nil, -14, nil, nil, nil, 733, nil, - nil, nil, 858, nil, nil, 151, nil, 222, nil, nil, - 846, nil, 847, nil, nil, nil, 23636, nil, 852, 17996, - 18128, 380, 896, 18260, 18392, 18524, 18656, 899, nil, nil, - 18788, 18920, 907, nil, 19052, 19184, nil, nil, 350, 416, - 470, 607, 874, 1032, 1737, nil, 23078, nil, 2442, 979, - 5, 316, nil, 2583, 2724, nil, 882, nil, 929, 19316, - nil, nil, 19448, nil, 905, -81, 19580, 888, nil, 893, - 137, 179, 935, 340, 1032, 936, 895, 19712, 1878, 972, - 20, 1026, 19844, nil, 913, nil, 539, 21, 914, 495, - nil, nil, 740, 24934, nil, 24942, nil, 5959, nil, 19976, - nil, 607, nil, 912, 230, 925, nil, nil, nil, nil, - 850, nil, 1044, nil, nil, nil, nil, 1050, nil, 32, - 929, 26, 41, 123, 182, 20108, 414, 1173, nil, 937, - 2865, 20240, nil, nil, 1060, 3006, 24957, 24997, 23879, nil, - nil, nil, nil, nil, nil, 3147, nil, nil, nil, nil, - nil, nil, nil, 937, 20372, 2019, 20504, nil, 938, nil, - 2160, nil, 2301, nil, nil, 2442, nil, 2583, nil, 2724, - 20636, 20768, 20900, 21032, 429, 940, 940, 954, nil, 958, - 961, 980, nil, 1009, 992, 991, 989, 21164, nil, nil, - 1128, nil, nil, 3288, 1031, 1137, nil, nil, nil, nil, - 1013, 378, nil, nil, 1149, nil, 3429, 1024, 1072, nil, - nil, 1072, nil, nil, 3570, 3711, 1074, 1032, nil, nil, - nil, 1033, 1036, nil, 1046, 1047, nil, 1051, nil, nil, - 1055, 614, 1053, 600, nil, 1188, nil, 21296, 1190, 3852, - 3993, nil, 21428, 4134, 81, 122, nil, 1191, 611, 4275, - nil, 1192, 1078, 613, nil, 1087, 1095, nil, 2865, 21560, - 21692, nil, 525, nil, nil, 25012, nil, 25020, nil, 7427, - nil, nil, 1123, 1159, 21824, 933, 1181, nil, 1141, nil, - nil, nil, 4416, nil, nil, 33, 21956, nil, nil, 1146, - 1255, nil, nil, 25037, nil, 14059, nil, 25076, nil, 25093, - nil, nil, nil, nil, 330, 3415, 1134, nil, 36, nil, - 1264, 1269, nil, 47, nil, nil, nil, 1277, nil, nil, - nil, 1197, nil, 22088, 1154, nil, nil, 1164, 1165, 1167, - 1170, nil, 1172, nil, 643, nil, nil, nil, 963, 24747, - nil, nil, nil, 4557, 1035, 1074, 1104, 1252, 1176, nil, - nil, nil, 1174, 1177, 1187, 1188, 1189, 3556, 1192, 3589, - 4698, nil, nil, nil, nil, nil, 4839, nil, 4980, 3006, - nil, 25101, nil, 25116, nil, 25156, nil, 25171, nil, nil, - nil, 1300, 1237, 1238, 1323, 22220, 24809, 24871, 1215, 25179, - nil, nil, nil, nil, 3697, 1216, 862, 1347, 1361, 1240, - 1243, 1261, 1262, nil, nil, 1270, 40, 42, 112, 1314, - 1268, 1271, nil, nil, nil, 25186, nil, nil, nil, nil, - 43, nil, 1275, nil ] - -racc_action_default = [ - -3, -597, -1, -583, -4, -597, -7, -597, -597, -597, - -597, -29, -597, -597, -597, -281, -597, -40, -43, -585, - -597, -48, -50, -51, -52, -56, -258, -258, -258, -295, - -330, -331, -68, -11, -72, -80, -82, -597, -488, -489, - -597, -597, -597, -597, -597, -585, -239, -272, -273, -274, - -275, -276, -277, -278, -279, -280, -573, -283, -285, -596, - -563, -303, -391, -597, -597, -308, -311, -583, -597, -597, - -597, -597, -332, -333, -429, -430, -431, -432, -433, -454, - -436, -437, -456, -458, -441, -446, -450, -452, -468, -456, - -470, -472, -473, -474, -475, -571, -477, -478, -572, -480, - -481, -482, -483, -484, -485, -486, -487, -492, -493, -597, - -2, -584, -592, -593, -594, -6, -597, -597, -597, -597, - -597, -3, -17, -597, -111, -112, -113, -114, -115, -116, - -117, -118, -119, -123, -124, -125, -126, -127, -128, -129, - -130, -131, -132, -133, -134, -135, -136, -137, -138, -139, - -140, -141, -142, -143, -144, -145, -146, -147, -148, -149, - -150, -151, -152, -153, -154, -155, -156, -157, -158, -159, - -160, -161, -162, -163, -164, -165, -166, -167, -168, -169, - -170, -171, -172, -173, -174, -175, -176, -177, -178, -179, - -180, -181, -182, -183, -184, -185, -186, -187, -188, -189, - -190, -191, -192, -193, -22, -120, -11, -597, -597, -248, - -597, -597, -597, -597, -597, -597, -597, -585, -586, -47, - -597, -488, -489, -597, -281, -597, -597, -229, -597, -11, - -597, -597, -597, -597, -597, -597, -597, -597, -597, -597, - -597, -597, -597, -597, -597, -597, -597, -597, -597, -597, - -597, -597, -597, -597, -597, -597, -236, -398, -400, -597, - -581, -582, -57, -248, -597, -302, -404, -413, -415, -63, - -410, -64, -585, -65, -240, -253, -262, -262, -257, -597, - -263, -597, -454, -565, -597, -597, -66, -67, -583, -12, - -597, -15, -597, -70, -11, -585, -597, -73, -76, -11, - -88, -89, -597, -597, -96, -295, -298, -585, -597, -330, - -331, -334, -411, -597, -78, -597, -84, -292, -471, -597, - -214, -215, -230, -597, -11, -597, -585, -241, -589, -589, - -597, -597, -589, -597, -304, -305, -521, -49, -597, -597, - -597, -597, -583, -597, -584, -488, -489, -597, -597, -281, - -597, -344, -345, -106, -107, -597, -109, -597, -281, -597, - -597, -488, -489, -323, -111, -112, -153, -154, -155, -171, - -176, -183, -186, -325, -597, -561, -597, -434, -597, -597, - -597, -597, -597, -597, -597, -597, 1024, -5, -595, -23, - -24, -25, -26, -27, -597, -597, -19, -20, -21, -121, - -597, -30, -39, -268, -597, -597, -267, -31, -196, -585, - -249, -262, -262, -574, -575, -258, -408, -576, -577, -575, - -574, -258, -407, -409, -576, -577, -37, -204, -38, -597, - -41, -42, -194, -263, -44, -45, -46, -585, -301, -597, - -597, -597, -248, -292, -597, -597, -597, -205, -206, -207, - -208, -209, -210, -211, -212, -216, -217, -218, -219, -220, - -221, -222, -223, -224, -225, -226, -227, -228, -231, -232, - -233, -234, -597, -380, -258, -574, -575, -54, -58, -585, - -259, -380, -380, -585, -297, -254, -597, -255, -597, -260, - -597, -264, -597, -568, -570, -10, -584, -14, -3, -585, - -69, -290, -85, -74, -597, -585, -248, -597, -597, -95, - -597, -471, -597, -81, -86, -597, -597, -597, -597, -235, - -597, -421, -597, -286, -597, -242, -591, -590, -244, -591, - -293, -294, -564, -392, -521, -395, -560, -560, -504, -506, - -506, -506, -520, -522, -523, -524, -525, -526, -527, -528, - -529, -597, -531, -533, -535, -540, -542, -543, -545, -550, - -552, -553, -555, -556, -557, -597, -11, -335, -336, -11, - -597, -597, -597, -597, -597, -248, -597, -597, -292, -316, - -106, -107, -108, -597, -597, -248, -319, -494, -495, -597, - -597, -11, -499, -327, -585, -435, -455, -460, -597, -462, - -438, -457, -597, -459, -440, -597, -443, -597, -445, -448, - -597, -449, -597, -469, -8, -18, -597, -28, -271, -597, - -597, -412, -597, -250, -252, -597, -597, -59, -247, -405, - -597, -597, -61, -406, -597, -597, -300, -587, -574, -575, - -574, -575, -585, -194, -585, -381, -585, -383, -11, -53, - -401, -380, -245, -11, -11, -296, -262, -261, -265, -597, - -566, -567, -597, -13, -597, -71, -597, -77, -83, -585, - -574, -575, -246, -92, -94, -597, -79, -597, -203, -213, - -585, -596, -596, -284, -585, -289, -589, -597, -585, -597, - -502, -503, -597, -597, -513, -597, -516, -597, -518, -597, - -346, -597, -348, -350, -357, -585, -534, -544, -554, -558, - -596, -337, -596, -309, -338, -339, -312, -597, -315, -597, - -585, -574, -575, -578, -291, -597, -106, -107, -110, -585, - -11, -597, -497, -321, -597, -11, -521, -521, -597, -562, - -461, -464, -465, -466, -467, -11, -439, -442, -444, -447, - -451, -453, -122, -269, -597, -197, -597, -588, -262, -33, - -199, -34, -200, -60, -35, -202, -36, -201, -62, -195, - -597, -597, -597, -597, -412, -597, -560, -560, -362, -364, - -364, -364, -379, -597, -585, -385, -529, -537, -538, -548, - -597, -403, -402, -11, -597, -597, -256, -266, -569, -16, - -75, -90, -87, -299, -596, -342, -11, -422, -596, -423, - -424, -597, -243, -393, -11, -11, -597, -560, -541, -559, - -505, -506, -506, -532, -506, -506, -551, -506, -529, -546, - -585, -597, -355, -597, -530, -597, -340, -597, -597, -11, - -11, -314, -597, -11, -412, -597, -412, -597, -597, -11, - -324, -597, -585, -597, -328, -597, -270, -32, -198, -251, - -597, -237, -597, -360, -361, -370, -372, -597, -375, -597, - -377, -382, -597, -597, -597, -536, -597, -399, -597, -414, - -416, -9, -11, -428, -343, -597, -597, -426, -287, -597, - -597, -394, -501, -597, -509, -597, -511, -597, -514, -597, - -517, -519, -347, -349, -353, -597, -358, -306, -597, -307, - -597, -597, -265, -596, -317, -320, -496, -597, -326, -498, - -500, -499, -463, -597, -560, -539, -363, -364, -364, -364, - -364, -549, -364, -384, -585, -387, -389, -390, -547, -597, - -292, -55, -427, -11, -97, -98, -597, -597, -105, -425, - -396, -397, -506, -506, -506, -506, -351, -597, -356, -597, - -11, -310, -313, -417, -418, -419, -11, -322, -11, -238, - -359, -597, -367, -597, -369, -597, -373, -597, -376, -378, - -386, -597, -291, -578, -421, -248, -597, -597, -104, -597, - -507, -510, -512, -515, -597, -354, -596, -597, -597, -364, - -364, -364, -364, -388, -420, -585, -574, -575, -578, -103, - -506, -352, -341, -318, -329, -597, -365, -368, -371, -374, - -412, -508, -364, -366 ] - -clist = [ -'216,275,275,275,14,327,373,409,573,14,522,276,276,276,266,270,311,311', -'258,2,415,421,334,431,220,681,323,259,122,205,535,127,127,220,220,220', -'406,14,302,302,550,328,428,478,297,130,130,132,132,542,311,311,311,110', -'114,338,339,487,438,342,513,479,735,835,582,318,660,220,220,474,111', -'220,347,357,357,705,621,826,219,6,314,690,691,804,6,783,566,569,713', -'716,378,293,295,780,127,262,269,271,906,903,525,528,115,931,532,379', -'935,660,389,390,391,392,385,484,838,14,937,343,114,1,220,220,220,220', -'14,14,881,816,359,363,648,273,286,287,605,607,500,663,653,654,394,823', -'204,352,402,395,277,277,277,651,616,472,657,13,657,923,330,650,13,375', -'331,335,350,586,374,324,325,684,326,340,958,694,696,698,839,341,329', -'332,840,725,966,275,730,849,591,592,13,738,921,405,6,782,487,784,934', -'405,533,813,416,393,6,700,660,336,687,473,481,931,387,482,14,220,220', -'220,1003,963,220,220,220,220,220,220,995,872,937,830,808,903,688,885', -'377,296,380,14,425,275,275,717,550,381,642,382,383,384,275,740,276,542', -'745,667,415,421,731,821,276,818,925,676,,1011,,,,,13,401,407,220,220', -',426,430,,13,13,826,220,734,636,,311,601,603,606,606,,,601,510,657,657', -',728,492,14,,266,311,14,,270,,302,14,669,,,524,793,774,,,927,823,,964', -',672,,302,652,863,864,,655,514,,672,14,220,,,570,571,,,801,511,495,114', -'665,,,503,220,220,668,823,,1012,786,700,293,499,832,496,,293,505,13', -',,892,914,220,,480,,,497,,,,720,483,,,593,,,220,277,13,729,,,672,844', -',277,622,968,572,114,672,,846,550,,550,,,,628,400,,,,763,633,587,800', -',768,275,615,847,,127,,,851,,,,823,,296,416,,852,853,130,,132,739,796', -'660,,,550,550,,13,431,,220,13,,542,542,,13,894,896,,898,900,812,901', -',333,628,,425,,,843,,970,,,,,,,,13,275,,,700,,700,627,,311,,1004,,632', -',296,,311,416,,296,,26,14,,14,,26,416,,748,302,748,220,809,781,,514', -',302,664,,26,,803,514,,220,657,,,26,26,26,425,26,,,917,,,796,,,425,', -'649,,,834,275,,,,,,,956,700,719,275,,822,,824,26,26,416,,26,,,786,14', -'786,416,14,,,,6,965,220,,,,,990,991,992,993,,220,,,,,,14,,550,,,425', -',,656,,,425,700,403,700,26,792,,,433,26,26,26,26,26,26,714,714,622,', -'775,,785,810,220,220,,,943,220,220,752,,220,127,732,733,1021,686,700', -'791,,,311,13,622,13,14,130,998,132,960,14,14,311,628,,,633,405,811,', -',,785,302,902,1020,854,,786,514,,,,489,302,491,759,761,493,494,802,764', -'766,,,430,919,,,,,,,,622,,,,26,26,26,26,,622,26,26,26,26,26,26,845,', -'13,,,13,848,,,,,26,220,,928,,929,14,220,,,,14,758,,,,13,,,,,14,883,', -'15,,887,,,15,,952,220,127,26,26,710,785,,712,,311,,26,,,,,,,,,,,,1005', -',15,304,304,,26,,875,,26,,,672,14,26,,,13,,16,,618,13,13,16,,14,,,,857', -',,,14,14,349,358,358,26,26,,,,,908,,,,,,,16,999,,26,26,220,,14,14,,790', -'14,,,,794,795,14,777,,311,,,26,,,,15,,,778,,311,,,351,15,15,,26,,,938', -',,,,13,,,14,658,13,333,946,661,,779,,,714,817,13,916,,,,,920,,,,,819', -',,819,,16,980,,,,,,,,16,16,,,658,,,333,,,,,,,,787,,,26,825,855,827,', -'13,14,,,,,,,,706,,275,15,13,,,425,,14,,,13,13,,14,,14,,416,433,,,,,', -'15,,,,,622,,,220,,878,13,13,,26,13,26,,,,,13,,884,26,,,,16,425,,889', -'890,,,429,,,26,753,,,,658,333,,,,,,,16,,,13,,910,911,,,913,15,,,,15', -',,,304,15,,,,337,337,,,337,797,,,798,,26,,304,26,,924,,,777,26,777,15', -'777,,,942,,819,807,26,778,,778,,778,26,,,16,,,13,16,,,829,,16,,,,,,337', -'337,337,337,,13,930,,932,,,13,,13,,,26,26,,16,,26,26,,,26,866,868,870', -',,,953,984,954,,955,,,26,,,,,26,26,787,856,,787,996,787,,787,,,997,', -',,,,38,,,,,38,,,,777,,777,,777,,777,,,,,,778,,778,,778,,778,,,,,,38', -'300,300,434,435,436,437,,,,,,,,,1000,,1001,,1002,777,26,,,,,26,26,,', -',26,778,1010,,345,361,361,361,,912,26,,,,15,,15,,,,,26,304,,,,333,,1022', -'787,304,787,,787,,787,,,,,,,,,,,,38,972,974,976,978,,979,,,38,38,26', -',,,,,,16,,16,,,,26,,787,,,,,,26,26,,,523,15,,,15,,,,,,,,,,,337,337,', -',26,,26,26,,,26,15,,,,,26,,744,,590,,1016,1017,1018,1019,,,,,,,,,,,594', -'16,,,16,,,,38,1023,,,,26,,,,,,,,,,,,,16,,,,,38,15,,,,,15,15,,,,,,,,', -',,,304,,,,,,,,,,,304,,,,,,,,429,,,,,26,,,,,,,,,16,,,,,16,16,39,26,38', -',,39,38,26,,26,300,38,,,,,,,,,,,,,15,,26,300,,15,,,,39,301,301,38,,', -'15,,,,,,,,,,,,,,,680,,,,,,,,,,,,,,346,362,362,362,,,,16,,,,,16,358,', -',,,,15,,,16,,,,,,,,,,15,,,,,,,,15,15,,39,,,,,,,,,39,39,,,,,,,,,,,,15', -'15,,,15,16,,,,,15,,,,,,,,16,,,,,,,,16,16,,,,,,,,358,,,,,,,,15,,,,948', -',,,16,16,,,16,,,,,,16,,,,,,,,,,,,39,,38,,38,,,,,,300,,,,,,,,300,,,16', -',39,,949,,,,,,15,,,,,,,,,,,,,,,,,15,,,,,337,15,,15,,,337,,,,,,,,,,,', -',38,,,38,,,,,,,16,,39,,,,39,,,,301,39,,,,38,,16,,,,,,16,,16,,301,,,', -',,,,,39,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,38,,,,,38,38,,,,,337,,,,', -',,300,,,,,,,,,,,300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,', -',,,,38,,,,,38,,,,,,,,,,38,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,39,', -'39,361,,,,,301,38,,,,,,,301,,,,,,38,,,,,,,,38,38,,,,,,,,,,,,,,,,,,,', -',,,,38,38,,,38,,,,,,38,,,,,39,,,39,,,,,,,,,,,,,,,,,361,,,,,39,,,38,', -',,944,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,39,,,,,39,39', -'38,,,,,,,,,,,301,,,,,,38,,,,227,301,38,,38,,,,,274,274,274,,,,,,,,,', -',320,321,322,,,,,,,,,,,,,,,274,274,,,,,,,,,,,,,,39,,,,,39,,,,,,,,,,39', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,362,,,,,,39,,,,,,,,,,,,,39', -',,,,,,,39,39,,,,,,,,,,,,,,,,,,,,,,,,39,39,,,39,,,,,,39,,,,,,,,,,,,,', -'274,408,274,,,427,432,,,,,362,,,,,,,,39,,227,,945,447,448,449,450,451', -'452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468', -'469,470,471,,,,,,,,274,274,,,,,,,,274,,,,,,,274,,274,,,274,274,,39,', -',,,,,,,,,,,,,,,39,,,,,,39,,39,,,,,,,,,,,519,,,,,,,,,,,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,274,,,,,,,,', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,,274,,427,643,408,,,,,,,,,,,,,,,,,,,,,,', -',,,644,,,,,,,,,,,,,,274,,274,,274,,,,,,,,,,,,,,,,274,,,,,,,,,678,679', -',,,,,,,,,274,,,274,,,,,,,,,,,,,,,,,,,,,,,,,274,,,,,,,,,,,,,,,,,,,,274', -'274,,,,,,,,,,274,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,274,755,,,274,274', -'760,762,,,,765,767,,,643,769,,,,,,,,,,,,,,,,,,,,,,,,274,,,274,,,,,,', -',,,,,,,,,,,,,274,,,,,,,,,,,,,,,,,274,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,,,,,,,,,,274,,858,,,,,,,,,,,,,,760,762,767,765,,,,,,,', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,274,,,', -',,,,,,,,,,,,,274,858,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,,969,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,', -',,,,,,,,,,,,274' ] - racc_goto_table = arr = ::Array.new(3100, 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 = [ -'31,33,33,33,22,69,56,23,94,22,8,70,70,70,73,73,64,64,140,2,37,37,88', -'18,22,10,31,36,15,15,139,57,57,22,22,22,27,22,22,22,168,70,27,39,49', -'60,60,61,61,163,64,64,64,4,97,17,17,75,47,17,51,23,98,92,54,63,178,22', -'22,37,6,22,22,22,22,118,24,174,20,7,50,123,123,11,7,131,91,91,93,93', -'151,45,46,128,57,38,38,38,119,116,71,71,5,175,71,152,133,178,17,17,17', -'17,152,47,11,22,134,4,97,1,22,22,22,22,22,22,12,131,55,55,40,44,44,44', -'155,155,47,14,40,40,2,169,16,19,28,30,72,72,72,42,62,66,76,21,76,67', -'68,74,21,86,87,90,95,96,99,100,101,102,103,104,119,166,166,166,105,106', -'72,72,107,108,109,33,110,111,112,113,21,114,115,70,7,120,75,126,132', -'70,135,136,73,7,7,117,178,137,138,141,143,175,5,144,22,22,22,22,133', -'145,22,22,22,22,22,22,119,131,134,118,146,116,139,147,150,9,153,22,57', -'33,33,94,168,154,23,157,158,159,33,160,70,163,161,51,37,37,162,167,70', -'171,172,51,,119,,,,,21,20,20,22,22,,20,20,,21,21,174,22,8,47,,64,156', -'156,156,156,,,156,31,76,76,,54,151,22,,73,64,22,,73,,22,22,23,,,31,40', -'24,,,128,169,,11,,37,,22,47,123,123,,47,49,,37,22,22,,,17,17,,,24,63', -'4,97,47,,,50,22,22,47,169,,92,168,117,45,46,117,6,,45,46,21,,,123,93', -'22,,44,,,7,,,,23,44,,,36,,,22,72,21,23,,,37,24,,72,31,98,4,97,37,,24', -'168,,168,,,,73,9,,,,39,73,97,51,,39,33,15,8,,57,,,8,,,,169,,9,73,,139', -'139,60,,61,47,75,178,,,168,168,,21,18,,22,21,,163,163,,21,166,166,,166', -'166,71,166,,65,73,,57,,,91,,123,,,,,,,,21,33,,,117,,117,38,,64,,10,', -'38,,9,,64,73,,9,,41,22,,22,,41,73,,156,22,156,22,27,129,,49,,22,2,,41', -',47,49,,22,76,,,41,41,41,57,41,,,8,,,75,,,57,,38,,,47,33,,,,,,,117,117', -'70,33,,129,,129,41,41,73,,41,,,168,22,168,73,22,,,,7,94,22,,,,,166,166', -'166,166,,22,,,,,,22,,168,,,57,,,72,,,57,117,65,117,41,88,,,65,41,41', -'41,41,41,41,97,97,31,,31,,31,69,22,22,,,91,22,22,15,,22,57,97,97,166', -'72,117,140,,,64,21,31,21,22,60,8,61,91,22,22,64,73,,,73,70,31,,,,31', -'22,47,24,56,,168,49,,,,65,22,65,20,20,65,65,49,20,20,,,20,47,,,,,,,', -'31,,,,41,41,41,41,,31,41,41,41,41,41,41,17,,21,,,21,17,,,,,41,22,,129', -',129,22,22,,,,22,72,,,,21,,,,,22,69,,25,,69,,,25,,129,22,57,41,41,9', -'31,,9,,64,,41,,,,,,,,,,,,23,,25,25,25,,41,,22,,41,,,37,22,41,,,21,,26', -',65,21,21,26,,22,,,,20,,,,22,22,25,25,25,41,41,,,,,17,,,,,,,26,129,', -'41,41,22,,22,22,,9,22,,,,9,9,22,122,,64,,,41,,,,25,,,124,,64,,,26,25', -'25,,41,,,22,,,,,21,,,22,65,21,65,22,65,,127,,,97,122,21,97,,,,,97,,', -',,124,,,124,,26,31,,,,,,,,26,26,,,65,,,65,,,,,,,,170,,,41,127,9,127', -',21,22,,,,,,,,65,,33,25,21,,,57,,22,,,21,21,,22,,22,,73,65,,,,,,25,', -',,,31,,,22,,9,21,21,,41,21,41,,,,,21,,9,41,,,,26,57,,9,9,,,26,,,41,65', -',,,65,65,,,,,,,26,,,21,,9,9,,,9,25,,,,25,,,,25,25,,,,29,29,,,29,65,', -',65,,41,,25,41,,122,,,122,41,122,25,122,,,9,,124,65,41,124,,124,,124', -'41,,,26,,,21,26,,,65,,26,,,,,,29,29,29,29,,21,127,,127,,,21,,21,,,41', -'41,,26,,41,41,,,41,125,125,125,,,,127,9,127,,127,,,41,,,,,41,41,170', -'65,,170,9,170,,170,,,9,,,,,,52,,,,,52,,,,122,,122,,122,,122,,,,,,124', -',124,,124,,124,,,,,,52,52,52,29,29,29,29,,,,,,,,,127,,127,,127,122,41', -',,,,41,41,,,,41,124,127,,52,52,52,52,,65,41,,,,25,,25,,,,,41,25,,,,65', -',127,170,25,170,,170,,170,,,,,,,,,,,,52,125,125,125,125,,125,,,52,52', -'41,,,,,,,26,,26,,,,41,,170,,,,,,41,41,,,29,25,,,25,,,,,,,,,,,29,29,', -',41,,41,41,,,41,25,,,,,41,,25,,29,,125,125,125,125,,,,,,,,,,,29,26,', -',26,,,,52,125,,,,41,,,,,,,,,,,,,26,,,,,52,25,,,,,25,25,,,,,,,,,,,,25', -',,,,,,,,,,25,,,,,,,,26,,,,,41,,,,,,,,,26,,,,,26,26,53,41,52,,,53,52', -'41,,41,52,52,,,,,,,,,,,,,25,,41,52,,25,,,,53,53,53,52,,,25,,,,,,,,,', -',,,,,29,,,,,,,,,,,,,,53,53,53,53,,,,26,,,,,26,25,,,,,,25,,,26,,,,,,', -',,,25,,,,,,,,25,25,,53,,,,,,,,,53,53,,,,,,,,,,,,25,25,,,25,26,,,,,25', -',,,,,,,26,,,,,,,,26,26,,,,,,,,25,,,,,,,,25,,,,25,,,,26,26,,,26,,,,,', -'26,,,,,,,,,,,,53,,52,,52,,,,,,52,,,,,,,,52,,,26,,53,,26,,,,,,25,,,,', -',,,,,,,,,,,,25,,,,,29,25,,25,,,29,,,,,,,,,,,,,52,,,52,,,,,,,26,,53,', -',,53,,,,53,53,,,,52,,26,,,,,,26,,26,,53,,,,,,,,,53,,,,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,,,,,52,,,,,52,52,,,,,29,,,,,,,52,,,,,,,,,,,52,,,,,,,,', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,52,,,,,52,,,,,,,,,,52,,', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,53,,53,52,,,,,53,52,,,,,,,53,,,', -',,52,,,,,,,,52,52,,,,,,,,,,,,,,,,,,,,,,,,52,52,,,52,,,,,,52,,,,,53,', -',53,,,,,,,,,,,,,,,,,52,,,,,53,,,52,,,,52,,,,,,,,,,,,,,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,,,,,,,,,53,,,,,53,53,52,,,,,,,,,,,53,,,,,,52,,,,32,53', -'52,,52,,,,,32,32,32,,,,,,,,,,,32,32,32,,,,,,,,,,,,,,,32,32,,,,,,,,,', -',,,,53,,,,,53,,,,,,,,,,53,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,53', -',,,,,53,,,,,,,,,,,,,53,,,,,,,,53,53,,,,,,,,,,,,,,,,,,,,,,,,53,53,,,53', -',,,,,53,,,,,,,,,,,,,,32,32,32,,,32,32,,,,,53,,,,,,,,53,,32,,53,32,32', -'32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32', -',,,,,,,32,32,,,,,,,,32,,,,,,,32,,32,,,32,32,,53,,,,,,,,,,,,,,,,,53,', -',,,,53,,53,,,,,,,,,,,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,', -',,,,,,,,32,,32,32,32,,,,,,,,,,,,,,,,,,,,,,,,,,32,,,,,,,,,,,,,,32,,32', -',32,,,,,,,,,,,,,,,,32,,,,,,,,,32,32,,,,,,,,,,32,,,32,,,,,,,,,,,,,,,', -',,,,,,,,,32,,,,,,,,,,,,,,,,,,,,32,32,,,,,,,,,,32,,,,,,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,32,32,,,32,32,32,32,,,,32,32,,,32,32,,,,,,,,,,,,,,,,,', -',,,,,,32,,,32,,,,,,,,,,,,,,,,,,,,32,,,,,,,,,,,,,,,,,32,,,,,,,,,,,,,', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,32,,32,,,,,,,,,,,,,,32,32,32', -'32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,', -',,,32,,,,,,,,,,,,,,,,,32,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,,,,,,,,,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,,,,,32' ] - racc_goto_check = arr = ::Array.new(3100, 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_goto_pointer = [ - nil, 119, 19, nil, 50, 97, 67, 79, -314, 198, - -496, -598, -678, nil, -359, 20, 133, -8, -190, 75, - 58, 153, 4, -202, -333, 752, 803, -171, -63, 992, - 23, -19, 2114, -28, nil, nil, 3, -190, 69, -219, - -343, 499, -328, nil, 102, 58, 59, -159, nil, 10, - 45, -255, 1170, 1458, -291, 59, -65, 23, nil, nil, - 37, 39, -249, 24, -18, 401, -105, -706, 97, -54, - -18, -228, 117, -12, -317, -220, -334, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 88, 100, -39, nil, - 99, -252, -647, -482, -335, 94, -196, 51, -530, 93, - 108, 108, -356, 110, 104, -539, 109, -538, -400, -734, - -404, -550, -179, -188, -406, -666, -732, -350, -476, -735, - -455, nil, 208, -455, 220, 355, -453, 247, -553, -134, - nil, -561, -679, -767, -757, -140, -490, 141, -329, -306, - -4, -52, nil, -61, -59, -698, -456, -579, nil, nil, - 153, 11, 23, 149, 155, -247, -98, 156, 156, 156, - -353, -351, -336, -287, nil, nil, -368, -440, -296, -552, - 292, -434, -606, nil, -618, -764, nil, nil, -422 ] - -racc_goto_default = [ - nil, nil, nil, 3, nil, 4, 344, 291, nil, 521, - nil, 836, nil, 288, 289, nil, nil, nil, 11, 12, - 18, 226, 319, nil, nil, 224, 225, nil, nil, 17, - nil, 439, 21, 22, 23, 24, nil, 675, nil, nil, - nil, 308, nil, 25, 410, 32, nil, nil, 34, 37, - 36, nil, 221, 222, 356, nil, 129, 418, 128, 131, - 75, 76, nil, 90, 46, 280, nil, nil, nil, 805, - 411, nil, 412, 423, 629, 485, 278, 264, 47, 48, - 49, 50, 51, 52, 53, 54, 55, nil, 265, 61, - nil, nil, nil, nil, nil, nil, nil, 567, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 702, 549, nil, 703, - 926, 776, 537, nil, 538, nil, nil, 539, nil, 541, - 645, nil, nil, nil, 547, nil, nil, nil, nil, nil, - nil, nil, 422, nil, nil, nil, nil, nil, 74, 77, - 78, nil, nil, nil, nil, nil, 596, nil, nil, nil, - nil, nil, nil, 820, 737, 536, nil, 540, 828, 552, - 554, 555, 788, 558, 559, 789, 562, 565, 283 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 146, :_reduce_none, - 2, 147, :_reduce_2, - 0, 148, :_reduce_3, - 1, 148, :_reduce_4, - 3, 148, :_reduce_5, - 2, 148, :_reduce_6, - 1, 150, :_reduce_none, - 4, 150, :_reduce_8, - 4, 153, :_reduce_9, - 2, 154, :_reduce_10, - 0, 158, :_reduce_11, - 1, 158, :_reduce_12, - 3, 158, :_reduce_13, - 2, 158, :_reduce_14, - 1, 159, :_reduce_none, - 4, 159, :_reduce_16, - 0, 175, :_reduce_17, - 4, 152, :_reduce_18, - 3, 152, :_reduce_19, - 3, 152, :_reduce_20, - 3, 152, :_reduce_21, - 2, 152, :_reduce_22, - 3, 152, :_reduce_23, - 3, 152, :_reduce_24, - 3, 152, :_reduce_25, - 3, 152, :_reduce_26, - 3, 152, :_reduce_27, - 4, 152, :_reduce_28, - 1, 152, :_reduce_none, - 3, 152, :_reduce_30, - 3, 152, :_reduce_31, - 6, 152, :_reduce_32, - 5, 152, :_reduce_33, - 5, 152, :_reduce_34, - 5, 152, :_reduce_35, - 5, 152, :_reduce_36, - 3, 152, :_reduce_37, - 3, 152, :_reduce_38, - 3, 152, :_reduce_39, - 1, 152, :_reduce_none, - 3, 163, :_reduce_41, - 3, 163, :_reduce_42, - 1, 174, :_reduce_none, - 3, 174, :_reduce_44, - 3, 174, :_reduce_45, - 3, 174, :_reduce_46, - 2, 174, :_reduce_47, - 1, 174, :_reduce_none, - 1, 162, :_reduce_none, - 1, 165, :_reduce_none, - 1, 165, :_reduce_none, - 1, 179, :_reduce_none, - 4, 179, :_reduce_53, - 0, 187, :_reduce_54, - 5, 184, :_reduce_55, - 1, 186, :_reduce_none, - 2, 178, :_reduce_57, - 3, 178, :_reduce_58, - 4, 178, :_reduce_59, - 5, 178, :_reduce_60, - 4, 178, :_reduce_61, - 5, 178, :_reduce_62, - 2, 178, :_reduce_63, - 2, 178, :_reduce_64, - 2, 178, :_reduce_65, - 2, 178, :_reduce_66, - 2, 178, :_reduce_67, - 1, 164, :_reduce_68, - 3, 164, :_reduce_69, - 1, 191, :_reduce_70, - 3, 191, :_reduce_71, - 1, 190, :_reduce_none, - 2, 190, :_reduce_73, - 3, 190, :_reduce_74, - 5, 190, :_reduce_75, - 2, 190, :_reduce_76, - 4, 190, :_reduce_77, - 2, 190, :_reduce_78, - 4, 190, :_reduce_79, - 1, 190, :_reduce_80, - 3, 190, :_reduce_81, - 1, 194, :_reduce_none, - 3, 194, :_reduce_83, - 2, 193, :_reduce_84, - 3, 193, :_reduce_85, - 1, 196, :_reduce_86, - 3, 196, :_reduce_87, - 1, 195, :_reduce_88, - 1, 195, :_reduce_89, - 4, 195, :_reduce_90, - 3, 195, :_reduce_91, - 3, 195, :_reduce_92, - 3, 195, :_reduce_93, - 3, 195, :_reduce_94, - 2, 195, :_reduce_95, - 1, 195, :_reduce_96, - 1, 171, :_reduce_97, - 1, 171, :_reduce_98, - 4, 171, :_reduce_99, - 3, 171, :_reduce_100, - 3, 171, :_reduce_101, - 3, 171, :_reduce_102, - 3, 171, :_reduce_103, - 2, 171, :_reduce_104, - 1, 171, :_reduce_105, - 1, 199, :_reduce_106, - 1, 199, :_reduce_none, - 2, 200, :_reduce_108, - 1, 200, :_reduce_109, - 3, 200, :_reduce_110, - 1, 201, :_reduce_none, - 1, 201, :_reduce_none, - 1, 201, :_reduce_none, - 1, 201, :_reduce_none, - 1, 201, :_reduce_none, - 1, 204, :_reduce_116, - 1, 204, :_reduce_none, - 1, 160, :_reduce_none, - 1, 160, :_reduce_none, - 1, 161, :_reduce_120, - 0, 207, :_reduce_121, - 4, 161, :_reduce_122, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 3, 177, :_reduce_194, - 5, 177, :_reduce_195, - 3, 177, :_reduce_196, - 5, 177, :_reduce_197, - 6, 177, :_reduce_198, - 5, 177, :_reduce_199, - 5, 177, :_reduce_200, - 5, 177, :_reduce_201, - 5, 177, :_reduce_202, - 4, 177, :_reduce_203, - 3, 177, :_reduce_204, - 3, 177, :_reduce_205, - 3, 177, :_reduce_206, - 3, 177, :_reduce_207, - 3, 177, :_reduce_208, - 3, 177, :_reduce_209, - 3, 177, :_reduce_210, - 3, 177, :_reduce_211, - 3, 177, :_reduce_212, - 4, 177, :_reduce_213, - 2, 177, :_reduce_214, - 2, 177, :_reduce_215, - 3, 177, :_reduce_216, - 3, 177, :_reduce_217, - 3, 177, :_reduce_218, - 3, 177, :_reduce_219, - 3, 177, :_reduce_220, - 3, 177, :_reduce_221, - 3, 177, :_reduce_222, - 3, 177, :_reduce_223, - 3, 177, :_reduce_224, - 3, 177, :_reduce_225, - 3, 177, :_reduce_226, - 3, 177, :_reduce_227, - 3, 177, :_reduce_228, - 2, 177, :_reduce_229, - 2, 177, :_reduce_230, - 3, 177, :_reduce_231, - 3, 177, :_reduce_232, - 3, 177, :_reduce_233, - 3, 177, :_reduce_234, - 3, 177, :_reduce_235, - 0, 211, :_reduce_236, - 0, 212, :_reduce_237, - 8, 177, :_reduce_238, - 1, 177, :_reduce_none, - 1, 210, :_reduce_none, - 1, 213, :_reduce_none, - 2, 213, :_reduce_none, - 4, 213, :_reduce_243, - 2, 213, :_reduce_244, - 3, 218, :_reduce_245, - 0, 219, :_reduce_246, - 1, 219, :_reduce_none, - 0, 168, :_reduce_248, - 1, 168, :_reduce_none, - 2, 168, :_reduce_none, - 4, 168, :_reduce_251, - 2, 168, :_reduce_252, - 1, 189, :_reduce_253, - 2, 189, :_reduce_254, - 2, 189, :_reduce_255, - 4, 189, :_reduce_256, - 1, 189, :_reduce_257, - 0, 222, :_reduce_258, - 2, 183, :_reduce_259, - 2, 221, :_reduce_260, - 2, 220, :_reduce_261, - 0, 220, :_reduce_262, - 1, 215, :_reduce_263, - 2, 215, :_reduce_264, - 3, 215, :_reduce_265, - 4, 215, :_reduce_266, - 1, 173, :_reduce_267, - 1, 173, :_reduce_none, - 3, 172, :_reduce_269, - 4, 172, :_reduce_270, - 2, 172, :_reduce_271, - 1, 209, :_reduce_none, - 1, 209, :_reduce_none, - 1, 209, :_reduce_none, - 1, 209, :_reduce_none, - 1, 209, :_reduce_none, - 1, 209, :_reduce_none, - 1, 209, :_reduce_none, - 1, 209, :_reduce_none, - 1, 209, :_reduce_none, - 1, 209, :_reduce_none, - 1, 209, :_reduce_282, - 0, 245, :_reduce_283, - 4, 209, :_reduce_284, - 0, 246, :_reduce_285, - 0, 247, :_reduce_286, - 6, 209, :_reduce_287, - 0, 248, :_reduce_288, - 4, 209, :_reduce_289, - 3, 209, :_reduce_290, - 3, 209, :_reduce_291, - 2, 209, :_reduce_292, - 3, 209, :_reduce_293, - 3, 209, :_reduce_294, - 1, 209, :_reduce_295, - 4, 209, :_reduce_296, - 3, 209, :_reduce_297, - 1, 209, :_reduce_298, - 5, 209, :_reduce_299, - 4, 209, :_reduce_300, - 3, 209, :_reduce_301, - 2, 209, :_reduce_302, - 1, 209, :_reduce_none, - 2, 209, :_reduce_304, - 2, 209, :_reduce_305, - 6, 209, :_reduce_306, - 6, 209, :_reduce_307, - 0, 249, :_reduce_308, - 0, 250, :_reduce_309, - 7, 209, :_reduce_310, - 0, 251, :_reduce_311, - 0, 252, :_reduce_312, - 7, 209, :_reduce_313, - 5, 209, :_reduce_314, - 4, 209, :_reduce_315, - 0, 253, :_reduce_316, - 0, 254, :_reduce_317, - 9, 209, :_reduce_318, - 0, 255, :_reduce_319, - 6, 209, :_reduce_320, - 0, 256, :_reduce_321, - 7, 209, :_reduce_322, - 0, 257, :_reduce_323, - 5, 209, :_reduce_324, - 0, 258, :_reduce_325, - 6, 209, :_reduce_326, - 0, 259, :_reduce_327, - 0, 260, :_reduce_328, - 9, 209, :_reduce_329, - 1, 209, :_reduce_330, - 1, 209, :_reduce_331, - 1, 209, :_reduce_332, - 1, 209, :_reduce_333, - 1, 167, :_reduce_none, - 1, 236, :_reduce_none, - 1, 236, :_reduce_none, - 2, 236, :_reduce_337, - 1, 238, :_reduce_none, - 1, 238, :_reduce_none, - 1, 237, :_reduce_none, - 5, 237, :_reduce_341, - 1, 156, :_reduce_none, - 2, 156, :_reduce_343, - 1, 240, :_reduce_none, - 1, 240, :_reduce_none, - 1, 261, :_reduce_346, - 3, 261, :_reduce_347, - 1, 264, :_reduce_348, - 3, 264, :_reduce_349, - 1, 263, :_reduce_none, - 4, 263, :_reduce_351, - 6, 263, :_reduce_352, - 3, 263, :_reduce_353, - 5, 263, :_reduce_354, - 2, 263, :_reduce_355, - 4, 263, :_reduce_356, - 1, 263, :_reduce_357, - 3, 263, :_reduce_358, - 4, 265, :_reduce_359, - 2, 265, :_reduce_360, - 2, 265, :_reduce_361, - 1, 265, :_reduce_362, - 2, 270, :_reduce_363, - 0, 270, :_reduce_364, - 6, 271, :_reduce_365, - 8, 271, :_reduce_366, - 4, 271, :_reduce_367, - 6, 271, :_reduce_368, - 4, 271, :_reduce_369, - 2, 271, :_reduce_none, - 6, 271, :_reduce_371, - 2, 271, :_reduce_372, - 4, 271, :_reduce_373, - 6, 271, :_reduce_374, - 2, 271, :_reduce_375, - 4, 271, :_reduce_376, - 2, 271, :_reduce_377, - 4, 271, :_reduce_378, - 1, 271, :_reduce_none, - 0, 185, :_reduce_380, - 1, 185, :_reduce_381, - 3, 275, :_reduce_382, - 1, 275, :_reduce_383, - 4, 275, :_reduce_384, - 1, 276, :_reduce_385, - 4, 276, :_reduce_386, - 1, 277, :_reduce_387, - 3, 277, :_reduce_388, - 1, 278, :_reduce_389, - 1, 278, :_reduce_none, - 0, 282, :_reduce_391, - 0, 283, :_reduce_392, - 4, 235, :_reduce_393, - 4, 280, :_reduce_394, - 1, 280, :_reduce_395, - 3, 281, :_reduce_396, - 3, 281, :_reduce_397, - 0, 286, :_reduce_398, - 5, 285, :_reduce_399, - 2, 180, :_reduce_400, - 4, 180, :_reduce_401, - 5, 180, :_reduce_402, - 5, 180, :_reduce_403, - 2, 234, :_reduce_404, - 4, 234, :_reduce_405, - 4, 234, :_reduce_406, - 3, 234, :_reduce_407, - 3, 234, :_reduce_408, - 3, 234, :_reduce_409, - 2, 234, :_reduce_410, - 1, 234, :_reduce_411, - 4, 234, :_reduce_412, - 0, 288, :_reduce_413, - 5, 233, :_reduce_414, - 0, 289, :_reduce_415, - 5, 233, :_reduce_416, - 5, 239, :_reduce_417, - 1, 290, :_reduce_418, - 1, 290, :_reduce_none, - 6, 155, :_reduce_420, - 0, 155, :_reduce_421, - 1, 291, :_reduce_422, - 1, 291, :_reduce_none, - 1, 291, :_reduce_none, - 2, 292, :_reduce_425, - 1, 292, :_reduce_none, - 2, 157, :_reduce_427, - 1, 157, :_reduce_none, - 1, 223, :_reduce_none, - 1, 223, :_reduce_none, - 1, 223, :_reduce_none, - 1, 224, :_reduce_432, - 1, 294, :_reduce_433, - 2, 294, :_reduce_434, - 3, 295, :_reduce_435, - 1, 295, :_reduce_436, - 1, 295, :_reduce_437, - 3, 225, :_reduce_438, - 4, 226, :_reduce_439, - 3, 227, :_reduce_440, - 0, 299, :_reduce_441, - 3, 299, :_reduce_442, - 1, 300, :_reduce_443, - 2, 300, :_reduce_444, - 3, 229, :_reduce_445, - 0, 302, :_reduce_446, - 3, 302, :_reduce_447, - 3, 228, :_reduce_448, - 3, 230, :_reduce_449, - 0, 303, :_reduce_450, - 3, 303, :_reduce_451, - 0, 304, :_reduce_452, - 3, 304, :_reduce_453, - 0, 296, :_reduce_454, - 2, 296, :_reduce_455, - 0, 297, :_reduce_456, - 2, 297, :_reduce_457, - 0, 298, :_reduce_458, - 2, 298, :_reduce_459, - 1, 301, :_reduce_460, - 2, 301, :_reduce_461, - 0, 306, :_reduce_462, - 4, 301, :_reduce_463, - 1, 305, :_reduce_464, - 1, 305, :_reduce_465, - 1, 305, :_reduce_466, - 1, 305, :_reduce_none, - 1, 205, :_reduce_468, - 3, 206, :_reduce_469, - 1, 293, :_reduce_470, - 2, 293, :_reduce_471, - 1, 208, :_reduce_472, - 1, 208, :_reduce_473, - 1, 208, :_reduce_474, - 1, 208, :_reduce_475, - 1, 197, :_reduce_476, - 1, 197, :_reduce_477, - 1, 197, :_reduce_478, - 1, 197, :_reduce_479, - 1, 197, :_reduce_480, - 1, 198, :_reduce_481, - 1, 198, :_reduce_482, - 1, 198, :_reduce_483, - 1, 198, :_reduce_484, - 1, 198, :_reduce_485, - 1, 198, :_reduce_486, - 1, 198, :_reduce_487, - 1, 231, :_reduce_488, - 1, 231, :_reduce_489, - 1, 166, :_reduce_490, - 1, 166, :_reduce_491, - 1, 170, :_reduce_492, - 1, 170, :_reduce_493, - 1, 241, :_reduce_494, - 0, 307, :_reduce_495, - 4, 241, :_reduce_496, - 2, 241, :_reduce_497, - 3, 243, :_reduce_498, - 0, 309, :_reduce_499, - 3, 243, :_reduce_500, - 4, 308, :_reduce_501, - 2, 308, :_reduce_502, - 2, 308, :_reduce_503, - 1, 308, :_reduce_504, - 2, 311, :_reduce_505, - 0, 311, :_reduce_506, - 6, 284, :_reduce_507, - 8, 284, :_reduce_508, - 4, 284, :_reduce_509, - 6, 284, :_reduce_510, - 4, 284, :_reduce_511, - 6, 284, :_reduce_512, - 2, 284, :_reduce_513, - 4, 284, :_reduce_514, - 6, 284, :_reduce_515, - 2, 284, :_reduce_516, - 4, 284, :_reduce_517, - 2, 284, :_reduce_518, - 4, 284, :_reduce_519, - 1, 284, :_reduce_520, - 0, 284, :_reduce_521, - 1, 279, :_reduce_522, - 1, 279, :_reduce_523, - 1, 279, :_reduce_524, - 1, 279, :_reduce_525, - 1, 262, :_reduce_none, - 1, 262, :_reduce_527, - 1, 313, :_reduce_528, - 1, 314, :_reduce_529, - 3, 314, :_reduce_530, - 1, 272, :_reduce_531, - 3, 272, :_reduce_532, - 1, 315, :_reduce_533, - 2, 316, :_reduce_534, - 1, 316, :_reduce_535, - 2, 317, :_reduce_536, - 1, 317, :_reduce_537, - 1, 266, :_reduce_538, - 3, 266, :_reduce_539, - 1, 310, :_reduce_540, - 3, 310, :_reduce_541, - 1, 318, :_reduce_none, - 1, 318, :_reduce_none, - 2, 267, :_reduce_544, - 1, 267, :_reduce_545, - 3, 319, :_reduce_546, - 3, 320, :_reduce_547, - 1, 273, :_reduce_548, - 3, 273, :_reduce_549, - 1, 312, :_reduce_550, - 3, 312, :_reduce_551, - 1, 321, :_reduce_none, - 1, 321, :_reduce_none, - 2, 274, :_reduce_554, - 1, 274, :_reduce_555, - 1, 322, :_reduce_none, - 1, 322, :_reduce_none, - 2, 269, :_reduce_558, - 2, 268, :_reduce_559, - 0, 268, :_reduce_560, - 1, 244, :_reduce_none, - 3, 244, :_reduce_562, - 0, 232, :_reduce_563, - 2, 232, :_reduce_none, - 1, 217, :_reduce_565, - 3, 217, :_reduce_566, - 3, 323, :_reduce_567, - 2, 323, :_reduce_568, - 4, 323, :_reduce_569, - 2, 323, :_reduce_570, - 1, 188, :_reduce_none, - 1, 188, :_reduce_none, - 1, 188, :_reduce_none, - 1, 182, :_reduce_none, - 1, 182, :_reduce_none, - 1, 182, :_reduce_none, - 1, 182, :_reduce_none, - 1, 287, :_reduce_none, - 1, 287, :_reduce_none, - 1, 287, :_reduce_none, - 1, 181, :_reduce_none, - 1, 181, :_reduce_none, - 0, 149, :_reduce_none, - 1, 149, :_reduce_none, - 0, 176, :_reduce_none, - 1, 176, :_reduce_none, - 2, 192, :_reduce_587, - 2, 169, :_reduce_588, - 0, 216, :_reduce_none, - 1, 216, :_reduce_none, - 1, 216, :_reduce_none, - 1, 242, :_reduce_592, - 1, 242, :_reduce_none, - 1, 151, :_reduce_none, - 2, 151, :_reduce_none, - 0, 214, :_reduce_596 ] - -racc_reduce_n = 597 - -racc_shift_n = 1024 - -racc_token_table = { - false => 0, - :error => 1, - :kCLASS => 2, - :kMODULE => 3, - :kDEF => 4, - :kUNDEF => 5, - :kBEGIN => 6, - :kRESCUE => 7, - :kENSURE => 8, - :kEND => 9, - :kIF => 10, - :kUNLESS => 11, - :kTHEN => 12, - :kELSIF => 13, - :kELSE => 14, - :kCASE => 15, - :kWHEN => 16, - :kWHILE => 17, - :kUNTIL => 18, - :kFOR => 19, - :kBREAK => 20, - :kNEXT => 21, - :kREDO => 22, - :kRETRY => 23, - :kIN => 24, - :kDO => 25, - :kDO_COND => 26, - :kDO_BLOCK => 27, - :kDO_LAMBDA => 28, - :kRETURN => 29, - :kYIELD => 30, - :kSUPER => 31, - :kSELF => 32, - :kNIL => 33, - :kTRUE => 34, - :kFALSE => 35, - :kAND => 36, - :kOR => 37, - :kNOT => 38, - :kIF_MOD => 39, - :kUNLESS_MOD => 40, - :kWHILE_MOD => 41, - :kUNTIL_MOD => 42, - :kRESCUE_MOD => 43, - :kALIAS => 44, - :kDEFINED => 45, - :klBEGIN => 46, - :klEND => 47, - :k__LINE__ => 48, - :k__FILE__ => 49, - :k__ENCODING__ => 50, - :tIDENTIFIER => 51, - :tFID => 52, - :tGVAR => 53, - :tIVAR => 54, - :tCONSTANT => 55, - :tLABEL => 56, - :tCVAR => 57, - :tNTH_REF => 58, - :tBACK_REF => 59, - :tSTRING_CONTENT => 60, - :tINTEGER => 61, - :tFLOAT => 62, - :tREGEXP_END => 63, - :tUPLUS => 64, - :tUMINUS => 65, - :tUMINUS_NUM => 66, - :tPOW => 67, - :tCMP => 68, - :tEQ => 69, - :tEQQ => 70, - :tNEQ => 71, - :tGEQ => 72, - :tLEQ => 73, - :tANDOP => 74, - :tOROP => 75, - :tMATCH => 76, - :tNMATCH => 77, - :tDOT => 78, - :tDOT2 => 79, - :tDOT3 => 80, - :tAREF => 81, - :tASET => 82, - :tLSHFT => 83, - :tRSHFT => 84, - :tCOLON2 => 85, - :tCOLON3 => 86, - :tOP_ASGN => 87, - :tASSOC => 88, - :tLPAREN => 89, - :tLPAREN2 => 90, - :tRPAREN => 91, - :tLPAREN_ARG => 92, - :tLBRACK => 93, - :tLBRACK2 => 94, - :tRBRACK => 95, - :tLBRACE => 96, - :tLBRACE_ARG => 97, - :tSTAR => 98, - :tSTAR2 => 99, - :tAMPER => 100, - :tAMPER2 => 101, - :tTILDE => 102, - :tPERCENT => 103, - :tDIVIDE => 104, - :tDSTAR => 105, - :tPLUS => 106, - :tMINUS => 107, - :tLT => 108, - :tGT => 109, - :tPIPE => 110, - :tBANG => 111, - :tCARET => 112, - :tLCURLY => 113, - :tRCURLY => 114, - :tBACK_REF2 => 115, - :tSYMBEG => 116, - :tSTRING_BEG => 117, - :tXSTRING_BEG => 118, - :tREGEXP_BEG => 119, - :tREGEXP_OPT => 120, - :tWORDS_BEG => 121, - :tQWORDS_BEG => 122, - :tSYMBOLS_BEG => 123, - :tQSYMBOLS_BEG => 124, - :tSTRING_DBEG => 125, - :tSTRING_DVAR => 126, - :tSTRING_END => 127, - :tSTRING_DEND => 128, - :tSTRING => 129, - :tSYMBOL => 130, - :tNL => 131, - :tEH => 132, - :tCOLON => 133, - :tCOMMA => 134, - :tSPACE => 135, - :tSEMI => 136, - :tLAMBDA => 137, - :tLAMBEG => 138, - :tCHARACTER => 139, - :tRATIONAL => 140, - :tIMAGINARY => 141, - :tLABEL_END => 142, - :tEQL => 143, - :tLOWEST => 144 } - -racc_nt_base = 145 - -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", - "kCLASS", - "kMODULE", - "kDEF", - "kUNDEF", - "kBEGIN", - "kRESCUE", - "kENSURE", - "kEND", - "kIF", - "kUNLESS", - "kTHEN", - "kELSIF", - "kELSE", - "kCASE", - "kWHEN", - "kWHILE", - "kUNTIL", - "kFOR", - "kBREAK", - "kNEXT", - "kREDO", - "kRETRY", - "kIN", - "kDO", - "kDO_COND", - "kDO_BLOCK", - "kDO_LAMBDA", - "kRETURN", - "kYIELD", - "kSUPER", - "kSELF", - "kNIL", - "kTRUE", - "kFALSE", - "kAND", - "kOR", - "kNOT", - "kIF_MOD", - "kUNLESS_MOD", - "kWHILE_MOD", - "kUNTIL_MOD", - "kRESCUE_MOD", - "kALIAS", - "kDEFINED", - "klBEGIN", - "klEND", - "k__LINE__", - "k__FILE__", - "k__ENCODING__", - "tIDENTIFIER", - "tFID", - "tGVAR", - "tIVAR", - "tCONSTANT", - "tLABEL", - "tCVAR", - "tNTH_REF", - "tBACK_REF", - "tSTRING_CONTENT", - "tINTEGER", - "tFLOAT", - "tREGEXP_END", - "tUPLUS", - "tUMINUS", - "tUMINUS_NUM", - "tPOW", - "tCMP", - "tEQ", - "tEQQ", - "tNEQ", - "tGEQ", - "tLEQ", - "tANDOP", - "tOROP", - "tMATCH", - "tNMATCH", - "tDOT", - "tDOT2", - "tDOT3", - "tAREF", - "tASET", - "tLSHFT", - "tRSHFT", - "tCOLON2", - "tCOLON3", - "tOP_ASGN", - "tASSOC", - "tLPAREN", - "tLPAREN2", - "tRPAREN", - "tLPAREN_ARG", - "tLBRACK", - "tLBRACK2", - "tRBRACK", - "tLBRACE", - "tLBRACE_ARG", - "tSTAR", - "tSTAR2", - "tAMPER", - "tAMPER2", - "tTILDE", - "tPERCENT", - "tDIVIDE", - "tDSTAR", - "tPLUS", - "tMINUS", - "tLT", - "tGT", - "tPIPE", - "tBANG", - "tCARET", - "tLCURLY", - "tRCURLY", - "tBACK_REF2", - "tSYMBEG", - "tSTRING_BEG", - "tXSTRING_BEG", - "tREGEXP_BEG", - "tREGEXP_OPT", - "tWORDS_BEG", - "tQWORDS_BEG", - "tSYMBOLS_BEG", - "tQSYMBOLS_BEG", - "tSTRING_DBEG", - "tSTRING_DVAR", - "tSTRING_END", - "tSTRING_DEND", - "tSTRING", - "tSYMBOL", - "tNL", - "tEH", - "tCOLON", - "tCOMMA", - "tSPACE", - "tSEMI", - "tLAMBDA", - "tLAMBEG", - "tCHARACTER", - "tRATIONAL", - "tIMAGINARY", - "tLABEL_END", - "tEQL", - "tLOWEST", - "$start", - "program", - "top_compstmt", - "top_stmts", - "opt_terms", - "top_stmt", - "terms", - "stmt", - "bodystmt", - "compstmt", - "opt_rescue", - "opt_else", - "opt_ensure", - "stmts", - "stmt_or_begin", - "fitem", - "undef_list", - "expr_value", - "command_asgn", - "mlhs", - "command_call", - "var_lhs", - "primary_value", - "opt_call_args", - "rbracket", - "backref", - "lhs", - "mrhs", - "mrhs_arg", - "expr", - "@1", - "opt_nl", - "arg", - "command", - "block_command", - "block_call", - "dot_or_colon", - "operation2", - "command_args", - "cmd_brace_block", - "opt_block_param", - "fcall", - "@2", - "operation", - "call_args", - "mlhs_basic", - "mlhs_inner", - "rparen", - "mlhs_head", - "mlhs_item", - "mlhs_node", - "mlhs_post", - "user_variable", - "keyword_variable", - "cname", - "cpath", - "fname", - "op", - "reswords", - "fsym", - "symbol", - "dsym", - "@3", - "simple_numeric", - "primary", - "arg_value", - "@4", - "@5", - "aref_args", - "none", - "args", - "trailer", - "assocs", - "paren_args", - "opt_paren_args", - "opt_block_arg", - "block_arg", - "@6", - "literal", - "strings", - "xstring", - "regexp", - "words", - "qwords", - "symbols", - "qsymbols", - "var_ref", - "assoc_list", - "brace_block", - "method_call", - "lambda", - "then", - "if_tail", - "do", - "case_body", - "for_var", - "superclass", - "term", - "f_arglist", - "singleton", - "@7", - "@8", - "@9", - "@10", - "@11", - "@12", - "@13", - "@14", - "@15", - "@16", - "@17", - "@18", - "@19", - "@20", - "@21", - "@22", - "f_marg", - "f_norm_arg", - "f_margs", - "f_marg_list", - "block_args_tail", - "f_block_kwarg", - "f_kwrest", - "opt_f_block_arg", - "f_block_arg", - "opt_block_args_tail", - "block_param", - "f_arg", - "f_block_optarg", - "f_rest_arg", - "block_param_def", - "opt_bv_decl", - "bv_decls", - "bvar", - "f_bad_arg", - "f_larglist", - "lambda_body", - "@23", - "@24", - "f_args", - "do_block", - "@25", - "operation3", - "@26", - "@27", - "cases", - "exc_list", - "exc_var", - "numeric", - "string", - "string1", - "string_contents", - "xstring_contents", - "regexp_contents", - "word_list", - "word", - "string_content", - "symbol_list", - "qword_list", - "qsym_list", - "string_dvar", - "@28", - "@29", - "args_tail", - "@30", - "f_kwarg", - "opt_args_tail", - "f_optarg", - "f_arg_asgn", - "f_arg_item", - "f_label", - "f_kw", - "f_block_kw", - "kwrest_mark", - "f_opt", - "f_block_opt", - "restarg_mark", - "blkarg_mark", - "assoc" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -# reduce 1 omitted - -module_eval(<<'.,.,', 'ruby22.y', 78) - def _reduce_2(val, _values, result) - result = @builder.compstmt(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 83) - def _reduce_3(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 87) - def _reduce_4(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 91) - def _reduce_5(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 95) - def _reduce_6(val, _values, result) - result = [ val[1] ] - - result - end -.,., - -# reduce 7 omitted - -module_eval(<<'.,.,', 'ruby22.y', 101) - def _reduce_8(val, _values, result) - result = @builder.preexe(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 106) - def _reduce_9(val, _values, result) - rescue_bodies = val[1] - else_t, else_ = val[2] - ensure_t, ensure_ = val[3] - - if rescue_bodies.empty? && !else_.nil? - diagnostic :warning, :useless_else, nil, else_t - end - - result = @builder.begin_body(val[0], - rescue_bodies, - else_t, else_, - ensure_t, ensure_) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 122) - def _reduce_10(val, _values, result) - result = @builder.compstmt(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 127) - def _reduce_11(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 131) - def _reduce_12(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 135) - def _reduce_13(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 139) - def _reduce_14(val, _values, result) - result = [ val[1] ] - - result - end -.,., - -# reduce 15 omitted - -module_eval(<<'.,.,', 'ruby22.y', 145) - def _reduce_16(val, _values, result) - diagnostic :error, :begin_in_method, nil, val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 150) - def _reduce_17(val, _values, result) - @lexer.state = :expr_fname - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 154) - def _reduce_18(val, _values, result) - result = @builder.alias(val[0], val[1], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 158) - def _reduce_19(val, _values, result) - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.gvar(val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 164) - def _reduce_20(val, _values, result) - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.back_ref(val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 170) - def _reduce_21(val, _values, result) - diagnostic :error, :nth_ref_alias, nil, val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 174) - def _reduce_22(val, _values, result) - result = @builder.undef_method(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 178) - def _reduce_23(val, _values, result) - result = @builder.condition_mod(val[0], nil, - val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 183) - def _reduce_24(val, _values, result) - result = @builder.condition_mod(nil, val[0], - val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 188) - def _reduce_25(val, _values, result) - result = @builder.loop_mod(:while, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 192) - def _reduce_26(val, _values, result) - result = @builder.loop_mod(:until, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 196) - def _reduce_27(val, _values, result) - rescue_body = @builder.rescue_body(val[1], - nil, nil, nil, - nil, val[2]) - - result = @builder.begin_body(val[0], [ rescue_body ]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 204) - def _reduce_28(val, _values, result) - result = @builder.postexe(val[0], val[1], val[2], val[3]) - - result - end -.,., - -# reduce 29 omitted - -module_eval(<<'.,.,', 'ruby22.y', 209) - def _reduce_30(val, _values, result) - result = @builder.multi_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 213) - def _reduce_31(val, _values, result) - result = @builder.op_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 217) - def _reduce_32(val, _values, result) - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 224) - def _reduce_33(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 231) - def _reduce_34(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 238) - def _reduce_35(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 245) - def _reduce_36(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 252) - def _reduce_37(val, _values, result) - @builder.op_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 256) - def _reduce_38(val, _values, result) - result = @builder.assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 261) - def _reduce_39(val, _values, result) - result = @builder.multi_assign(val[0], val[1], val[2]) - - result - end -.,., - -# reduce 40 omitted - -module_eval(<<'.,.,', 'ruby22.y', 267) - def _reduce_41(val, _values, result) - result = @builder.assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 271) - def _reduce_42(val, _values, result) - result = @builder.assign(val[0], val[1], val[2]) - - result - end -.,., - -# reduce 43 omitted - -module_eval(<<'.,.,', 'ruby22.y', 277) - def _reduce_44(val, _values, result) - result = @builder.logical_op(:and, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 281) - def _reduce_45(val, _values, result) - result = @builder.logical_op(:or, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 285) - def _reduce_46(val, _values, result) - result = @builder.not_op(val[0], nil, val[2], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 289) - def _reduce_47(val, _values, result) - result = @builder.not_op(val[0], nil, val[1], nil) - - result - end -.,., - -# reduce 48 omitted - -# reduce 49 omitted - -# reduce 50 omitted - -# reduce 51 omitted - -# reduce 52 omitted - -module_eval(<<'.,.,', 'ruby22.y', 301) - def _reduce_53(val, _values, result) - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 307) - def _reduce_54(val, _values, result) - @static_env.extend_dynamic - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 311) - def _reduce_55(val, _values, result) - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - - result - end -.,., - -# reduce 56 omitted - -module_eval(<<'.,.,', 'ruby22.y', 320) - def _reduce_57(val, _values, result) - result = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 325) - def _reduce_58(val, _values, result) - method_call = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - - begin_t, args, body, end_t = val[2] - result = @builder.block(method_call, - begin_t, args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 334) - def _reduce_59(val, _values, result) - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 339) - def _reduce_60(val, _values, result) - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 348) - def _reduce_61(val, _values, result) - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 353) - def _reduce_62(val, _values, result) - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 362) - def _reduce_63(val, _values, result) - result = @builder.keyword_cmd(:super, val[0], - nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 367) - def _reduce_64(val, _values, result) - result = @builder.keyword_cmd(:yield, val[0], - nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 372) - def _reduce_65(val, _values, result) - result = @builder.keyword_cmd(:return, val[0], - nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 377) - def _reduce_66(val, _values, result) - result = @builder.keyword_cmd(:break, val[0], - nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 382) - def _reduce_67(val, _values, result) - result = @builder.keyword_cmd(:next, val[0], - nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 388) - def _reduce_68(val, _values, result) - result = @builder.multi_lhs(nil, val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 392) - def _reduce_69(val, _values, result) - result = @builder.begin(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 397) - def _reduce_70(val, _values, result) - result = @builder.multi_lhs(nil, val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 401) - def _reduce_71(val, _values, result) - result = @builder.multi_lhs(val[0], val[1], val[2]) - - result - end -.,., - -# reduce 72 omitted - -module_eval(<<'.,.,', 'ruby22.y', 407) - def _reduce_73(val, _values, result) - result = val[0]. - push(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 412) - def _reduce_74(val, _values, result) - result = val[0]. - push(@builder.splat(val[1], val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 417) - def _reduce_75(val, _values, result) - result = val[0]. - push(@builder.splat(val[1], val[2])). - concat(val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 423) - def _reduce_76(val, _values, result) - result = val[0]. - push(@builder.splat(val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 428) - def _reduce_77(val, _values, result) - result = val[0]. - push(@builder.splat(val[1])). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 434) - def _reduce_78(val, _values, result) - result = [ @builder.splat(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 438) - def _reduce_79(val, _values, result) - result = [ @builder.splat(val[0], val[1]), - *val[3] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 443) - def _reduce_80(val, _values, result) - result = [ @builder.splat(val[0]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 447) - def _reduce_81(val, _values, result) - result = [ @builder.splat(val[0]), - *val[2] ] - - result - end -.,., - -# reduce 82 omitted - -module_eval(<<'.,.,', 'ruby22.y', 454) - def _reduce_83(val, _values, result) - result = @builder.begin(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 459) - def _reduce_84(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 463) - def _reduce_85(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 468) - def _reduce_86(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 472) - def _reduce_87(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 477) - def _reduce_88(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 481) - def _reduce_89(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 485) - def _reduce_90(val, _values, result) - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 489) - def _reduce_91(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 493) - def _reduce_92(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 497) - def _reduce_93(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 501) - def _reduce_94(val, _values, result) - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 506) - def _reduce_95(val, _values, result) - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 511) - def _reduce_96(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 516) - def _reduce_97(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 520) - def _reduce_98(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 524) - def _reduce_99(val, _values, result) - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 528) - def _reduce_100(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 532) - def _reduce_101(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 536) - def _reduce_102(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 540) - def _reduce_103(val, _values, result) - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 545) - def _reduce_104(val, _values, result) - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 550) - def _reduce_105(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 555) - def _reduce_106(val, _values, result) - diagnostic :error, :module_name_const, nil, val[0] - - result - end -.,., - -# reduce 107 omitted - -module_eval(<<'.,.,', 'ruby22.y', 561) - def _reduce_108(val, _values, result) - result = @builder.const_global(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 565) - def _reduce_109(val, _values, result) - result = @builder.const(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 569) - def _reduce_110(val, _values, result) - result = @builder.const_fetch(val[0], val[1], val[2]) - - result - end -.,., - -# reduce 111 omitted - -# reduce 112 omitted - -# reduce 113 omitted - -# reduce 114 omitted - -# reduce 115 omitted - -module_eval(<<'.,.,', 'ruby22.y', 578) - def _reduce_116(val, _values, result) - result = @builder.symbol(val[0]) - - result - end -.,., - -# reduce 117 omitted - -# reduce 118 omitted - -# reduce 119 omitted - -module_eval(<<'.,.,', 'ruby22.y', 587) - def _reduce_120(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 591) - def _reduce_121(val, _values, result) - @lexer.state = :expr_fname - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 595) - def _reduce_122(val, _values, result) - result = val[0] << val[3] - - result - end -.,., - -# reduce 123 omitted - -# reduce 124 omitted - -# reduce 125 omitted - -# reduce 126 omitted - -# reduce 127 omitted - -# reduce 128 omitted - -# reduce 129 omitted - -# reduce 130 omitted - -# reduce 131 omitted - -# reduce 132 omitted - -# reduce 133 omitted - -# reduce 134 omitted - -# reduce 135 omitted - -# reduce 136 omitted - -# reduce 137 omitted - -# reduce 138 omitted - -# reduce 139 omitted - -# reduce 140 omitted - -# reduce 141 omitted - -# reduce 142 omitted - -# reduce 143 omitted - -# reduce 144 omitted - -# reduce 145 omitted - -# reduce 146 omitted - -# reduce 147 omitted - -# reduce 148 omitted - -# reduce 149 omitted - -# reduce 150 omitted - -# reduce 151 omitted - -# reduce 152 omitted - -# reduce 153 omitted - -# reduce 154 omitted - -# reduce 155 omitted - -# reduce 156 omitted - -# reduce 157 omitted - -# reduce 158 omitted - -# reduce 159 omitted - -# reduce 160 omitted - -# reduce 161 omitted - -# reduce 162 omitted - -# reduce 163 omitted - -# reduce 164 omitted - -# reduce 165 omitted - -# reduce 166 omitted - -# reduce 167 omitted - -# reduce 168 omitted - -# reduce 169 omitted - -# reduce 170 omitted - -# reduce 171 omitted - -# reduce 172 omitted - -# reduce 173 omitted - -# reduce 174 omitted - -# reduce 175 omitted - -# reduce 176 omitted - -# reduce 177 omitted - -# reduce 178 omitted - -# reduce 179 omitted - -# reduce 180 omitted - -# reduce 181 omitted - -# reduce 182 omitted - -# reduce 183 omitted - -# reduce 184 omitted - -# reduce 185 omitted - -# reduce 186 omitted - -# reduce 187 omitted - -# reduce 188 omitted - -# reduce 189 omitted - -# reduce 190 omitted - -# reduce 191 omitted - -# reduce 192 omitted - -# reduce 193 omitted - -module_eval(<<'.,.,', 'ruby22.y', 616) - def _reduce_194(val, _values, result) - result = @builder.assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 620) - def _reduce_195(val, _values, result) - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.assign(val[0], val[1], rescue_) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 630) - def _reduce_196(val, _values, result) - result = @builder.op_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 634) - def _reduce_197(val, _values, result) - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.op_assign(val[0], val[1], rescue_) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 644) - def _reduce_198(val, _values, result) - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 651) - def _reduce_199(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 658) - def _reduce_200(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 665) - def _reduce_201(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 672) - def _reduce_202(val, _values, result) - const = @builder.const_op_assignable( - @builder.const_fetch(val[0], val[1], val[2])) - result = @builder.op_assign(const, val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 678) - def _reduce_203(val, _values, result) - const = @builder.const_op_assignable( - @builder.const_global(val[0], val[1])) - result = @builder.op_assign(const, val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 684) - def _reduce_204(val, _values, result) - result = @builder.op_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 688) - def _reduce_205(val, _values, result) - result = @builder.range_inclusive(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 692) - def _reduce_206(val, _values, result) - result = @builder.range_exclusive(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 696) - def _reduce_207(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 700) - def _reduce_208(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 704) - def _reduce_209(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 708) - def _reduce_210(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 712) - def _reduce_211(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 716) - def _reduce_212(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 720) - def _reduce_213(val, _values, result) - result = @builder.unary_op(val[0], - @builder.binary_op( - val[1], val[2], val[3])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 726) - def _reduce_214(val, _values, result) - result = @builder.unary_op(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 730) - def _reduce_215(val, _values, result) - result = @builder.unary_op(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 734) - def _reduce_216(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 738) - def _reduce_217(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 742) - def _reduce_218(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 746) - def _reduce_219(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 750) - def _reduce_220(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 754) - def _reduce_221(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 758) - def _reduce_222(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 762) - def _reduce_223(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 766) - def _reduce_224(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 770) - def _reduce_225(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 774) - def _reduce_226(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 778) - def _reduce_227(val, _values, result) - result = @builder.match_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 782) - def _reduce_228(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 786) - def _reduce_229(val, _values, result) - result = @builder.not_op(val[0], nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 790) - def _reduce_230(val, _values, result) - result = @builder.unary_op(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 794) - def _reduce_231(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 798) - def _reduce_232(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 802) - def _reduce_233(val, _values, result) - result = @builder.logical_op(:and, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 806) - def _reduce_234(val, _values, result) - result = @builder.logical_op(:or, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 810) - def _reduce_235(val, _values, result) - result = @builder.keyword_cmd(:defined?, val[0], nil, [ val[2] ], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 820) - def _reduce_236(val, _values, result) - @lexer.push_cond - @lexer.cond.push(true) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 825) - def _reduce_237(val, _values, result) - @lexer.pop_cond - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 829) - def _reduce_238(val, _values, result) - result = @builder.ternary(val[0], val[1], - val[3], val[5], val[7]) - - result - end -.,., - -# reduce 239 omitted - -# reduce 240 omitted - -# reduce 241 omitted - -# reduce 242 omitted - -module_eval(<<'.,.,', 'ruby22.y', 840) - def _reduce_243(val, _values, result) - result = val[0] << @builder.associate(nil, val[2], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 844) - def _reduce_244(val, _values, result) - result = [ @builder.associate(nil, val[0], nil) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 849) - def _reduce_245(val, _values, result) - result = val - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 854) - def _reduce_246(val, _values, result) - result = [ nil, [], nil ] - - result - end -.,., - -# reduce 247 omitted - -module_eval(<<'.,.,', 'ruby22.y', 860) - def _reduce_248(val, _values, result) - result = [] - - result - end -.,., - -# reduce 249 omitted - -# reduce 250 omitted - -module_eval(<<'.,.,', 'ruby22.y', 866) - def _reduce_251(val, _values, result) - result = val[0] << @builder.associate(nil, val[2], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 870) - def _reduce_252(val, _values, result) - result = [ @builder.associate(nil, val[0], nil) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 875) - def _reduce_253(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 879) - def _reduce_254(val, _values, result) - result = val[0].concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 883) - def _reduce_255(val, _values, result) - result = [ @builder.associate(nil, val[0], nil) ] - result.concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 888) - def _reduce_256(val, _values, result) - assocs = @builder.associate(nil, val[2], nil) - result = val[0] << assocs - result.concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 894) - def _reduce_257(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 898) - def _reduce_258(val, _values, result) - result = @lexer.cmdarg.dup - @lexer.cmdarg.push(true) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 903) - def _reduce_259(val, _values, result) - @lexer.cmdarg = val[0] - - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 910) - def _reduce_260(val, _values, result) - result = @builder.block_pass(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 915) - def _reduce_261(val, _values, result) - result = [ val[1] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 919) - def _reduce_262(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 924) - def _reduce_263(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 928) - def _reduce_264(val, _values, result) - result = [ @builder.splat(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 932) - def _reduce_265(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 936) - def _reduce_266(val, _values, result) - result = val[0] << @builder.splat(val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 941) - def _reduce_267(val, _values, result) - result = @builder.array(nil, val[0], nil) - - result - end -.,., - -# reduce 268 omitted - -module_eval(<<'.,.,', 'ruby22.y', 947) - def _reduce_269(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 951) - def _reduce_270(val, _values, result) - result = val[0] << @builder.splat(val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 955) - def _reduce_271(val, _values, result) - result = [ @builder.splat(val[0], val[1]) ] - - result - end -.,., - -# reduce 272 omitted - -# reduce 273 omitted - -# reduce 274 omitted - -# reduce 275 omitted - -# reduce 276 omitted - -# reduce 277 omitted - -# reduce 278 omitted - -# reduce 279 omitted - -# reduce 280 omitted - -# reduce 281 omitted - -module_eval(<<'.,.,', 'ruby22.y', 970) - def _reduce_282(val, _values, result) - result = @builder.call_method(nil, nil, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 974) - def _reduce_283(val, _values, result) - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 979) - def _reduce_284(val, _values, result) - @lexer.cmdarg = val[1] - - result = @builder.begin_keyword(val[0], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 985) - def _reduce_285(val, _values, result) - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 990) - def _reduce_286(val, _values, result) - @lexer.state = :expr_endarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 994) - def _reduce_287(val, _values, result) - @lexer.cmdarg = val[1] - - result = @builder.begin(val[0], val[2], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1000) - def _reduce_288(val, _values, result) - @lexer.state = :expr_endarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1004) - def _reduce_289(val, _values, result) - result = @builder.begin(val[0], nil, val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1008) - def _reduce_290(val, _values, result) - result = @builder.begin(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1012) - def _reduce_291(val, _values, result) - result = @builder.const_fetch(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1016) - def _reduce_292(val, _values, result) - result = @builder.const_global(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1020) - def _reduce_293(val, _values, result) - result = @builder.array(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1024) - def _reduce_294(val, _values, result) - result = @builder.associate(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1028) - def _reduce_295(val, _values, result) - result = @builder.keyword_cmd(:return, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1032) - def _reduce_296(val, _values, result) - result = @builder.keyword_cmd(:yield, val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1036) - def _reduce_297(val, _values, result) - result = @builder.keyword_cmd(:yield, val[0], val[1], [], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1040) - def _reduce_298(val, _values, result) - result = @builder.keyword_cmd(:yield, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1044) - def _reduce_299(val, _values, result) - result = @builder.keyword_cmd(:defined?, val[0], - val[2], [ val[3] ], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1049) - def _reduce_300(val, _values, result) - result = @builder.not_op(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1053) - def _reduce_301(val, _values, result) - result = @builder.not_op(val[0], val[1], nil, val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1057) - def _reduce_302(val, _values, result) - method_call = @builder.call_method(nil, nil, val[0]) - - begin_t, args, body, end_t = val[1] - result = @builder.block(method_call, - begin_t, args, body, end_t) - - result - end -.,., - -# reduce 303 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1066) - def _reduce_304(val, _values, result) - begin_t, args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1072) - def _reduce_305(val, _values, result) - lambda_call = @builder.call_lambda(val[0]) - - args, (begin_t, body, end_t) = val[1] - result = @builder.block(lambda_call, - begin_t, args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1080) - def _reduce_306(val, _values, result) - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1087) - def _reduce_307(val, _values, result) - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - else_, else_t, - val[3], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1094) - def _reduce_308(val, _values, result) - @lexer.cond.push(true) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1098) - def _reduce_309(val, _values, result) - @lexer.cond.pop - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1102) - def _reduce_310(val, _values, result) - result = @builder.loop(:while, val[0], val[2], val[3], - val[5], val[6]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1107) - def _reduce_311(val, _values, result) - @lexer.cond.push(true) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1111) - def _reduce_312(val, _values, result) - @lexer.cond.pop - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1115) - def _reduce_313(val, _values, result) - result = @builder.loop(:until, val[0], val[2], val[3], - val[5], val[6]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1120) - def _reduce_314(val, _values, result) - *when_bodies, (else_t, else_body) = *val[3] - - result = @builder.case(val[0], val[1], - when_bodies, else_t, else_body, - val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1128) - def _reduce_315(val, _values, result) - *when_bodies, (else_t, else_body) = *val[2] - - result = @builder.case(val[0], nil, - when_bodies, else_t, else_body, - val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1136) - def _reduce_316(val, _values, result) - @lexer.cond.push(true) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1140) - def _reduce_317(val, _values, result) - @lexer.cond.pop - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1144) - def _reduce_318(val, _values, result) - result = @builder.for(val[0], val[1], - val[2], val[4], - val[5], val[7], val[8]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1150) - def _reduce_319(val, _values, result) - @static_env.extend_static - @lexer.push_cmdarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1155) - def _reduce_320(val, _values, result) - if in_def? - diagnostic :error, :class_in_def, nil, val[0] - end - - lt_t, superclass = val[2] - result = @builder.def_class(val[0], val[1], - lt_t, superclass, - val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1169) - def _reduce_321(val, _values, result) - result = @def_level - @def_level = 0 - - @static_env.extend_static - @lexer.push_cmdarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1177) - def _reduce_322(val, _values, result) - result = @builder.def_sclass(val[0], val[1], val[2], - val[5], val[6]) - - @lexer.pop_cmdarg - @static_env.unextend - - @def_level = val[4] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1187) - def _reduce_323(val, _values, result) - @static_env.extend_static - @lexer.push_cmdarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1192) - def _reduce_324(val, _values, result) - if in_def? - diagnostic :error, :module_in_def, nil, val[0] - end - - result = @builder.def_module(val[0], val[1], - val[3], val[4]) - - @lexer.pop_cmdarg - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1204) - def _reduce_325(val, _values, result) - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1210) - def _reduce_326(val, _values, result) - result = @builder.def_method(val[0], val[1], - val[3], val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1219) - def _reduce_327(val, _values, result) - @lexer.state = :expr_fname - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1223) - def _reduce_328(val, _values, result) - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1229) - def _reduce_329(val, _values, result) - result = @builder.def_singleton(val[0], val[1], val[2], - val[4], val[6], val[7], val[8]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1238) - def _reduce_330(val, _values, result) - result = @builder.keyword_cmd(:break, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1242) - def _reduce_331(val, _values, result) - result = @builder.keyword_cmd(:next, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1246) - def _reduce_332(val, _values, result) - result = @builder.keyword_cmd(:redo, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1250) - def _reduce_333(val, _values, result) - result = @builder.keyword_cmd(:retry, val[0]) - - result - end -.,., - -# reduce 334 omitted - -# reduce 335 omitted - -# reduce 336 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1259) - def _reduce_337(val, _values, result) - result = val[1] - - result - end -.,., - -# reduce 338 omitted - -# reduce 339 omitted - -# reduce 340 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1268) - def _reduce_341(val, _values, result) - else_t, else_ = val[4] - result = [ val[0], - @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, nil), - ] - - result - end -.,., - -# reduce 342 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1279) - def _reduce_343(val, _values, result) - result = val - - result - end -.,., - -# reduce 344 omitted - -# reduce 345 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1287) - def _reduce_346(val, _values, result) - result = @builder.arg(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1291) - def _reduce_347(val, _values, result) - result = @builder.multi_lhs(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1296) - def _reduce_348(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1300) - def _reduce_349(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -# reduce 350 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1306) - def _reduce_351(val, _values, result) - result = val[0]. - push(@builder.restarg(val[2], val[3])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1311) - def _reduce_352(val, _values, result) - result = val[0]. - push(@builder.restarg(val[2], val[3])). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1317) - def _reduce_353(val, _values, result) - result = val[0]. - push(@builder.restarg(val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1322) - def _reduce_354(val, _values, result) - result = val[0]. - push(@builder.restarg(val[2])). - concat(val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1328) - def _reduce_355(val, _values, result) - result = [ @builder.restarg(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1332) - def _reduce_356(val, _values, result) - result = [ @builder.restarg(val[0], val[1]), - *val[3] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1337) - def _reduce_357(val, _values, result) - result = [ @builder.restarg(val[0]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1341) - def _reduce_358(val, _values, result) - result = [ @builder.restarg(val[0]), - *val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1347) - def _reduce_359(val, _values, result) - result = val[0].concat(val[2]).concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1351) - def _reduce_360(val, _values, result) - result = val[0].concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1355) - def _reduce_361(val, _values, result) - result = val[0].concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1359) - def _reduce_362(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1365) - def _reduce_363(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1369) - def _reduce_364(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1374) - def _reduce_365(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1381) - def _reduce_366(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1389) - def _reduce_367(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1395) - def _reduce_368(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1402) - def _reduce_369(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -# reduce 370 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1409) - def _reduce_371(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1416) - def _reduce_372(val, _values, result) - result = val[0].concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1420) - def _reduce_373(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1426) - def _reduce_374(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1433) - def _reduce_375(val, _values, result) - result = val[0]. - concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1438) - def _reduce_376(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1444) - def _reduce_377(val, _values, result) - result = val[0]. - concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1449) - def _reduce_378(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -# reduce 379 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1457) - def _reduce_380(val, _values, result) - result = @builder.args(nil, [], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1461) - def _reduce_381(val, _values, result) - @lexer.state = :expr_value - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1466) - def _reduce_382(val, _values, result) - result = @builder.args(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1470) - def _reduce_383(val, _values, result) - result = @builder.args(val[0], [], val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1474) - def _reduce_384(val, _values, result) - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1479) - def _reduce_385(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1483) - def _reduce_386(val, _values, result) - result = val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1488) - def _reduce_387(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1492) - def _reduce_388(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1497) - def _reduce_389(val, _values, result) - result = @builder.shadowarg(val[0]) - - result - end -.,., - -# reduce 390 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1502) - def _reduce_391(val, _values, result) - @static_env.extend_dynamic - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1506) - def _reduce_392(val, _values, result) - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1511) - def _reduce_393(val, _values, result) - @lexer.cmdarg = val[2] - @lexer.cmdarg.lexpop - - result = [ val[1], val[3] ] - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1521) - def _reduce_394(val, _values, result) - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1525) - def _reduce_395(val, _values, result) - result = @builder.args(nil, val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1530) - def _reduce_396(val, _values, result) - result = [ val[0], val[1], val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1534) - def _reduce_397(val, _values, result) - result = [ val[0], val[1], val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1539) - def _reduce_398(val, _values, result) - @static_env.extend_dynamic - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1543) - def _reduce_399(val, _values, result) - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1550) - def _reduce_400(val, _values, result) - begin_t, block_args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, block_args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1556) - def _reduce_401(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1562) - def _reduce_402(val, _values, result) - lparen_t, args, rparen_t = val[3] - method_call = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1572) - def _reduce_403(val, _values, result) - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1582) - def _reduce_404(val, _values, result) - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1588) - def _reduce_405(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1594) - def _reduce_406(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1600) - def _reduce_407(val, _values, result) - result = @builder.call_method(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1604) - def _reduce_408(val, _values, result) - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1610) - def _reduce_409(val, _values, result) - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1616) - def _reduce_410(val, _values, result) - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1622) - def _reduce_411(val, _values, result) - result = @builder.keyword_cmd(:zsuper, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1626) - def _reduce_412(val, _values, result) - result = @builder.index(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1631) - def _reduce_413(val, _values, result) - @static_env.extend_dynamic - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1635) - def _reduce_414(val, _values, result) - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1641) - def _reduce_415(val, _values, result) - @static_env.extend_dynamic - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1645) - def _reduce_416(val, _values, result) - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1652) - def _reduce_417(val, _values, result) - result = [ @builder.when(val[0], val[1], val[2], val[3]), - *val[4] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1658) - def _reduce_418(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -# reduce 419 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1664) - def _reduce_420(val, _values, result) - assoc_t, exc_var = val[2] - - if val[1] - exc_list = @builder.array(nil, val[1], nil) - end - - result = [ @builder.rescue_body(val[0], - exc_list, assoc_t, exc_var, - val[3], val[4]), - *val[5] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1677) - def _reduce_421(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1682) - def _reduce_422(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -# reduce 423 omitted - -# reduce 424 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1689) - def _reduce_425(val, _values, result) - result = [ val[0], val[1] ] - - result - end -.,., - -# reduce 426 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1695) - def _reduce_427(val, _values, result) - result = [ val[0], val[1] ] - - result - end -.,., - -# reduce 428 omitted - -# reduce 429 omitted - -# reduce 430 omitted - -# reduce 431 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1705) - def _reduce_432(val, _values, result) - result = @builder.string_compose(nil, val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1710) - def _reduce_433(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1714) - def _reduce_434(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1719) - def _reduce_435(val, _values, result) - result = @builder.string_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1723) - def _reduce_436(val, _values, result) - result = @builder.string(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1727) - def _reduce_437(val, _values, result) - result = @builder.character(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1732) - def _reduce_438(val, _values, result) - result = @builder.xstring_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1737) - def _reduce_439(val, _values, result) - opts = @builder.regexp_options(val[3]) - result = @builder.regexp_compose(val[0], val[1], val[2], opts) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1743) - def _reduce_440(val, _values, result) - result = @builder.words_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1748) - def _reduce_441(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1752) - def _reduce_442(val, _values, result) - result = val[0] << @builder.word(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1757) - def _reduce_443(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1761) - def _reduce_444(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1766) - def _reduce_445(val, _values, result) - result = @builder.symbols_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1771) - def _reduce_446(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1775) - def _reduce_447(val, _values, result) - result = val[0] << @builder.word(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1780) - def _reduce_448(val, _values, result) - result = @builder.words_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1785) - def _reduce_449(val, _values, result) - result = @builder.symbols_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1790) - def _reduce_450(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1794) - def _reduce_451(val, _values, result) - result = val[0] << @builder.string_internal(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1799) - def _reduce_452(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1803) - def _reduce_453(val, _values, result) - result = val[0] << @builder.symbol_internal(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1808) - def _reduce_454(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1812) - def _reduce_455(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1817) - def _reduce_456(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1821) - def _reduce_457(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1826) - def _reduce_458(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1830) - def _reduce_459(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1835) - def _reduce_460(val, _values, result) - result = @builder.string_internal(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1839) - def _reduce_461(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1843) - def _reduce_462(val, _values, result) - @lexer.cond.push(false) - @lexer.cmdarg.push(false) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1848) - def _reduce_463(val, _values, result) - @lexer.cond.lexpop - @lexer.cmdarg.lexpop - - result = @builder.begin(val[0], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1856) - def _reduce_464(val, _values, result) - result = @builder.gvar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1860) - def _reduce_465(val, _values, result) - result = @builder.ivar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1864) - def _reduce_466(val, _values, result) - result = @builder.cvar(val[0]) - - result - end -.,., - -# reduce 467 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1871) - def _reduce_468(val, _values, result) - result = @builder.symbol(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1876) - def _reduce_469(val, _values, result) - result = @builder.symbol_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1881) - def _reduce_470(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1885) - def _reduce_471(val, _values, result) - result = @builder.negate(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1890) - def _reduce_472(val, _values, result) - result = @builder.integer(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1894) - def _reduce_473(val, _values, result) - result = @builder.float(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1898) - def _reduce_474(val, _values, result) - result = @builder.rational(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1902) - def _reduce_475(val, _values, result) - result = @builder.complex(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1907) - def _reduce_476(val, _values, result) - result = @builder.ident(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1911) - def _reduce_477(val, _values, result) - result = @builder.ivar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1915) - def _reduce_478(val, _values, result) - result = @builder.gvar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1919) - def _reduce_479(val, _values, result) - result = @builder.const(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1923) - def _reduce_480(val, _values, result) - result = @builder.cvar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1928) - def _reduce_481(val, _values, result) - result = @builder.nil(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1932) - def _reduce_482(val, _values, result) - result = @builder.self(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1936) - def _reduce_483(val, _values, result) - result = @builder.true(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1940) - def _reduce_484(val, _values, result) - result = @builder.false(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1944) - def _reduce_485(val, _values, result) - result = @builder.__FILE__(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1948) - def _reduce_486(val, _values, result) - result = @builder.__LINE__(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1952) - def _reduce_487(val, _values, result) - result = @builder.__ENCODING__(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1957) - def _reduce_488(val, _values, result) - result = @builder.accessible(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1961) - def _reduce_489(val, _values, result) - result = @builder.accessible(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1966) - def _reduce_490(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1970) - def _reduce_491(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1975) - def _reduce_492(val, _values, result) - result = @builder.nth_ref(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1979) - def _reduce_493(val, _values, result) - result = @builder.back_ref(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1984) - def _reduce_494(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1988) - def _reduce_495(val, _values, result) - @lexer.state = :expr_value - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1992) - def _reduce_496(val, _values, result) - result = [ val[0], val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1996) - def _reduce_497(val, _values, result) - yyerrok - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2002) - def _reduce_498(val, _values, result) - result = @builder.args(val[0], val[1], val[2]) - - @lexer.state = :expr_value - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2007) - def _reduce_499(val, _values, result) - result = @lexer.in_kwarg - @lexer.in_kwarg = true - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2012) - def _reduce_500(val, _values, result) - @lexer.in_kwarg = val[0] - result = @builder.args(nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2018) - def _reduce_501(val, _values, result) - result = val[0].concat(val[2]).concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2022) - def _reduce_502(val, _values, result) - result = val[0].concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2026) - def _reduce_503(val, _values, result) - result = val[0].concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2030) - def _reduce_504(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2035) - def _reduce_505(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2039) - def _reduce_506(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2044) - def _reduce_507(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2051) - def _reduce_508(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2059) - def _reduce_509(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2065) - def _reduce_510(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2072) - def _reduce_511(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2078) - def _reduce_512(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2085) - def _reduce_513(val, _values, result) - result = val[0]. - concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2090) - def _reduce_514(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2096) - def _reduce_515(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2103) - def _reduce_516(val, _values, result) - result = val[0]. - concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2108) - def _reduce_517(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2114) - def _reduce_518(val, _values, result) - result = val[0]. - concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2119) - def _reduce_519(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2125) - def _reduce_520(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2129) - def _reduce_521(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2134) - def _reduce_522(val, _values, result) - diagnostic :error, :argument_const, nil, val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2138) - def _reduce_523(val, _values, result) - diagnostic :error, :argument_ivar, nil, val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2142) - def _reduce_524(val, _values, result) - diagnostic :error, :argument_gvar, nil, val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2146) - def _reduce_525(val, _values, result) - diagnostic :error, :argument_cvar, nil, val[0] - - result - end -.,., - -# reduce 526 omitted - -module_eval(<<'.,.,', 'ruby22.y', 2152) - def _reduce_527(val, _values, result) - @static_env.declare val[0][0] - - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2159) - def _reduce_528(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2164) - def _reduce_529(val, _values, result) - result = @builder.arg(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2168) - def _reduce_530(val, _values, result) - result = @builder.multi_lhs(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2173) - def _reduce_531(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2177) - def _reduce_532(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2182) - def _reduce_533(val, _values, result) - check_kwarg_name(val[0]) - - @static_env.declare val[0][0] - - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2191) - def _reduce_534(val, _values, result) - result = @builder.kwoptarg(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2195) - def _reduce_535(val, _values, result) - result = @builder.kwarg(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2200) - def _reduce_536(val, _values, result) - result = @builder.kwoptarg(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2204) - def _reduce_537(val, _values, result) - result = @builder.kwarg(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2209) - def _reduce_538(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2213) - def _reduce_539(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2218) - def _reduce_540(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2222) - def _reduce_541(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -# reduce 542 omitted - -# reduce 543 omitted - -module_eval(<<'.,.,', 'ruby22.y', 2229) - def _reduce_544(val, _values, result) - @static_env.declare val[1][0] - - result = [ @builder.kwrestarg(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2235) - def _reduce_545(val, _values, result) - result = [ @builder.kwrestarg(val[0]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2240) - def _reduce_546(val, _values, result) - result = @builder.optarg(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2245) - def _reduce_547(val, _values, result) - result = @builder.optarg(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2250) - def _reduce_548(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2254) - def _reduce_549(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2259) - def _reduce_550(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2263) - def _reduce_551(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -# reduce 552 omitted - -# reduce 553 omitted - -module_eval(<<'.,.,', 'ruby22.y', 2270) - def _reduce_554(val, _values, result) - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2276) - def _reduce_555(val, _values, result) - result = [ @builder.restarg(val[0]) ] - - result - end -.,., - -# reduce 556 omitted - -# reduce 557 omitted - -module_eval(<<'.,.,', 'ruby22.y', 2283) - def _reduce_558(val, _values, result) - @static_env.declare val[1][0] - - result = @builder.blockarg(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2290) - def _reduce_559(val, _values, result) - result = [ val[1] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2294) - def _reduce_560(val, _values, result) - result = [] - - result - end -.,., - -# reduce 561 omitted - -module_eval(<<'.,.,', 'ruby22.y', 2300) - def _reduce_562(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2305) - def _reduce_563(val, _values, result) - result = [] - - result - end -.,., - -# reduce 564 omitted - -module_eval(<<'.,.,', 'ruby22.y', 2311) - def _reduce_565(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2315) - def _reduce_566(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2320) - def _reduce_567(val, _values, result) - result = @builder.pair(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2324) - def _reduce_568(val, _values, result) - result = @builder.pair_keyword(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2328) - def _reduce_569(val, _values, result) - result = @builder.pair_quoted(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2332) - def _reduce_570(val, _values, result) - result = @builder.kwsplat(val[0], val[1]) - - result - end -.,., - -# reduce 571 omitted - -# reduce 572 omitted - -# reduce 573 omitted - -# reduce 574 omitted - -# reduce 575 omitted - -# reduce 576 omitted - -# reduce 577 omitted - -# reduce 578 omitted - -# reduce 579 omitted - -# reduce 580 omitted - -# reduce 581 omitted - -# reduce 582 omitted - -# reduce 583 omitted - -# reduce 584 omitted - -# reduce 585 omitted - -# reduce 586 omitted - -module_eval(<<'.,.,', 'ruby22.y', 2343) - def _reduce_587(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2347) - def _reduce_588(val, _values, result) - result = val[1] - - result - end -.,., - -# reduce 589 omitted - -# reduce 590 omitted - -# reduce 591 omitted - -module_eval(<<'.,.,', 'ruby22.y', 2353) - def _reduce_592(val, _values, result) - yyerrok - - result - end -.,., - -# reduce 593 omitted - -# reduce 594 omitted - -# reduce 595 omitted - -module_eval(<<'.,.,', 'ruby22.y', 2362) - def _reduce_596(val, _values, result) - result = nil - - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Ruby22 -end # module Parser diff --git a/test/racc/regress/tp_plus b/test/racc/regress/tp_plus deleted file mode 100644 index 34b6284db7..0000000000 --- a/test/racc/regress/tp_plus +++ /dev/null @@ -1,1933 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' -module TPPlus - class Parser < Racc::Parser - -module_eval(<<'...end tp_plus.y/module_eval...', 'tp_plus.y', 592) - - include TPPlus::Nodes - - attr_reader :interpreter - def initialize(scanner, interpreter = TPPlus::Interpreter.new) - @scanner = scanner - @interpreter = interpreter - super() - end - - def next_token - t = @scanner.next_token - @interpreter.line_count += 1 if t && t[0] == :NEWLINE - - #puts t.inspect - t - end - - def parse - #@yydebug =true - - do_parse - @interpreter - end - - def on_error(t, val, vstack) - raise ParseError, sprintf("Parse error on line #{@scanner.tok_line} column #{@scanner.tok_col}: %s (%s)", - val.inspect, token_to_str(t) || '?') - end - - class ParseError < StandardError ; end -...end tp_plus.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 62, 62, 62, 62, 101, 122, 62, 41, 38, 130, - 275, 265, 72, 41, 72, 98, 113, 72, 53, 114, - 41, 67, 67, 67, 67, 234, 38, 26, 152, 151, - 101, 36, 64, 159, 81, 82, 72, 308, 159, 81, - 82, 72, 122, 70, 308, 60, 74, 60, 42, 308, - 60, 43, 44, 131, 45, 31, 32, 300, 75, 34, - 35, 46, 47, 102, 60, 273, 30, 72, 29, 28, - 25, 63, 76, 37, 27, 24, 62, 41, 38, 37, - 69, 69, 69, 69, 33, 61, 37, 97, 53, 102, - 61, 37, 81, 82, 355, 61, 103, 26, 82, 72, - 60, 36, 159, 81, 82, 72, 208, 221, 209, 371, - 82, 72, 105, 220, 33, 81, 82, 72, 42, 72, - 317, 43, 44, 111, 45, 31, 32, 96, 72, 34, - 35, 46, 47, 96, 60, 223, 30, 224, 29, 28, - 25, 63, 115, 37, 27, 24, 62, 41, 38, 72, - 60, 81, 82, 72, 33, 61, 121, 116, 53, 61, - 122, 88, 94, 96, 321, 117, 118, 26, 317, 352, - 125, 36, 323, 127, 203, 349, 350, 351, 353, 303, - 304, 96, 367, 81, 82, 72, 60, 255, 42, 209, - 101, 43, 44, 122, 45, 31, 32, 185, 94, 34, - 35, 46, 47, 186, 60, 191, 30, 61, 29, 28, - 25, 63, 321, 37, 27, 24, 62, 41, 38, 188, - 323, 122, 203, 122, 33, 61, 82, 72, 53, 336, - 335, 182, 181, 179, 180, 177, 173, 26, 176, 174, - 199, 36, 81, 82, 72, 81, 82, 72, 81, 82, - 72, 81, 82, 81, 82, 72, 200, 201, 42, 203, - 204, 43, 44, 96, 45, 31, 32, 210, 211, 34, - 35, 46, 47, 212, 60, 213, 30, 214, 29, 28, - 25, 63, 215, 37, 27, 24, 216, 178, 217, 175, - 81, 82, 72, 218, 33, 61, 81, 82, 72, 219, - 88, 317, 96, 81, 82, 72, 88, 227, 96, 81, - 82, 72, 227, 88, 96, 96, 81, 82, 72, 88, - 229, 96, 81, 82, 72, 60, 88, 230, 96, 231, - 234, 60, 88, 235, 96, 238, 122, 94, 60, 81, - 82, 72, 122, 94, 60, 321, 61, 81, 82, 72, - 94, 60, 61, 323, 241, 203, 94, 60, 242, 61, - 244, 245, 246, 94, 247, 61, 248, 249, 250, 94, - 251, 252, 61, 81, 82, 72, 253, 254, 61, 81, - 82, 72, 257, 88, 188, 96, 81, 82, 72, 88, - 259, 96, 81, 82, 72, 269, 88, 271, 96, 81, - 82, 72, 88, 276, 96, 122, 281, 282, 60, 88, - 283, 96, 284, 285, 60, 286, 287, 288, 289, 290, - 94, 60, 82, 292, 293, 294, 94, 60, 122, 61, - 122, 72, 298, 94, 60, 61, 301, 302, 305, 94, - 306, 313, 61, 314, 122, 122, 94, 325, 61, 135, - 136, 139, 140, 137, 138, 61, 141, 142, 144, 145, - 146, 148, 143, 147, 135, 136, 139, 140, 137, 138, - 326, 141, 142, 144, 145, 146, 148, 143, 147, 327, - 328, 188, 97, 333, 275, 122, 33, 135, 136, 139, - 140, 137, 138, 205, 141, 142, 144, 145, 146, 148, - 143, 147, 188, 188, 333, 122, 346, 347, 207, 135, - 136, 139, 140, 137, 138, 348, 141, 142, 144, 145, - 146, 148, 143, 147, 188, 356, 357, 358, 359, 360, - 135, 136, 139, 140, 137, 138, 361, 141, 142, 144, - 145, 146, 148, 143, 147, 135, 136, 139, 140, 137, - 138, 362, 141, 142, 144, 145, 146, 148, 143, 147, - 135, 136, 139, 140, 137, 138, 122, 141, 142, 144, - 145, 146, 148, 143, 147, 135, 136, 139, 140, 137, - 138, 364, 141, 142, 144, 145, 146, 148, 143, 147, - 135, 136, 139, 140, 137, 138, 72, 141, 142, 144, - 145, 146, 148, 143, 147, 135, 136, 139, 140, 137, - 138, 33, 141, 142, 144, 145, 146, 148, 143, 147, - 135, 136, 139, 140, 137, 138, 378, 141, 142, 144, - 145, 146, 148, 143, 147, 135, 136, 139, 140, 137, - 138, 379, 141, 142, 144, 145, 146, 148, 143, 147, - 380, 381, 382, 383, 385, 386, 390, 72, 392 ] - -racc_action_check = [ - 3, 65, 309, 312, 72, 272, 0, 0, 0, 70, - 240, 232, 28, 295, 29, 36, 48, 105, 0, 48, - 296, 3, 65, 309, 312, 232, 383, 0, 95, 95, - 36, 0, 1, 97, 97, 97, 97, 295, 186, 186, - 186, 186, 343, 27, 296, 28, 30, 29, 0, 383, - 105, 0, 0, 70, 0, 0, 0, 272, 31, 0, - 0, 0, 0, 72, 0, 240, 0, 38, 0, 0, - 0, 0, 32, 0, 0, 0, 2, 2, 2, 295, - 3, 65, 309, 312, 0, 0, 296, 36, 2, 36, - 97, 383, 224, 224, 343, 186, 37, 2, 358, 358, - 38, 2, 209, 209, 209, 209, 153, 184, 153, 358, - 229, 229, 38, 184, 41, 88, 88, 88, 2, 44, - 301, 2, 2, 46, 2, 2, 2, 88, 47, 2, - 2, 2, 2, 301, 2, 187, 2, 187, 2, 2, - 2, 2, 53, 2, 2, 2, 188, 188, 188, 58, - 88, 35, 35, 35, 2, 2, 60, 55, 188, 209, - 63, 35, 88, 35, 301, 55, 55, 188, 337, 342, - 64, 188, 301, 68, 301, 342, 342, 342, 342, 280, - 280, 337, 357, 357, 357, 357, 35, 222, 188, 222, - 99, 188, 188, 101, 188, 188, 188, 102, 35, 188, - 188, 188, 188, 103, 188, 109, 188, 35, 188, 188, - 188, 188, 337, 188, 188, 188, 225, 225, 225, 111, - 337, 112, 337, 115, 188, 188, 293, 293, 225, 320, - 320, 98, 98, 98, 98, 98, 98, 225, 98, 98, - 117, 225, 34, 34, 34, 75, 75, 75, 234, 234, - 234, 98, 98, 238, 238, 238, 118, 121, 225, 123, - 132, 225, 225, 98, 225, 225, 225, 173, 174, 225, - 225, 225, 225, 175, 225, 176, 225, 177, 225, 225, - 225, 225, 178, 225, 225, 225, 179, 98, 180, 98, - 42, 42, 42, 181, 225, 225, 43, 43, 43, 182, - 42, 363, 42, 45, 45, 45, 43, 189, 43, 76, - 76, 76, 190, 45, 363, 45, 94, 94, 94, 76, - 191, 76, 113, 113, 113, 42, 94, 192, 94, 193, - 194, 43, 113, 197, 113, 201, 202, 42, 45, 326, - 326, 326, 203, 43, 76, 363, 42, 360, 360, 360, - 45, 94, 43, 363, 204, 363, 76, 113, 205, 45, - 210, 211, 212, 94, 213, 76, 214, 215, 216, 113, - 217, 218, 94, 114, 114, 114, 219, 221, 113, 116, - 116, 116, 226, 114, 227, 114, 134, 134, 134, 116, - 228, 116, 199, 199, 199, 235, 134, 239, 134, 200, - 200, 200, 199, 241, 199, 242, 244, 245, 114, 200, - 246, 200, 247, 248, 116, 249, 250, 251, 252, 253, - 114, 134, 254, 256, 260, 263, 116, 199, 265, 114, - 266, 269, 270, 134, 200, 116, 275, 277, 291, 199, - 292, 297, 134, 299, 300, 302, 200, 303, 199, 133, - 133, 133, 133, 133, 133, 200, 133, 133, 133, 133, - 133, 133, 133, 133, 150, 150, 150, 150, 150, 150, - 304, 150, 150, 150, 150, 150, 150, 150, 150, 306, - 307, 107, 308, 313, 315, 323, 325, 107, 107, 107, - 107, 107, 107, 133, 107, 107, 107, 107, 107, 107, - 107, 107, 328, 108, 331, 333, 338, 339, 150, 108, - 108, 108, 108, 108, 108, 340, 108, 108, 108, 108, - 108, 108, 108, 108, 110, 347, 349, 350, 351, 352, - 110, 110, 110, 110, 110, 110, 353, 110, 110, 110, - 110, 110, 110, 110, 110, 83, 83, 83, 83, 83, - 83, 354, 83, 83, 83, 83, 83, 83, 83, 83, - 195, 195, 195, 195, 195, 195, 355, 195, 195, 195, - 195, 195, 195, 195, 195, 196, 196, 196, 196, 196, - 196, 356, 196, 196, 196, 196, 196, 196, 196, 196, - 198, 198, 198, 198, 198, 198, 359, 198, 198, 198, - 198, 198, 198, 198, 198, 206, 206, 206, 206, 206, - 206, 361, 206, 206, 206, 206, 206, 206, 206, 206, - 236, 236, 236, 236, 236, 236, 365, 236, 236, 236, - 236, 236, 236, 236, 236, 237, 237, 237, 237, 237, - 237, 366, 237, 237, 237, 237, 237, 237, 237, 237, - 368, 371, 372, 373, 376, 379, 384, 385, 387 ] - -racc_action_pointer = [ - 2, 32, 72, -4, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 13, -17, -15, - 20, -16, -2, nil, 215, 124, 13, 67, 38, nil, - nil, 32, 263, 269, 90, 276, 94, 99, -30, nil, - nil, nil, nil, 125, nil, 127, nil, nil, 120, nil, - 82, nil, nil, 135, 170, -3, nil, nil, 148, nil, - -17, nil, -13, nil, nil, 218, 282, nil, nil, nil, - nil, nil, nil, 514, nil, nil, nil, nil, 88, nil, - nil, nil, nil, nil, 289, 1, nil, 7, 224, 173, - nil, 168, 121, 129, nil, -12, nil, 456, 478, 154, - 499, 194, 196, 295, 346, 198, 352, 210, 226, nil, - nil, 231, nil, 179, nil, nil, nil, nil, nil, nil, - nil, nil, 183, 418, 359, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 433, nil, nil, 31, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 189, 190, 195, 197, 199, 204, 208, - 210, 215, 221, nil, 84, nil, 12, 60, 142, 260, - 265, 246, 279, 281, 269, 529, 544, 315, 559, 365, - 372, 258, 311, 317, 328, 341, 574, nil, nil, 76, - 332, 333, 334, 336, 338, 339, 340, 342, 343, 348, - nil, 303, 112, nil, 65, 212, 334, 359, 342, 82, - nil, nil, -36, nil, 221, 321, 589, 604, 226, 349, - -16, 328, 380, nil, 327, 328, 331, 333, 334, 336, - 337, 338, 339, 340, 394, nil, 346, nil, nil, nil, - 406, nil, nil, 377, nil, 403, 405, nil, nil, 402, - 357, nil, -20, nil, nil, 360, nil, 420, nil, nil, - 124, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 363, 414, 198, nil, 8, 15, 366, nil, 362, - 419, 94, 420, 373, 396, nil, 404, 405, 408, -2, - nil, nil, -1, 466, nil, 458, nil, nil, nil, nil, - 202, nil, nil, 460, nil, 404, 312, nil, 477, nil, - nil, 487, nil, 480, nil, nil, nil, 142, 431, 430, - 467, nil, 156, 17, nil, nil, nil, 499, nil, 452, - 453, 454, 455, 462, 472, 541, 506, 156, 70, 567, - 320, 529, nil, 275, nil, 551, 564, nil, 575, nil, - nil, 623, 577, 576, nil, nil, 577, nil, nil, 629, - nil, nil, nil, 20, 581, 628, nil, 583, nil, nil, - nil, nil, nil ] - -racc_action_default = [ - -2, -210, -1, -188, -8, -9, -10, -11, -12, -13, - -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, - -24, -25, -26, -27, -28, -29, -30, -210, -210, -210, - -210, -210, -210, -45, -210, -210, -118, -210, -210, -61, - -62, -210, -210, -210, -210, -210, -210, -210, -81, -84, - -85, -86, -87, -210, -111, -210, -116, -117, -210, -125, - -210, -183, -184, -190, -210, -188, -3, -185, -7, -187, - -210, -34, -118, -35, -36, -210, -210, -46, -103, -104, - -158, -159, -160, -47, -128, -129, -130, -131, -210, -148, - -149, -150, -151, -152, -210, -210, -157, -52, -210, -119, - -121, -190, -210, -210, -58, -210, -63, -210, -210, -210, - -210, -210, -190, -210, -210, -190, -210, -210, -210, -120, - -126, -210, -189, -210, -192, 393, -4, -6, -186, -31, - -32, -33, -210, -210, -210, -134, -135, -136, -137, -138, - -139, -140, -141, -142, -143, -144, -145, -146, -147, -132, - -210, -155, -156, -210, -50, -53, -54, -55, -56, -57, - -112, -161, -162, -163, -164, -165, -166, -167, -168, -169, - -170, -171, -172, -210, -210, -210, -210, -210, -210, -210, - -210, -210, -210, -122, -210, -127, -52, -210, -210, -89, - -89, -210, -210, -210, -210, -82, -83, -210, -113, -210, - -210, -210, -190, -190, -210, -38, -133, -153, -48, -210, - -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, - -123, -210, -210, -59, -210, -5, -210, -210, -210, -210, - -67, -70, -78, -72, -210, -210, -114, -115, -210, -210, - -210, -210, -190, -51, -210, -210, -210, -210, -210, -210, - -210, -210, -210, -210, -210, -49, -210, -64, -88, -65, - -210, -68, -69, -210, -73, -190, -190, -75, -76, -210, - -210, -191, -190, -194, -195, -210, -37, -39, -41, -42, - -210, -173, -174, -175, -176, -177, -178, -179, -180, -181, - -182, -210, -210, -210, -71, -210, -210, -210, -154, -210, - -190, -205, -190, -210, -210, -124, -210, -210, -210, -188, - -79, -80, -188, -210, -193, -210, -197, -198, -199, -200, - -210, -203, -204, -190, -40, -210, -210, -60, -210, -77, - -74, -90, -91, -190, -196, -201, -202, -205, -210, -210, - -210, -92, -210, -190, -207, -209, -43, -210, -66, -210, - -210, -210, -210, -210, -210, -190, -210, -210, -210, -210, - -210, -210, -206, -205, -44, -210, -210, -110, -210, -98, - -99, -210, -210, -210, -107, -108, -102, -208, -93, -210, - -94, -100, -95, -210, -210, -210, -109, -210, -105, -106, - -97, -101, -96 ] - -racc_goto_table = [ - 39, 106, 39, 66, 78, 65, 123, 68, 77, 184, - 9, 2, 9, 153, 40, 261, 40, 274, 310, 310, - 194, 189, 190, 197, 192, 193, 71, 73, 39, 39, - 277, 260, 233, 344, 79, 1, 104, 322, 39, 332, - 291, 128, 40, 40, 109, 78, 129, 112, 243, 132, - 311, 311, 40, 83, 226, 228, 389, 341, 232, 377, - 107, 108, 263, 110, 266, 126, 331, 155, 167, 68, - 264, 309, 312, 322, 365, 79, 368, 373, 387, 261, - 384, 160, 119, 183, 120, 149, 168, 161, 162, 163, - 324, 164, 334, 165, 133, 307, 166, 156, 169, 322, - 170, 171, 222, 187, 172, 39, 388, 158, 202, 272, - 316, 343, 150, nil, nil, nil, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 195, 196, nil, 198, nil, nil, nil, nil, nil, - nil, 258, nil, nil, 369, 239, 240, nil, nil, nil, - 280, nil, 206, nil, nil, nil, 155, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 295, 296, nil, nil, nil, nil, 155, - nil, nil, nil, nil, nil, nil, 156, nil, 39, nil, - nil, nil, nil, nil, 256, nil, 158, nil, 9, 225, - nil, nil, 40, nil, 267, nil, nil, nil, 78, 156, - 280, nil, 270, nil, nil, 299, nil, 236, 237, 158, - nil, nil, nil, nil, nil, 39, nil, nil, 65, 262, - nil, nil, nil, nil, 268, 9, nil, nil, 79, 40, - nil, 342, 340, 315, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 337, nil, nil, 297, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 338, 354, nil, nil, nil, - nil, nil, nil, 262, nil, nil, 78, nil, 363, nil, - 339, nil, nil, nil, nil, nil, nil, nil, nil, 329, - nil, nil, 330, 68, nil, nil, 68, nil, nil, nil, - nil, 376, nil, nil, nil, nil, 79, 78, nil, nil, - 375, 366, 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, 79, 370, 372, - 374, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 391 ] - -racc_goto_check = [ - 40, 35, 40, 4, 39, 3, 86, 7, 29, 34, - 12, 2, 12, 37, 43, 47, 43, 89, 36, 36, - 34, 5, 5, 34, 5, 5, 28, 28, 40, 40, - 31, 46, 50, 94, 40, 1, 28, 75, 40, 56, - 47, 6, 43, 43, 40, 39, 27, 40, 38, 29, - 44, 44, 43, 30, 45, 45, 42, 56, 48, 94, - 30, 30, 49, 30, 51, 4, 55, 39, 39, 7, - 50, 52, 52, 75, 57, 40, 58, 59, 60, 47, - 61, 62, 63, 67, 68, 71, 73, 76, 77, 78, - 31, 79, 89, 80, 30, 46, 81, 40, 82, 75, - 83, 84, 37, 28, 85, 40, 36, 12, 87, 88, - 90, 93, 30, nil, nil, nil, nil, nil, nil, 43, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 30, 30, nil, 30, nil, nil, nil, nil, nil, - nil, 5, nil, nil, 47, 86, 86, nil, nil, nil, - 34, nil, 30, nil, nil, nil, 39, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 34, 34, nil, nil, nil, nil, 39, - nil, nil, nil, nil, nil, nil, 40, nil, 40, nil, - nil, nil, nil, nil, 39, nil, 12, nil, 12, 2, - nil, nil, 43, nil, 39, nil, nil, nil, 39, 40, - 34, nil, 29, nil, nil, 86, nil, 30, 30, 12, - nil, nil, nil, nil, nil, 40, nil, nil, 3, 40, - nil, nil, nil, nil, 40, 12, nil, nil, 40, 43, - nil, 34, 5, 86, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 86, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 35, 86, nil, nil, nil, - nil, nil, nil, 40, nil, nil, 39, nil, 86, nil, - 29, nil, nil, nil, nil, nil, nil, nil, nil, 4, - nil, nil, 4, 7, nil, nil, 7, nil, nil, nil, - nil, 35, nil, nil, nil, nil, 40, 39, nil, nil, - 39, 29, 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, 40, 40, 40, - 40, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 40 ] - -racc_goto_pointer = [ - nil, 35, 11, 3, 0, -86, -27, 4, nil, nil, - nil, nil, 10, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, -24, -2, -26, - 18, -212, nil, nil, -92, -40, -277, -84, -161, -30, - 0, nil, -327, 14, -245, -135, -198, -214, -136, -170, - -162, -170, -224, nil, nil, -247, -274, -283, -282, -283, - -305, -296, -17, 24, nil, nil, nil, -16, 26, nil, - nil, -3, nil, -12, nil, -264, -11, -10, -9, -7, - -5, -2, 0, 2, 3, 6, -57, -15, -131, -223, - -191, nil, nil, -226, -304 ] - -racc_goto_default = [ - nil, nil, nil, 3, nil, nil, nil, 4, 5, 6, - 7, 8, 87, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, nil, 55, nil, - nil, nil, 278, 279, 124, 54, 52, nil, 154, 89, - 91, 157, 51, 92, 49, nil, nil, 80, nil, nil, - nil, nil, nil, 48, 50, nil, nil, nil, nil, nil, - nil, nil, nil, 56, 57, 99, 58, 100, 59, 84, - 85, 86, 134, 90, 93, 95, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 318, nil, nil, - 345, 319, 320, nil, nil ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 86, :_reduce_1, - 0, 86, :_reduce_none, - 2, 87, :_reduce_3, - 3, 87, :_reduce_4, - 2, 90, :_reduce_5, - 1, 91, :_reduce_none, - 0, 91, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_28, - 1, 88, :_reduce_29, - 1, 111, :_reduce_30, - 3, 110, :_reduce_31, - 1, 112, :_reduce_none, - 1, 112, :_reduce_none, - 2, 109, :_reduce_34, - 2, 107, :_reduce_35, - 2, 106, :_reduce_36, - 6, 104, :_reduce_37, - 4, 104, :_reduce_38, - 6, 104, :_reduce_39, - 8, 104, :_reduce_40, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 5, 117, :_reduce_43, - 7, 118, :_reduce_44, - 1, 120, :_reduce_45, - 2, 102, :_reduce_46, - 2, 103, :_reduce_47, - 4, 121, :_reduce_48, - 5, 121, :_reduce_49, - 1, 122, :_reduce_50, - 3, 122, :_reduce_51, - 0, 122, :_reduce_52, - 1, 123, :_reduce_none, - 1, 123, :_reduce_none, - 1, 123, :_reduce_none, - 1, 123, :_reduce_none, - 1, 126, :_reduce_57, - 2, 127, :_reduce_58, - 4, 127, :_reduce_59, - 8, 127, :_reduce_60, - 1, 113, :_reduce_none, - 1, 113, :_reduce_none, - 2, 129, :_reduce_63, - 5, 98, :_reduce_64, - 5, 98, :_reduce_65, - 10, 100, :_reduce_66, - 4, 101, :_reduce_67, - 1, 131, :_reduce_none, - 1, 131, :_reduce_none, - 4, 94, :_reduce_70, - 6, 105, :_reduce_71, - 1, 133, :_reduce_72, - 2, 133, :_reduce_73, - 5, 135, :_reduce_74, - 1, 136, :_reduce_none, - 1, 136, :_reduce_none, - 4, 134, :_reduce_77, - 0, 134, :_reduce_none, - 1, 137, :_reduce_none, - 1, 137, :_reduce_none, - 1, 99, :_reduce_none, - 3, 99, :_reduce_82, - 3, 99, :_reduce_83, - 1, 138, :_reduce_none, - 1, 138, :_reduce_none, - 1, 138, :_reduce_none, - 1, 138, :_reduce_none, - 2, 130, :_reduce_88, - 0, 130, :_reduce_89, - 8, 95, :_reduce_90, - 1, 140, :_reduce_91, - 2, 140, :_reduce_92, - 6, 141, :_reduce_93, - 6, 141, :_reduce_94, - 6, 141, :_reduce_95, - 8, 141, :_reduce_96, - 7, 141, :_reduce_97, - 1, 143, :_reduce_none, - 1, 143, :_reduce_none, - 2, 143, :_reduce_100, - 2, 146, :_reduce_101, - 0, 146, :_reduce_none, - 1, 114, :_reduce_none, - 1, 114, :_reduce_none, - 1, 145, :_reduce_none, - 1, 145, :_reduce_none, - 1, 144, :_reduce_none, - 1, 144, :_reduce_none, - 3, 142, :_reduce_109, - 1, 142, :_reduce_110, - 1, 96, :_reduce_111, - 3, 93, :_reduce_112, - 3, 139, :_reduce_113, - 4, 139, :_reduce_114, - 4, 139, :_reduce_115, - 1, 125, :_reduce_none, - 1, 125, :_reduce_none, - 1, 148, :_reduce_118, - 2, 148, :_reduce_119, - 2, 149, :_reduce_120, - 1, 150, :_reduce_121, - 2, 150, :_reduce_122, - 3, 152, :_reduce_123, - 6, 152, :_reduce_124, - 1, 151, :_reduce_125, - 2, 151, :_reduce_126, - 3, 153, :_reduce_127, - 1, 115, :_reduce_none, - 1, 115, :_reduce_none, - 1, 154, :_reduce_130, - 1, 154, :_reduce_none, - 2, 154, :_reduce_132, - 3, 155, :_reduce_133, - 1, 157, :_reduce_134, - 1, 157, :_reduce_135, - 1, 157, :_reduce_136, - 1, 157, :_reduce_137, - 1, 157, :_reduce_138, - 1, 157, :_reduce_139, - 1, 157, :_reduce_140, - 1, 157, :_reduce_141, - 1, 157, :_reduce_142, - 1, 157, :_reduce_143, - 1, 157, :_reduce_144, - 1, 157, :_reduce_145, - 1, 157, :_reduce_146, - 1, 157, :_reduce_147, - 1, 156, :_reduce_none, - 1, 156, :_reduce_none, - 1, 156, :_reduce_none, - 1, 156, :_reduce_none, - 1, 156, :_reduce_none, - 3, 159, :_reduce_153, - 6, 128, :_reduce_154, - 2, 158, :_reduce_155, - 2, 158, :_reduce_156, - 1, 160, :_reduce_157, - 1, 124, :_reduce_none, - 1, 124, :_reduce_159, - 1, 132, :_reduce_160, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 4, 170, :_reduce_173, - 4, 169, :_reduce_174, - 4, 168, :_reduce_175, - 4, 167, :_reduce_176, - 4, 166, :_reduce_177, - 4, 165, :_reduce_178, - 4, 161, :_reduce_179, - 4, 164, :_reduce_180, - 4, 162, :_reduce_181, - 4, 163, :_reduce_182, - 1, 97, :_reduce_183, - 1, 92, :_reduce_184, - 1, 89, :_reduce_185, - 2, 89, :_reduce_186, - 1, 89, :_reduce_none, - 0, 89, :_reduce_none, - 1, 119, :_reduce_189, - 0, 119, :_reduce_none, - 5, 108, :_reduce_191, - 1, 171, :_reduce_none, - 5, 172, :_reduce_193, - 3, 172, :_reduce_194, - 1, 173, :_reduce_195, - 4, 173, :_reduce_196, - 3, 174, :_reduce_197, - 1, 175, :_reduce_none, - 1, 175, :_reduce_none, - 1, 175, :_reduce_none, - 2, 175, :_reduce_201, - 2, 175, :_reduce_202, - 1, 175, :_reduce_203, - 1, 177, :_reduce_none, - 0, 177, :_reduce_none, - 5, 176, :_reduce_206, - 1, 178, :_reduce_207, - 4, 178, :_reduce_208, - 1, 179, :_reduce_none ] - -racc_reduce_n = 210 - -racc_shift_n = 393 - -racc_token_table = { - false => 0, - :error => 1, - :ASSIGN => 2, - :AT_SYM => 3, - :COMMENT => 4, - :JUMP => 5, - :IO_METHOD => 6, - :INPUT => 7, - :OUTPUT => 8, - :NUMREG => 9, - :POSREG => 10, - :VREG => 11, - :SREG => 12, - :TIME_SEGMENT => 13, - :ARG => 14, - :UALM => 15, - :MOVE => 16, - :DOT => 17, - :TO => 18, - :AT => 19, - :TERM => 20, - :OFFSET => 21, - :SKIP => 22, - :GROUP => 23, - :SEMICOLON => 24, - :NEWLINE => 25, - :STRING => 26, - :REAL => 27, - :DIGIT => 28, - :WORD => 29, - :EQUAL => 30, - :EEQUAL => 31, - :NOTEQUAL => 32, - :GTE => 33, - :LTE => 34, - :LT => 35, - :GT => 36, - :BANG => 37, - :PLUS => 38, - :MINUS => 39, - :STAR => 40, - :SLASH => 41, - :DIV => 42, - :AND => 43, - :OR => 44, - :MOD => 45, - :IF => 46, - :ELSE => 47, - :END => 48, - :UNLESS => 49, - :FOR => 50, - :IN => 51, - :WHILE => 52, - :WAIT_FOR => 53, - :WAIT_UNTIL => 54, - :TIMEOUT => 55, - :AFTER => 56, - :FANUC_USE => 57, - :SET_SKIP_CONDITION => 58, - :NAMESPACE => 59, - :CASE => 60, - :WHEN => 61, - :INDIRECT => 62, - :POSITION => 63, - :EVAL => 64, - :TIMER => 65, - :TIMER_METHOD => 66, - :RAISE => 67, - :ABORT => 68, - :POSITION_DATA => 69, - :TRUE_FALSE => 70, - :RUN => 71, - :TP_HEADER => 72, - :PAUSE => 73, - :LPAREN => 74, - :RPAREN => 75, - :COLON => 76, - :COMMA => 77, - :LBRACK => 78, - :RBRACK => 79, - :LBRACE => 80, - :RBRACE => 81, - :LABEL => 82, - :ADDRESS => 83, - :false => 84 } - -racc_nt_base = 85 - -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", - "ASSIGN", - "AT_SYM", - "COMMENT", - "JUMP", - "IO_METHOD", - "INPUT", - "OUTPUT", - "NUMREG", - "POSREG", - "VREG", - "SREG", - "TIME_SEGMENT", - "ARG", - "UALM", - "MOVE", - "DOT", - "TO", - "AT", - "TERM", - "OFFSET", - "SKIP", - "GROUP", - "SEMICOLON", - "NEWLINE", - "STRING", - "REAL", - "DIGIT", - "WORD", - "EQUAL", - "EEQUAL", - "NOTEQUAL", - "GTE", - "LTE", - "LT", - "GT", - "BANG", - "PLUS", - "MINUS", - "STAR", - "SLASH", - "DIV", - "AND", - "OR", - "MOD", - "IF", - "ELSE", - "END", - "UNLESS", - "FOR", - "IN", - "WHILE", - "WAIT_FOR", - "WAIT_UNTIL", - "TIMEOUT", - "AFTER", - "FANUC_USE", - "SET_SKIP_CONDITION", - "NAMESPACE", - "CASE", - "WHEN", - "INDIRECT", - "POSITION", - "EVAL", - "TIMER", - "TIMER_METHOD", - "RAISE", - "ABORT", - "POSITION_DATA", - "TRUE_FALSE", - "RUN", - "TP_HEADER", - "PAUSE", - "LPAREN", - "RPAREN", - "COLON", - "COMMA", - "LBRACK", - "RBRACK", - "LBRACE", - "RBRACE", - "LABEL", - "ADDRESS", - "false", - "$start", - "program", - "statements", - "statement", - "terminator", - "block", - "optional_newline", - "comment", - "definition", - "namespace", - "motion_statement", - "label_definition", - "address", - "conditional", - "inline_conditional", - "forloop", - "while_loop", - "use_statement", - "set_skip_statement", - "wait_statement", - "case_statement", - "fanuc_eval", - "timer_method", - "position_data", - "raise", - "tp_header_definition", - "empty_stmt", - "tp_header_value", - "var_or_indirect", - "indirectable", - "expression", - "wait_modifier", - "timeout_modifier", - "after_modifier", - "swallow_newlines", - "label", - "program_call", - "args", - "arg", - "number", - "var", - "string", - "io_method", - "indirect_thing", - "jump", - "else_block", - "minmax_val", - "integer", - "case_conditions", - "case_else", - "case_condition", - "case_allowed_condition", - "case_allowed_statement", - "inlineable", - "assignment", - "motion_modifiers", - "motion_modifier", - "speed", - "valid_terminations", - "time", - "time_seg_actions", - "optional_lpos_arg", - "definable", - "var_without_namespaces", - "var_with_namespaces", - "var_method_modifiers", - "namespaces", - "var_method_modifier", - "ns", - "unary_expression", - "binary_expression", - "factor", - "operator", - "signed_number", - "paren_expr", - "sign", - "numreg", - "output", - "input", - "posreg", - "position", - "vreg", - "argument", - "timer", - "ualm", - "sreg", - "sn", - "hash", - "hash_attributes", - "hash_attribute", - "hash_value", - "array", - "optional_sign", - "array_values", - "array_value" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 35) - def _reduce_1(val, _values, result) - @interpreter.nodes = val[0] - result - end -.,., - -# reduce 2 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 42) - def _reduce_3(val, _values, result) - result = [val[0]] - result << val[1] unless val[1].nil? - - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 46) - def _reduce_4(val, _values, result) - result = val[0] << val[1] - result << val[2] unless val[2].nil? - - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 52) - def _reduce_5(val, _values, result) - result = val[1] - result - end -.,., - -# reduce 6 omitted - -# reduce 7 omitted - -# reduce 8 omitted - -# reduce 9 omitted - -# reduce 10 omitted - -# reduce 11 omitted - -# reduce 12 omitted - -# reduce 13 omitted - -# reduce 14 omitted - -# reduce 15 omitted - -# reduce 16 omitted - -# reduce 17 omitted - -# reduce 18 omitted - -# reduce 19 omitted - -# reduce 20 omitted - -# reduce 21 omitted - -# reduce 22 omitted - -# reduce 23 omitted - -# reduce 24 omitted - -# reduce 25 omitted - -# reduce 26 omitted - -# reduce 27 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 85) - def _reduce_28(val, _values, result) - result = PauseNode.new - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 86) - def _reduce_29(val, _values, result) - result = AbortNode.new - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 90) - def _reduce_30(val, _values, result) - result = EmptyStmtNode.new() - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 94) - def _reduce_31(val, _values, result) - result = HeaderNode.new(val[0],val[2]) - result - end -.,., - -# reduce 32 omitted - -# reduce 33 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 103) - def _reduce_34(val, _values, result) - result = RaiseNode.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 107) - def _reduce_35(val, _values, result) - result = TimerMethodNode.new(val[0],val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 111) - def _reduce_36(val, _values, result) - result = EvalNode.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 116) - def _reduce_37(val, _values, result) - result = WaitForNode.new(val[2], val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 118) - def _reduce_38(val, _values, result) - result = WaitUntilNode.new(val[2], nil) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 120) - def _reduce_39(val, _values, result) - result = WaitUntilNode.new(val[2],val[5]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 122) - def _reduce_40(val, _values, result) - result = WaitUntilNode.new(val[2],val[5].merge(val[7])) - result - end -.,., - -# reduce 41 omitted - -# reduce 42 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 132) - def _reduce_43(val, _values, result) - result = { label: val[3] } - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 137) - def _reduce_44(val, _values, result) - result = { timeout: [val[3],val[5]] } - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 141) - def _reduce_45(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 145) - def _reduce_46(val, _values, result) - result = UseNode.new(val[0],val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 150) - def _reduce_47(val, _values, result) - result = SetSkipNode.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 154) - def _reduce_48(val, _values, result) - result = CallNode.new(val[0],val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 155) - def _reduce_49(val, _values, result) - result = CallNode.new(val[1],val[3],async: true) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 159) - def _reduce_50(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 160) - def _reduce_51(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 161) - def _reduce_52(val, _values, result) - result = [] - result - end -.,., - -# reduce 53 omitted - -# reduce 54 omitted - -# reduce 55 omitted - -# reduce 56 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 172) - def _reduce_57(val, _values, result) - result = StringNode.new(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 176) - def _reduce_58(val, _values, result) - result = IOMethodNode.new(val[0],val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 178) - def _reduce_59(val, _values, result) - result = IOMethodNode.new(val[0],val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 180) - def _reduce_60(val, _values, result) - result = IOMethodNode.new(val[0],val[2],{ pulse_time: val[4], pulse_units: val[6] }) - result - end -.,., - -# reduce 61 omitted - -# reduce 62 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 190) - def _reduce_63(val, _values, result) - result = JumpNode.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 195) - def _reduce_64(val, _values, result) - result = ConditionalNode.new("if",val[1],val[2],val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 197) - def _reduce_65(val, _values, result) - result = ConditionalNode.new("unless",val[1],val[2],val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 202) - def _reduce_66(val, _values, result) - result = ForNode.new(val[1],val[4],val[6],val[8]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 206) - def _reduce_67(val, _values, result) - result = WhileNode.new(val[1],val[2]) - result - end -.,., - -# reduce 68 omitted - -# reduce 69 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 215) - def _reduce_70(val, _values, result) - result = NamespaceNode.new(val[1],val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 222) - def _reduce_71(val, _values, result) - result = CaseNode.new(val[1],val[3],val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 226) - def _reduce_72(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 228) - def _reduce_73(val, _values, result) - result = val[0] << val[1] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 233) - def _reduce_74(val, _values, result) - result = CaseConditionNode.new(val[1],val[3]) - result - end -.,., - -# reduce 75 omitted - -# reduce 76 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 243) - def _reduce_77(val, _values, result) - result = CaseConditionNode.new(nil,val[2]) - result - end -.,., - -# reduce 78 omitted - -# reduce 79 omitted - -# reduce 80 omitted - -# reduce 81 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 254) - def _reduce_82(val, _values, result) - result = InlineConditionalNode.new(val[1], val[2], val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 255) - def _reduce_83(val, _values, result) - result = InlineConditionalNode.new(val[1], val[2], val[0]) - result - end -.,., - -# reduce 84 omitted - -# reduce 85 omitted - -# reduce 86 omitted - -# reduce 87 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 266) - def _reduce_88(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 267) - def _reduce_89(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 272) - def _reduce_90(val, _values, result) - result = MotionNode.new(val[0],val[5],val[7]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 276) - def _reduce_91(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 278) - def _reduce_92(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 283) - def _reduce_93(val, _values, result) - result = SpeedNode.new(val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 285) - def _reduce_94(val, _values, result) - result = TerminationNode.new(val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 287) - def _reduce_95(val, _values, result) - result = OffsetNode.new(val[2],val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 289) - def _reduce_96(val, _values, result) - result = TimeNode.new(val[2],val[4],val[6]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 291) - def _reduce_97(val, _values, result) - result = SkipNode.new(val[4],val[5]) - result - end -.,., - -# reduce 98 omitted - -# reduce 99 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 298) - def _reduce_100(val, _values, result) - raise Racc::ParseError, sprintf("\ninvalid termination type: (%s)", val[1]) if val[1] != 1 - - result = DigitNode.new(val[1].to_i * -1) - - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 305) - def _reduce_101(val, _values, result) - result = val[1] - result - end -.,., - -# reduce 102 omitted - -# reduce 103 omitted - -# reduce 104 omitted - -# reduce 105 omitted - -# reduce 106 omitted - -# reduce 107 omitted - -# reduce 108 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 325) - def _reduce_109(val, _values, result) - result = { speed: val[0], units: val[2] } - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 326) - def _reduce_110(val, _values, result) - result = { speed: val[0], units: nil } - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 330) - def _reduce_111(val, _values, result) - result = LabelDefinitionNode.new(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 334) - def _reduce_112(val, _values, result) - result = DefinitionNode.new(val[0],val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 338) - def _reduce_113(val, _values, result) - result = AssignmentNode.new(val[0],val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 339) - def _reduce_114(val, _values, result) - result = AssignmentNode.new( - val[0], - ExpressionNode.new(val[0],"+",val[3]) - ) - - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 344) - def _reduce_115(val, _values, result) - result = AssignmentNode.new( - val[0], - ExpressionNode.new(val[0],"-",val[3]) - ) - - result - end -.,., - -# reduce 116 omitted - -# reduce 117 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 357) - def _reduce_118(val, _values, result) - result = VarNode.new(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 358) - def _reduce_119(val, _values, result) - result = VarMethodNode.new(val[0],val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 363) - def _reduce_120(val, _values, result) - result = NamespacedVarNode.new(val[0],val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 367) - def _reduce_121(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 369) - def _reduce_122(val, _values, result) - result = val[0].merge(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 373) - def _reduce_123(val, _values, result) - result = { method: val[2] } - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 375) - def _reduce_124(val, _values, result) - result = { group: val[4] } - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 379) - def _reduce_125(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 380) - def _reduce_126(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 384) - def _reduce_127(val, _values, result) - result = val[0] - result - end -.,., - -# reduce 128 omitted - -# reduce 129 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 394) - def _reduce_130(val, _values, result) - result = val[0] - result - end -.,., - -# reduce 131 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 396) - def _reduce_132(val, _values, result) - result = ExpressionNode.new(val[1], "!", nil) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 401) - def _reduce_133(val, _values, result) - result = ExpressionNode.new(val[0], val[1], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 405) - def _reduce_134(val, _values, result) - result = "==" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 406) - def _reduce_135(val, _values, result) - result = "<>" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 407) - def _reduce_136(val, _values, result) - result = "<" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 408) - def _reduce_137(val, _values, result) - result = ">" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 409) - def _reduce_138(val, _values, result) - result = ">=" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 410) - def _reduce_139(val, _values, result) - result = "<=" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 411) - def _reduce_140(val, _values, result) - result = "+" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 412) - def _reduce_141(val, _values, result) - result = "-" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 413) - def _reduce_142(val, _values, result) - result = "||" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 414) - def _reduce_143(val, _values, result) - result = "*" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 415) - def _reduce_144(val, _values, result) - result = "/" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 416) - def _reduce_145(val, _values, result) - result = "DIV" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 417) - def _reduce_146(val, _values, result) - result = "%" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 418) - def _reduce_147(val, _values, result) - result = "&&" - result - end -.,., - -# reduce 148 omitted - -# reduce 149 omitted - -# reduce 150 omitted - -# reduce 151 omitted - -# reduce 152 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 430) - def _reduce_153(val, _values, result) - result = ParenExpressionNode.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 435) - def _reduce_154(val, _values, result) - result = IndirectNode.new(val[2].to_sym, val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 440) - def _reduce_155(val, _values, result) - val[1] = val[1].to_i * -1 if val[0] == "-" - result = DigitNode.new(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 443) - def _reduce_156(val, _values, result) - val[1] = val[1].to_f * -1 if val[0] == "-"; result = RealNode.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 447) - def _reduce_157(val, _values, result) - result = "-" - result - end -.,., - -# reduce 158 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 452) - def _reduce_159(val, _values, result) - result = RealNode.new(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 456) - def _reduce_160(val, _values, result) - result = DigitNode.new(val[0]) - result - end -.,., - -# reduce 161 omitted - -# reduce 162 omitted - -# reduce 163 omitted - -# reduce 164 omitted - -# reduce 165 omitted - -# reduce 166 omitted - -# reduce 167 omitted - -# reduce 168 omitted - -# reduce 169 omitted - -# reduce 170 omitted - -# reduce 171 omitted - -# reduce 172 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 476) - def _reduce_173(val, _values, result) - result = StringRegisterNode.new(val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 480) - def _reduce_174(val, _values, result) - result = UserAlarmNode.new(val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 484) - def _reduce_175(val, _values, result) - result = TimerNode.new(val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 488) - def _reduce_176(val, _values, result) - result = ArgumentNode.new(val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 492) - def _reduce_177(val, _values, result) - result = VisionRegisterNode.new(val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 496) - def _reduce_178(val, _values, result) - result = PositionNode.new(val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 500) - def _reduce_179(val, _values, result) - result = NumregNode.new(val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 504) - def _reduce_180(val, _values, result) - result = PosregNode.new(val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 508) - def _reduce_181(val, _values, result) - result = IONode.new(val[0], val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 512) - def _reduce_182(val, _values, result) - result = IONode.new(val[0], val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 516) - def _reduce_183(val, _values, result) - result = AddressNode.new(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 520) - def _reduce_184(val, _values, result) - result = CommentNode.new(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 524) - def _reduce_185(val, _values, result) - result = TerminatorNode.new - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 525) - def _reduce_186(val, _values, result) - result = val[0] - result - end -.,., - -# reduce 187 omitted - -# reduce 188 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 532) - def _reduce_189(val, _values, result) - result = TerminatorNode.new - result - end -.,., - -# reduce 190 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 538) - def _reduce_191(val, _values, result) - result = PositionDataNode.new(val[2]) - result - end -.,., - -# reduce 192 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 546) - def _reduce_193(val, _values, result) - result = val[2] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 547) - def _reduce_194(val, _values, result) - result = {} - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 551) - def _reduce_195(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 553) - def _reduce_196(val, _values, result) - result = val[0].merge(val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 557) - def _reduce_197(val, _values, result) - result = { val[0].to_sym => val[2] } - result - end -.,., - -# reduce 198 omitted - -# reduce 199 omitted - -# reduce 200 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 564) - def _reduce_201(val, _values, result) - val[1] = val[1].to_i * -1 if val[0] == "-"; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 565) - def _reduce_202(val, _values, result) - val[1] = val[1].to_f * -1 if val[0] == "-"; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 566) - def _reduce_203(val, _values, result) - result = val[0] == "true" - result - end -.,., - -# reduce 204 omitted - -# reduce 205 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 575) - def _reduce_206(val, _values, result) - result = val[2] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 579) - def _reduce_207(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 580) - def _reduce_208(val, _values, result) - result = val[0] << val[3] - result - end -.,., - -# reduce 209 omitted - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module TPPlus diff --git a/test/racc/regress/twowaysql b/test/racc/regress/twowaysql deleted file mode 100644 index 219f1a8b04..0000000000 --- a/test/racc/regress/twowaysql +++ /dev/null @@ -1,556 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' -module TwoWaySQL - class Parser < Racc::Parser - -module_eval(<<'...end twowaysql.y/module_eval...', 'twowaysql.y', 148) - -require 'strscan' - -def initialize(opts={}) - opts = { - :debug => false, - :preserve_space => true, - :preserve_comment => false - }.merge(opts) - @yydebug = opts[:debug] - @preserve_space = opts[:preserve_space] - @preserve_comment = opts[:preserve_comment] - @num_questions = 0 -end - - -PAREN_EXAMPLE = '\([^\)]+\)' -BEGIN_BIND_VARIABLE = '(\/|\#)\*([^\*]+)\*\1' -BIND_VARIABLE_PATTERN = /\A#{BEGIN_BIND_VARIABLE}\s*/ -PAREN_BIND_VARIABLE_PATTERN = /\A#{BEGIN_BIND_VARIABLE}\s*#{PAREN_EXAMPLE}/ -EMBED_VARIABLE_PATTERN = /\A(\/|\#)\*\$([^\*]+)\*\1\s*/ - -CONDITIONAL_PATTERN = /\A(\/|\#)\*(IF)\s+([^\*]+)\s*\*\1/ -BEGIN_END_PATTERN = /\A(\/|\#)\*(BEGIN|END)\s*\*\1/ -STRING_LITERAL_PATTERN = /\A(\'(?:[^\']+|\'\')*\')/ ## quoted string -SPLIT_TOKEN_PATTERN = /\A(\S+?)(?=\s*(?:(?:\/|\#)\*|-{2,}|\(|\)|\,))/ ## stop on delimiters --,/*,#*,',',(,) -LITERAL_PATTERN = /\A([^;\s]+)/ -SPACES_PATTERN = /\A(\s+)/ -QUESTION_PATTERN = /\A\?/ -COMMA_PATTERN = /\A\,/ -LPAREN_PATTERN = /\A\(/ -RPAREN_PATTERN = /\A\)/ -ACTUAL_COMMENT_PATTERN = /\A(\/|\#)\*(\s{1,}(?:.*?))\*\1/m ## start with spaces -SEMICOLON_AT_INPUT_END_PATTERN = /\A\;\s*\Z/ -UNMATCHED_COMMENT_START_PATTERN = /\A(?:(?:\/|\#)\*)/ - -#TODO: remove trailing spaces for S2Dao compatibility, but this spec sometimes causes SQL bugs... -ELSE_PATTERN = /\A\-{2,}\s*ELSE\s*/ -AND_PATTERN = /\A(\ *AND)\b/i -OR_PATTERN = /\A(\ *OR)\b/i - - -def parse( io ) - @q = [] - io.each_line(nil) do |whole| - @s = StringScanner.new(whole) - end - scan_str - - # @q.push [ false, nil ] - @q.push [ false, [@s.pos, nil] ] - - ## call racc's private parse method - do_parse -end - - -## called by racc -def next_token - @q.shift -end - - -def scan_str - until @s.eos? do - case - when @s.scan(AND_PATTERN) - @q.push [ :AND, [@s.pos, @s[1]] ] - when @s.scan(OR_PATTERN) - @q.push [ :OR, [@s.pos, @s[1]] ] - when @s.scan(SPACES_PATTERN) - @q.push [ :SPACES, [@s.pos, @s[1]] ] - when @s.scan(QUESTION_PATTERN) - @q.push [ :QUESTION, [@s.pos, nil] ] - when @s.scan(COMMA_PATTERN) - @q.push [ :COMMA, [@s.pos, ','] ] - when @s.scan(LPAREN_PATTERN) - @q.push [ :LPAREN, [@s.pos, '('] ] - when @s.scan(RPAREN_PATTERN) - @q.push [ :RPAREN, [@s.pos, ')'] ] - when @s.scan(ELSE_PATTERN) - @q.push [ :ELSE, [@s.pos, nil] ] - when @s.scan(ACTUAL_COMMENT_PATTERN) - @q.push [ :ACTUAL_COMMENT, [@s.pos, @s[1], @s[2]] ] if @preserve_comment - when @s.scan(BEGIN_END_PATTERN) - @q.push [ @s[2].intern, [@s.pos, nil] ] - when @s.scan(CONDITIONAL_PATTERN) - @q.push [ @s[2].intern, [@s.pos, @s[3]] ] - when @s.scan(EMBED_VARIABLE_PATTERN) - @q.push [ :EMBED_VARIABLE, [@s.pos, @s[2]] ] - when @s.scan(PAREN_BIND_VARIABLE_PATTERN) - @q.push [ :PAREN_BIND_VARIABLE, [@s.pos, @s[2]] ] - when @s.scan(BIND_VARIABLE_PATTERN) - @q.push [ :BIND_VARIABLE, [@s.pos, @s[2]] ] - when @s.scan(STRING_LITERAL_PATTERN) - @q.push [ :STRING_LITERAL, [@s.pos, @s[1]] ] - when @s.scan(SPLIT_TOKEN_PATTERN) - @q.push [ :IDENT, [@s.pos, @s[1]] ] - when @s.scan(UNMATCHED_COMMENT_START_PATTERN) ## unmatched comment start, '/*','#*' - raise Racc::ParseError, "unmatched comment. line:[#{line_no(@s.pos)}], str:[#{@s.rest}]" - when @s.scan(LITERAL_PATTERN) ## other string token - @q.push [ :IDENT, [@s.pos, @s[1]] ] - when @s.scan(SEMICOLON_AT_INPUT_END_PATTERN) - #drop semicolon at input end - else - raise Racc::ParseError, "syntax error at or near line:[#{line_no(@s.pos)}], str:[#{@s.rest}]" - end - end -end - - -## override racc's default on_error method -def on_error(t, v, vstack) - ## cursor in value-stack is an array of two items, - ## that have position value as 0th item. like [731, "ctx[:limit] "] - cursor = vstack.find do |tokens| - tokens.size == 2 and tokens[0].kind_of?(Fixnum) - end - pos = cursor[0] - line = line_no(pos) - rest = @s.string[pos .. -1] - raise Racc::ParseError, "syntax error at or near line:[#{line}], str:[#{rest}]" -end - - -def line_no(pos) - lines = 0 - scanned = @s.string[0..(pos)] - scanned.each_line { lines += 1 } - lines -end -...end twowaysql.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 8, 36, 9, 37, 12, 13, 10, 11, 14, 15, - 16, 17, 18, 19, 22, 23, 24, 8, 38, 9, - 3, 12, 13, 10, 11, 14, 15, 16, 17, 18, - 19, 22, 23, 24, 8, 25, 9, 40, 12, 13, - 10, 11, 14, 15, 16, 17, 18, 19, 22, 23, - 24, 8, 45, 9, 46, 12, 13, 10, 11, 14, - 15, 16, 17, 18, 19, 22, 23, 24, 8, nil, - 9, nil, 12, 13, 10, 11, 14, 15, 16, 17, - 18, 19, 22, 23, 24, 35, 33, 34, 31, 32, - 44, 43, 31, 32 ] - -racc_action_check = [ - 2, 24, 2, 24, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 26, 26, 26, - 1, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 27, 3, 27, 28, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 41, 37, 41, 39, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 41, 41, 42, nil, - 42, nil, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 22, 22, 22, 9, 9, - 34, 34, 40, 40 ] - -racc_action_pointer = [ - nil, 20, -2, 35, nil, nil, nil, nil, nil, 82, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 77, nil, -7, nil, 15, 32, 32, nil, - nil, nil, nil, nil, 82, nil, nil, 44, nil, 51, - 86, 49, 66, nil, nil, nil, nil, nil ] - -racc_action_default = [ - -2, -35, -1, -35, -3, -4, -5, -6, -2, -2, - -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, - -26, -27, -35, -32, -35, 48, -35, -13, -10, -11, - -12, -2, -2, -28, -35, -30, -33, -35, -7, -35, - -2, -14, -15, -29, -31, -34, -8, -9 ] - -racc_goto_table = [ - 2, 1, 28, 39, nil, nil, nil, nil, 26, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 41, 42, 47 ] - -racc_goto_check = [ - 2, 1, 7, 8, nil, nil, nil, nil, 2, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 2, 2, 7 ] - -racc_goto_pointer = [ - nil, 1, 0, nil, nil, nil, nil, -7, -25, nil, - nil, nil, nil ] - -racc_goto_default = [ - nil, nil, 27, 4, 5, 6, 7, nil, nil, 29, - 30, 20, 21 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 20, :_reduce_1, - 0, 21, :_reduce_2, - 2, 21, :_reduce_3, - 1, 22, :_reduce_none, - 1, 22, :_reduce_none, - 1, 22, :_reduce_none, - 3, 25, :_reduce_7, - 4, 24, :_reduce_8, - 2, 27, :_reduce_9, - 0, 27, :_reduce_10, - 1, 26, :_reduce_none, - 1, 26, :_reduce_none, - 1, 26, :_reduce_none, - 2, 28, :_reduce_14, - 2, 29, :_reduce_15, - 1, 23, :_reduce_16, - 1, 23, :_reduce_17, - 1, 23, :_reduce_18, - 1, 23, :_reduce_19, - 1, 23, :_reduce_20, - 1, 23, :_reduce_21, - 1, 23, :_reduce_22, - 1, 23, :_reduce_23, - 1, 23, :_reduce_24, - 1, 23, :_reduce_25, - 1, 23, :_reduce_none, - 1, 23, :_reduce_none, - 2, 30, :_reduce_28, - 3, 30, :_reduce_29, - 2, 30, :_reduce_30, - 3, 30, :_reduce_31, - 1, 30, :_reduce_32, - 2, 31, :_reduce_33, - 3, 31, :_reduce_34 ] - -racc_reduce_n = 35 - -racc_shift_n = 48 - -racc_token_table = { - false => 0, - :error => 1, - :BEGIN => 2, - :END => 3, - :IF => 4, - :ELSE => 5, - :AND => 6, - :OR => 7, - :IDENT => 8, - :STRING_LITERAL => 9, - :SPACES => 10, - :COMMA => 11, - :LPAREN => 12, - :RPAREN => 13, - :QUESTION => 14, - :ACTUAL_COMMENT => 15, - :BIND_VARIABLE => 16, - :PAREN_BIND_VARIABLE => 17, - :EMBED_VARIABLE => 18 } - -racc_nt_base = 19 - -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", - "BEGIN", - "END", - "IF", - "ELSE", - "AND", - "OR", - "IDENT", - "STRING_LITERAL", - "SPACES", - "COMMA", - "LPAREN", - "RPAREN", - "QUESTION", - "ACTUAL_COMMENT", - "BIND_VARIABLE", - "PAREN_BIND_VARIABLE", - "EMBED_VARIABLE", - "$start", - "sql", - "stmt_list", - "stmt", - "primary", - "if_stmt", - "begin_stmt", - "sub_stmt", - "else_stmt", - "and_stmt", - "or_stmt", - "bind_var", - "embed_var" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'twowaysql.y', 20) - def _reduce_1(val, _values, result) - result = RootNode.new( val[0] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 25) - def _reduce_2(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 29) - def _reduce_3(val, _values, result) - result.push val[1] - - result - end -.,., - -# reduce 4 omitted - -# reduce 5 omitted - -# reduce 6 omitted - -module_eval(<<'.,.,', 'twowaysql.y', 38) - def _reduce_7(val, _values, result) - result = BeginNode.new( val[1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 43) - def _reduce_8(val, _values, result) - result = IfNode.new( val[0][1], val[1], val[2] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 48) - def _reduce_9(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 52) - def _reduce_10(val, _values, result) - result = nil - - result - end -.,., - -# reduce 11 omitted - -# reduce 12 omitted - -# reduce 13 omitted - -module_eval(<<'.,.,', 'twowaysql.y', 61) - def _reduce_14(val, _values, result) - result = SubStatementNode.new( val[0][1], val[1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 66) - def _reduce_15(val, _values, result) - result = SubStatementNode.new( val[0][1], val[1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 71) - def _reduce_16(val, _values, result) - result = LiteralNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 75) - def _reduce_17(val, _values, result) - result = LiteralNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 79) - def _reduce_18(val, _values, result) - result = LiteralNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 83) - def _reduce_19(val, _values, result) - result = LiteralNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 87) - def _reduce_20(val, _values, result) - result = WhiteSpaceNode.new( val[0][1], @preserve_space ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 91) - def _reduce_21(val, _values, result) - result = LiteralNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 95) - def _reduce_22(val, _values, result) - result = LiteralNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 99) - def _reduce_23(val, _values, result) - result = LiteralNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 103) - def _reduce_24(val, _values, result) - @num_questions += 1 - result = QuestionNode.new( @num_questions ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 108) - def _reduce_25(val, _values, result) - result = ActualCommentNode.new( val[0][1] , val[0][2] ) - - result - end -.,., - -# reduce 26 omitted - -# reduce 27 omitted - -module_eval(<<'.,.,', 'twowaysql.y', 115) - def _reduce_28(val, _values, result) - result = BindVariableNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 119) - def _reduce_29(val, _values, result) - result = BindVariableNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 123) - def _reduce_30(val, _values, result) - result = BindVariableNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 127) - def _reduce_31(val, _values, result) - result = BindVariableNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 131) - def _reduce_32(val, _values, result) - result = ParenBindVariableNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 136) - def _reduce_33(val, _values, result) - result = EmbedVariableNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 140) - def _reduce_34(val, _values, result) - result = EmbedVariableNode.new( val[0][1] ) - - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module TwoWaySQL diff --git a/test/racc/scandata/brace b/test/racc/scandata/brace deleted file mode 100644 index f6c843853e..0000000000 --- a/test/racc/scandata/brace +++ /dev/null @@ -1,7 +0,0 @@ -{ { - } { } { - { { { } } } - { { { {} } } } - {} {} {} - } -} diff --git a/test/racc/scandata/gvar b/test/racc/scandata/gvar deleted file mode 100644 index 50528ce97b..0000000000 --- a/test/racc/scandata/gvar +++ /dev/null @@ -1 +0,0 @@ -{ $' $" $& $-a $/ $\ $( $1 $2 $3 $? $-i } diff --git a/test/racc/scandata/normal b/test/racc/scandata/normal deleted file mode 100644 index e705131536..0000000000 --- a/test/racc/scandata/normal +++ /dev/null @@ -1,4 +0,0 @@ -{ - # comment - result = "string".match(/regexp/)[0] -} diff --git a/test/racc/scandata/percent b/test/racc/scandata/percent deleted file mode 100644 index fded9a385c..0000000000 --- a/test/racc/scandata/percent +++ /dev/null @@ -1,18 +0,0 @@ -{ - 3 % 5 # mod - 3%5 # mod - 3% 5 # mod - i % 5 # mod - i%5 # mod - i% 5 # mod - call %{str} # string - call(%{str}) # string - %q{string} # string - %Q{string} # string - %r{string} # string - %w(array) # array - %x{array} # command string - %{string} # string - %_string_ # string - %/string/ # regexp -} diff --git a/test/racc/scandata/slash b/test/racc/scandata/slash deleted file mode 100644 index 190135b3bd..0000000000 --- a/test/racc/scandata/slash +++ /dev/null @@ -1,10 +0,0 @@ -{ - # here's many '/'s - i = 5/1 # div - re = /regex/ # regexp - i /= 5 # div - result = 5 / 1 # div - result = 5/ 1 # div - call(/regex/) # regexp - call /regex/ # regexp -} diff --git a/test/racc/src.intp b/test/racc/src.intp deleted file mode 100644 index 4d2460e8ed..0000000000 --- a/test/racc/src.intp +++ /dev/null @@ -1,34 +0,0 @@ -def assert( no, cond ) - if cond then - else - raise( 'assert ' + to_s(no) + ' failed' ) - end -end - -assert( 1, concat(concat(concat('str=', 'a'), "b"), 'c') == 'str=abc' ) -assert( 2, 'operator' + ' ok' == 'operator ok' ) -assert( 3, 1 + 1 == 2 ) -assert( 4, 4 * 1 + 10 * 1 == 14 ) - -if true then - assert( 5, true ) -else - assert( 6, false ) -end - -i = 1 -while i == 1 do - i = false -end -assert( 7, i == false ) -assert( 8, nil == nil ) - -def func - assert( 9, true ) -end -func - -def argfunc( str ) - assert( 10, str == 'ok' ) -end -argfunc 'ok' diff --git a/test/racc/start.y b/test/racc/start.y deleted file mode 100644 index 86296899b8..0000000000 --- a/test/racc/start.y +++ /dev/null @@ -1,20 +0,0 @@ -class S - -start st - -rule - -n: D { result = 'no' } -st : A B C n { result = 'ok' } - -end - ----- inner - - def parse - do_parse - end - ----- footer - -S.new.parse == 'ok' or raise 'start stmt not worked' diff --git a/test/racc/test_chk_y.rb b/test/racc/test_chk_y.rb deleted file mode 100644 index bb8b6b4fe3..0000000000 --- a/test/racc/test_chk_y.rb +++ /dev/null @@ -1,52 +0,0 @@ -require File.expand_path(File.join(File.dirname(__FILE__), 'helper')) - -module Racc - class TestChkY < TestCase - def setup - super - file = File.join(ASSET_DIR, 'chk.y') - @debug_flags = Racc::DebugFlags.parse_option_string('o') - parser = Racc::GrammarFileParser.new(@debug_flags) - @result = parser.parse(File.read(file), File.basename(file)) - @states = Racc::States.new(@result.grammar).nfa - @states.dfa - end - - def test_compile_chk_y - generator = Racc::ParserFileGenerator.new(@states, @result.params.dup) - - # it generates valid ruby - assert Module.new { - self.instance_eval(generator.generate_parser, __FILE__, __LINE__) - } - - grammar = @states.grammar - - assert_equal 0, @states.n_srconflicts - assert_equal 0, @states.n_rrconflicts - assert_equal 0, grammar.n_useless_nonterminals - assert_equal 0, grammar.n_useless_rules - assert_nil grammar.n_expected_srconflicts - end - - def test_compile_chk_y_line_convert - params = @result.params.dup - params.convert_line_all = true - - generator = Racc::ParserFileGenerator.new(@states, @result.params.dup) - - # it generates valid ruby - assert Module.new { - self.instance_eval(generator.generate_parser, __FILE__, __LINE__) - } - - grammar = @states.grammar - - assert_equal 0, @states.n_srconflicts - assert_equal 0, @states.n_rrconflicts - assert_equal 0, grammar.n_useless_nonterminals - assert_equal 0, grammar.n_useless_rules - assert_nil grammar.n_expected_srconflicts - end - end -end diff --git a/test/racc/test_grammar_file_parser.rb b/test/racc/test_grammar_file_parser.rb deleted file mode 100644 index b187bdcaec..0000000000 --- a/test/racc/test_grammar_file_parser.rb +++ /dev/null @@ -1,15 +0,0 @@ -require File.expand_path(File.join(File.dirname(__FILE__), 'helper')) - -module Racc - class TestGrammarFileParser < TestCase - def test_parse - file = File.join(ASSET_DIR, 'yyerr.y') - - debug_flags = Racc::DebugFlags.parse_option_string('o') - assert debug_flags.status_logging - - parser = Racc::GrammarFileParser.new(debug_flags) - parser.parse(File.read(file), File.basename(file)) - end - end -end diff --git a/test/racc/test_racc_command.rb b/test/racc/test_racc_command.rb deleted file mode 100644 index 0d2c5829e4..0000000000 --- a/test/racc/test_racc_command.rb +++ /dev/null @@ -1,339 +0,0 @@ -require File.expand_path(File.join(File.dirname(__FILE__), 'helper')) - -module Racc - class TestRaccCommand < TestCase - def test_syntax_y - assert_compile 'syntax.y', '-v' - assert_debugfile 'syntax.y', [0,0,0,0,0] - end - - def test_percent_y - assert_compile 'percent.y' - assert_debugfile 'percent.y', [] - assert_exec 'percent.y' - end - - def test_scan_y - assert_compile 'scan.y' - assert_debugfile 'scan.y', [] - assert_exec 'scan.y' - end - - def test_newsyn_y - assert_compile 'newsyn.y' - assert_debugfile 'newsyn.y', [] - end - - def test_normal_y - assert_compile 'normal.y' - assert_debugfile 'normal.y', [] - - assert_compile 'normal.y', '-vg' - assert_debugfile 'normal.y', [] - end - - def test_chk_y - assert_compile 'chk.y', '-vg' - assert_debugfile 'chk.y', [] - assert_exec 'chk.y' - - assert_compile 'chk.y', '--line-convert-all' - assert_debugfile 'chk.y', [] - assert_exec 'chk.y' - end - - def test_echk_y - assert_compile 'echk.y', '-E' - assert_debugfile 'echk.y', [] - assert_exec 'echk.y' - end - - def test_err_y - assert_compile 'err.y' - assert_debugfile 'err.y', [] - assert_exec 'err.y' - end - - def test_mailp_y - assert_compile 'mailp.y' - assert_debugfile 'mailp.y', [] - end - - def test_conf_y - assert_compile 'conf.y', '-v' - assert_debugfile 'conf.y', [4,1,1,2] - end - - def test_rrconf_y - assert_compile 'rrconf.y' - assert_debugfile 'rrconf.y', [1,1,0,0] - end - - def test_useless_y - assert_compile 'useless.y' - assert_debugfile 'useless.y', [0,0,1,2] - end - - def test_opt_y - assert_compile 'opt.y' - assert_debugfile 'opt.y', [] - assert_exec 'opt.y' - end - - def test_yyerr_y - assert_compile 'yyerr.y' - assert_debugfile 'yyerr.y', [] - assert_exec 'yyerr.y' - end - - def test_recv_y - assert_compile 'recv.y' - assert_debugfile 'recv.y', [5,10,1,4] - end - - def test_ichk_y - assert_compile 'ichk.y' - assert_debugfile 'ichk.y', [] - assert_exec 'ichk.y' - end - - def test_intp_y - assert_compile 'intp.y' - assert_debugfile 'intp.y', [] - assert_exec 'intp.y' - end - - def test_expect_y - assert_compile 'expect.y' - assert_debugfile 'expect.y', [1,0,0,0,1] - end - - def test_nullbug1_y - assert_compile 'nullbug1.y' - assert_debugfile 'nullbug1.y', [0,0,0,0] - end - - def test_nullbug2_y - assert_compile 'nullbug2.y' - assert_debugfile 'nullbug2.y', [0,0,0,0] - end - - def test_firstline_y - assert_compile 'firstline.y' - assert_debugfile 'firstline.y', [] - end - - def test_nonass_y - assert_compile 'nonass.y' - assert_debugfile 'nonass.y', [] - assert_exec 'nonass.y' - end - - def test_digraph_y - assert_compile 'digraph.y' - assert_debugfile 'digraph.y', [] - assert_exec 'digraph.y' - end - - def test_noend_y - assert_compile 'noend.y' - assert_debugfile 'noend.y', [] - end - - def test_norule_y - assert_raise(Test::Unit::AssertionFailedError) { - assert_compile 'norule.y' - } - end - - def test_unterm_y - assert_raise(Test::Unit::AssertionFailedError) { - assert_compile 'unterm.y' - } - end - - # Regression test for a problem where error recovery at EOF would cause - # a Racc-generated parser to go into an infinite loop (on some grammars) - def test_error_recovery_y - assert_compile 'error_recovery.y' - Timeout.timeout(10) do - assert_exec 'error_recovery.y' - end - end - - # .y files from `parser` gem - - def test_ruby18 - assert_compile 'ruby18.y', [], timeout: 60 - assert_debugfile 'ruby18.y', [] - assert_output_unchanged 'ruby18.y' - end - - def test_ruby22 - assert_compile 'ruby22.y', [], timeout: 60 - assert_debugfile 'ruby22.y', [] - assert_output_unchanged 'ruby22.y' - end - - # .y file from csspool gem - - def test_csspool - assert_compile 'csspool.y' - assert_debugfile 'csspool.y', [5, 3] - assert_output_unchanged 'csspool.y' - end - - # .y file from opal gem - - def test_opal - assert_compile 'opal.y', [], timeout: 60 - assert_debugfile 'opal.y', [] - assert_output_unchanged 'opal.y' - end - - # .y file from journey gem - - def test_journey - assert_compile 'journey.y' - assert_debugfile 'journey.y', [] - assert_output_unchanged 'journey.y' - end - - # .y file from nokogiri gem - - def test_nokogiri_css - assert_compile 'nokogiri-css.y' - assert_debugfile 'nokogiri-css.y', [0, 1] - assert_output_unchanged 'nokogiri-css.y' - end - - # .y file from edtf-ruby gem - - def test_edtf - assert_compile 'edtf.y' - assert_debugfile 'edtf.y', [0, 0, 0, 0, 0] - assert_output_unchanged 'edtf.y' - end - - # .y file from namae gem - - def test_namae - assert_compile 'namae.y' - assert_debugfile 'namae.y', [0, 0, 0, 0, 0] - assert_output_unchanged 'namae.y' - end - - # .y file from liquor gem - - def test_liquor - assert_compile 'liquor.y' - assert_debugfile 'liquor.y', [0, 0, 0, 0, 15] - assert_output_unchanged 'liquor.y' - end - - # .y file from nasl gem - - def test_nasl - assert_compile 'nasl.y' - assert_debugfile 'nasl.y', [0, 0, 0, 0, 1] - assert_output_unchanged 'nasl.y' - end - - # .y file from riml gem - - def test_riml - assert_compile 'riml.y' - assert_debugfile 'riml.y', [289, 0, 0, 0] - assert_output_unchanged 'riml.y' - end - - # .y file from ruby-php-serialization gem - - def test_php_serialization - assert_compile 'php_serialization.y' - assert_debugfile 'php_serialization.y', [0, 0, 0, 0] - assert_output_unchanged 'php_serialization.y' - end - - # .y file from huia language implementation - - def test_huia - assert_compile 'huia.y' - assert_debugfile 'huia.y', [285, 0, 0, 0] - assert_output_unchanged 'huia.y' - end - - # .y file from cast gem - - def test_cast - assert_compile 'cast.y' - assert_debugfile 'cast.y', [0, 0, 0, 0, 1] - assert_output_unchanged 'cast.y' - end - - # .y file from cadenza gem - - def test_cadenza - assert_compile 'cadenza.y' - assert_debugfile 'cadenza.y', [0, 0, 0, 0, 37] - assert_output_unchanged 'cadenza.y' - end - - # .y file from mediacloth gem - - def test_mediacloth - assert_compile 'mediacloth.y' - assert_debugfile 'mediacloth.y', [0, 0, 0, 0] - assert_output_unchanged 'mediacloth.y' - end - - # .y file from twowaysql gem - - def test_twowaysql - assert_compile 'twowaysql.y' - assert_debugfile 'twowaysql.y', [4, 0, 0, 0] - assert_output_unchanged 'twowaysql.y' - end - - # .y file from machete gem - - def test_machete - assert_compile 'machete.y' - assert_debugfile 'machete.y', [0, 0, 0, 0] - assert_output_unchanged 'machete.y' - end - - # .y file from mof gem - - def test_mof - assert_compile 'mof.y' - assert_debugfile 'mof.y', [7, 4, 0, 0] - assert_output_unchanged 'mof.y' - end - - # .y file from tp_plus gem - - def test_tp_plus - assert_compile 'tp_plus.y' - assert_debugfile 'tp_plus.y', [21, 0, 0, 0] - assert_output_unchanged 'tp_plus.y' - end - - def test_ifelse - omit if RUBY_PLATFORM =~ /java/ - - stderr = nil - racc "-o#{@TAB_DIR}/ifelse", "#{ASSET_DIR}/ifelse.y", stdout_filter: ->(s) { stderr = s } - stderr = stderr.lines[1..-1].join if RUBY_PLATFORM.match?(/java/) - assert_equal(<<~STDERR, stderr) - 1 useless nonterminals: - dummy - 2 useless rules: - #4 (dummy) - #5 (dummy) - 1 shift/reduce conflicts - Turn on logging with "-v" and check ".output" file for details - STDERR - end - end -end diff --git a/test/racc/test_scan_y.rb b/test/racc/test_scan_y.rb deleted file mode 100644 index 4c60119119..0000000000 --- a/test/racc/test_scan_y.rb +++ /dev/null @@ -1,52 +0,0 @@ -require File.expand_path(File.join(File.dirname(__FILE__), 'helper')) - -module Racc - class TestScanY < TestCase - def setup - super - file = File.join(ASSET_DIR, 'scan.y') - @debug_flags = Racc::DebugFlags.parse_option_string('o') - parser = Racc::GrammarFileParser.new(@debug_flags) - @result = parser.parse(File.read(file), File.basename(file)) - @states = Racc::States.new(@result.grammar).nfa - @states.dfa - end - - def test_compile - generator = Racc::ParserFileGenerator.new(@states, @result.params.dup) - - # it generates valid ruby - assert Module.new { - self.class_eval(generator.generate_parser) - } - - grammar = @states.grammar - - assert_equal 0, @states.n_srconflicts - assert_equal 0, @states.n_rrconflicts - assert_equal 0, grammar.n_useless_nonterminals - assert_equal 0, grammar.n_useless_rules - assert_nil grammar.n_expected_srconflicts - end - - def test_compile_line_convert - params = @result.params.dup - params.convert_line_all = true - - generator = Racc::ParserFileGenerator.new(@states, @result.params.dup) - - # it generates valid ruby - assert Module.new { - self.class_eval(generator.generate_parser) - } - - grammar = @states.grammar - - assert_equal 0, @states.n_srconflicts - assert_equal 0, @states.n_rrconflicts - assert_equal 0, grammar.n_useless_nonterminals - assert_equal 0, grammar.n_useless_rules - assert_nil grammar.n_expected_srconflicts - end - end -end diff --git a/test/racc/testscanner.rb b/test/racc/testscanner.rb deleted file mode 100644 index d7877511ec..0000000000 --- a/test/racc/testscanner.rb +++ /dev/null @@ -1,51 +0,0 @@ -# -# racc scanner tester -# - -require 'racc/raccs' - - -class ScanError < StandardError; end - -def testdata( dir, argv ) - if argv.empty? then - Dir.glob( dir + '/*' ) - - Dir.glob( dir + '/*.swp' ) - - [ dir + '/CVS' ] - else - argv.collect {|i| dir + '/' + i } - end -end - - -if ARGV.delete '--print' then - $raccs_print_type = true - printonly = true -else - printonly = false -end - -testdata( File.dirname($0) + '/scandata', ARGV ).each do |file| - $stderr.print File.basename(file) + ': ' - begin - ok = File.read(file) - s = Racc::GrammarFileScanner.new( ok ) - sym, (val, _lineno) = s.scan - if printonly then - $stderr.puts - $stderr.puts val - next - end - - val = '{' + val + "}\n" - sym == :ACTION or raise ScanError, 'is not action!' - val == ok or raise ScanError, "\n>>>\n#{ok}----\n#{val}<<<" - - $stderr.puts 'ok' - rescue => err - $stderr.puts 'fail (' + err.type.to_s + ')' - $stderr.puts err.message - $stderr.puts err.backtrace - $stderr.puts - end -end |