Допустим, у меня есть простое правило Xtext
Hello: "Hello" name=STRING "!";
но в дополнение к EAttribute name
мой (ранее существовавший) EClass Hello
также имеет EAttribute source
типа EString
(или типа enum, но пока давайте предположим EString
).
Это поле не должно быть представлено в самом DSL (поэтому оно в некотором роде переходное). Вместо этого я хочу, чтобы это поле было установлено в "Xtext"
, когда объект был прочитан и создан синтаксическим анализатором Xtext. (У меня есть другие способы создания экземпляров Hello
, для которых я устанавливаю другие значения).
Можно ли добавить что-то в мое правило Hello:
, которое автоматически устанавливает значение source
? Или я должен где-то перехватывать парсер?
Я нашел несколько заметок о «действиях» в грамматиках Xtext и подумал, может быть, что-то вроде
Hello: { current.source = "Xtext" } "Hello" name=STRING "!";
помогло бы, но вроде такие действия не допускаются...