解析API函数中的冗余代码片段?

时间:2015-03-24 11:34:09

标签: java parsing lucene javacc

在研究一些解析API时,我遇到了一种用于编写解析函数的常用技术:

final public Query parse() throws ParseException {
  Query q;
  // some parsing code using tokens here

  {if (true) return q;}
  throw new Error("Missing return statement in function");
}

我注意到许多解析器类使用了相同的语法

(即org.apache.lucene.queryparser.flexible.standard.parser.StandardSyntaxParser #TopLevelQuery&

http://google-gson.googlecode.com/svn-history/r320/trunk/gson/src/main/java/com/google/gson/JsonParser.java#parse

它让我感到困惑,因为我无法得出具体的结论,为什么这段代码是这样编写的。

是否有隐藏的东西,除了强调它必须总是返回一些东西?

提前致谢,

1 个答案:

答案 0 :(得分:1)

自动生成的代码通常是正确的,但几乎看不到优雅。在不担心优雅的情况下生成正确的代码是很困难的。

似是而非的猜测:{在那里是因为那时发电机不知道它是否需要它;它很快就会学到,但“很快”不是“现在”。抛出是因为那时生成器不确定它是否为100%的输入生成了一个return语句。