"C−−语言源代码的词法分析与语法分析实验"

需积分: 0 0 下载量 13 浏览量 更新于2024-01-11 收藏 665KB PDF 举报
实验手册1;2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6;版权所有 南京大学计算机科学与技术系 许畅等 2021春季版 10 2. 词法分析与语法分析 本章实验为实验一,任务是编写一个程序对使用C−−语言书写的源代码进行词法分析和语法分析(C−−语言的文法参见附录A),并打印分析结果。实验要求使用词法分析工具GNU Flex和语法分析工具GNU Bison,并使用C语言来完成。在两个强大工具的帮助下,编写一个能进行词法分析和语法分析的程序是一件相当轻松愉快的事情。 本实验的主要目标是编写一个程序,能够对C−−源代码进行词法分析和语法分析,并能够查找可能包含的词法错误和语法错误。词法错误包括出现未定义字符和不符合词法单元定义的字符,而语法错误则包括与C−−语法不符合的结构。 在完成实验的过程中,还可以选择性地完成以下要求: 1) 要求1.1:识别八进制数和十六进制数。如果输入文件中存在符合词法定义的八进制数(如0123)和十六进制数(如0x3F),程序需要识别并输出相应的结果。 2) 要求1.2:识别注释。程序可以识别C−−源代码中的注释,并将它们视为代码中的一部分。 3) 要求1.3:识别标识符和关键字。程序需要能够辨别出C−−源代码中的标识符和关键字,并将它们分类输出。 4) 要求1.4:识别常量。程序可以识别C−−源代码中的常量,包括整数常量、浮点数常量和字符常量,并将它们分类输出。 5) 要求1.5:识别运算符和界符。程序需要能够识别C−−源代码中的运算符和界符,并将它们分类输出。 在完成实验的过程中,需要注意保持良好的代码风格、系统地设计代码结构和各模块之间的接口。这对于整个实验的顺利进行非常重要,并且在后续实验中可能会用到已经编写好的代码。 通过使用GNU Flex和GNU Bison这两个强大的工具,本实验可以相对轻松地完成。这两个工具为词法分析和语法分析提供了便利的功能和接口,大大简化了实验的难度。 总结而言,本实验要求编写一个程序,能够对C−−源代码进行词法分析和语法分析,并能够检测和打印出可能包含的词法错误和语法错误。除此之外,还可以选择性地完成附加要求,如识别八进制数和十六进制数、识别注释、识别标识符和关键字、识别常量以及识别运算符和界符。在完成实验过程中,需要保持良好的代码风格和系统的设计,以便后续实验的顺利进行。使用GNU Flex和GNU Bison这两个工具可以轻松地完成实验任务。