匹配重复与ocamllex中的regexp

时间:2014-06-12 16:05:17

标签: regex ocamllex

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

  

([ '一个' - 'Z'])\ 1 'A' - 'Z'] +

用“\ 1”。 Ocamllex说“非法逃脱序列\ 1”。我认为这对转义表达式的语法确实没问题,但确定这不是我想要的。我也不能以任何方式使用花括号的重复语法(但这不会解决问题):

  

[ 'A' - 'Z'] {2} [ 'A' - 'Z'] +

我认为在regexp之后花括号中的oCaml代码存在冲突。

有人对此有所了解吗?

非常感谢你。

1 个答案:

答案 0 :(得分:2)

Ocamllex的正则表达式没有重复语法。 avaibable正则表达式语法与参考手册中列出的一样:

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

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

("aa"|"bb"|"cc"|"dd"|"ee"|"ff"| ..............)['a'-'z']+