wyk22293636 2021-10-10 18:52 采纳率: 0%
浏览 44
已结题

Flex词法分析器NFA到DFA的转换

最近在学习Flex词法分析器(flex-2.6.0版本),我使用如下简单的 .l文件来跟踪代码的执行,研究DFA转换表的构造过程

...
    %%
    
    [aeiou]+ {printf("aeiou");}
    ^r {printf("^r");}
    
    %%
...

在看到ntod函数(NFA到DFA的转换)之前,各个等价类的创建过程都清楚,但是我看不明白sympartition和symfollowset函数的具体实现细节。在这之前已经得到起始状态的epsilon闭包,我知道这两个函数肯定是为了得到之后状态的epsilon闭包,但是我不清楚其中实现的意思,能否详细解释一下这两个函数呢?

上述的 .l文件创建了3个等价类: aeiou, r 和 . sympatition中的ccltbl已经是其等价类的下标了,那用mkeccl得到的duplist是用来做什么呢? duplist[sym] == NIL为什么代表有唯一的out-transition呢?

上述.l 文件的NFA的状态如下

********** beginning dump of nfa with start state 11
state #    1    257:     0,    0
state #    2    257:     0,    0
state #    3     -1:     4,    0
state #    4    257:     3,    0  [1]
state #    5    257:     1,    3
state #    6    114:     7,    0
state #    7    257:     0,    0  [2]
state #    8    257:     2,    6
state #    9     -2:    10,    0
state #   10    257:     0,    0  [3]
state #   11    257:     5,    9
********** end of dump

  • 写回答

1条回答 默认 最新

  • 有问必答小助手 2021-10-12 10:10
    关注

    你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


    本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。

    评论

报告相同问题?

问题事件

  • 系统已结题 10月18日
  • 创建了问题 10月10日

悬赏问题

  • ¥15 FFmpeg 成功推流到 Nginx RTMP 服务器但无法用 ffplay 或 VLC 播放
  • ¥15 用G92修改坐标,结果无效。
  • ¥15 请修改以下C语言代码使其能正确输出最短路径
  • ¥20 抖音商城拉码器安卓报错求解决办法或者有新的拉码脚本也可以介绍一下
  • ¥15 MPLAB IDE V2.35 报错make[2]: *** [build/default/production/_ext/1472/MSSP_I2C.p1] Error 1
  • ¥15 Unity2D URP项目TextMeshPro(3D)无法显示文字
  • ¥15 新唐M451 DTMF检测和发送代码修改
  • ¥15 在国外文献网站里点击view pdf 加载异常缓慢甚至加载不出来。
  • ¥65 python批量提取发票的信息
  • ¥15 虚幻五引擎内容如何上传至网盘?