Блог страдающего Лиса
Lorem ipsum hello dolor sit world amet

07 янв 2025 Вт Парсер выражений не очень то хорош

Да, на первый раз, он допустим, но при усложнении программы, такой парсер выражений совершенно никуда не годится, а это является основой основ для любого языка программирования, в том числе, Бейсика. Сейчас сделано очень примитивно, обычная интерпретация выражений, но надо придумать как сделать правильно. Это значит, что перед тем как строку перевести в интерпретируемый вид, необходимо построить правила ее вычисления. К примеру
X = A + B*C + D*E
Вычисляем сначала B*C, потом складываем A + полученный результат вычислений. Потом вычисляем D*E, складываем с предыдущим результатом. Вообще, получается стековая машина.
Сначала рассчитывается B*C, потом D*E, после расчета, полученные узлы складываются (всего их 3). Но можно реализовать эту логику по-разному. То есть сначала рассчитать B*C, сложить A и полученный результат. Потом вычислить D*E, и сложить с предыдущим результатом.
Займусь лучше доработкой по ZX Spectrum Бейсику.
clipboard.png