Содержание

  1. Термы
    1. Преобразование в терм
    2. Обратное преобразование
  2. Списки символов
    1. Преобразование в список
    2. Преобразование списка в атом
    3. Обратное преобразование
  3. Грамматики
    1. Описание грамматики
    2. Преобразование в строку
    3. Обратное преобразование

Домашнее задание 14. Разбор выражений на Prolog

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