Я пытаюсь изучить xtext и нахожу ANY_OTHER совершенно запутанным, и у меня есть несколько вопросов по этому поводу.
У меня есть только одна продукция в моем файле .xtext.
document: text = '<' ANY_OTHER* '>';
когда я запускаю это как «приложение eclipse», следующие входные данные работают правильно:
<>
< >
<.>
<....>
<.. ..>
но следующее появляется сбой:
<a>
с ошибкой посторонний ввод 'a', ожидающий '>'.
Q1) Почему ANY_OTHER соответствует буквальному символу '.' персонаж?
Я попытался переопределить ANY_OTHER как
terminal ANY_OTHER: .;
Я полагаю, что это исходное определение в Common Terminals здесь.
Теперь поведение меняется. Ошибка при вводе исчезла. но если я попытаюсь
<aa>
, выдает ошибку посторонний ввод 'aa', ожидающий '>'.
Вопрос 2. Почему переопределение ANY_OTHER меняет поведение?
Q3) Почему '.' обрабатывается иначе, чем «а»? ‹..> принимается, но не является.