You can create a grammar for the coffee data language by applying the following algorithm: -
Define the parser you want as a composite of subparsers. -
Repeat step 1 until every subparser is defined or is a terminal. The parser you want to define is coffee From the preceding language element, you can see that a coffee description is, at a high level, the following: coffee = name ',' roast ',' country ',' price; A coffee's name is a word followed optionally by a former name. The former name is a word in parentheses. name = Word (formerName Empty); formerName = '(' Word ')'; The roast is a word followed optionally by the characters /French : roast = Word (orFrench Empty); orFrench = '/' "french"; The country is just a word, and the price is just a number: country = Word; price = Num; You can translate this grammar directly to code using the rules in Section 3.6 "Translating a Grammar to Code." When you write the parser, you will want to plug in your assemblers, a subject we will address shortly. |