Я хочу грамматику 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. Кто-нибудь имеет опыт переопределения многострочного терминала комментариев? Есть что-то, что я пропустил?
Спасибо за ответ Себастьяна. Я не могу проверить это, поскольку я больше не работаю над этим проектом. Я не уверен, что мне следует удалить или закрыть этот вопрос, поскольку я не могу его решить больше, и я не заинтересован. Может быть, я должен, поскольку это не похоже на то, что у других людей тоже есть эта проблема! – jlr