在《算法+数据结构=程序》一书中,Niklaus Wirth 设计的 PL/0 语言编译器分成两部分,把源语言翻译成中间语言的编译器和中间语言解释器,编译器用的是递归下降的预测分析方法中间语言是一种栈机器代码,其指令集是根据 PL/0 语言的需要来设计的。编译器源码及测试程序可从。一条指令由三个域组成: (1)操作码 f:上面已经列出了所有 8 种操作码。 (2)层次差 l:这里的层次差就是 5.3.2 节介绍嵌套深度时的 n p − n a 。该域仅用于存取指令和调用指令。 (3)多用途 a
扩充pl\0编译器设计之词法分析程序 内嵌函数: void clearToken(); //清空token字符数组 int isSpace(); //空格 int isNewline(); //换行符 int isTab(); //Tab int isLetter(); //字母 int isDigit(); //数字 int isColon(); //冒号 : int isComma(); //逗号 , int isSemi(); //分号 ; int isEqu(); //等号 = int