在ceylon/ceylon.ast
项目中找到的以下示例展示了如何以编程方式构造一些AST,并通过Ceylon类型检查器(com.redhat.ceylon.compiler.typechecker.TypeChecker
)对其进行类型检查:
考虑到编译单元通常是作为文件而不是类型语法树(来自ceylon.ast
项目)提供给类型检查器,那么建议使用类型化语法树调用什么方法来编译类型化语法树?
这个问题与这个问题相关:The Ceylon Typechecker: How to obtain the typed syntax tree?。
发布于 2016-07-30 08:16:46
生成一个AST,然后从实际项目的上下文中对其进行编译似乎不是一个可行的选择。编译器需要比AST单独提供的信息更多的信息,并且为编译器提供默认或虚假的信息(例如文件名)仍然是一项复杂的任务。
另一方面,在实际项目的上下文中使用实际编译单元的AST作为一种宏系统是没有意义的,因为ceylon程序可能会有副作用,转换必须考虑到这一点。此外,转换规则应该是终止的和汇合的,并且应该以使维护它们尽可能容易的形式来表达,而不是过程转换器。Ceylon的switch表达式不是适合它的工具。最坏的情况是一个过程化的Ast转换器,它会转换过程化的AST转换器。
一个例外是声明式树状结构在锡兰的转换。这正是我在问题中所考虑的:读入数据(不一定使用ceylon语法),并使它们可用于计算或可选的编译。
https://stackoverflow.com/questions/38511385
复制相似问题