Skip to content

Rilliane/Compilers_Principles_Homework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Compilers_Principles_Homework

  • 内容简介:本学期开设了编译原理这门课,在这里记录一下编译原理的程序作业。不保证完全没有bug。

  • 包含的题目:

    • pascal预处理:给定一段pascal程序,去掉程序中的所有注释,并把每一行前添加一个行号。工程中包括三个.pas文件可以体验。
    • 正规toNFA:把正规表达式转换为NFA,参考了同学大佬的做法,先把正规表达式转为后缀表达式去括号,然后正常求解。
    • NFA确定化:把NFA转换为DFA。包含了一个预置的NFA和手动输入NFA的框架。包含了调试输出和答案输出。
    • DFA_Simplify:DFA最小化的代码。使用了填表法。
  • 现存的问题:

    • pascal预处理:pascal文件结束位置不可以有空行,有空行会出错。

    • 正规toNFA:注意正规表达式的表示方式:

    1. *用^表示,如: $$(0|1)^{\ast}$$表示为(0|1)^;

    2. 连接符不要写出来,如:0111,0011^;

    3. 只可以处理|,*,·,(,)这几种符号。

    • NFA确定化:没有输出新的始态和终态。
    • DFA_Simplify:DFA最小化只显示化简的状态,不显示新的状态机。
  • 使用方法:

    1. 找到自己需要的工程,如pascal预处理(所有工程都在根目录的一级子目录下);
    2. 直接下载整个文件夹;
    3. 用clion打开工程,如果没有clion,可以用自己的c++编译器随便建立一个工程,再把我的工程中里的cpp文件全复制粘贴过去。

About

关于编译原理的作业

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published