武汉高端网站制作站内优化包括哪些
【问题描述】 请根据给定的文法设计并实现词法分析程序,从源程序中识别出单词,记录其单词类别和单词值,输入输出及处理要求如下: (1)数据结构和与语法分析程序的接口请自行定义;类别码需按下表格式统一定义; (2)你的词法分析程序需要将注释去掉,注释有两种:单行注释和多行注释,风格与C语言相同。 (3)Ident为标识符,以字母或下划线开头,由字母、下划线、数字组成的串 (4)IntConst为整型常量,仅包含10进制无符号整数 (5)FormatString是用于printf中的格式化字符串,特殊字符仅包含%d和\n,例如"m=%d\n" (6)为了方便进行自动评测,输入的被编译源文件统一命名为 testfile.txt(注意不要写错文件名);输出的结果文件统一命名为 output.txt(注意不要写错文件名),结果文件中每行按如下方式组织: 单词类别码 单词的字符/字符串形式(中间仅用一个空格间隔) 单词的类别码请统一按如下形式定义: 词法分析类别码定义如下:
【输入形式】testfile.txt中的符合文法要求的测试程序。 【特别提醒】 (1)读取的字符串要原样保留着便于输出,特别是数字,这里输出的并不是真正的单词值,其实是读入的字符串,单词值需另行记录。 (2)本次作业只考核对正确程序的处理,但需要为今后可能出现的错误情况预留接口。 (3)在今后的错误处理作业中,需要输出错误的行号,在词法分析的时候注意记录该信息。 (4)单词的类别和单词值以及其他关注的信息,在词法分析阶段获取后,后续的分析阶段会使用,请注意记录;当前要求的输出只是为了便于评测,完成编译器中无需出现这些信息,请设计为方便打开/关闭这些输出的方案。 【样例输入】 【样例输出】 【评分标准】 按与预期结果不一致的项数(每一行单词信息算一项)扣分,每项扣5%。 【参考代码】参考代码仅能识别整型常量,你可以在此基础上扩充。 src.rar 【文档要求】完成词法分析阶段设计文档 【提交形式】将所开发的词法分析程序的源文件(.cpp/.c/.h/.java,不含工程文件)打包为zip或rar后提交。对于使用 java 开发的编译器,程序运行的入口为 src 目录下 Compiler.java 中的 main 方法。上传请直接打包 src 文件夹,如果引用了第三方外部包(不推荐),请将外部 jar 包文件放到 bin 目录下,bin 和 src 两个文件夹同级,将 bin 和 src 一起打包后提交即可。 评测机所采用的编译学生代码的版本是:C/C++ gcc/g++ 8.1.0,Java jdk 1.8 (注意在MAC下压缩会产生额外的文件到压缩包中,需删掉额外文件后提交)。 答案: Mag1skY/Compiler-Principles: 词法分析 语法分析 中间代码生成 代码生成 |