1. 课程设计目标 实验建立C-编译器。只含有扫描程序(scanner)和语法分析(parser)部分。 2. 分析与设计 C-编译器设计的整体框架,本实验实现扫描处理和语法分析程序(图中粗黑部分)。 2.1 、扫描程序scanner部分 2.1.1系统设计思想 设计思想:根据DFA图用switch-case结构实现状态转换。 惯用词法: ① 语言的关键字:else if int return void while ② 专用符号:+ - * / < >= == != = ; , ( ) [ ] { } /* */ ③ 其他标记是ID和NUM,通过下列正则表达式定义: ID = letter letter* NUM = digit digit* letter = a|..|z|A|..|Z digit = 0|..|9 大写和小写字母是有区别的 ④ 空格由空白、换行符和制表符组成。空格通常被忽略,除了它必须分开ID、NUM关键字。 ⑤ 注释用通常的C语言符号/ * . . . * /围起来。注释可以放在任何空白出现的位置(即注释不能放在标记内)上,且可以超过一行。注释不能嵌套 说明:当输入的字符使DFA到达接受状态的时候,则可以确定一个单词了。初始状态设置为START,当需要得到下一个token时,取得次token的第一个字符,并且按照DFA与对此字符的类型分析,转换状态。重复此步骤,直到DONE为止,输出token类型。当字符为“/”时,状态转换为SLAH再判断下一个字符,如果为“*”则继续转到INCOMMENT,最后以“*”时转到ENDCOMMENT状态,表明是注释,如果其他的则是字符停滞于当前字符,并且输出“/”。 2.1.2程序流程图
1
C_minus语言词法分析器 C_minus语言词法分析器
2019-12-21 22:01:36 48KB C_minus 语言词法分析器
1
编译原理课程的词法分析器的设计,内含完整代码。
2019-12-21 21:23:18 77KB c_minus 词法分析器
1
自己上学期的作业,递归下降实现的,【编译原理的课程设计】,【得了优秀】,【内附源码】 自己的心血之作,所以下载资源分较高,但是下了绝对不会后悔 C-语言编译器 编译原理 课程设计报告 递归下降 四川大学计算机学院
1
参照TINY语法分析器的实现,运用所学知识用C语言或者C++语言实现C-MINUS词法分析器,可输出token,再在词法分析的基础上实现C-MINUS语法分析器,可输出语法树。 本资源是运用自顶向下方法中的递归下降分析方法进行语法分析,是学习编译器理解编译器的重要方法,上传本资源帮助大家学习
2019-12-21 20:33:50 1.27MB C-Minus;
1
编译原理课程设计--C-minus词法和语法分析器,用lex做的词法分析,包含输入文件;LL(1)语法分析;JTree输出分析树
2019-12-21 20:23:01 125KB c-minus java 编译原理
1
编译原理课程设计。 里面附有完整的C Minus词法分析器和语法分析器。 代码注释相当详细! 并且附有课程设计的报告。 词法分析器采用表驱动构造。 语法分析器采用LL1,文法为手动输入的文件,即可处理多种不同的文法。并生成相应的分析表,根据输入待分析文件生成对应的抽象语法树。 看了觉得不错一定给好评哦!
2019-12-21 20:11:28 3.16MB C Minus 语法分析器
1
参照TINY语法分析器的实现,运用所学知识用C语言或者C++语言实现C-MINUS词法分析器,可输出token,再在词法分析的基础上实现C-MINUS语法分析器,可输出语法树。 本资源是运用自顶向下方法中的递归下降分析方法进行语法分析,是学习编译器理解编译器的重要方法,上传本资源帮助大家学习。
2019-12-21 19:41:41 1.27MB 编译器 c++
1
用c语言编写的C-编译器,词法分析 语法分析 语义分析 代码生成都有,也能完成对C-语言的编译
2019-12-21 19:41:16 3.88MB c-minus 编译器
1
这是《编译原理》的课程设计--C-Minus词法语法分析器(带有课程设计报告),采用Web前端的JavaScript实现,兼容多种浏览器。词法分析器部分采用表驱动机制实现,同时提供一套用于快速验证性的正则匹配测试工具。语法分析器采用LR(0)文法实现,并且提供自动化构造LR(0)的操作表生成器。(源代码的注释非常详细,请先看下里面的"说明.txt")(温馨提示:下载后评论【需要评选等级】会返回被扣除的积分)
2019-12-21 19:34:10 182KB JavaScript 编译器 scan parser
1