Повторение совпадений с регулярным выражением в ocamllex
Я пытаюсь написать лексер с ocamllex для какого-то специального родного языка (который немного изменен для моих целей). Некоторые слова должны соответствовать их первому символу, который удваивается. Но я не могу выразить это повторение первого символа. Ни я не могу использовать синтаксис регулярных выражений
(['А'-'г'])\1['а'-'Z']+
с этим "\1". Ocamllex говорит "незаконная последовательность побега \ 1". и я думаю, что это действительно хорошо с синтаксисом escape-выражений, но уверен, что это не то, что я хотел. Также я не могу использовать синтаксис повторения с фигурными скобками в любом случае (но это все равно не решит проблему):
[ 'А'-'Z']{2}['а'-'Z']+
Я думаю, что есть конфликт с кодом oCaml в фигурных скобках после регулярного выражения.
У кого-нибудь есть идея для этого?
большое спасибо вам.
1 ответ
Регулярное выражение Ocamllex не имеет синтаксиса повторения. Доступный синтаксис регулярных выражений аналогичен приведенному в справочном руководстве:
http://caml.inria.fr/pub/docs/manual-ocaml-4.01/lexyacc.html
И я думаю, что вы можете вручную перечислить все возможные повторения, как показано ниже:
("aa"|"bb"|"cc"|"dd"|"ee"|"ff"| ..............)['a'-'z']+