-
内容简介:本学期开设了编译原理这门课,在这里记录一下编译原理的程序作业。不保证完全没有bug。
-
包含的题目:
- pascal预处理:给定一段pascal程序,去掉程序中的所有注释,并把每一行前添加一个行号。工程中包括三个.pas文件可以体验。
- 正规toNFA:把正规表达式转换为NFA,参考了同学大佬的做法,先把正规表达式转为后缀表达式去括号,然后正常求解。
- NFA确定化:把NFA转换为DFA。包含了一个预置的NFA和手动输入NFA的框架。包含了调试输出和答案输出。
- DFA_Simplify:DFA最小化的代码。使用了填表法。
-
现存的问题:
-
pascal预处理:pascal文件结束位置不可以有空行,有空行会出错。
-
正规toNFA:注意正规表达式的表示方式:
-
*用^表示,如:
$$(0|1)^{\ast}$$ 表示为(0|1)^; -
连接符不要写出来,如:0111,0011^;
-
只可以处理|,*,·,(,)这几种符号。
- NFA确定化:没有输出新的始态和终态。
- DFA_Simplify:DFA最小化只显示化简的状态,不显示新的状态机。
-
-
使用方法:
- 找到自己需要的工程,如pascal预处理(所有工程都在根目录的一级子目录下);
- 直接下载整个文件夹;
- 用clion打开工程,如果没有clion,可以用自己的c++编译器随便建立一个工程,再把我的工程中里的cpp文件全复制粘贴过去。
-
Notifications
You must be signed in to change notification settings - Fork 2
Rilliane/Compilers_Principles_Homework
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
About
关于编译原理的作业
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published