module FoodIngredientParser::Strict::Grammar

grammar IngredientSimple
  include Common
  include Amount

  rule ingredient_simple
    name:( word ( ws+ !amount word )* ) ws? mark:mark <IngredientNode> /
    name:( word ( ws+ !amount word )* )               <IngredientNode>
  end

  rule ingredient_simple_with_amount
    pre:( '{' ws* )? amount:amount                ws+ ing:ingredient_simple    <IngredientNode> /
    pre:( '{' ws* )? amount:amount_simple_percent ws* ing:ingredient_simple    <IngredientNode> /
    ing:ingredient_simple ws* amount:amount post:( ws* '}' )? (ws? mark:mark)? <IngredientNode> /
    ing:ingredient_simple                                                      <IngredientNode>
  end

  rule ingredient_simple_e_number
    name:e_number <IngredientNode>
  end

end

end