【发布时间】:2021-11-23 20:56:47
【问题描述】:
我想在使用 menhir 构建解析器之前使用 ocamllex 构建词法分析器。
我已经编写了 .mll 文件。以下命令给了我这个消息:
> ocamllex lexer.mll
71 states, 2138 transitions, table size 8978 bytes
然后我输入了以下内容:
> ocamlc -c lexer.ml
File "lexer.mll", line 48, characters 12-17:
Error: Unbound constructor COMMA
.ml 文件的摘录:
...
(* Lexing Rules *)
rule tokens = parse
| ',' { COMMA }
| ';' { SEMICOLON }
| '(' { LPAREN }
| ')' { RPAREN }
| '[' { LBRACKETS }
| ']' { RBRACKETS }
| '{' { LBRACE }
| '}' { RBRACE }
...
我的理解是这些操作没有映射到任何东西,因此出现未绑定错误。
最后,我想知道的是如何在不编写解析器或 .mly 文件的情况下进行这些映射?我对这门语言很陌生,我想要实现的是一个使用 ocamllex 构建的简单词法分析器。
【问题讨论】:
-
您需要一个描述所有标记的类型。显然你没有。
标签: compiler-construction ocaml lexer ocamllex