LINUX.ORG.RU

История изменений

Исправление wandrien, (текущая версия) :

Немножко про детали реализации фронта.

Парсинг выражений с учётом приоритета операций выполняется унифицированным образом, вот так вот регистрируются обработчики операций по приоритету:

https://github.com/wandrien/qod/blob/7f49a53c9069b61bc138a6dcc014e256517ad7dd/src/frontend_syn_expr.qdi#L1371

При этом есть еще куча легаси-логики в функции Primary:

https://github.com/wandrien/qod/blob/7f49a53c9069b61bc138a6dcc014e256517ad7dd/src/frontend_syn_expr.qdi#L479

Когда-то эта функция имела совсем другой смысл (парсила ту часть грамматики, для которой Хохлов строил псевдо-деревья в обратной нотации).

Сейчас всё, что там относится к нетерминалам, должно быть постепенно перенесено в обработчик на коллбеках. В том числе парсинг штук вида имя.имя, имя[имя] и т.п. Primary должна отвечать только за терминалы, такие как литералы элементарных типов и идентификаторы.

Исходная версия wandrien, :

Немножко про детали реализации фронта.

Парсинг выражений с учётом приоритета операций выполняется унифицированным образом, вот так вот регистрируются обработчики операций по приоритету:

https://github.com/wandrien/qod/blob/7f49a53c9069b61bc138a6dcc014e256517ad7dd/src/frontend_syn_expr.qdi#L1371

При этом есть еще куча легаси-логики в функции Primary:

https://github.com/wandrien/qod/blob/7f49a53c9069b61bc138a6dcc014e256517ad7dd/src/frontend_syn_expr.qdi#L479

Когда-то эта функция имело совсем другой смысл (парсила ту часть грамматики, для которой Хохлов строил псевдо-деревья в обратной нотации).

Сейчас всё, что там относится к нетерминалам, должно быть постепенно перенесено в обработчик на коллбеках. В том числе парсинг штук вида имя.имя, имя[имя] и т.п. Primary должна отвечать только за терминалы, такие как литералы элементарных типов и идентификаторы.