Я пробовал использовать очень простую грамматику на сайте hackingoff.com, но я немного запутался в результатах.Является ли эта грамматика LL (1)? http://hackingoff.com/compilers/ll-1-parser-generator дает ошибки
Грамматика я использовал следующее:
1. E -> int T
2. T -> + int
3. T -> ε
Я сделал некоторые ручной расчет и разработаны следующие:
First(int) = {int}
First(+) = {+}
First(ε) = {ε}
First(E) = {int}
First(T) = {+,ε}
Follow(E) ⊆ Follow(T)
First(T) ⊆ Follow(int)
Follow(E) ⊆ Follow(int)
First(int) ⊆ Follow(+)
Follow(E) ⊆ Follow(int)
=>
Follow(E) = {$}
Follow(T) = {$}
Follow(int) = {+,$}
Follow(+) = {int}
Тогда я построил парсинга таблицу:
int + $
------------------------
E | int T |
T | +int ε |
------------------------
Но когда я использую эту грамматику на сайте hackingoff.com, она говорит - от того, что я хочу rstand - что грамматика имеет некоторые ошибки. В таблице, которая отображается на сайте следующее:
[0,"int","+","$"]
[0,0,0,0]
[0,1,5,4]
[0,5,2,3]
Из того, что я понял из описания на сайте есть ошибки, когда - в моем случае - значение в ячейке таблицы больше 3 Очевидно, проблема в ячейках без какой-либо продукции в моей таблице. Когда я вручную построил таблицу синтаксического анализа там, где нет столкновений в ячейке, так почему это дает мне ошибки? Наверное, я пропустил что-то фундаментальное?
Спасибо за ваш ответ! Я знаю, что моя грамматика была очень фундаментальной, но я просто хотел попробовать инструмент с некоторым простым выражением. –