現在、私は Ocaml でインタプリタを書こうとしていますが、これは私の lexer.mll です:
{
open Parser
exception Eof
}
rule main = parse
[ ' ' '\t' ] { main lexbuf }
| [ '\n' ] { EOL }
| ['0'-'9']+ as lxm { LINE_NUMBER(int_of_string lxm) }
| [^\\]*\.(\w+)$ as lxm { FILE_NAME lxm }
| "get_line" { GET_LINE }
(*| [ ^-?\b([0-9]{1,3}|1[0-9]{3}|20[0-4][0-9]|205[0-5])\b ] { RANGE } (* -2055 < RANGE < 2055 *)*)
| eof { raise Eof }
なぜ ocamllex が { FILE_NAME lxm } 行でエラーを表示するのか、私は本当に混乱しています。レクサーの先頭に置く#load "str.cma"
と、その行にエラー構文エラーが出力されます。
なんで?私はかなり混乱しています...
編集
する必要があります[ [^\\]*\.(\w+)$ ] as lxm { FILE_NAME lxm }
しかし、問題はまだ解決されていません...