2

有没有办法让 ocammlex 使用更多关键字?我为德语编写了一个解释器和解析器,为了语言分析,它将德语文本“编译”成乳胶图片。它工作得非常好,并且在语言学领域确实是新的。感谢 ocaml 的所有开发人员,您可以在此类事情上滥用 ocamllex 和 menhir 等工具。但很快我就会到达 ocammlex-automaton 的极限,它会说:“自动机变大”。

我知道哈希表的解决方案。我还没有尝试过,如果这解决了即将出现的问题,但是有人知道,如果在 ocamllex-source-code 中更改某种类型的限制整数等很容易,我可以在不更改程序代码的情况下滥用它? 在我看来,这个关于自动化大小的错误对于进一步滥用来说是不必要的愚蠢和尴尬,所以我想问一下。

感谢,并有一个愉快的一天。

4

1 回答 1

3

我为您坚持滥用工具表示赞赏:-)

我查看了 ocamllex 的来源,我只看到一个地方在检查自动机是否变得太大。

lexgen.ml780线附近

let do_alloc_cell used t =
  let available =
    try Hashtbl.find tag_cells t with Not_found -> Ints.empty in
  try
    Ints.choose (Ints.diff available used)
  with
  | Not_found ->
      temp_pending := false ;
      let n = !next_mem_cell in
      if n >= 255 then raise Memory_overflow ;
      Hashtbl.replace tag_cells t (Ints.add n available) ;
      incr next_mem_cell ;
      n

只是与 255 进行了神秘的比较,没有解释任何不变量等的注释。我简要地查看了代码,还查看了 Lexing 模块。我看不到值 255 有任何不明显的依赖关系。因此,您可以在此处构建自己的具有更大值的 ocamllex 副本。您可以尝试 1023(比 2 的幂小一)。

您可能还只想分解并使用不同的工具。我意识到这可能是其他人告诉你的。正如我所说,我很佩服你的坚持。

于 2014-07-15T17:53:18.653 回答