# # DO NOT MODIFY!!!! # This file is automatically generated by Racc 1.6.0 # from Racc grammar file "". # require 'racc/parser.rb' module EyeOfNewt class Parser < Racc::Parser def initialize(tokenizer, units:, ingredient: nil) @tokenizer = tokenizer @units = units @ingredient = ingredient || default_ingredient super() end def next_token @tokenizer.next_token end def parse do_parse @ingredient rescue Racc::ParseError raise InvalidIngredient, @tokenizer.string end def to_unit(u) @units[u] end def default_ingredient EyeOfNewt::Ingredient.new(amount: 1, unit: @units.default) end ##### State transition tables begin ### racc_action_table = [ -47, 22, 19, 21, 12, 32, 20, -47, 11, -47, 13, -47, 14, 19, 12, 12, 35, 20, 38, 24, 36, 25, 14, 19, 19, 39, 40, 20, 20, 24, 24, 25, 25, 29, -35, 30, 31, 12, 42, 58, 46, 47, 30, 31, 30, 31, 44, 48, 31, 42, 42, 59, 60, 21, 21, 63, 46, 64, 65, 31, 31, 68, 69 ] racc_action_check = [ 11, 1, 0, 0, 0, 4, 0, 11, 0, 11, 0, 11, 0, 2, 6, 7, 6, 2, 8, 2, 6, 2, 6, 18, 32, 9, 9, 18, 32, 18, 32, 18, 32, 3, 13, 3, 3, 33, 14, 33, 21, 21, 23, 23, 26, 26, 15, 22, 27, 30, 31, 34, 37, 39, 40, 41, 44, 46, 47, 49, 51, 55, 57 ] racc_action_pointer = [ 0, 1, 11, 24, -2, nil, 10, 11, 12, 11, nil, 0, nil, 30, 33, 43, nil, nil, 21, nil, nil, 24, 47, 31, nil, nil, 33, 36, nil, nil, 44, 45, 22, 33, 45, nil, nil, 46, nil, 50, 51, 42, nil, nil, 40, nil, 54, 55, nil, 47, nil, 48, nil, nil, nil, 48, nil, 56, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil ] racc_action_default = [ -53, -53, -53, -12, -14, -15, -23, -53, -27, -28, -29, -30, -31, -49, -53, -39, -41, -42, -44, -46, -48, -50, -53, -8, -47, -49, -10, -11, -6, -32, -53, -53, -53, -21, -19, -22, -35, -25, -26, -53, -53, -53, -45, -40, -53, -43, -53, -53, 70, -7, -2, -9, -4, -5, -33, -53, -13, -17, -20, -18, -24, -37, -38, -36, -51, -52, -1, -3, -34, -16 ] racc_goto_table = [ 28, 9, 8, 1, 3, 27, 23, 7, 34, 37, 41, 2, 26, 33, 45, 6, 10, 43, nil, nil, 50, nil, nil, 52, 53, 49, 54, 55, 51, nil, nil, nil, nil, nil, nil, 57, 56, nil, nil, nil, 61, 62, nil, nil, nil, nil, 66, nil, 67 ] racc_goto_check = [ 5, 12, 11, 1, 3, 4, 3, 10, 11, 11, 14, 2, 6, 10, 8, 9, 13, 16, nil, nil, 5, nil, nil, 5, 5, 4, 14, 14, 4, nil, nil, nil, nil, nil, nil, 11, 3, nil, nil, nil, 12, 12, nil, nil, nil, nil, 5, nil, 5 ] racc_goto_pointer = [ nil, 3, 11, 4, 2, -3, 9, nil, -4, 15, 7, 2, 1, 16, -4, nil, 2, nil, nil ] racc_goto_default = [ nil, nil, nil, nil, nil, nil, nil, 4, 5, nil, nil, nil, nil, nil, nil, 15, 16, 17, 18 ] racc_reduce_table = [ 0, 0, :racc_error, 4, 19, :_reduce_none, 3, 19, :_reduce_none, 4, 19, :_reduce_none, 3, 19, :_reduce_none, 3, 19, :_reduce_none, 2, 19, :_reduce_none, 3, 19, :_reduce_none, 2, 19, :_reduce_none, 3, 19, :_reduce_none, 2, 19, :_reduce_none, 2, 19, :_reduce_none, 1, 19, :_reduce_none, 3, 21, :_reduce_none, 1, 21, :_reduce_none, 1, 25, :_reduce_15, 4, 20, :_reduce_none, 3, 20, :_reduce_none, 3, 20, :_reduce_none, 2, 20, :_reduce_none, 3, 20, :_reduce_none, 2, 20, :_reduce_none, 2, 20, :_reduce_none, 1, 20, :_reduce_none, 3, 20, :_reduce_none, 2, 20, :_reduce_none, 2, 20, :_reduce_none, 1, 20, :_reduce_none, 1, 27, :_reduce_28, 1, 27, :_reduce_29, 1, 27, :_reduce_30, 1, 29, :_reduce_31, 1, 24, :_reduce_32, 2, 22, :_reduce_33, 3, 23, :_reduce_34, 1, 28, :_reduce_35, 3, 28, :_reduce_36, 3, 31, :_reduce_37, 3, 31, :_reduce_38, 1, 30, :_reduce_none, 2, 30, :_reduce_40, 1, 30, :_reduce_none, 1, 30, :_reduce_none, 2, 26, :_reduce_43, 1, 26, :_reduce_none, 1, 32, :_reduce_none, 1, 36, :_reduce_none, 1, 36, :_reduce_none, 1, 36, :_reduce_none, 1, 36, :_reduce_none, 1, 33, :_reduce_50, 3, 34, :_reduce_51, 3, 35, :_reduce_52 ] racc_reduce_n = 53 racc_shift_n = 70 racc_token_table = { false => 0, :error => 1, :WORD => 2, :NUMBER => 3, :UNIT => 4, :TEXT => 5, :OF => 6, :OR => 7, :A => 8, :TO_TASTE => 9, :UNIT_MODIFIER => 10, "," => 11, "(" => 12, ")" => 13, "-" => 14, "\xE2\x80\x93" => 15, "/" => 16, "." => 17 } racc_nt_base = 18 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", "WORD", "NUMBER", "UNIT", "TEXT", "OF", "OR", "A", "TO_TASTE", "UNIT_MODIFIER", "\",\"", "\"(\"", "\")\"", "\"-\"", "\"\\xE2\\x80\\x93\"", "\"/\"", "\".\"", "$start", "ingredient", "quantity", "ingredient_names", "style", "note", "to_taste", "ingredient_name", "ingredient_words", "amount", "unit_modifier", "unit", "numerical_amount", "numerical_range", "text", "number", "fraction", "decimal", "ingredient_word" ] 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 # reduce 8 omitted # reduce 9 omitted # reduce 10 omitted # reduce 11 omitted # reduce 12 omitted # reduce 13 omitted # reduce 14 omitted def _reduce_15(val, _values, result) @ingredient.names << result result end # 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 def _reduce_28(val, _values, result) @ingredient.amount = result result end def _reduce_29(val, _values, result) @ingredient.amount = result result end def _reduce_30(val, _values, result) @ingredient.amount = 1 result end def _reduce_31(val, _values, result) @ingredient.unit = to_unit(result) result end def _reduce_32(val, _values, result) @ingredient.unit = to_unit(result) result end def _reduce_33(val, _values, result) @ingredient.style = val[1] result end def _reduce_34(val, _values, result) @ingredient.note = val[1] result end def _reduce_35(val, _values, result) @ingredient.unit_modifier = val[0] result end def _reduce_36(val, _values, result) @ingredient.unit_modifier = val[1] result end def _reduce_37(val, _values, result) result = [val[0], val[2]] result end def _reduce_38(val, _values, result) result = [val[0], val[2]] result end # reduce 39 omitted def _reduce_40(val, _values, result) result = val[0] + val[1] result end # reduce 41 omitted # reduce 42 omitted def _reduce_43(val, _values, result) result = val.join(' ') result end # reduce 44 omitted # reduce 45 omitted # reduce 46 omitted # reduce 47 omitted # reduce 48 omitted # reduce 49 omitted def _reduce_50(val, _values, result) result = val[0].to_i result end def _reduce_51(val, _values, result) result = val[0].to_f / val[2].to_f result end def _reduce_52(val, _values, result) result = val.join.to_f result end def _reduce_none(val, _values, result) val[0] end end # class Parser end # module EyeOfNewt