/auto_machine

形式语言与自动机,正则表达式->极小DFA,自动评测程序

Primary LanguagePython

形式语言与自动机 正则表达式->极小DFA 评测程序

说明

本程序的检测方式为抽样检测:对于给定正则表达式,生成的极小DFA,输入句子,判断是否可以接收:

  • 非完闭检查,给定多组测试数据(正则表达式可以接收句子),如果都可以接收,则判断该DFA是正确的。
  • 因为极小DFA是唯一的,对于“极小”的检查,我们只检查状态的数量。
  • 给定句子,判断是否可以接收,即是否符合该正则表达式。

本程序需要安装python3.x,如何安装请自行搜索。

如何使用

立即开始

下载该程序,文件名为auto_machine,在该文件夹下,包含文件:

  • ans.txt:存放你缩写程序输出的自动机状态转移表
  • sentences.txt:待检查的句子(测试数据),可以自己设置,用来检测自己程序的正确性,第一行为最小状态的数量。
  • autograde.py

进入文件夹auto_machine,打开终端,执行下面的程序:

python judge.py

[True, True, True, True, False]

上式内容,表示给定的5个句子中,前4个句子可被正则表达式接收,最后一个句子不能被接收。

python autograde.py --debug=True

句子1100成功接收! 句子100011010000000成功接收! 句子000010000011010成功接收! 句子1110100010000100000100000000010成功接收! 不接收,字符串读完,未停止在终止状态,当前状态为:q2 所在句子为:101011111 [True, True, True, True, False]

自定义参数

本程序有4个参数:ans_file,sentences_file,debug,eval,默认情况下参数的值为:

  • ans_file="ans.txt"
  • sentences_file="sentences.txt"
  • debug=False
  • eval=True

你可以更改文件名,方便你的使用。例如你的文件结构为

/auto_machine

​ —autograde.py

​ —output.txt

​ —test.txt

你可以使用如下命令进行测试:

python judge.py --ans_file="output.txt" --sentences_file="test.txt"

当然也支持了简写的形式:

python judge.py -a="output.txt" -s="test.txt"

数据

创建三个文件夹为:

  • 正则表达式:re
  • 极小自动机:ans
  • 测试数据(句子):sentences

文件夹内存放我们检查的数据,命名格式为:

re_1.txt,ans_1.txt, sentences_1.txt