首页 文章
  • 7 votes
     answers
     views

    将抽象语法树转换为字节代码

    我正在努力学习构建一个简单的编译器作为业余爱好 . 我的目标是Java虚拟机 . 我使用ANTLR插件为Eclipse编写了一个简单的语法 . 有人告诉我,Antlr生成的AST上有一个称为方法节点的东西,必须调用它 . 我打算用ASM生成字节码 . 那么什么是方法节点?如何从ASM调用它并使其访问方法指令? 那么编译器的语义分析器呢?应该手动编写还是有任何生成器?
  • 46 votes
     answers
     views

    如何用ANTLR4创建AST?

    我一直在寻找很多关于这一点,我找不到任何有用的,真正帮助我 Build 一个AST . 我已经知道ANTLR4不像以前的ANTLR3那样构建AST . 每个人都说:“嘿,使用访客!”,但我找不到任何示例或更详细的解释如何我这样做... 我的语法必须像C一样,但每个命令都用葡萄牙语(portuga编程语言)编写 . 我可以使用ANTLR4轻松生成解析树 . 我的问题是:现在我需要做些什么才能创建AS...
  • 0 votes
     answers
     views

    Groovy AST语义分析重复类定义

    我有这个实现ASTTransformation的类,并为每个标记有特定注释的字段创建一个getter和setter方法: @GroovyASTTransformation(phase=CompilePhase.SEMANTIC_ANALYSIS) public class Rewriter implements ASTTransformation { public void visit(ASTNo...
  • 5 votes
     answers
     views

    Groovy可以复制类签名但修改实现

    我想要精确复制groovy脚本的接口,但是将所有方法转发给invokeMethod或methodMissing等方法 . 这与My other question here有关(但我放弃了"easily"部分),这解释了为什么我可以为这个调用工作.2711906_的grooviness . 所以我一直试图复制类签名并将调用转发给原始类 . 这可能涉及AST转换,但我仍然试图将我的...
  • 5 votes
     answers
     views

    如何从Groovy AST ClassNode获取具体类?

    我为它创建了一个注释和一个Groovy AST转换 . 此注释仅适用于类 . 转换在SEMANTIC_ANALISIS阶段工作,应该创建一个新类 . 我需要的是从ClassNode获取带注释的Groovy类的具体类型(java.lang.Class) . 但是如果我尝试在转换的访问方法中调用 classNode.getTypeClass() ,则编译时会出现异常"Getting Clas...
  • 0 votes
     answers
     views

    multiple Inheritance ..类需要扩展abstractHandler以及Applet

    我正在尝试创建一个自动化向导,它将从系统中获取一些文件(通过命令处理程序)并生成相关的applet . 我将尝试解释我的事件 . 我为新命令"newModule"制作了一个插件,它通过"newModuleHandler.java"处理 . 所以 newModuleHandler extends AbstractHandler . 现在我想制作一个向导(小程...
  • 15 votes
     answers
     views

    使用TreeTranslator重命名不适用于Kotlin的函数

    我正在尝试根据AST(抽象语法树)重写在构建期间重命名Java接口中的方法和Kotlin接口中的函数 . 对于这个问题,我们忽略了重命名方法/函数给调用带来的影响 . 要找到要重命名的方法/函数,我正在使用自定义注释和注释处理器 . 我按照这些说明操作Java接口 . 我用三个模块创建了一个新项目 . app模块,注释模块和注释处理器模块 . app模块是一个Android应用程序,包含两个独立...
  • 2 votes
     answers
     views

    Roslyn - 如何用多个节点替换多个节点?

    Background: 使用Roslyn和C#,我试图扩展自动实现的属性,以便访问器主体可以通过以后的处理注入代码 . 我使用StackExchange.Precompilation作为编译器钩子,因此这些语法转换发生在构建管道中,而不是作为分析器或重构的一部分 . 我想转此: [SpecialAttribute] int AutoImplemented { get; set; } 进入这个: ...

热门问题