![]() |
1
9
SAX解析器是一种访问者。为了避免向方法中添加返回值,可以使用堆栈:
|
![]() |
2
1
查看的源代码 THIS 编译器。我认为那个人使用了访客模式。 |
![]() |
3
0
警告:我还没读过那本书。 该方法可以是空类型的,但在Java中(它是为该书编写的),它也是对象的一部分。因此,visitor方法可以在局部成员变量中构建结构,从而在调用之间维护必要的上下文。 因此,例如,您的打印访问者将追加到作为成员变量(或创建访问者对象的方法中的最终本地变量)的StrugBuudor中,这在爪哇相当常见,其中创建小的匿名内部类对象是一种常见习惯。 在Python中,同样可以让visitor方法访问非方法局部变量来维护上下文和构建结构。例如,封闭物或小物体。 update——下面的注释中作为示例添加的一小部分代码
或
第一个是更漂亮的(尽管仍然是糟糕的注释示例代码),但第二个则允许您保留void返回类型(如果确实需要的话)。 |
![]() |
JCN · 要创建编译器,是否必须生成AST? 7 年前 |
![]() |
Song Wukong · yacc:如何“保存”代码以备将来执行? 7 年前 |
![]() |
Bailey Parker · 使用ppx\U驱动程序进行AST转换(使用ocaml\U current\U AST进行register\U transformation\u)有什么好的用法示例吗? 7 年前 |
![]() |
tekknolagi · 模式匹配中的OCaml多态变体 8 年前 |