Мне дана следующая грамматика:
S -> A a A b | B b B a
A -> epsilon
B -> epsilon
Я знаю, что очевидно, что это LL (1), но я сталкиваюсь с проблемами при построении таблицы синтаксического анализа. Я следил за алгоритмом слово за словом, чтобы найти первое и следующее из каждого нетерминала, поправьте меня, если я ошибаюсь :
First(S) = {a,b}
First(A) = First(B) = epsilon
Follow(S) = {$}
Follow(A) = {a,b}
Follow(B) = {a,b}
когда я строю таблицу разбора, то по алгоритму получаю конфликт под символом $... что за хрень я делаю не так??
a b $
A A-> epsilon
B B-> epsilon
S S -> AaAb
S -> BbBa
ничего, если я получу 2 произведения меньше $ или что-то в этом роде?? или я неправильно строю таблицу разбора? пожалуйста, помогите, я новичок в курсе компилятора