Class: EyeOfNewt::Parser

Inherits:
Racc::Parser
  • Object
show all
Defined in:
lib/eye_of_newt/parser.rb

Constant Summary collapse

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",
"\",\"",
"\"(\"",
"\")\"",
"\"-\"",
"\"\u{2013}\"",
"\"/\"",
"\".\"",
"$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

Instance Method Summary collapse

Constructor Details

#initialize(tokenizer, units:, ingredient: nil) ⇒ Parser

Returns a new instance of Parser.



12
13
14
15
16
17
# File 'lib/eye_of_newt/parser.rb', line 12

def initialize(tokenizer, units:, ingredient: nil)
  @tokenizer = tokenizer
  @units = units
  @ingredient = ingredient || default_ingredient
  super()
end

Instance Method Details

#_reduce_15(val, _values, result) ⇒ Object

reduce 14 omitted



269
270
271
272
# File 'lib/eye_of_newt/parser.rb', line 269

def _reduce_15(val, _values, result)
 @ingredient.names << result
    result
end

#_reduce_28(val, _values, result) ⇒ Object

reduce 27 omitted



298
299
300
301
# File 'lib/eye_of_newt/parser.rb', line 298

def _reduce_28(val, _values, result)
 @ingredient.amount = result
    result
end

#_reduce_29(val, _values, result) ⇒ Object



303
304
305
306
# File 'lib/eye_of_newt/parser.rb', line 303

def _reduce_29(val, _values, result)
 @ingredient.amount = result
    result
end

#_reduce_30(val, _values, result) ⇒ Object



308
309
310
311
# File 'lib/eye_of_newt/parser.rb', line 308

def _reduce_30(val, _values, result)
 @ingredient.amount = 1
    result
end

#_reduce_31(val, _values, result) ⇒ Object



313
314
315
316
# File 'lib/eye_of_newt/parser.rb', line 313

def _reduce_31(val, _values, result)
 @ingredient.unit = to_unit(result)
    result
end

#_reduce_32(val, _values, result) ⇒ Object



318
319
320
321
# File 'lib/eye_of_newt/parser.rb', line 318

def _reduce_32(val, _values, result)
 @ingredient.unit = to_unit(result)
    result
end

#_reduce_33(val, _values, result) ⇒ Object



323
324
325
326
# File 'lib/eye_of_newt/parser.rb', line 323

def _reduce_33(val, _values, result)
 @ingredient.style = val[1]
    result
end

#_reduce_34(val, _values, result) ⇒ Object



328
329
330
331
# File 'lib/eye_of_newt/parser.rb', line 328

def _reduce_34(val, _values, result)
 @ingredient.note = val[1]
    result
end

#_reduce_35(val, _values, result) ⇒ Object



333
334
335
336
# File 'lib/eye_of_newt/parser.rb', line 333

def _reduce_35(val, _values, result)
 @ingredient.unit_modifier = val[0]
    result
end

#_reduce_36(val, _values, result) ⇒ Object



338
339
340
341
# File 'lib/eye_of_newt/parser.rb', line 338

def _reduce_36(val, _values, result)
 @ingredient.unit_modifier = val[1]
    result
end

#_reduce_37(val, _values, result) ⇒ Object



343
344
345
346
# File 'lib/eye_of_newt/parser.rb', line 343

def _reduce_37(val, _values, result)
 result = [val[0], val[2]]
    result
end

#_reduce_38(val, _values, result) ⇒ Object



348
349
350
351
# File 'lib/eye_of_newt/parser.rb', line 348

def _reduce_38(val, _values, result)
 result = [val[0], val[2]]
    result
end

#_reduce_40(val, _values, result) ⇒ Object

reduce 39 omitted



355
356
357
358
# File 'lib/eye_of_newt/parser.rb', line 355

def _reduce_40(val, _values, result)
 result = val[0] + val[1]
    result
end

#_reduce_43(val, _values, result) ⇒ Object

reduce 42 omitted



364
365
366
367
# File 'lib/eye_of_newt/parser.rb', line 364

def _reduce_43(val, _values, result)
 result = val.join(' ')
    result
end

#_reduce_50(val, _values, result) ⇒ Object

reduce 49 omitted



381
382
383
384
# File 'lib/eye_of_newt/parser.rb', line 381

def _reduce_50(val, _values, result)
 result = val[0].to_i
    result
end

#_reduce_51(val, _values, result) ⇒ Object



386
387
388
389
# File 'lib/eye_of_newt/parser.rb', line 386

def _reduce_51(val, _values, result)
 result = val[0].to_f / val[2].to_f
    result
end

#_reduce_52(val, _values, result) ⇒ Object



391
392
393
394
# File 'lib/eye_of_newt/parser.rb', line 391

def _reduce_52(val, _values, result)
 result = val.join.to_f
    result
end

#_reduce_none(val, _values, result) ⇒ Object



396
397
398
# File 'lib/eye_of_newt/parser.rb', line 396

def _reduce_none(val, _values, result)
  val[0]
end

#default_ingredientObject



34
35
36
# File 'lib/eye_of_newt/parser.rb', line 34

def default_ingredient
  EyeOfNewt::Ingredient.new(amount: 1, unit: @units.default)
end

#next_tokenObject



19
20
21
# File 'lib/eye_of_newt/parser.rb', line 19

def next_token
  @tokenizer.next_token
end

#parseObject



23
24
25
26
27
28
# File 'lib/eye_of_newt/parser.rb', line 23

def parse
  do_parse
  @ingredient
rescue Racc::ParseError
  raise InvalidIngredient, @tokenizer.string
end

#to_unit(u) ⇒ Object



30
31
32
# File 'lib/eye_of_newt/parser.rb', line 30

def to_unit(u)
  @units[u]
end