构造非确定性有限自动机

时间:2012-04-23 22:10:44

标签: lexer finite-automata

我做手写的词法分析器。我需要绘制一个非确定性有限自动机,它包含三个有限自动机,它是先前制作的。我为飞机,云,跑道等关键词制作了它们。我需要帮助,如何为这三个自动机构建通用自动机。我需要一些例子如何做到这一点?如果你知道请帮帮我??

1 个答案:

答案 0 :(得分:0)

绘制飞机,云和跑道自动机,在起始状态之前留出一些空间。现在,抹掉他们的第一个州。在它们前面绘制一个新的单个状态。将它连接到“irplane”自动机,带有“a”转换/边缘,“r”边缘到“unway”,“c”边缘到“loud”。而已。完成。

对于更一般的情况,它更复杂: 首先,绘制你的每个自动机(例如飞机,云和跑道),在它们开始的地方留下一些空的空间。接下来,在它们开始之前绘制一个状态,并通过自由边缘将其连接到飞机,云和跑道自动机的旧起始状态的开头。 (自由边也称为ε边,ε边,λ边或λ边)。

接下来,您将对它们执行子集构造算法,您可以在youtube上找到视频教程。还有一个online subset construction algorithm tool会将非确定性有限自动机转换为确定性有限自动机(DFA)。该过程称为确定化。

获得DFA后,可以使用它来构建驱动扫描程序的状态,操作和查找表。这是它自己的蠕虫病毒。人们通常使用像Lex或Flex这样的扫描仪生成器来实现自动化。您可以在线使用的类似,用户友好的工具是the Online Scanner Generator。您可以通过提供以下输入来使用它来制作图表:

airplane:airplane
cloud:cloud
runway:runway

它会为您提供DFA,如下所示:http://i.stack.imgur.com/ngFWU.png

相关问题