如何在Xtext中使用Xtend生成器代码生成它?

时间:2018-06-08 09:47:44

标签: code-generation xtext xtend

我在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
;

1 个答案:

答案 0 :(得分:1)

您可以使用NodeModelUtils获取INode的{​​{1}},然后向节点询问其文字

EObject

NodeModelUtils.findActualNodeFor(obj).getText()

后者可能包括评论等。