Я использую JavaCC впервые и замечаю, что он генерирует много мертвого кода. Есть много строк, которые выглядят так (извините за пробел, это автоматически):
{if ("" != null) return result;}
throw new Error("Missing return statement in function");
}
Можно ли избежать генерации этого мертвого кода? Это вызывает десятки предупреждений компилятора, которых можно избежать.
Спасибо!
Вот полный минимальный пример из файла .jj:
Statement UseStatement():
{
String dbName;
}
{
<USE> dbName=DbObjectName()
{
return new UseStatement(dbName);
}
}
Что генерирует:
final public Statement UseStatement() throws ParseException {String dbName;
jj_consume_token(USE);
dbName = DbObjectName();
{if ("" != null) return new UseStatement(dbName);}
throw new Error("Missing return statement in function");
}
Кроме того, JavaCC создает файл ParserTokenManager, который выдает ошибку TokenMgrError, но код не компилируется. Он объявляет protected int curChar
там, где он должен объявлять char
. Поиск в Google этой фразы показывает много примеров, где она правильно объявлена как char
- это просто много людей редактируют результат вручную?
LEGACY_EXCEPTION_HANDLING = false
? - person Theodore Norvell   schedule 27.05.2017curChar
, нет, это не много ручного редактирования. Версия 5 генерирует тип какchar
. - person Theodore Norvell   schedule 27.05.2017