여기 내 로프 끝에 있습니다. 나는 ocamllex에서 일할 수있는 어떤 것도 얻을 수 없으며, 그것은 나를 미치게합니다. 내가 컴파일하고 일을 실행할 때, 나는 매우에 오류가 발생, 그러나OCaml lex : 전혀 작동하지 않습니다.
a=b;
: 여기
{
open Parser
}
rule next = parse
| (['a'-'z'] ['a'-'z']*) as id { Identifier id }
| '=' { EqualsSign }
| ';' { Semicolon }
| '\n' | ' ' { next lexbuf }
| eof { EOF }
내가 입력로 전달하는 파일의 내용은 다음과 같습니다이 내
.mll
파일입니다 첫 번째 문자는 유효하지 않다고 말합니다. 정직하게 무슨 일이 일어나고 있는지 전혀 모르겠다. 구글은 나를 전혀 도와주지 않았다. 이것이 어떻게 가능한가? 보시다시피, 저는 정말로 여기에서 곤란합니다.
편집 :
내가 파서에 포기 너무 오랫동안 일하고 있었다. 이제이 파일이 내 주 파일의 관련 코드입니다.
let parse_file filename =
let l = Lexing.from_channel (open_in filename) in
try
Lexer.next l;()
with
| Failure msg ->
printf "line: %d, col: %d\n" l.lex_curr_p.pos_lnum l.lex_curr_p.pos_cnum
"줄 : 1, col : 1"을 인쇄합니다.
식별자와 같은 생성자를 정의한 ML 파일을 제공 할 수 있습니까? 또한 ocamllex와 ocamlc가 컴파일 타임에 불평하지 않았 음을 확인할 수 있습니까? – Surikator
이들은 parser.mly에서 표준으로 정의되었으며 불평하지도 않았습니다. – marsolk
@marsolk : 궁금합니다. 이것을 알아 냈습니까? 문제는 무엇 이었습니까? – lebowski