实现C语言的词法分析器.docVIP

  • 34
  • 0
  • 约 12页
  • 2017-08-15 发布于重庆
  • 举报
实现C语言的词法分析器.doc

编译原理 实验二 学习经典的词法分析器。 实验分析: 词法分析器,有的教材又称扫描器,我倒是觉得扫描器更加符合其本意,因为词法分析器的主要作用是将文本代码流解析成一个个记号,供语法分析使用。 由于上一次实验,TINY编译器已经相对比较熟悉,这一次主要关注词法分析器的部分,即SCAN.C。就词法分析器本身的写法而言,并没有所谓的标准代码,不过经典代码还是很有参考价值的,而修改经典的过程也是体会经典的最佳形式。 实验过程: 阅读已有编译器的经典词法分析源程序: 我选择的仍然是TINY编译器,它的词法分析部分是SCAN.C文件。 调用词法分析器的形式: 在主函数中有如上语句是调用SCAN.C中的getToken()函数。 getToken()即词法分析器进行状态转换的核心部分。 词法分析器中的常量: 状态枚举:枚举的最大好处在于能够用字符(状态)代替数字,而且将这些封装在一个结构中。 TokenString是为了存储保留字的标识符 以下变量是为了处理输入缓存以及当前指针位置的相关存储: 保留字的结构体,这一部分可以清晰的看到所有保留字: 词法分析器的相关函数: 处理文件输入相关: 这两个函数是一对,前者是从缓存中读取下一个字符,后者则将当前读取的字符重新放回缓存。后者存在的最大的价值在于,当用下一字符的情况判断将跳转到什么状态时,如果该字符不属于当前标示符,则放回缓存,以保证下一标示符的

文档评论(0)

1亿VIP精品文档

相关文档