本项目旨在设计并实现一个用于解析C语言代码的词法分析器,作为编译器的基础模块。通过识别和分类源代码中的基本单元(如关键字、标识符等),为后续语法分析提供支持。
完成以下正则文法所描述的Pascal语言子集单词符号的词法分析程序:
标识符 → 字母 | 标识符字母 | 标识符数字
无符号整数 → 数字 | 无符号整数数字
单字符分界符 → + | - | * | ; | (|)
双字符分界符 → <小于>= | <小于>>= | <<小于>> >|<冒号=>|= : =| / / \*
该语言的保留字:begin end if then else for do while and or not
说明:
1. 本语言大小写不敏感。
2. 字母为a-z A-Z,数字为0-9。
3. 可以对上述文法进行扩充和改造;
4. ‘/*……*/’为程序的注释部分。
要求如下:
(1)给出各单词符号的类别编码;
(2)词法分析程序应能发现输入串中的错误;
(3)词法分析作为单独一遍编写,词法分析结果为二元式序列组成的中间文件;
(4)设计两个测试用例,并尽可能完备地覆盖各种情况。同时给出每个测试的预期输出和实际运行的结果。
请注意:在进行以上任务时,请确保遵循给定的语言规范及文法规则。