我正在尝试用ocamllex写一个词法分析器用于一些特殊的母语(为了我的目的,这有点修改)。有些单词应该与它们的第一个字符匹配,即加倍。但我没有找到任何表达这个重复第一个字符的方法。我都不能使用正则表达式语法
([ '一个' - 'Z'])\ 1 'A' - 'Z'] +
用“\ 1”。 Ocamllex说“非法逃脱序列\ 1”。我认为这对转义表达式的语法确实没问题,但确定这不是我想要的。我也不能以任何方式使用花括号的重复语法(但这不会解决问题):
[ 'A' - 'Z'] {2} [ 'A' - 'Z'] +
我认为在regexp之后花括号中的oCaml代码存在冲突。
有人对此有所了解吗?
非常感谢你。答案 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']+