 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
ä |
Terminals:
end-of-input, epsilon, number, +, *, (, ), ;
|
|
|
|
ä |
end-of-input
represents end of file
|
|
|
|
ä |
epsilon
is an empty string needed to match an expression, it is
|
|
not
a token, it represents the absence of a token
|
|
|
|
ä |
+, *
are the legal operators in this language
|
|
|
ä |
Non-terminal
symbols:
|
|
|
|
statements
-> end-of-input | expression; statements
|
|
|
|
expression
-> term expression’
|
|
|
|
expression’
-> + term expression’ | epsilon
|
|
|
|
term
-> factor term’
|
|
|
|
term’
-> * factor term’ | epsilon
|
|
|
|
factor
-> number | (expression)
|
|
|
ä |
Consider
a parse tree of “1+2;”
|
|
|
statements
|
|
|
expression ; statements
|
|
|
term expression’ end-of-input
|
|
|
factor term’ + term expression’
|
|
|
1 epsilon
factor term’ epsilon
|
|
|
2 epsilon
|
|