Да, |или, как в обычном программировании.Строка типа:
< exp> ---> < exp> * < factor> | < factor>
означает, что что-то может быть < exp>
, если оно имеет вид < exp> * < factor>
или если это < factor>
.
.полная грамматика:
< exp> ---> < exp> * < factor> | < factor>
< factor> ---> < factor> - < term> | < term>
< term> ---> x | y | z
выражение типа x - y * x - y - y * z
может быть построено в проходах следующим образом:
x y x y y z
<term> - <term> * <term> - <term> - <term> * <term>
<factor> * <factor> - <term> - <term> * <factor>
<factor> * <factor> - <term> * <factor>
<expr> * <factor> * <factor>
<expr> * <factor>
<expr>
В обратном порядке, чтобы получить анализ:
e
/|\
/ | \
e * f
/|\ \
/ | \ t
/ | \ \
/ | \ z
e * f
| /|\
f / | \
/|\ f - t
f - t /|\ |
| | f - t y
t y | |
| t y
x |
x
(На этой диаграмме потребовалось больше работы, чем я ожидал ...)