Чтобы понять какая ветка идет мне нужно заглянуть на N токенов вперед, и в случае провала сделать откат к исходному состоянию, применяя все правила по порядку.
У меня задано правило на проверку token.Ident, в случае если идет Lp -> CallExpr, в случае Lc -> StructExpr, default -> Ident (ветвь не меняется), после идет Pratt (operator precedence parser) разбор на наличие принадлежности к Logical, Bitwise, Arith -> InfixExpr
Я может чего-то недогоняю, но заглядывая в текущем случае (в моей реализации LL(1)) на 1 токен вперед, я даже попросту не смогу выстроить дерево чтобы на этапе семантического анализа его разобрать и выявить ошибку
> и в случае провала сделать откат к исходному состоянию, применяя все правила по порядку
Обычный алгоритм разбора LL(k) работает не так, разве нет?
> после идет Pratt (operator precedence parser)
Значит, у Вас вообще не LL(1) parser, а recursive descent, правильно?
> Я может чего-то недогоняю, но заглядывая в текущем случае (в моей реализации LL(1)
Я не понимаю, почему Вы называете это LL(1).