2010-05-01 79 views
2

我正在Java/JVM之上編寫一個簡單的腳本語言,您還可以在其中使用{}括號嵌入Java代碼。問題是,我如何在語法中解析這個問題?我有兩個選擇:ANTLR - 嵌入Java代碼,評估之前還是之後?

  1. 讓一切在它,如:[a-z|a-Z|0-9|_|$],並繼續
  2. 得到一個額外的Java語法和使用語法來分析小碼(它實際上是可能的,高效的?)

由於選項2]基本上是一個雙重檢查,因爲在評估java代碼時它也被檢查。現在我的最後一個問題是 - 是否可以動態執行java代碼以及在運行時創建的對象?

感謝,

威廉麪包車Doorn的

回答

1

1]允許一切是在裏面,比如:[AZ | AZ | 0-9 | _ | $],並繼續

你不能這麼做:你必須考慮開括號和右括號。

2]得到一個額外的Java語法和使用語法來分析小碼(它實際上是可能的和有效的?)

是的,這是可能的。但是我建議你先做一些工作,然後再擔心效率(這真的是一個問題?)。

...是否可以動態執行java代碼也可以在運行時創建的對象的方式嗎?

是的,自Java 6以來,有一種動態編譯源文件的方法。請參閱JavaCompiler API。

+0

謝謝,我會將此標記爲答案,但是,它看起來像JavaCompiler API只接受文件實例而不是普通線? – wvd 2010-05-01 13:34:04

+0

@wvd:是的,您必須先將Java源代碼(作爲字符串)寫入文件。 – 2010-05-01 13:35:44

0

我建議附上內未在Java代碼中使用,幾乎存在於文字像「`」字符Java代碼。

JavaCode:'' (EscapeSequence | ~('\\'|''))*'`' ;

使用java.g ANTLR的例子提供,以保證EscapeSequence的定義,...

,唯一的缺點是,你需要問程序員使用該字符的代碼(「`」)(如果需要)作爲文字。

相關問題