我在這裏結束了我的繩索。我無法在ocamllex中獲得任何工作,並且這讓我瘋狂。這是我的.mll
文件:OCaml lex:根本不工作,無論如何
{
open Parser
}
rule next = parse
| (['a'-'z'] ['a'-'z']*) as id { Identifier id }
| '=' { EqualsSign }
| ';' { Semicolon }
| '\n' | ' ' { next lexbuf }
| eof { EOF }
下面是我通過在輸入該文件的內容:
a=b;
然而,當我編譯和運行的東西,我就非常得到一個錯誤第一個字符,說這是無效的。我真的不知道發生了什麼事情,而Google根本沒有幫助我。這怎麼可能呢?正如你所看到的,我真的很難過。
編輯:
我工作了這麼久,我放棄瞭解析器。現在這是我的主文件中的相關代碼:
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
打印出「line:1,col:1」。
你能否提供你定義構造函數如標識符的ML文件?另外,你能否確認ocamllex和ocamlc在編譯時沒有投訴? – Surikator 2011-03-27 14:34:12
它們在parser.mly中被定義爲標準,並且都沒有抱怨。 – marsolk 2011-03-27 17:29:10
@marsolk:我很好奇 - 你有沒有想過這個?有什麼問題? – lebowski 2017-02-17 17:11:34