1.手工编写法构造词法分析程序: (1)跳过源程序中的空格字符; (2)从源程序字符序列中识别出单词符号,并把该单词符号相应的种别枚举值送入全局变量SYM中; (3)如果取来的单词为标识符,则把它存入全局变量ID中,为了区分保留字和标识符,设置了一张保留字WORD,用二分法查找保留字,识别诸如if、end等保留字; (4)如果取来的单词为字符常量,则将该字符的ASCII序号存入全局变量NUM中; (5)同时将所有识别结果写入out.txt文件。 2.利用自动机识别单词的工作原理构造词法分析程序 模仿自动机识别单词的工作过程来实现词法分析程序,输出要求同上。
时间: 2024-02-10 20:20:14 浏览: 121
对于第一个问题,我可以给你一些思路:
1. 首先读入源程序文件。
2. 针对每个字符进行处理,跳过空格字符。
3. 对于其他字符,判断是否可以构成单词符号。
4. 如果可以构成单词符号,根据保留字表和标识符表判断其种别并存入全局变量SYM。
5. 如果是标识符,将其存入全局变量ID中。
6. 如果是字符常量,将其ASCII码存入全局变量NUM中。
7. 将识别结果写入out.txt文件。
对于第二个问题,你可以考虑使用正则表达式或者自动机的方法实现识别单词符号。具体实现步骤可以参考以下思路:
1. 定义单词符号的正则表达式,比如标识符的正则表达式为[a-zA-Z][a-zA-Z0-9]*,字符常量的正则表达式为'.'。
2. 读入源程序文件,并且将其转换为字符流。
3. 定义一个状态机,每个状态对应一个单词符号的正则表达式。
4. 对于每个字符,根据当前状态和该字符转移状态。
5. 如果当前状态对应一个单词符号的结束状态,则根据保留字表和标识符表判断其种别并存入全局变量SYM。
6. 如果是标识符,将其存入全局变量ID中。
7. 如果是字符常量,将其ASCII码存入全局变量NUM中。
8. 将识别结果写入out.txt文件。
希望以上思路能够对你有所帮助!
阅读全文