PL/0 词法分析
用 C 语言编写一个 PL/0 词法分析器 ,为语法语义分析提供单词, 使之能 把输入的字符 串 形式的源程序分割成一个个单词符号传递给语法语义分析, 并把分析结果 (基本字,运算符, 标识符 ,常数以及界符) 输出 。 PL/0 的词法分析程序 GETSYM 是一个独立的过程,其功能是为语法语义分析提供单词,把输入的字符串形式的源程序分割成一个个单词符号传递给语法语义分析。 其主要任务为: 1、滤空格;2、识别基本字;3、识别标识符;4、拼数;5、拼复合词;6、输出源程序。 PL/0 编译程序一般设置 3 个全程变量: SYM :存放每个单词的类别,用内部编码形式表示; ID : 存放用户所定义的标识别符的值; NUM :存放用户定义的数。 PL/0 语言的单词的种类分成基本字(亦称保留字)、运算符、标识符、常数、界符 5 个大类,以下是针对这 5 类单词的一种 EBNF 描叙: < 无符号整数 > :: =< 数字 >{< 数字 >} < 标识符 > :: =< 字母 >{< 字母 >|< 数字 >} < 字母 > :: =a|b| …… |X|Y|Z < 数字 > :: =0|1|2| …… |8|9 < 保留字 > :: = const | var | procedure | begin | end | odd | if | then |