s : cmd
| cmd SOMETHING
cmd :WORD
WORD и КОИМ не имели терминалы нулевыхто, что случилось с этой грамматикой
это грамматика LR1 так зубр должен разобрать его без проблем.
однако я столкнулся с неожиданной проблемой во время выполнения: программа запрашивает ввод в два раза, так что, например, когда я вхожу «QWERTY» он запрашивает второй вход, когда я пытаюсь его отладки я получаю это:
Starting parse
Entering state 0
Reading a token: qwerty
Next token is token WORD
Shifting token WORD
Entering state 1
Reducing stack by rule 3 (line 20):
$1 = token WORD()
-> $$ = nterm cmd()
Stack now 0
Entering state 3
Reading a token:
(asks for input a second time)
он основан на символе lookahead, который равен $ здесь, который отмечает конец ввода –
Но по-прежнему необходимо проверить этот символ, который включает в себя запрос ввода. –