我正在Java / JVM之上编写一个简单的脚本语言,您还可以使用{}
括号嵌入Java代码。问题是,我如何在语法中解析这个?我有两个选择:
[a-z|a-Z|0-9|_|$]
,然后继续因为选项2]基本上是一个双重检查,因为在评估java代码时它也被检查。现在我的最后一个问题是 - 是否可以使用在运行时创建的对象动态执行java代码?
谢谢,
William van Doorn
答案 0 :(得分:1)
1]允许其中的所有内容,例如:[a-z | a-Z | 0-9 | _ | $],然后继续
你不能这样做:你必须考虑开始和结束括号。
2]获取额外的java语法并使用该语法来解析那些小代码(它实际上是否可行且有效?)
是的,这是可能的。但我建议你先做一些工作,然后担心效率(这真的是一个问题吗?)。
...是否可以使用在运行时创建的对象动态执行java代码?
是的,自Java 6以来,有一种动态编译源文件的方法。请参阅JavaCompiler API。
答案 1 :(得分:0)
我建议将你的Java代码放在像'''这样的字符中,这些字符在Java代码中没有使用,几乎不存在于文字中。
JavaCode:'' ( EscapeSequence | ~('\\'|'
'))*'`'
;
使用antlr examples提供的java.g来定义EscapeSequence,...
唯一的问题是你需要让程序员使用这个字符的代码('''),如果它需要作为文字。