Java 为编译器编写解释器
我正在用Java为编译程序编写一个解释器。因此,在检查了源代码、语法和语义之后,我希望能够运行源代码,这是我的编译器的输入。我只是想知道我是否可以翻译一些标记,例如,out(它在屏幕上打印东西),我可以用System.out.print替换它吗?然后再次输入源代码以在java中运行它 我听说过使用Java编译器API,这是一个好计划吗Java 为编译器编写解释器,java,compiler-construction,interpreter,Java,Compiler Construction,Interpreter,我正在用Java为编译程序编写一个解释器。因此,在检查了源代码、语法和语义之后,我希望能够运行源代码,这是我的编译器的输入。我只是想知道我是否可以翻译一些标记,例如,out(它在屏幕上打印东西),我可以用System.out.print替换它吗?然后再次输入源代码以在java中运行它 我听说过使用Java编译器API,这是一个好计划吗 提前非常感谢 你真的需要阅读一些关于编译器的书籍和/或课程-这不能通过两段式的回答来解决。你可以创建一个交叉编译器,它读取你的语言并输出Java代码来做同样的事情
提前非常感谢 你真的需要阅读一些关于编译器的书籍和/或课程-这不能通过两段式的回答来解决。你可以创建一个交叉编译器,它读取你的语言并输出Java代码来做同样的事情。这可能是最简单的选择 Java编译器API可用于编译Java代码。您需要先将现有代码翻译成Java才能使用它
这与编写解释器不同。这是家庭作业吗?任务是说您必须编写解释器,还是可以让代码以任何方式运行?您要求的是虚拟机实现技术,要运行Java代码,通常应实现以下内容:
另外,我有从头开始创建类似Java的微型编译器的经验(用ANTlr定义语法、编译器的实现、虚拟机的实现),所以我可能可以与您分享更多信息(甚至源代码)如果您需要特定的很遗憾,您没有提到您计划支持哪种脚本语言。如果它是一种著名的语言,只需使用纯java编写的现成解释器即可。请参阅BSF和Java5脚本(http://www.ibm.com/developerworks/java/library/j-javascripting1/) 这是你自己的语言
首先,非常感谢您的快速回复 作为编译器项目的一部分,我们需要能够编译和运行用我们自己指定的语言编写的程序。该语言与C语言非常相似。我对解释器的工作原理感到困惑,有没有更简单的方法来实现这一点?不生成字节码?我的想法是将每条语句翻译成Java等价语句,并让Java处理字节码生成
我将研究所提到的主题。再次感谢您的建议。就个人而言,我不太确定您所说的“编译器程序的解释器”是什么意思——理论上,解释器可以运行任何程序,除非您的意思是将其知识限制在该程序中出现的特定标记子集。在任何情况下,如果您详细解释了您期望它如何工作和/或您希望通过它实现什么(特别是为什么
javac
后跟java
不够好),希望它能让您更容易准确地理解您想要的东西。一些详细的示例会很好,因为解释器和编译器通常相互排斥。结构化和详细的示例总是很好的…或者..*学习编译器课程*,我打赌这就是OP的意义所在doing@bestsss-那他一定是逃课了:-)