我已经走到了尽头。我无法在 ocamllex 中获得任何工作,这让我发疯。这是我的.mll
文件:
{
open Parser
}
rule next = parse
| (['a'-'z'] ['a'-'z']*) as id { Identifier id }
| '=' { EqualsSign }
| ';' { Semicolon }
| '\n' | ' ' { next lexbuf }
| eof { EOF }
以下是我作为输入传入的文件的内容:
a=b;
然而,当我编译并运行这个东西时,我在第一个字符上得到一个错误,说它无效。老实说,我不知道发生了什么,谷歌根本没有帮助我。这怎么可能?正如你所看到的,我真的被难住了。
编辑:
我工作了很长时间,以至于我放弃了解析器。现在这是我的主文件中的相关代码:
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,列:1”。