# # DO NOT MODIFY!!!! # This file is automatically generated by Racc 1.4.11 # from Racc grammer 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 = [ -32, 12, 22, 23, 24, 13, 18, 12, -32, -32, -32, 13, 18, 12, 15, 14, 29, 13, 10, 14, 33, 26, 23, 24, 31, 32, 23, 24, 27, 16, 24, 40, 40, 42, 31, 43, 44, 24, 24, 47 ] racc_action_check = [ 10, 11, 3, 3, 3, 11, 11, 2, 10, 10, 10, 2, 2, 0, 0, 0, 7, 0, 0, 5, 16, 5, 19, 19, 15, 15, 17, 17, 6, 1, 20, 23, 24, 25, 29, 31, 32, 34, 36, 41 ] racc_action_pointer = [ 11, 29, 5, -6, nil, 15, 22, 13, nil, nil, 0, -1, nil, nil, nil, 12, 20, 17, nil, 13, 20, nil, nil, 26, 27, 27, nil, nil, nil, 22, nil, 32, 33, nil, 27, nil, 28, nil, nil, nil, nil, 28, nil, nil, nil, nil, nil, nil ] racc_action_default = [ -38, -38, -38, -12, -13, -17, -19, -20, -22, -23, -24, -29, -31, -33, -34, -35, -38, -8, -32, -10, -11, -6, -25, -38, -38, -15, -16, -18, -21, -38, -28, -38, -38, 48, -7, -2, -9, -4, -5, -26, -30, -38, -14, -36, -37, -1, -3, -27 ] racc_goto_table = [ 21, 8, 6, 3, 20, 17, 30, 25, 28, 39, 41, 5, 19, 7, 35, 2, 37, 38, 34, 9, 36, 1, nil, nil, nil, nil, nil, nil, nil, nil, nil, 45, nil, 46 ] racc_goto_check = [ 5, 11, 9, 3, 4, 3, 7, 9, 11, 13, 13, 8, 6, 10, 5, 2, 5, 5, 4, 12, 4, 1, nil, nil, nil, nil, nil, nil, nil, nil, nil, 5, nil, 5 ] racc_goto_pointer = [ nil, 21, 15, 3, 1, -3, 9, -5, 11, 2, 13, 1, 19, -14, nil ] racc_goto_default = [ nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, nil, nil, nil, nil, 11 ] racc_reduce_table = [ 0, 0, :racc_error, 4, 15, :_reduce_none, 3, 15, :_reduce_none, 4, 15, :_reduce_none, 3, 15, :_reduce_none, 3, 15, :_reduce_none, 2, 15, :_reduce_none, 3, 15, :_reduce_none, 2, 15, :_reduce_none, 3, 15, :_reduce_none, 2, 15, :_reduce_none, 2, 15, :_reduce_none, 1, 15, :_reduce_none, 1, 17, :_reduce_13, 3, 16, :_reduce_none, 2, 16, :_reduce_none, 2, 16, :_reduce_none, 1, 16, :_reduce_none, 2, 16, :_reduce_none, 1, 16, :_reduce_none, 1, 22, :_reduce_20, 2, 22, :_reduce_21, 1, 22, :_reduce_22, 1, 22, :_reduce_23, 1, 22, :_reduce_24, 1, 20, :_reduce_25, 2, 18, :_reduce_26, 3, 19, :_reduce_27, 2, 21, :_reduce_28, 1, 21, :_reduce_none, 1, 27, :_reduce_none, 1, 28, :_reduce_none, 1, 28, :_reduce_none, 1, 28, :_reduce_none, 1, 23, :_reduce_34, 1, 24, :_reduce_35, 3, 25, :_reduce_36, 3, 26, :_reduce_37 ] racc_reduce_n = 38 racc_shift_n = 48 racc_token_table = { false => 0, :error => 1, :WORD => 2, :NUMBER => 3, :UNIT => 4, :TEXT => 5, :OF => 6, :A => 7, :TO_TASTE => 8, "," => 9, "(" => 10, ")" => 11, "/" => 12, "." => 13 } racc_nt_base = 14 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", "A", "TO_TASTE", "\",\"", "\"(\"", "\")\"", "\"/\"", "\".\"", "$start", "ingredient", "quantity", "ingredient_name", "style", "note", "to_taste", "words", "amount", "unit", "number", "fraction", "decimal", "text", "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 def _reduce_13(val, _values, result) @ingredient.name = result result end # reduce 14 omitted # reduce 15 omitted # reduce 16 omitted # reduce 17 omitted # reduce 18 omitted # reduce 19 omitted def _reduce_20(val, _values, result) @ingredient.amount = result result end def _reduce_21(val, _values, result) @ingredient.amount = val[0] + val[1] result end def _reduce_22(val, _values, result) @ingredient.amount = result result end def _reduce_23(val, _values, result) @ingredient.amount = result result end def _reduce_24(val, _values, result) @ingredient.amount = 1 result end def _reduce_25(val, _values, result) @ingredient.unit = to_unit(result) result end def _reduce_26(val, _values, result) @ingredient.style = val[1] result end def _reduce_27(val, _values, result) @ingredient.note = val[1] result end def _reduce_28(val, _values, result) result = val.join(' ') result end # reduce 29 omitted # reduce 30 omitted # reduce 31 omitted # reduce 32 omitted # reduce 33 omitted def _reduce_34(val, _values, result) @ingredient.unit = to_unit(result) result end def _reduce_35(val, _values, result) result = val[0].to_i result end def _reduce_36(val, _values, result) result = val[0].to_f / val[2].to_f result end def _reduce_37(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