繁体   English   中英

如何在JVM上执行它? (带有Antlr的Lexer和Parser)

[英]How Execute it On JVM ? (Lexer & Parser with Antlr)

我想在JVM上创建自己的编程语言

第一步,我尝试编写非常简单的语句(添加例如3 + 7)

所以我用Antlr创建了一个词法分析器和解析器

grammar gr;
formula : Digit Add Digit Equal;
Digit   
  :  '0'..'9'  
  ;  
Add     : '+';
Equal   : '=';    
WS : [\t\r\n]+ -> skip ;

然后

Antlr生成了Lexer,Parser和Listener

我用过

import java.io.IOException;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.tree.*;

public class gr {
    public static void main(String[] args) throws IOException {

        String str = "7+8=";        
        ANTLRInputStream input = new ANTLRInputStream(str);     
        grLexer lexer = new grLexer(input);
        CommonTokenStream tokens = new CommonTokenStream(lexer);
        grParser parser = new grParser(tokens);
        ParseTree tree = parser.formula();
        System.out.println(tree.toStringTree(parser));  
    }
}

结果:

(formula 7 + 8 =)

现在我的问题是在这里!

我如何在JVM上执行这一行(7 + 8 =)? (获得结果15)

似乎我必须使用ASM库? 是的???

如果您的回答是肯定的,请帮助我提供非常简单的示例

请指导我如何使用JVM创建自己的语言

根据您的文字,我认为您不太了解CPU如何执行语句,这是编写您自己的编程语言所必需的基本知识。

为此,您首先应该花一些时间使用真正的汇编语言 ,您可以在线或离线进行汇编 我强烈建议您阅读一些有关此的教程,因为这并不重要。 学习汇编器将使您更好地了解CPU在必须执行某些代码时的实际作用。

您不必成为汇编专家,但是一旦您对它有了一些了解,就会突然很清楚地知道如何使JVM(本质上是CPU仿真器)执行代码:您需要将其编译为一个JVM可以执行的形式,然后简单地告诉它执行该操作。

编辑:似乎我猜错了。 ;)

Java字节码指令清单: Wikipedia
无效的VM规格: Oracle

看一下另一个有关发出和运行Java字节码的问题。

如何在运行时发出和执行Java字节码?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM