【发布时间】:2020-07-20 15:44:56
【问题描述】:
我有一个这样的表达式的 xtext 代码:
expr : RelExp ( {LogicExp.args+=current} op=LO args+=RelExp)* ;
RelExp returns expr : ArithExp ( {RelExp.args+=current} op=RO args+=ArithExp)* ;
ArithExp returns expr : Term ( {ArithExp.args+=current} op=AO1 args+=Term)* ;
Term returns expr : Factor ( {Term.args+=current} op=AO2 args+=Factor)* ;
Factor returns expr : Atom ({PostfixOp.arg=current} uo=UO)?
| {PrefixOp} uo=UO arg=Atom ;
Atom returns expr : Literal
| {Parenteses} '(' exp=expr ')'
| lValue ;
lValue returns expr : {Var} valor=ID (
({FuncCall.def=current} '(' arg=Argument? ')') |
({FieldAccess.obj=current} '.' field=ID) |
({ArrayAccess.arr=current} '[' index=expr ']')
)*
| PointerExp ;
PointerExp : {PointerExp} '**' '(' exp=expr ')' ;
//Case : 'case' val=Atom ':' (commands+=Command)* ;
//Type : tipo=TYPELIT ('[' exp=expr? ']')?;
Literal : {IntLit} val=NUMBER | {TrueLit} val='TRUE' | {FalseLit} val='FALSE' | {StrLit} val=STRING;
我正在尝试编写加速代码来打印表达式。但是每次我在 acceleo 中写入 (stat.exp/) 时,它都会打印 org.xtext.example.scldsl.sclDsl.impl.TrueLitImpl@67af833b(val: 0)。
但我只需要 (val: 0)
谁能帮忙!!
【问题讨论】: