首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展语法内容辅助

扩展语法内容辅助
EN

Stack Overflow用户
提问于 2016-06-08 22:26:48
回答 1查看 363关注 0票数 0

我正在尝试在我的RCP应用程序中创建一个内容辅助。为此,我使用了Xtend和AbstractJavaBasedContentProposalProvider。所以,我创建了我的AbstratMyDSLProposalProvider,现在我正在编写MyDSLProposalProvider类。下面是xtend文件和我的语法摘录:

//Xtend文件

代码语言:javascript
复制
override void completeKeyword(Keyword keyword,ContentAssistContextcontentAssistContext, ICompletionProposalAcceptor acceptor) {
    //acceptor.accept(createCompletionProposal(keyword, context))
    if(keyword.getValue().equals("const")){
        return;
    }
    super.completeKeyword(keyword, contentAssistContext, acceptor);
}

//语法文件

代码语言:javascript
复制
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中创建内容助手的好方法吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-06-09 00:16:35

您必须覆盖特定于终端规则complete_CONST - not complete关键字的complete方法。如果您转到要编写新方法的地方,就会得到可以重写的方法的建议

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37705322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档