【发布时间】:2015-12-07 23:03:12
【问题描述】:
我是 OCaml 的初学者并尝试构建解析器,我想要一个列表来存储我班级中的所有方法。这是我的 .mly 文件中的一部分。
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? -
在 Ocaml 中,运算符
::用于将'a类型的元素连接到'a list类型的列表。 -
好的,谢谢,它是否将元素添加到列表的前面? @alifirat
-
你用谷歌搜索什么?我刚刚搜索了“ocaml 教程”,第一次点击就有使用“::”的基本教程
标签: compiler-construction ocaml ocamlyacc