ВУЗ:
Составители:
Рубрика:
34
Однако циклическая зависимость между модулями разрешена, если одна или
обе ссылки модулей друг на друга содержатся в разделе
implementation. Таким
образом, задача об описании взаимно рекурсивных подпрограмм в разных моду-
лях решается следующим образом:
Unit1.pas
unit Unit1;
interface
procedure p;
implementation
uses Unit2;
procedure p;
begin
...
q;
end;
end.
Unit2.pas
unit Unit2;
interface
procedure q;
implementation
uses Unit1;
procedure q;
begin
...
p;
end;
end.
При подключении модулей обычно придерживаются следующего правила:
если это возможно, стремятся указать подключаемый модуль в разделе
implementationon, и только если нет, то в разделе interface.
2.9 Интерпретатор формул
Реализуем разбор и вычисление выражения, заданного следующей граммати-
кой:
Expr ::= Term { "+" Term | "-" Term }
Term ::= Factor { "*" Factor }
Factor ::= num | ( Expr )
num ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
Формула представляет собой выражение со скобками, знаками операций + - * и
целыми числами от 0 до 9. Формула будет разбираться и тут же вычисляться. По-
существу, мы напишем простейший интерпретатор формул. Правилам грамма-
тики Expr, Term и Factor поставим в соответствие функции, возвращающие целое
значение. Заметим, что определение грамматики содержит косвенную рекурсию
:
Expr определяется через Term, Term – через Factor, Factor – вновь через Expr. По-
этому перед описанием функции Expr следует использовать forward-объявления
функций Term и Factor.
Страницы
- « первая
- ‹ предыдущая
- …
- 30
- 31
- 32
- 33
- 34
- …
- следующая ›
- последняя »