Как не допустить пробелов в одном конкретном правиле - в противном случае грамматика правильно пропускает пробел - PullRequest
0 голосов
/ 15 мая 2018

Наша грамматика позволяет пользователю указывать тег либо по идентификатору (понятное имя), либо по индексу через редактор.Фрагмент грамматики выглядит следующим образом:

tagindex
 : DOLLARDOLLAR 'TAGINDEX' ASSIGN tagid=INT DOLLARDOLLAR
 ;

// A tag is either an ID or an INDEX
tag
: ID                            
| tagindex                          
;

Мы используем правило tagindex, поскольку оно позволяет нам легко получать доступ к токену tagid (или да INT) в Listener (EnterTagindex) и Visitor (VisitTagindex),но это также означает, что пользователь может вводить пробелы между каждым токеном, так как наша грамматика пропускает пробелы.

Нам нужно, чтобы «tagindex» не принимал никаких пробелов, так что пользователь вынужден вводить, например:

$$TAGINDEX=123$$

Какой лучший способ сделать это?

1 Ответ

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

Поскольку tagindex не является рекурсивным и не использует никаких нетерминальных правил, вы можете сделать его терминальным правилом.Предполагая, что он не пересекается с какими-либо другими правилами, это не должно приводить к каким-либо проблемам.

...