目前我正在尝试用 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 }
但是问题还是没有解决...