Название, скорее всего, неоднозначно, что я действительно имею в виду, но у меня есть следующая проблема:
Рассмотрим грамматику для арифметических выражений, содержащих переменные x, y, z,
и бинарные операторы +, *, приведенные ниже.
<expr> -> <term> { + <term> }
<term> -> <factor> { * <factor> }
<factor> -> <var> | ( <expr> )
<var> -> x | y| z
Напишите функцию с именем executeer в Scheme, которая принимает строку выражения
выводится из приведенной выше грамматики и выводит значение выражения,
предполагая, что x, y и z равны 2, 4 и 8 соответственно. Например, звонок
(executer "((x * x) + y * (z) + y)")
должно выдать 40. Ваша реализация должна определять нелегальные выражения и соответствовать
с приоритетом «*» над «+».
Сейчас я пытаюсь сделать это, но я не знаю, как бы я решил это на схеме. Я пытался понять это сам, но решил попросить вас, ребята, о помощи.
Любые ссылки на документы, которые, по вашему мнению, могут помочь, или на другой подобный код, были бы полезны.
Заранее спасибо за любую помощь, которую я получаю за это.