例:READ语句的语法语义分析处理
语句的语法:<读语句>∷=READ'('<标识符>{,<标识符>}')';
程序:
 |
if sym=readsym then
begin
getsym;
if sym<>lparen then error(34)
else
repeat
getsym;
if sym=ident then i:=position(id) (* 查找标识符表 *)
else i:=0;
if i=0 then error(35)
else
with table[i] do (* 查到了标识符产生两条目标代码 *)
begin
gen(opr,0,16);
gen(sto,lev-level,adr)(*其中Lev为引用层,level为定义层 *)
end;
getsym
until sym<>comma;
if sym<>rparen then
begin
error(33);
while not(sym in fsys) (*出错处理*)
do getsym
end
else getsym (*正常出口*)
end |
|