Go to the first, previous, next, last section, table of contents.
Parsers are never created just to accept sentences from some language;
they will always do something in response. In a gp
grammar, such actions can be added using `{...}'. For example,
to let the parser from the previous example (ex1
) note on its
output each time it has just read an opening parenthesis (`('), we
could modify the expr
rule like this:
expr: '(' { [[[stdio out] print "read another `('"] nl]; } expr* ')';
and end up with something quite unreadable. To increase readability, especially when we need to add a lot of semantic actions, we adopt the coding style of putting the actions clearly indented and on a separate line:
expr: '(' { [[[stdio out] print "read another `('"] nl]; } expr* ')' ;
Go to the first, previous, next, last section, table of contents.