2017-01-05 3 views
1

Je suis nouveau sur xtext.XTexte: ML_COMMENT remplace son propre commentaire écrit

Je veux ajouter les commentaires suivants.

  1. ML_COMMENT (de org.eclipse.xtext.common.Terminals)
  2. propre commentaire

    /* @var var1 @property property1 */

Le ce qui suit est mon code de tentative.

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: '*'; 

Il semble que ML_COMMENT fonctionne et propre commentaire ne fonctionne pas.

Comment résoudre ce problème? S'il vous plaît aider.

+0

Tout comme une note de côté: votre startComment est/** pas/* ce qui signifie que vous êtes correspondant contre "/** ... */" – Har

Répondre

0

vous pouvez remplacer ML_COMMENT à quelque chose "autre"

par exemple

ML_COMMENT: '%'->'%'; 

ou vous ne héritera des terminaux, mais copier les règles (sauf 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

Merci pour votre réponse. – user7377306

+0

J'ai essayé d'ajouter ce qui suit dans le code. terminal ML_COMMENT: '%' -> '%'; Puis propre commentaire fonctionne. Mais je veux ajouter à la fois "propre commentaire" et "ML_COMMENT". par exemple: /** * @ var var1 * @ propriété property1 * @ propriété property2 */ /* multiples commentaire peut par quoi que ce soit */ /* * multiples commentaires */ – user7377306

+0

Cela n'est pas possible, vous devez gérer cela dans votre règle –