📌  相关文章
📜  LEX代码中的DFA,接受0的奇数和1的偶数

📅  最后修改于: 2021-06-28 07:41:55             🧑  作者: Mango

先决条件:设计有限自动机
问题:设计一个LEX代码以构造一个接受以下语言的DFA:输入“ 0”和“ 1”上所有奇数为0且偶数为1的字符串。

例子:

Input: 10001 
Output: Accepted

Input: 10011
Output: Not Accepted

Input: asdf
Output: Invalid 

方法:
LEX默认为我们提供一个INITIAL状态。因此,为了制作DFA,请将其用作DFA的初始状态。现在我们再定义四个状态A,B,C和DEAD,如果遇到错误或无效的输入,将使用DEAD状态。当用户输入无效字符,进入DEAD状态并打印消息“ INVALID”,如果输入字符串在状态B结束,则显示消息“ Accepted”。如果输入字符串以状态INITIAL结尾,则A,C然后显示消息“未接受”。 (请参阅此处)。

笔记:
要编译lex程序,用户需要UNIX系统和flex,可以使用sudo apt-get install flex安装它。使用上述所有规范,打开unix终端并执行以下操作:

  1. 使用lex程序将规范文件更改为C语言程序。生成的程序在lex.yy.c文件中。
  2. 使用带有-ll标志的cc命令来编译程序并将其与LEX子例程库链接。生成的可执行程序在a.out文件中。
lex lextest
cc lex.yy.c -lfl 

LEX代码:

输出: