2014-06-12 6 views
0

ocamllex를 사용하여 일부 특수 모국어로 렉서를 작성하려고합니다. (이는 약간 수정되었습니다). 어떤 단어는 두 번 겹쳐지는 첫 글자와 일치해야합니다. 그러나 나는 첫 번째 문자의 반복을 표현할 방법을 찾지 못한다. 나도 정규식 구문을 사용할 수ocamllex에서 regexp로 반복 매칭

([ '은'- 'Z']) \ 1 '은'- 'Z'즉 "\ 1"과 +

. Ocamllex는 "불법 탈출 시퀀스 \ 1"이라고 말했습니다. 나는 이스케이프 표현의 문법을 사용하여 실제로는 괜찮다고 생각하지만, 내가 원한 것이 아니라는 것을 확신합니다. 어떤 식 으로든 중괄호를 사용하는 반복 구문을 사용할 수는 없습니다. 그러나 어쨌든 문제를 해결할 수는 없습니다. :

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

regexp 다음에 중괄호 안에 oCaml 코드와 충돌이 있다고 생각합니다.

아무도 아이디어가 없습니까?

대단히 감사합니다.

답변

1

Ocamllex의 regex에는 반복 구문이 없습니다.

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

그리고 난 당신이 수동으로 아래 가능한 모든 반복을 나열 할 수 있습니다 생각 : :이 avaibable 정규식 구문은 참조 설명서에 나와있는대로입니다

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

내 의혹을 확인하는 주셔서 감사합니다. : D는 정말로 좋은 해결책이 아니라 필수품입니다. 오, Caml. – user3734280