Содержание
- Термы
- Преобразование в терм
- Обратное преобразование
- Списки символов
- Преобразование в список
- Преобразование списка в атом
- Обратное преобразование
- Грамматики
- Описание грамматики
- Преобразование в строку
- Обратное преобразование
Домашнее задание 15. Разбор выражений на Prolog
-
Доработайте правило
evaluate(Expression, Variables, Result)
, вычисляющее арифметические выражения.-
Пример вычисления выражения
2*(-x)-3
дляx = 5
:evaluate( operation(op_subtract, operation(op_multiply, const(2), operation(op_negate, variable(x)) ), const(3) ), [(x, 5)], -13 )
-
Поддерживаемые операции:
сложение (
op_add
,+
), вычитание (op_subtract
,-
), умножение (op_multiply
,*
), деление (op_divide
,/
), противоположное число (op_negate
,negate
).
-
Пример вычисления выражения
- Простой вариант.
Реализуйте правило
prefix_str(Expression, Atom)
, разбирающее/выводящее выражения, записанные в префиксной форме. Например,prefix_str( operation(op_subtract, operation(op_multiply, const(2), operation(op_negate, variable(x))), const(3) ), '(- (* 2 (negate x)) 3)' )
- Сложный вариант.
Реализуйте правило
infix_str(Expression, Atom)
, разбирающее/выводящее выражения, записанные в полноскобочной инфиксной форме. Например,infix_str( operation(op_subtract, operation(op_multiply, const(2), operation(op_negate, variable(x))), const(3) ), '((2 * negate x) - 3)' )
- Правила должны быть реализованы с применением DC-грамматик.