我是OCaml的初学者,并试图构建一个解析器,我想要一个列表将所有方法存储在我的类中。这是我在.mly文件中的一部分。运算符:: OCaml
init_method_list:
{ [] }
| method_list method_decl { List.rev($1) }
;
method_list:
method_decl { [ $1 ] }
| method_list method_decl { $2 :: $1 }
;
任何人都可以解释到底发生了什么?特别是::操作。一直在搜索,但无法在文档中找到运营商。
我得到这个列表可以是空的,或者我们做出正确的递归调用来填充它在类中的所有方法。 method_decl
只是查找代表方法的特定标记组合的匹配。
预先加上'$ 2'和'$ 1'? – cchantep
在Ocaml中,运算符'::'用于将''a'类型的元素连接到''list'类型的列表。 – alifirat
好的谢谢,它是否将元素预先列在列表的前面? @alifirat – novalain