2013-09-28 1 views
0

. A B & & C Дерево должно быть таким (A || B) & & (C). это должно быть так. Я пробовал, но каждый раз дополнительно || добавляется как A || B || & & C. Это порождает неправильное дерево каждый раз.JAVACC && JJTree (.jjt) Вставка || символ в дерево при разборе двух токенов

код я это сделать, как этот

LOOKAHEAD((simpleTerm())+) 

    (
     simpleTerm() 
    { 
    jjtthis.setValue("||"); 
    } 
    )+ 

* Примечание simpleTerm может быть & ltSTRING & GT или & ltQuotedString & GT *

Как я могу вставить || символ в дерево, поэтому он формирует дерево как это A || B & & C.?

Как я могу вставить изображение токена в дерево с помощью javacode?

ответ

1

попробовать что-то вроде следующего

void Conjunction() #void : 
{ } 
{ 
    Disjunction() 
    ( "&&" 
    Disjunction() 
    {jjtThis.setValue("&&");} #BinOp(2) 
)* 
} 

void Disjunction() #void : 
{} 
{ 
    SimpleTerm() 
    ( 
    SimpleTerm() 
    {jjtThis.setValue("||");} #BinOp(2) 
)* 
} 

void SimpleTerm() : 
{Token t ;} 
{ 
    (t=<STRING> | t=<QUOTEDSTRING>) 
    {jjtThis.setValue(t.image) ;} 
} 
+0

Thanx для такого ответа NYC. Может ли быть возможно, чтобы ассоциативность и сформированное дерево остались ассоциативными. –

+0

Я думаю, что && и || в моем ответе уже рассматриваются как левые ассоциативные. –

 Смежные вопросы

  • Нет связанных вопросов^_^