私はここでロープの終わりにいます。ocamllex で何も動作させることができず、気が狂いそうです。これは私の.mll
ファイルです:
{
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」を出力します。