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