2017-01-05 12 views
1

私はxtextを初めて使っています。XText:ML_COMMENTが自分の書いたコメントを上書きします

次のコメントを追加します。

  1. ML_COMMENT(org.eclipse.xtext.common.Terminalsから)
  2. 自身のコメント

    /* @var VAR1 @propertyプロパティ1 */

以下は私の試行コードです。

grammar org.xtext.example.mydemo.MyDemo with org.eclipse.xtext.common.Terminals 

generate myDemo "http://www.xtext.org/example/mydemo/MyDemo" 

Model: 
    (elements+=DocComments)* 
; 

DocComments hidden(WS, OTHER): 
    start=StartComment name=VarComment? property=PropertyComment* end=EndComment 
; 

StartComment: '/**'; 
EndComment:'*/'; 
VarComment: key='@var' name=ID; 
PropertyComment: key='@property' name=ID; 

terminal OTHER: '*'; 

ML_COMMENTが動作し、自分のコメントが機能しないようです。

この問題を解決するにはどうすればよいですか? 助けてください。

+0

を端末から継承したが(ML_COMMENTを除く)のルールをコピーしていけない:あなたのStartCommentがある/ **ない/ *あなたが "に対して一致していることを意味しています/ ** ... */" – Har

答えて

0

あなたは "他"

例えば何かにML_COMMENTを上書きすることができます

ML_COMMENT: '%'->'%'; 

またはあなただけのサイドノートとして

grammar org.xtext.example.demodsl.DemoDsl hidden(WS, SL_COMMENT) 

generate demoDsl "http://www.xtext.org/example/demodsl/DemoDsl" 

import "http://www.eclipse.org/emf/2002/Ecore" as ecore 
Model: 
    greetings+=Greeting*; 

Greeting: 
    'Hello' name=ID '!'; 


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 SL_COMMENT  : '//' !('\n'|'\r')* ('\r'? '\n')?; 

terminal WS   : (' '|'\t'|'\r'|'\n')+; 

terminal ANY_OTHER: .; 
+0

ご返信ありがとうございます。 – user7377306

+0

次のコードを追加してみました。 端末ML_COMMENT: '%' - > '%'; 自分のコメントが機能します。 "自分のコメント"と "ML_COMMENT"の両方を追加したいと思います。例えば :*/ /* 何もしてプロパティプロパティ1 @/** *の@するvar VAR1 * *プロパティproperty2 @ */ /*複数のコメントがあり*複数のコメント */ – user7377306

+0

これはあなたのルールでこれを処理する必要はありません –

関連する問題