以上所说语法分析过程非常直观粗浅,实际上应用递归子程序法构造语法分析程序时,对文法有一定的要求和限制,这个问题我们将在第5章详细讨论。 此外,从PL/0的语法描述图中可以清楚地看到,当对PL/0语言进行语法分析时,各个非终结符语法单元所对应的分析过程之间必须存在相互调用的关系。这种调用关系可用图2.7表示。也可称为PL/0语法的依赖图,在图中箭头所指向的程序单元表示存在调用关系,从图中不难看出这些子程序在语法分析时被直接或间接递归调用。 由图 2.7 PL/0语法调用关系图可以看出对分程序和语句为直接递归调用,对表达式为间接递归调用。 例:如何用递归子程序法实现表达式的语法分析 现用2.1中给出的表达式语法图进行语法分析,语法图如下:
|