Пролог - перевод с английского на C

У нас есть относительно простое задание, которое я понимаю в теории, но я думаю, что просто неПролог не совсем понялСинтаксис достаточно, чтобы включить это в код. По сути, у нас есть список английских обозначений, которые представляют операции в C. Онихранятся в виде списка, когда ониперешли к нашей программе Пролог. Например:

add 4 to 3

является

[add, 4, to, 3]

Нам нужно написать функцию, которая принимает этот список и возвращает эквивалент. Так что если бы я позвонил

english2C([add,4,to,3], C).
C = 4+3

Это связало бы C с результатом. Таким образом, сама структура данных будет выглядеть примерно так: + (4 (3)). У нас есть список таких английских обозначений, которые мы должны перевести, поэтомуКонечное число. Это'не так, как мы должны учитывать все возможности. Существуют также комбинации, в которых они принимают две операции и объединяют их (с запятой между ними).

english2C([add,3,to,5,',',then,subtract,7], C).
C = 3+5-7

Я просто немного смущен тем, как начать. Я знаю, что могу взять самый первый элемент списка, и это всегда будет оператор (+, -, * и т. Д.), А затем я могу просто рекурсивно пройти по списку в поисках операндов. Проблема существует для вещей, которые требуют порядка операций, таких какдобавить от 3 до 5, затем умножить на 4 ", который должен быть представлен как (3 + 5) * 4, но если вы просто переведите его прямо, вы получите 3 + 5 * 4.

Да, и мы должны посмотреть, сможем ли мы заставить его работать в обратном направлении (дать ему оператор C (3 + 5) и перевести обратно на английский (добавьте 3 к 5)). Эта часть я неу меня вообще нет идеи.

РЕДАКТИРОВАТЬ: Там "достаточно большая перестановка возможных английских обозначений, которые я могут просто шаблон соответствует всему. Я понял, что мне нужно сопоставить первый оператор с нимСоответствующий арифметический символ затем найти операнды. Для комбинационного утверждения это будет первая часть (поэтому у меня будет 3 + 5), а затем будет запятая, за которой следует следующее утверждение. Кстати, комбинационные утверждения могут быть такими, какими они хотят, так чтоэто не просто два заявления и ям сделано.

Ответы на вопрос(1)

Ваш ответ на вопрос