代码之家  ›  专栏  ›  技术社区  ›  wvd

嵌入Java代码,评估之前还是之后?

  •  2
  • wvd  · 技术社区  · 15 年前

    我在Java/JVM之上编写了一个简单的脚本语言,在这里您还可以使用 {} 括号。问题是,我该如何在语法中解析它?我有两个选择:

    1. 允许一切都在里面,比如: [a-z|a-Z|0-9|_|$] 然后继续
    2. 获取一个额外的Java语法并使用该语法解析该小代码(它实际上是可能的和高效的吗?)

    因为选项2基本上是双重检查,因为在评估Java代码时,它也被检查。现在我的最后一个问题是,可以用运行时创建的对象动态地执行Java代码吗?

    谢谢,

    威廉·范多恩

    2 回复  |  直到 14 年前
        1
  •  1
  •   Bart Kiers    15 年前

    1]允许所有内容都在其中,例如:[a-z a-z 0-9$],然后继续

    你不能就这么做:你必须解释开括号和闭括号。

    2)获取一个额外的Java语法,并使用该语法解析该小代码(它实际上是可能的和高效的吗?)

    是的,那是可能的。但我建议你先做点工作,然后再担心效率(这真的是个问题吗?).

    …是用运行时创建的对象也可以动态执行Java代码的方法吗?

    是的,自Java 6以来,有一种动态编译源文件的方法。见 JavaCompiler 应用程序编程接口。

        2
  •  0
  •   Barmak    14 年前

    我建议把Java代码封装在像“``”这样的字符中,这些代码不在Java代码中使用,而且几乎不存在于文字中。

    JavaCode: ' ( EscapeSequence | ~('\\'|' “” ;

    使用ANTLR示例提供的Java.g来获得逃逸序列的定义,…

    唯一的问题是,如果需要将此字符的代码('`')作为文本,则需要要求程序员使用它。