在语法上解析groovy脚本

时间:2015-10-13 08:07:04

标签: parsing groovy

无法解析(检查语法)groovy代码。 parse()方法不会抛出任何异常,但在执行它时会抛出异常

GroovyShell gEngine = new GroovyShell(); 
gEngine.evaluate("def n;  print ddd"); // throws an exception
gEngine.parse("def n; print ddd"); // don't throws Excption

1 个答案:

答案 0 :(得分:0)

来自groovy API:

parse

  

解析给定的脚本并将其准备好运行

evaluate

  

针对当前Binding评估一些脚本并返回结果

正如@tim_yates在评论中指出的那样,evaluate运行脚本而parse返回脚本对象而不运行它,这就是evaluate抛出异常的原因:groovy.lang.MissingPropertyException: No such property: ddd

但是,如果您运行parse返回的脚本,它将抛出相同的异常:

GroovyShell gEngine = new GroovyShell()
def script = gEngine.parse("def n; print ddd")
script.run() // throws missingPropertyException