编译原理
文章平均质量分 79
ipomonkey
只是小小程序猿
展开
-
DFA应用——判断合法数字
判断输入是否是一个合法数字状态par= 0: 初始状态1: 以 + 或者 - 号2: 以 .结尾3: 以数字结尾, 没出现过小数点4: 以E 或者 e结尾5: 数字后面跟blank6: 有了E,以数字结尾7: 有了E , 以+或者-结尾8: 有了E ,数字后面跟blank9: 以数字结尾, 已经出现过小数点#include#include原创 2017-11-06 18:24:39 · 1390 阅读 · 0 评论 -
NFA(子集算法,DFA最小化)代码实现
#include #include #include #include using namespace std;const int maxn=1001;/*NFA五元组M={K,A,f,S,Z};K::状态集合A::字母表F::转换函数S::开始状态Z::结束状态*//*状态集合K中的结点*/string node;/*字母表A中的符号*/string c原创 2017-11-06 18:26:13 · 4129 阅读 · 1 评论 -
词法分析——判断单词类别并输出
词法分析小程序。实验目的1.待分析的简单的词法(1)关键字: begin if then while do end 注:所有的关键字都是小写。(2)运算符和界符. + - * / = >= ( ) ; :=(3)其他单词是标识符(IDENT)和整型常数(NUMBER),通过以下正规式定义:IDENT ::= letter (le原创 2018-02-07 19:46:04 · 4320 阅读 · 0 评论 -
语法分析——简单判断条件语句,赋值语句,循环语句
语法分析小程序。简单判断赋值、条件、循环,代码块开始,结束二、 实验要求1.待分析的简单语言的语法用扩充的EBNF表示如下:程序块>::= begin{;} end.::= ||::= IDENT:=::= if then ::= while do ::= [+|-]{(+|-)}::= {(*|/)}::= IDENT | NUMBER原创 2018-02-07 19:58:07 · 5746 阅读 · 2 评论 -
语法分析——在之前基础上增加定义语句打印,定义语句判断,增加对if-else-then的条件语句的判断
这是对之前的代码的扩充。#include using namespace std;/*变量说明: line 从终端读入的字符串; 当前所指位置在计数器 p token 为存放的单词自身字符串;当前所指位置在计数器 m number 整型常数 sym 每个单词符号种类*/enum symbol{ period=0, ident=1, numbe原创 2018-02-07 20:08:29 · 361 阅读 · 0 评论 -
编译原理综合应用——Java文件打点
实验目的编译原理在JAVA可测试性中的应用。通过对源程序进行分析,在特定位置增加特定的打印语句,方便对程序执行过程的跟踪定位。比如:函数出入口增加打印语句。实验要求1、 读取一个JAVA文件,进行语法解析,在函数出入口增加打印语句,并将改写后的程序更新到JAVA文件中去。输入: 从控制台读入一个JAVA程序文件输出:更新后的JAVA程序文件, 增加了打印语句2. 输入输原创 2018-02-07 20:12:30 · 1253 阅读 · 0 评论