У меня есть эта грамматика, определенная в 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
;