Изменения
Нет описания правки
res = Node("A")
switch (curToken) :
for \alpha_1, \alpha_2 .. \alpha_k case : <tex>FIRST(\alpha_1) \cup ((\varepsilon \in FIRST(\alpha_1)) ? FOLLOW(A) : \varnothing)</tex> : // \alpha_1 = X_1x_2..x_{t_1} // X_1 {{---}} нетерминал Node t = X_1() res.addChild(t) // x_2 {{---}} терминал if consume(curToken != x_2) error("expected x_2") res.addChild(new Node("x_2") nextToken() // x_3 ... break; case FIRST(\alpha_2) : // \varepsilon \in FIRST(\alpha_2) case FOLLOW(A) : ... break; ...
default :
error("unexpected char")
return res
consume(char c)
if (curToken != c)
error("expected" + c)
nextToken()
== Пример ==
error("unexpected char")
return res
E'()