簡體   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