表 2.2 TABLE表中的信息 |
 |
NAME |
KIND |
LEVEL/VAL |
ADR |
SIZE |
TXo→ |
A
B
C
D
E
P |
CONSTANT
CONSTANT
VARIABLE
VARIABLE
VARIABL
EPROCEDUR |
35
49
LEV
LEV
LEV
LEV |
DX
DX+1
DX+2
过程p的入口(待填) |
4 |
TX→ |
G
… |
VARIABLE
… |
LEV+1
… |
ADR:DX
… |
 |
|
TABLE表的表头索引TX和层次单元LEV都以BLOCK的参数形式出现。在主程序调用BLOCK时实参值都为0。每个过程中变量的相对起始位置在BLOCK内置初值DX∶=3。
例如:对变量定义的语法处理
语法:<变量说明部分>: := var <标识符>{, <标识符>};
程序:
 |
if sym=varsym then
begin
getsym;
repeat
vardeclaration;(*变量说明处理*)
while sym=comma do
begin
getsym;
vardeclaration
end;
if sym=semicolon then
getsym
else error(5)
until sym<>ident;
end; |
变量说明处理程序:
 |
Procedure vardeclaration;
begin
if sym = ident then
begin
enter(variable);( *调用过程enter造名字表*)
getsym
end
else error(4)
end(*vardeclaration*); |
|