Re[6]: подскажите как парсят мнемоники С
От: VVVa  
Дата: 12.10.22 16:00
Оценка:
Здравствуйте, netch80, Вы писали:

N>Так и проверяет. Появилось объявление переменной — добавили. Типа — добавили. Видим идентификатор — пытаемся по тому, в какой он таблице, определить его роль.

N>Закончился блок — почистили таблицы и пошли дальше.

Еле догнал если токен "int x;" свернулся парсером то заводим переменную и помечаем где она стоит... А потом если есть свёртка с элементом "int x;" то удаляем

N>У тебя ещё много открытий впереди C ещё относительно прост в этом смысле.

а какие открытия может подскажите? именно для С
N>C++ — вот как насчёт такого (вторая часть комментария)?
Жалко до кодогенерации не дошёл не совсем понял тяжесть происходящего
N>Пока класс целиком не распарсен, нельзя делать предположения о смысле некоторых грамматических конструкций внутри его определения. А после ещё чудесатее:

N>

До этапа кодогенерации ещё дожить надо — а вы пока не рассказали, как вы AST строить собрались, если для синтаксического разбора нужно уметь решать уравнения на эллиптических кривых — причём со входными данными, приходящими от целевой платформы.
N>Не забудьте, что там вместо банального sizeof может стоять вызов любой constexpr функции, а дальнейшее дерево зависит от результата вычислений оной функции.

"на эллиптических кривых" — Вы пошутили? причём тут криптография?
Ну в курсе что в sizeof может стоять выражение — тогда размер это размер от получаемого типа. Или Вы не про это?
Ну я AST на списках наверное буду делать ... но как его обходить покуда не знаю ... может Матрицу смежности или Матрицу инцидентности придётся применять...

N>Мнэээ, гражданин... не советую. Съедят.

А вдруг весело будет ...
N>После такого — всех калёной метлой гнать в сторону LISP. Ну ладно, Go или Pascal.
Отредактировано 12.10.2022 16:39 VVVa . Предыдущая версия . Еще …
Отредактировано 12.10.2022 16:07 VVVa . Предыдущая версия .
Отредактировано 12.10.2022 16:02 VVVa . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.