Olá Pessoal,
Estou criando um parser com o JavaCC mas estou com um problema para consumir o último caracter (no caso é um token mesmo)
Basicamente {foo} são 3 partes … {,foo,} … mas eia a saída:
[code]{foo}
Call: Start
Call: Expression
Call: Field
Consumed token: <"{">
Consumed token: <: “foo”>
}
Consumed token: <"}">
Return: Field
Call: Operator
Return: Operator
Return: Expression
Return: Start
Exception in thread “main” openWorkflow.parser.ParseException: Encountered “}” a
t line 2, column 1.
Was expecting one of:
“=” …
“<” …
“>” …
“~” …
“!=” …
“<=” …
“>=” …
“IN” …
at openWorkflow.parser.SearchCriteria.generateParseException(Unknown Sou
rce)
at openWorkflow.parser.SearchCriteria.jj_consume_token(Unknown Source)
at openWorkflow.parser.SearchCriteria.Operator(Unknown Source)
at openWorkflow.parser.SearchCriteria.Expression(Unknown Source)
at openWorkflow.parser.SearchCriteria.Start(Unknown Source)
at openWorkflow.parser.SearchCriteria.main(Unknown Source)[/code]
Vejam que depois digitei } de novo e ele reconheceu, depois digitei só = e ele não reconheceu
Alguém com um pouco mais de experiencia com o JavaCC sabe o porque do problema?
O parser é o básico [code]PARSER_BEGIN(SearchCriteria)
package openWorkflow.parser;
public class SearchCriteria {
public static void main( String[] args )
throws ParseException, TokenMgrError
{
SearchCriteria parser = new SearchCriteria( System.in ) ;
parser.Start() ;
}
}
PARSER_END(SearchCriteria)[/code]