网站如何上传到主机,网站建设中制作页面导航,虾米音乐歌曲链接做qq音乐网站,网站后台更新怎么做【问题描述】 请根据给定的文法设计并实现词法分析程序#xff0c;从源程序中识别出单词#xff0c;记录其单词类别和单词值#xff0c;输入输出及处理要求如下#xff1a; #xff08;1#xff09;数据结构和与语法分析程序的接口请自行定义#xff1b;类别码需按下表格… 【问题描述】 请根据给定的文法设计并实现词法分析程序从源程序中识别出单词记录其单词类别和单词值输入输出及处理要求如下 1数据结构和与语法分析程序的接口请自行定义类别码需按下表格式统一定义 2你的词法分析程序需要将注释去掉注释有两种单行注释和多行注释风格与C语言相同。 3Ident为标识符以字母或下划线开头由字母、下划线、数字组成的串 4IntConst为整型常量仅包含10进制无符号整数 5FormatString是用于printf中的格式化字符串特殊字符仅包含%d和\n例如m%d\n 6为了方便进行自动评测输入的被编译源文件统一命名为 testfile.txt注意不要写错文件名输出的结果文件统一命名为 output.txt注意不要写错文件名结果文件中每行按如下方式组织 单词类别码 单词的字符/字符串形式(中间仅用一个空格间隔) 单词的类别码请统一按如下形式定义 词法分析类别码定义如下 单词名称类别码单词名称类别码单词名称类别码单词名称类别码IdentIDENFR!NOT*MULTASSIGNIntConstINTCONAND/DIV;SEMICNFormatStringSTRCON||OR%MOD,COMMAmainMAINTKwhileWHILETKLSS(LPARENTconstCONSTTKgetintGETINTTKLEQ)RPARENTintINTTKprintfPRINTFTKGRE[LBRACKbreakBREAKTKreturnRETURNTKGEQ]RBRACKcontinueCONTINUETKPLUSEQL{LBRACEifIFTK-MINU!NEQ}RBRACEelseELSETKvoidVOIDTK 【输入形式】testfile.txt中的符合文法要求的测试程序。 【输出形式】要求将词法分析结果输出至output.txt中。 【特别提醒】 1读取的字符串要原样保留着便于输出特别是数字这里输出的并不是真正的单词值其实是读入的字符串单词值需另行记录。 2本次作业只考核对正确程序的处理但需要为今后可能出现的错误情况预留接口。 3在今后的错误处理作业中需要输出错误的行号在词法分析的时候注意记录该信息。 4单词的类别和单词值以及其他关注的信息在词法分析阶段获取后后续的分析阶段会使用请注意记录当前要求的输出只是为了便于评测完成编译器中无需出现这些信息请设计为方便打开/关闭这些输出的方案。 【样例输入】 int main(){int c;c getint();printf(output is %d,c);return c;
} 【样例输出】 CONSTTK const
INTTK int
IDENFR array
LBRACK [
INTCON 2
RBRACK ]
ASSIGN
LBRACE {
INTCON 1
COMMA ,
INTCON 2
RBRACE }
SEMICN ;
INTTK int
MAINTK main
LPARENT (
RPARENT )
LBRACE {
INTTK int
IDENFR c
SEMICN ;
IDENFR c
ASSIGN
GETINTTK getint
LPARENT (
RPARENT )
SEMICN ;
PRINTFTK printf
LPARENT (
STRCON output is %d
COMMA ,
IDENFR c
RPARENT )
SEMICN ;
RETURNTK return
IDENFR c
SEMICN ;
RBRACE } 【评分标准】 按与预期结果不一致的项数每一行单词信息算一项扣分每项扣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.0Java jdk 1.8 注意在MAC下压缩会产生额外的文件到压缩包中需删掉额外文件后提交。 答案: Mag1skY/Compiler-Principles: 词法分析 语法分析 中间代码生成 代码生成