这些过程或函数的嵌套定义层次结构如图2.3所示。
图 2.3 PL/0编译程序过程与函数定义层次结构图
|
 |
由于PL/0编译程序采用一趟扫描方法,所以语法分析过程BLOCK是整个编译过程的核心。下面我们将在图2.4中先给出编译程序的总体流程,以弄清BLOCK过程在整个编译程序中的作用。在流程图2.4中可以看出,主程序置初值后先调用读单词过程GETSYM取一个单词,然后再调用语法分析过程BLOCK,直到遇源程序的结束符"."为止。
图 2.4 PL/0编译程序总体流程图
|
 |
语法分析过程BLOCK是整个编译过程的核心,是指开始由主程序调用GETSYM取一个单词,再调用语法分析过程BLOCK, BLOCK由当前单词根据语法规则再调用其它过程,如说明处理、代码生成或出错处理等过程进行分析,当分析完一个单词后,BLOCK再调用GETSYM取下一个单词,一直重复到当前单词为结束符"."表明源程序已分析结束。若未取到结束符".",而源程序已没有输入符号,这时表明源程序有错误,无法再继续分析。
|