Java CUP - значение токена равно нулю - PullRequest
0 голосов
/ 04 июля 2019

Я хочу распечатать значение токенов, вызываемых в синтаксическом анализаторе (возвращаемое сканером), однако для каждого из них отображается ноль.

Например, когда входной файл

tmp := X*X;

Эта грамматика должна печатать " tmp назначено " вместо "null назначено":

assignment      ::= IDENTIFIER:i ASSIGNMENT math_expression SEMI
          {: System.out.println(i + " assigned"); :}; // null assigned

Есть ли другой способ получить действительное значение (кроме написанного кода: D), или я должен сделать еще один шаг, кроме этого, чтобы добраться до них?

Части кода, которые могут понадобиться:

lexer.jflex

public Symbol symbol(String name, int code){
    return symbolFactory.newSymbol(name, code,
                    new Location(yyline+1,yycolumn+1, yychar), 
                    new Location(yyline+1,yycolumn+yylength(), yychar+yylength())
            );
}
public Symbol symbol(String name, int code, String lexem){
    return symbolFactory.newSymbol(name, code, 
                    new Location(yyline+1, yycolumn +1, yychar), 
                    new Location(yyline+1,yycolumn+yylength(), yychar+yylength()), lexem);
}

То, как я возвратил его в первоначальном состоянии:

{identifier}        {return symbolFactory.newSymbol("IDENTIFIER", IDENTIFIER);}

parser.cup

terminal String     IDENTIFIER;
...