По идее LR1 синтаксис перед развёрткой таблиц учитывает только один входной символ Я не однократно в интернете читал что синтаксис C/C++ входит в LR1 и большего просмотра вперёд не нужно. Тогда почему в одном месте в синтаксисе могут встречаться объявление переменных, объявление метки, начало математических выражений? Ведь вначале у всех трёх стоит идентификатор. Как Бизон их парсит? Или бизон как-то заносит их в одну таблицу?
Причем тут бизон? Смысл некоторых выражений в сишечке и плюсов определяется только на этапе семантики (тайпчекер там и тд). --- Сообщение объединено, 29 июн 2022 --- Вообще, советую погуглить на тему "c++ undecidable grammar" или как-то так это называлось, смысл в том, что даже не учитывая тьюринг комплит шаблонов, ты с помощью LR1 плюсы не распарсишь. Ну точнее, ты можешь иметь в AST узлы, которые могут по факту означать две или три разные вещи, и решать, в какую именно вещь преобразуется такой узел, на отдельном проходе по AST, когда уже с узлами связана информация о типах.