2013-06-29 1 views
1

Я хочу грамматику XText, что позволяет мне писать MIME-типов публикуемых материалов таким образом:Изменить символы комментария многострочных в XText

mediaType application/atom+xml 
specURL "http://www.rfc-editor.org/rfc/rfc4287.txt", 

Это не проблема, но следующее:

mediaType application/* 
specURL "http://www.iana.org/assignments/media-types/application", 

Вы можете догадаться о проблемах с символами /*, которые обычно определяют многострочный комментарий. Терминал для него определяется в терминалах по умолчанию, предоставленных XText, более конкретно в терминале ML_COMMENT:

terminal ML_COMMENT : '/*' -> '*/'; 

я настроить его с помощью копирования терминалов по умолчанию для новой моей собственной, где определен терминал ML_COMMENT таким образом:

terminal ML_COMMENT : '"""' -> '"""'; 

Это дает более Pythonistic способ иметь многострочные комментарии. Он отлично работает в созданной DSL. Но символы /* по-прежнему создают проблему, когда я пытаюсь определить тип носителя для application/*, как показано выше. Я получаю сообщение об ошибке Несвязанный вход '/ *' Ожидание '}' (символ } будет указывать конец списка типов носителей).

Еще более тревожным является то, что контент-помощник редактора Xtext по-прежнему автоматически заполняет символы многострочного комментария */, когда я набираю (предположительно устаревшие) /* комбо-символы. Поскольку я перепробовал многострочный терминал комментариев, мне интересно, почему автозаполнение по-прежнему флиртует с более старым определением ML_COMMENT. Нужно ли мне переопределять что-то еще?

Вот некоторые фрагменты для грамматики типа носителя:

MediaType returns restapi::MediaType: 
{restapi::MediaType} 
'mediaType' name=MediaTypeQualifier ('specURL' specURL=EString)?; 

MediaTypeQualifier: 
    MediaTypeFragment ('/' MediaTypeFragment)?(';' MediaTypeFragment'='MediaTypeFragment)*; 

MediaTypeFragment: 
    (ID (('-'|'+'|'.') ID)*) | '*' 

Я использую XText версии 2.3.1 в Eclipse, 4.2.2. Кто-нибудь имеет опыт переопределения многострочного терминала комментариев? Есть что-то, что я пропустил?

ответ

0

Трудно сказать из фрагмента грамматики, который вы предоставили, но мне кажется, что у вас все еще есть ключевое слово 0 /* где-то в вашей грамматике.

+0

Спасибо за ответ Себастьяна. Я не могу проверить это, поскольку я больше не работаю над этим проектом. Я не уверен, что мне следует удалить или закрыть этот вопрос, поскольку я не могу его решить больше, и я не заинтересован. Может быть, я должен, поскольку это не похоже на то, что у других людей тоже есть эта проблема! – jlr

 Смежные вопросы

  • Нет связанных вопросов^_^