Mic*_*ael 4 java typechecking ceylon
我试图以编程方式使用/嵌入Ceylon Typechecker来分析Ceylon源代码.在这个用例中,我想访问编译器通常会使用的所有信息.但我不打算编译,我不会添加对编译器的依赖.
在我看来,ceylon/typechecker/src/main/Main.java中的main.Main入口点不是这个用例的适当入口点(获取类型树和附加的模型),因为这个信息,三个检查通行证中的访客收集的信息将被丢弃,并且仅打印错误.
所以,我的问题是:
如何解析和检查编译单元,然后获得1.键入的语法树,以及2.分析访问者在树中遇到的类型的关联模型对象,这些对象从树中链接.
编辑:
我身边有三种不同的AST存在混淆.
在ceylon /ceylon.ast的README中,它被说成:
¨... ceylon.ast.core - 代表锡兰AST的锡兰类.纯锡兰(后端独立).... ceylon.ast.redhat - 将ceylon.ast.core AST从+转换为RedHat编译器(ceylon-spec AST,还包含从代码字符串中编译ceylon.ast.core AST的函数(使用RedHat)编译器)...¨.
所以有3个AST:1.由antlr,2.ceylon.ast.core和3. ceylon.ast.redhat生成的AST.为什么?
简而言之,您需要:
TypeCheckerBuilder使用要进行类型检查的源文件配置a ,TypeChecker从构建器(builder.typechecker)中获取a ,typeChecker.process()),typeChecker.phasedUnits.具体来说,typeChecker.getPhasedUnits().getPhasedUnits()会给你一个List<PhasedUnit>,并且每个人PhasedUnit都可以调用getCompilationUnit()来获取它Tree.CompilationUnit,这是AST的根.AST节点还包括模型对象的getter.对于一个具体的例子,你可以查看达特后端代码,从向前和向后工作调用process()的compileDart()函数.
有关调用的示例代码,请参阅testCompilecompileDart().
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |