由ocamllex生成的文件

时间:2013-07-04 17:11:07

标签: ocaml ocamllex

该理论说关于lex工具(我读过ocamllex)它会将正则表达式的集合转换为DFA的C(OCaml)代码(实际上在NFA和NFA2DFA中)。 DFA M的正式定义是5元组M = {Q,Sigma,transition_function,q0,F}。我在生成的文件中找到的内容如下:

  • 一个名为__ocaml_lex_tables的记录,其中包含来自Lexing模块的字段
  • 递归函数

DFA的对象/结构与ocamllex生成的结构之间存在映射?我不能'看到'它....我也在谷歌搜索一些帮助,我没有找到任何有用的例子 ocamllex工具的答案在DFA上下文中是有意义的,例如: 7个状态,279个转换,表大小1158个字节

是状态转换表吗?如何“阅读”它? 谢谢你的链接/提示!

1 个答案:

答案 0 :(得分:1)

ocamllex专注于速度,因此在生成的代码中不会显示明确的状态。理论表示并不总是最快的,在实践中它通常被转换为考虑恒定因子速度的改进。状态很可能用生成的数组中的索引表示。您可以将其视为将汇编代码映射回真实源代码 - 在一般情况下,不可能立即执行,因为编译器执行一些优化并努力获得最紧凑和有效的代码,对于ocamllex也是如此。有趣的问题是你为什么要那样做?