理论上说,关于lex工具(我读过ocamllex),它将把一组正则表达式转换为C (OCaml)代码,用于DFA (实际上在NFA和NFA2DFA中)。DFA M的形式定义为5元组M={ Q,Sigma,transition_function,q0,F}。我在生成的文件中发现了以下内容:
DFA的对象/结构与ocamllex生成的结构之间存在映射?我看不见它..。此外,我在谷歌上搜索一些帮助,但我没有找到任何有用的例子。
ocamllex工具的答案在DFA上下文中是有意义的,例如7种状态、279个转换、1158字节的表大小。
它是一个状态转换表吗?怎么“读”它?谢谢您的链接/提示!
发布于 2013-07-05 01:45:56
ocamllex关注的是速度,因此在生成的代码中看不到显式状态。理论表示法并不总是最快的,在实践中,它通常被转化为考虑到常数因子速度的改进。状态很可能用生成的数组中的索引来表示。您可以把它看作是将程序集代码映射回真实的源代码--在一般情况下,不可能立即执行,因为编译器执行一些优化,并为最紧凑和最有效的代码而奋斗,ocamllex也是如此。有趣的问题是你为什么要这么做?
https://stackoverflow.com/questions/17475418
复制相似问题