Определите грамматику в Xtext для необязательных размеров массива - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь определить грамматику в xtext для массивов, где измерения могут быть пустыми, как int[][] или int[5][10]

Моя грамматика выглядит так:

ArrayType: 
     [BasicType] ('['(dimension+=Expression)?']')+;

Проблема с этим правилом, когда я использую int[][], заключается в том, что модель не может узнать, сколько [] включено, поскольку список dimension будет пустым.

Так что мне интересно, есть ли способ в xtext к значению по умолчанию, например 0 в случае, если Expression не был найден? Иначе, как лучше всего справиться с такой ситуацией, не меняя метамодель?

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 03 мая 2018

Ни в коем случае не эксперт Xtext, но вы не можете добавить промежуточный термин:

ArrayType: 
  [BasicType] dimensions=Dimension+;

Dimension:
  ('['(size+=Expression)?']')
...