2010-05-01 74 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的定义,...

,唯一的缺点是,你需要问程序员使用该字符的代码(“`”)(如果需要)作为文字。

相关问题