Size: a a a

Compiler Development

2021 June 03

K

Kir in Compiler Development
С LL (в форме комбинаторов) я работаю лет 10 8 и за это время неоднократно подрывался на всём упомянутом. У LR из недостатков только размер таблицы и скорость её генерации. Или что-то ещё?
источник

A

Andrey in Compiler Development
Так всё-таки reduce делается по терминалам из FOLLOW для соответствующего правила?
источник

K

Kir in Compiler Development
Для правила.
источник

K

Kir in Compiler Development
R -> A B c . {d, $} будет свёрнуто на d и $, где FOLLOW(R) = {d, $}
источник

K

Kir in Compiler Development
Если есть какой-то пример, позволяющий отличить LR(1) от всего остального, то давайте, я проверю реализацию.
источник

K

Kir in Compiler Development
S -> aAb
S -> cAd
S -> aBd
S -> cBb
A -> x
B -> x

Вот на этом оно конфликтов не даёт
источник

K

Kakadu in Compiler Development
С LL проще разруливать конфилкты. Если позанудствовать, то тех конфликтов, что есть в LR, в LL нет
источник

K

Kakadu in Compiler Development
Плюс, стоит упомянуть классы языков, что они разбирают
источник

K

Kir in Compiler Development
Мне казалось, что LR перекрывает LL в плане разбора.
источник

K

Kir in Compiler Development
Можно пример?
источник

A

Andrey in Compiler Development
Похоже я что-то упускаю. В автомате для этой грамматики есть состояние

A -> x .
B -> x .


И при этом FOLLOW(A) = FOLLOW(B) = {b, d}. Я понимаю, как LR(1) автомат справляется с этой грамматикой, но из статьи это вывести у меня не получается
источник

K

Kakadu in Compiler Development
LL комбинаторами точно перекрывает LR(k)
источник

K

Kakadu in Compiler Development
Там нет конкретного примера. Грамматика нетривиально отображается в таблицу, и если конфликты. то не понятно что надо поменять. С LL и комбинаторами проще
источник

K

Kir in Compiler Development
Проще-то даа, но left-biased choice в комбинаторах резолвит конфликты неявно.
источник

K

Kir in Compiler Development
Из дампа таблицы в реализации
источник

K

Kakadu in Compiler Development
Мы можем спорить что удобнее, но упомянуть за что не любят LR, но любят LL, стоило бы для полноты картины
источник

K

Kir in Compiler Development
И предыдущие состояния
источник

h

hazer_hazer in Compiler Development
что это за синтаксис? какой-то генератор?
источник

K

Kir in Compiler Development
Это дамп моего LR(1)-генератора
источник

h

hazer_hazer in Compiler Development
прикольно
источник