0

我正在尝试用 ocamllex 为一些特殊的母语编写一个词法分析器(为了我的目的而做了一些修改)。有些单词应与它们的第一个字符匹配,即加倍。但是我没有找到任何方法来表达第一个字符的重复。我也不能使用正则表达式语法

(['a'-'z'])\1['a'-'z']+

用那个“\1”。Ocamllex 说“非法转义序列 \1”。我认为转义表达式的语法真的没问题,但肯定那不是我想要的。我也不能以任何方式使用带有花括号的重复语法(但这无论如何都不能解决问题):

['a'-'z']{2}['a'-'z']+

我认为正则表达式后的花括号中的 oCaml 代码存在冲突。

有人对此有想法吗?

非常感谢您。

4

1 回答 1

2

Ocamllex 的正则表达式没有重复语法。可用的正则表达式语法如参考手册中所列:

http://caml.inria.fr/pub/docs/manual-ocaml-4.01/lexyacc.html#sec274

而且我认为您可以手动列出所有可能的重复,如下所示:

("aa"|"bb"|"cc"|"dd"|"ee"|"ff"| ..............)['a'-'z']+
于 2014-06-13T09:27:00.620 回答