module FoodFishParser::Strict::Grammar
grammar FishName include Common include FishAllergen include FishNameLatin include FishNameNL rule fish_name_both ( !fish_allergen fish_name_nl ws* '(' ( ws* fish_allergen )? ws* fish_name_latin ( ws* ')' / comma )? ) end rule fish_name_both_list ( fish_name_both <FishNameNode> ) ( ws+ and_or ws+ fish_name_both <FishNameNode> )* end rule fish_name_latin_list ( fish_name_latin <FishNameNode> ) ( ws+ and_or ws+ fish_name_latin <FishNameNode> )* end rule fish_name_nl_list ( !fish_allergen fish_name_nl <FishNameNode> ) ( ws+ and_or ws+ !fish_allergen fish_name_nl <FishNameNode> )* end rule fish_name_any_list fish_name_both_list / fish_name_latin_list / fish_name_nl_list end end
end