Разработка компиляторов

       

Формула, содержащая операции типа умножения


Общий вид формулы, содержащей операции типа умножения:

F1*F2*…*Fn

Мы сможем понять, что имеем дело с подобной формулой только в момент встречи операции умножения или операции деления. Обрабатывать такие формулы будет процедура Term , параметром которой является целочисленное значение, представляющее левый операнд формулы F1*F2, т.е. F1. Для того, чтобы вычислить значение такой формулы, мы должны выбрать ее правый операнд, который может быть простейшей формулой, а затем выполнить операцию. Это приводит нас к следующему фрагменту кода:

int Term (int left) { char ch = getChar(); int right; if (ch != '*' && ch !='/') { /* как оказалось, очередной символ не является обозначением ожидаемой нами операции, поэтому мы должны вернуть ненужный нам операнд*/ return Char(); /* возвращаем неиспользованную литеру */ return left; /* и неиспользованное значение */ } /* теперь все в порядке и нам необходимо вычислить значение правого операнда */ right = Factor(); if (ch == '*') { return Term(left * right); /* Этот вызов позволит нам вычислить остальную часть формулы */ } if (right == 0) return error ("Деление на нуль"); return Term(left / right); }



Содержание раздела