我正在用 Ocaml 编写一个 mini-pascal 编译器。例如,我希望我的编译器接受以下代码:
program test;
var
a,b : boolean;
n : integer;
begin
...
end.
我在处理变量声明时遇到了困难(以下部分var
)。目前,变量的类型在sib_syntax.ml中定义如下:
type s_var =
{ s_var_name: string;
s_var_type: s_type; }
这是sib_parser.mly。我的问题是,我可以在哪里以及如何告诉编译器构建globals
,变量的声明,它实际上是一个s_var
. 我想我需要在sib_parser.mly
(terminated_bindings
, binding
, separated_nonempty_list
, 等)的末尾提炼menhir的部分,但我不知道如何......
有人可以帮忙吗?非常感谢你!