Получение ОПЗ для указателей функций

Пусть имеется выражение y – f (x, y+1, z).

Введем операцию ФУНКЦИЯ, операнды которой – идентификатор функции и значения (или идентификаторы) ее аргументов, а результат – значение функции (точнее, адрес значения функции).

Будем обозначать операцию ФУНКЦИЯ парой символов , где k – количество операндов.

Тогда ОПЗ выражения примет вид: y f x y 1 + z 4 Φ -.

Алгоритм перевода в обратную польскую запись функции, имеющей не менее одного параметра, тот же, что для переменной с индексами.

Чтобы отличить открывающую круглую скобку в начале списка фактических параметров от круглой скобки в выражении, можно использовать специальную переменную состояния F (признак функции). Эта переменная обычно имеет значение 0. В момент появления идентификатора функции она принимает значение 1, а после занесения в стек круглой скобки и начального значения счетчика операндов, равного 2, вновь принимает значение 0.

Закрывающая скобка, встретив в стеке открывающую круглую скобку, записанную вместе со значением счетчика операндов, занесет это значение в выходную строку, запишет туда знак Φ и уничтожит в стеке круглую скобку и значения счетчика операндов.

Если функция употребляется без параметров, то указатель функции, как и все идентификаторы, будет перенесен непосредственно в выходную строку.

Одновременно переменная состояния F примет значение 1. Если следующий символ не круглая скобка, то признаку F присваивается значение 0, а в выходную строку заносится запись в знак того, что операция ФУНКЦИЯ имеет всего один операнд – идентификатор функции.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: