我在Xtext中定义了这个语法,当使用Xtend生成代码时,我希望在编写时获得选择表达式。
这样当选择表达式如x =“abc”||时(y =“pqr”&& z =“lmn”)用该语法编写,生成器代码将表达式准备为字符串,如“x =”abc“||(y =”pqr“&& z =“lmn”)“。怎么可以这样做?
Queries:
(query+=Query)*;
Query:
'get' 'patient' selection = Selection ('view' view = View)? ';'
;
View:
'examination'| 'bill' | 'illness' | 'prescription'
;
Selection:
OrSelection | {Selection} '*'
;
OrSelection returns Selection:
AndSelection ({OrSelection.left=current} "||" right=AndSelection)*
;
AndSelection returns Selection:
PrimarySelection ({AndSelection.left=current} "&&" right=PrimarySelection)*
;
PrimarySelection returns Selection:
"(" Selection ")"
| Literal
;
Literal returns Selection:
{Literal} attribute = Attribute '=' value = Value
;
Attribute:
name = ID
;
Value:
name = STRING
;
答案 0 :(得分:1)
您可以使用NodeModelUtils
获取INode
的{{1}},然后向节点询问其文字
EObject
或
NodeModelUtils.findActualNodeFor(obj).getText()
后者可能包括评论等。