# # 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 = [ -30, 11, 13, 21, 22, 12, 9, 11, -30, -30, -30, 12, 16, 11, 20, 21, 22, 12, 16, 25, 31, 24, 29, 30, 21, 22, 27, 14, 22, 38, 38, 40, 29, 41, 42, 22, 22, 45 ] racc_action_check = [ 9, 0, 0, 15, 15, 0, 0, 2, 9, 9, 9, 2, 2, 10, 3, 3, 3, 10, 10, 5, 14, 5, 13, 13, 17, 17, 6, 1, 18, 21, 22, 23, 27, 29, 30, 32, 34, 39 ] racc_action_pointer = [ -1, 27, 5, 6, nil, 15, 23, nil, nil, 0, 11, nil, nil, 10, 20, -6, nil, 15, 18, nil, nil, 24, 25, 25, nil, nil, nil, 20, nil, 30, 31, nil, 25, nil, 26, nil, nil, nil, nil, 26, nil, nil, nil, nil, nil, nil ] racc_action_default = [ -36, -36, -36, -12, -13, -17, -18, -20, -21, -22, -27, -29, -31, -33, -36, -8, -30, -10, -11, -6, -23, -36, -36, -15, -16, -32, -19, -36, -26, -36, -36, 46, -7, -2, -9, -4, -5, -24, -28, -36, -14, -34, -35, -1, -3, -25 ] racc_goto_table = [ 19, 7, 28, 3, 18, 15, 17, 26, 37, 39, 5, 23, 33, 6, 35, 36, 32, 2, 34, 8, 1, nil, nil, nil, nil, nil, nil, nil, nil, 43, nil, 44 ] racc_goto_check = [ 5, 11, 7, 3, 4, 3, 6, 11, 13, 13, 8, 9, 5, 10, 5, 5, 4, 2, 4, 12, 1, nil, nil, nil, nil, nil, nil, nil, nil, 5, nil, 5 ] racc_goto_pointer = [ nil, 20, 17, 3, 1, -3, 3, -8, 10, 6, 13, 1, 19, -13, nil ] racc_goto_default = [ nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, nil, nil, nil, nil, 10 ] 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, 1, 22, :_reduce_18, 2, 22, :_reduce_19, 1, 22, :_reduce_20, 1, 22, :_reduce_21, 1, 22, :_reduce_22, 1, 20, :_reduce_23, 2, 18, :_reduce_24, 3, 19, :_reduce_25, 2, 21, :_reduce_26, 1, 21, :_reduce_none, 1, 27, :_reduce_none, 1, 28, :_reduce_none, 1, 28, :_reduce_none, 1, 28, :_reduce_none, 1, 23, :_reduce_32, 1, 24, :_reduce_33, 3, 25, :_reduce_34, 3, 26, :_reduce_35 ] racc_reduce_n = 36 racc_shift_n = 46 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 def _reduce_18(val, _values, result) @ingredient.amount = result result end def _reduce_19(val, _values, result) @ingredient.amount = val[0] + val[1] result end def _reduce_20(val, _values, result) @ingredient.amount = result result end def _reduce_21(val, _values, result) @ingredient.amount = result result end def _reduce_22(val, _values, result) @ingredient.amount = 1 result end def _reduce_23(val, _values, result) @ingredient.unit = to_unit(result) result end def _reduce_24(val, _values, result) @ingredient.style = val[1] result end def _reduce_25(val, _values, result) @ingredient.note = val[1] result end def _reduce_26(val, _values, result) result = val.join(' ') result end # reduce 27 omitted # reduce 28 omitted # reduce 29 omitted # reduce 30 omitted # reduce 31 omitted def _reduce_32(val, _values, result) @ingredient.unit = to_unit(result) result end def _reduce_33(val, _values, result) result = val[0].to_i result end def _reduce_34(val, _values, result) result = val[0].to_f / val[2].to_f result end def _reduce_35(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