Я начал изучать XText в последнее время и пытался сделать простую вещь - вместо пользовательских терминалов вместо определения значения org.eclipse.xtext.common.Terminals
.Пользовательские терминалы в XText
Сначала я создал BlahLang.xtest через wizard в пакете x.mvmn.blah.xtext.
Затем я проверил учебники и сделал две вещи: a) Создал пользовательский файл терминалов в том же пакете, где был мой xtext-файл. А именно Test.xtext в x.mvmn.blah.xtext.
Содержимое файла были такими же, как и в Terminals.xtext, но с исправленной пакета декларации:
grammar x.mvmn.blah.xtext.Test hidden(WS, ML_COMMENT, SL_COMMENT)
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
terminal ID:
'^'? ('a'..'z' | 'A'..'Z' | '_') ('a'..'z' | 'A'..'Z' | '_' | '0'..'9')*;
terminal INT returns ecore::EInt:
('0'..'9')+;
terminal STRING:
'"' ('\\' . /* 'b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\' */ | !('\\' | '"'))* '"' |
"'" ('\\' . /* 'b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\' */ | !('\\' | "'"))* "'";
terminal ML_COMMENT:
'/*'->'*/';
terminal SL_COMMENT:
'//' !('\n' | '\r')* ('\r'? '\n')?;
terminal WS:
(' ' | '\t' | '\r' | '\n')+;
terminal ANY_OTHER:
.;
б) В моем файле BlahLang.xtext Я импортировал файл через «с» вместо декларации из org.eclipse.xtext.common.Terminals
, помещенной там мастера:
grammar x.mvmn.blah.xtext.BlahLang with x.mvmn.blah.xtext.Test
generate blahLang "http://www.mvmn.x/blah/xtext/BlahLang"
Model:
greetings+=Greeting*;
Greeting:
'Hello' name=ID '!';
по всей документации и подсказок, которые я нашел в Интернете все, что должен был быть в порядке. Но ничего не работает - файлы, созданные XText ссылаются на несуществующие классы:
x.mvmn.blah.xtext.services.TestGrammarAccess
x.mvmn.blah.xtext.TestStandaloneSetup
x.mvmn.blah.xtext.validation.TestValidator
Я пробовал различные обходные пути (играл с добавлением «генерировать» в Test.xtext и т.д.), но ничего не получалось. Я практически застрял и не имею ни малейшего понятия, что не так, и как я могу это исправить.
Пожалуйста, помогите.
Благодарим за ответ. Я вообще не генерировал его - мастера XText генерировали все, я написал только два файла .xtext. Я экспериментирую с вашим предложением и дам вам знать, если это сработает. – mvmn
Добавлен собственный ответ с окончательным разрешением. Я основывался на вашем предположении. Большое спасибо. – mvmn
P.S. В конце концов, это не сработало, но я думаю, что сам поправлюсь отсюда. Еще раз спасибо. – mvmn