Estou com problemas no JavaCC e gostaria de alguma orientação.
É minha primeira tentativa no uso desta ferramenta e surgiu a seguinte dúvida:
Após a palavra UPDATE o nome do banco de dados é opcional, mas no Java gerado ele aparece como obrigatório. O que fiz de errado?
Já substitui o conjunto ( )? por [ ], e o resultado foi o mesmo.
Seguem os trechos do código.
caferna.
JavaCC
void syntax() : {}
{
debug(“syntax”)
( databaseName() )?
( ( databaseName() )?
(
( ( | ) )?
)?
)?
( databaseElements1() )?
databaseElements2()
}
Java
static final public void syntax() throws ParseException {
trace_call(“syntax”);
try {
debug(“syntax”);
if (jj_2_1(2)) {
jj_consume_token(MODEL);
databaseName();
jj_consume_token(SEMICOLON);
} else {
;
}
if (jj_2_6(2)) {
jj_consume_token(UPDATE);
databaseName();
jj_consume_token(SEMICOLON);
if (jj_2_5(2)) {
jj_consume_token(REORGANIZE);
jj_consume_token(GLOBAL);
jj_consume_token(DATA);
if (jj_2_4(2)) {
jj_consume_token(LPARENCHAR);
jj_consume_token(ITEMS);
if (jj_2_2(2)) {
jj_consume_token(SAME);
} else if (jj_2_3(2)) {
jj_consume_token(CHANGED);
} else {
jj_consume_token(-1);
throw new ParseException();
}
jj_consume_token(RPARENCHAR);
} else {
;
}
jj_consume_token(SEMICOLON);
} else {
;
}
} else {
;
}
databaseElements1();
databaseElements2();
jj_consume_token(0);
} finally {
trace_return(“syntax”);
}
}