我試圖在我的RCP應用程序中提供內容幫助。爲此,我使用Xtend和AbstractJavaBasedContentProposalProvider。所以,我製作了我的AbstratMyDSLProposalProvider,現在我正在寫MyDSLProposalProvider類。下面,XTEND文件和我的語法的摘錄:Xtend語法內容協助
//的Xtend文件
override void completeKeyword(Keyword keyword,ContentAssistContextcontentAssistContext, ICompletionProposalAcceptor acceptor) {
//acceptor.accept(createCompletionProposal(keyword, context))
if(keyword.getValue().equals("const")){
return;
}
super.completeKeyword(keyword, contentAssistContext, acceptor);
}
//語法文件
grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals
generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"
Model:
NEWLINE*
(sections+=Options_sect?)?
(sections+=Parameters_sect)?
;
Options_sect
: name=SEC_OPTIONS QUOTE_COMMENT? NEWLINE+ suiteOpt=Suite_options?
;
Suite_options
: {Suite_options} INDENT (options+=Opt)* DEDENT NEWLINE?
;
Opt
: name=OPTION_NAME EQUAL (value=DECIMALINTEGER) NEWLINE+
;
Parameters_sect
: name=SEC_PARAMETERS QUOTE_COMMENT? NEWLINE+ suiteParam=Suite_parameters?
;
Suite_parameters
: {Suite_parameters} INDENT (params+=Param)* DEDENT NEWLINE?
;
Param
: CONST name=NAME EQUAL value=DECIMALINTEGER NEWLINE+
;
terminal SEC_OPTIONS : 'options'SPACES*':';
terminal SEC_PARAMETERS : 'parameters'SPACES*':';
terminal EQUAL : '=';
terminal DECIMALINTEGER : '0'|('1'..'9'(('_'|'0'..'9')*'0'..'9')?);
terminal NAME
: ((PP_LABEL* ID_START ID_CONTINUE* PP_LABEL*) | PP_LABEL)('.' (PP_LABEL|ID_CONTINUE)*)*
;
terminal PP_LABEL
: '%'ID_START ID_CONTINUE*'%'
;
terminal fragment ID_START
: '_'
| 'A'..'Z'
| 'a'..'z'
;
terminal fragment ID_CONTINUE
: ID_START
| '0'..'9'
;
terminal OPTION_NAME : '$'NAME;
terminal CONST : 'const';
terminal NEWLINE : ((NLINE SPACES?)+);
terminal fragment NLINE:('\r'? '\n' | '\r');
terminal SPACES: (' '|'\t')+;
terminal QUOTE_COMMENT : INVERTED_COMMA -> INVERTED_COMMA;
terminal INVERTED_COMMA : '\"';
// Indentation
terminal INDENT :'µµµ';
terminal DEDENT : '£££';
但內容輔助不起作用。這是在Xtext中製作內容協助的好方法嗎?
謝謝
你對這個定製的意圖是什麼 –
你不需要爲關鍵字創建終端。只是內聯他們 –