История изменений
Исправление wandrien, (текущая версия) :
Немножко про детали реализации фронта.
Парсинг выражений с учётом приоритета операций выполняется унифицированным образом, вот так вот регистрируются обработчики операций по приоритету:
При этом есть еще куча легаси-логики в функции Primary
:
Когда-то эта функция имела совсем другой смысл (парсила ту часть грамматики, для которой Хохлов строил псевдо-деревья в обратной нотации).
Сейчас всё, что там относится к нетерминалам, должно быть постепенно перенесено в обработчик на коллбеках. В том числе парсинг штук вида имя.имя
, имя[имя]
и т.п. Primary
должна отвечать только за терминалы, такие как литералы элементарных типов и идентификаторы.
Исходная версия wandrien, :
Немножко про детали реализации фронта.
Парсинг выражений с учётом приоритета операций выполняется унифицированным образом, вот так вот регистрируются обработчики операций по приоритету:
При этом есть еще куча легаси-логики в функции Primary
:
Когда-то эта функция имело совсем другой смысл (парсила ту часть грамматики, для которой Хохлов строил псевдо-деревья в обратной нотации).
Сейчас всё, что там относится к нетерминалам, должно быть постепенно перенесено в обработчик на коллбеках. В том числе парсинг штук вида имя.имя
, имя[имя]
и т.п. Primary
должна отвечать только за терминалы, такие как литералы элементарных типов и идентификаторы.