ocamllex를 사용하여 OCaml에서 장난감 프로그래밍 언어를 작성하는 것을 망설이고, 파이썬 스타일의 들여 쓰기 변경에 민감한 언어를 만들려고했지만 ocamllex의 정규식 규칙을 사용하여 줄의 시작과 일치하는 문제가 발생했습니다. 나는 ^
을 사용하여 줄의 시작을 일치시키는 데 익숙하지만, 문자열 연결 연산자 인 OCaml에서 사용되었습니다. 구글 검색은 불행히도 나를 위해 많이 쓰이지는 않았다. (누구나 어떻게 작동하는지 알 수있다.)OCamllex는 줄의 시작과 일치합니까?
3
A
답변
4
길이가 0 인 일치하는 심볼 (예 : ^
, Perl 스타일의 정규 표현식)을 명시 적으로 지원하는지 모르겠습니다. .
parser.mly
%token EOL
%token <int> EOLWS
% other stuff here
%%
main:
EOL stmt { MyStmtDataType(0, $2) }
| EOLWS stmt { MyStmtDataType($1 - 1, $2) }
;
렉서 :) 문자열이 아닌 위치와 일치하는 그러나,이 같은 당신의 렉서가 명시 적으로 토큰으로 줄 바꿈을 돌려 보자 할 수 있어야한다 .mll
{
open Parser
exception Eof
}
rule token = parse
[' ' '\t'] { token lexbuf } (* skip other blanks *)
| ['\n'][' ']+ as lxm { EOLWS(String.length(lxm)) }
| ['\n'] { EOL }
(* ... *)
이 검증되지 않은,하지만 일반적인 생각입니다 : 바로 줄 바꿈을 다음과 int
로 길이를 통과 '우선'
- 취급 행법
경고 : 입력을 사전 처리하여 \n
이 하나도없는 경우 시작해야합니다.
관련 문제
- 1. 줄의 시작과 끝을 나타내는 Grep?
- 2. 루비 정규 표현식 :^m 수정 자없이 행의 시작과 일치합니까?
- 3. Git diff -w는 줄의 시작과 끝에서만 공백을 무시합니다.
- 4. RegexKitLite가 일치합니까?
- 5. PHP 시작과 Flex 시작
- 6. 검색 시작과 끝으로 이동
- 7. 뮬 모델의 시작과 정지
- 8. 쌍 검색 알고리즘과 일치합니까?
- 9. 유니 코드 문자와 일치합니까?
- 10. HTML과 javascript 클래스가 일치합니까?
- 11. OCaml의 함수와 일치합니까?
- 12. href가 링크와 일치합니까?
- 13. 정규식이이 OR와 일치합니까?
- 14. 다음 ^. * $ regexp는 무엇이 일치합니까?
- 15. 무엇 /이 정규식이 일치합니까?
- 16. 데이터베이스 구현이 설계와 일치합니까?
- 17. 사진 작가와 어떻게 일치합니까?
- 18. byte [] 유형과 어떻게 일치합니까?
- 19. PHP : $ _FILES와 (과) 일치합니까?
- 20. Bash 스크립트, 날짜와 일치합니까?
- 21. 텍스트가 데이터베이스의 데이터와 일치합니까?
- 22. Emacs regexps의 문자열의 시작과 끝
- 23. 프로세스의 시작과 종료를 모니터링 하시겠습니까?
- 24. 스프링 3 시작과 홀수 정보
- 25. 발견 날짜 간격은 시작과 끝은
- 26. 정규식이 2 또는 1과 일치합니까?
- 27. 정규 표현식에서 "/ *"와 어떻게 일치합니까?
- 28. 개행을 가로 질러 정규식과 일치합니까?
- 29. 이 정규 표현식이 왜 일치합니까?
- 30. nil에 대한 포인터가 NULL과 일치합니까?
정규 표현식의 문법은 여기에서 찾을 수 있습니다. http://caml.inria.fr/pub/docs/manual-ocaml/manual026.html#regexp – nlucaroni
참으로 나는 그것을 보았습니다. 나는 그저 뭔가를 놓쳤다는 것과 그 이상의 것이 있었기를 바랬습니다. 감사! –
문제 없습니다. Lex와 유사한 주장과 일반 정규 표현식 언어에 대한 지식을 기반으로하는 것은 당연한 생각입니다. 왜 그들이 그것을 포함하지 않았는지 나는 확신하지 못한다. fa.caml google 그룹에 물어볼 수 있습니다. – nlucaroni