该编译器的词法分析部分能够识别以 PASCAL 语言编写的源程序,并进行词法分析给出分析结果。该词法分析器能够实现:有正确的单词流输出(类型码、坐标、单词的值);能够检查词法是否有错误(输出词法错误如果没有错误,返回 0,如果有错误,需要报告词法错误在源程序中的位置。能够越过错误,分解下一个单词,直到源程序结束);能够过滤空格、Tab、回车、识别注释,并去掉注释;整数能够处理越界(整数一旦超过 65535,则自动识别为 65535),标识符识别前 8 位(标识符一旦超过 8,则自动识别为 8 位);该词法分析器主要经过有限自动机的状态跳转来实现,根据自动机结束状态来得到该单词的 token 值。
该编译器的语法部分采用了 SLR(1)分析法,实现对表达式、各说明语句、控制语句
进行语法分析。若语法分析正确,则用语法制导翻译进行语义分析;若是出错,则报告语法错误,并给出语法在源程序中的位置。该编译器语义分析部分采用了自底向上分析的 S 属性文法,该阶段最终实现生成四元式的中间代码。
1