Javacc - consumir último token

0 respostas
smota

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:

{foo}
Call:   Start
  Call:   Expression
    Call:   Field
      Consumed token: <"{">
      Consumed token: <<STRING>: "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)

Vejam que depois digitei } de novo e ele reconheceu, depois digitei só = e ele não reconheceu :cry:

Alguém com um pouco mais de experiencia com o JavaCC sabe o porque do problema?

O parser é o básico
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)
Criado 18 de fevereiro de 2005
Respostas 0
Participantes 1