Xtext переопределяет зарезервированный идентификатор - PullRequest
0 голосов
/ 25 апреля 2020

Мне нужно построить грамматику с предопределенными идентификаторами, но разрешить создание объекта с тем же идентификатором. Например, мне нужно было бы написать:

Number empty;
...
A->B: empty

Как и без объявления: A->B: empty

пусто - это в моей грамматике зарезервированный идентификатор, но который может быть объявлен или не. Моя цель состоит в том, чтобы: если я делаю пустой пустой явно, грамматика должна рассматривать следующую «пустую» как ссылку. Текущий фрагмент грамматики выглядит следующим образом:

Number:
    name=NumID;
NumberReservedID:
    'empty';
NumID:
    ID | NumberReservedID;
NumberRef:
    ref=[Number|NumID]|NumberReservedID

Я заметил, что если я поставлю ref = [Number | NumID], любое использование «пусто» будет ссылкой, но я должен объявить или будет выделено как не найденное.

Если я поставлю ref = [Number], альтернативный NumberReservedID вступит во владение, и любое «пустое» использование будет строкой, а не ссылкой на объявление.

Есть ли у вас какие-либо идеи, как разрешить переопределение зарезервированных идентификаторов при сохранении согласованности ссылок?

Заранее спасибо!

...