2014-06-12 21 views
0

我正在嘗試用一些特殊的本地語言(這是爲我的目的修改)爲ocamllex編寫詞法分析器。有些詞應該與他們的第一個字符匹配,即加倍。但我沒有找到任何方式來表達第一個字符的重複。無論是我可以使用正則表達式語法在ocamllex匹配重複與正則表達式

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

與 「\ 1」。 Ocamllex說「非法逃跑序列\ 1」。我認爲這對於escape表達式的語法來說確實沒問題,但確定那不是我想要的。我也無法以任何方式使用大括號的重複語法(但是這不會解決問題):

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

我認爲在正則表達式之後,大括號中的oCaml代碼存在衝突。

有沒有人有這樣的想法?

非常感謝。

回答

1

Ocamllex的正則表達式沒有重複語法。該avaibable正則表達式的語法是一樣的參考手冊中列出:

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

我想你可以手動列出如下的所有可能的重複:

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

感謝你驗證我的懷疑。 :D那不是一個很好的解決方案,但必需品......哦,Caml。 – user3734280