Итак, у меня есть грамматика, содержащая пустую строку. Грамматика что-то вроде этого:ocamlyacc с пустой строкой
S-> ε
S-> выражение ;; S
Я получаю сообщение об ошибке «Больше никаких состояний, чтобы отказаться», когда я запускаю свой парсер, поэтому считаю, что я не представляю пустую строку правильно. Итак, как мне это представить, особенно в файле lexer .mll?
Я знаю, что мне нужно сделать правило для этого, поэтому я думаю, что это так. Это то, что я думаю, что это должно выглядеть как для файла парсера .mly, за исключением материала для выражения.
s:
| EMPTY_STRING { [] }
| expression SEMICOLON s { $1::$3 }
Правило epsilon совсем не полезно. Просто положите ... ничего. – Drup
Спасибо за помощь. Я понял, что мне просто нужно использовать EOF в моей грамматике вместо пустой строки, чтобы заставить ее работать, потому что последний токен будет EOF. –