📌  相关文章
📜  LEX代码接受包含输入字母{a,b}的倒数第三个元素'a'的字符串

📅  最后修改于: 2022-05-13 01:54:10.560000             🧑  作者: Mango

LEX代码接受包含输入字母{a,b}的倒数第三个元素'a'的字符串

在本文中,我们将讨论 LEX 代码中的 DFA,它在示例的帮助下接受包含输入字母 {a,b} 的倒数第三个元素“a”的字符串。让我们一对一地讨论它。

先决条件——设计有限自动机

问题概述:
在 LEX 代码中设计一个 DFA,它接受包含输入字母 {a,b} 上倒数第三个元素“a”的字符串。

例子 -

Input : aaab
Output: Accepted

Input : ab
Output: Not Accepted

Input: ababab
Output:Not Accepted

Input:123
Output:Invalid

Input:bbba
Output:Not Accepted

Input:bbbaaab
Output:Accepted

方法 :
LEX 默认为我们提供了一个初始状态。因此,要制作 DFA,请将其用作 DFA 的初始状态。我们定义了另外八种状态:A、B、C、D、E、F、G 和 DEAD,如果遇到错误或无效输入,将使用 DEAD 状态。当用户输入无效字符时,进入 DEAD 状态,并打印信息“Invalid”。如果输入字符串以状态 INITIAL、A、B 或 F 结束,则显示消息“未接受”。否则,如果输入字符串以状态 C、D、E 或 G 结束,则显示其他情况,一条消息“已接受”。

笔记 -
因此,要编译 lex 程序,我们需要一个安装了 flex 的 Unix 系统。然后我们需要用 .l 扩展名保存文件。例如-filename.l然后保存程序后关闭lex文件,然后打开终端,编写如下命令。

lex filename.l
cc lex.yy.c
./a.out

莱克斯代码:

输出 :