在xtext中为DSL编写的规则,它没有按预期工作

时间:2014-04-17 11:30:31

标签: dsl xtext

我正在尝试 - >> VL:'this is test dsl in xtext' IS ABC

TestLabelBase returns ResultExpressionRhs:
   'VL:' path=stringRule;

我试过的规则是:

TestLabel returns ResultExpressionRhs:
   TestLabelBase ('IS' modifier=alphabateModifier)?;

alphabateModifier:
   (abc?='ABC' | def?='DEF' | ghi?='GHI');

它会识别IS,但不识别ABC

1 个答案:

答案 0 :(得分:1)

以下xtext语法将解析您的示例

grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals

generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"

Model
  : lables+=TestLabel+
  ;

TestLabel returns ResultExpressionRhs
   : TestLabelBase ('IS' modifier=AlphabateModifier)?
   ;

TestLabelBase returns ResultExpressionRhs
  : 'VL:' path=STRING
  ;   

AlphabateModifier
  : (abc?='ABC' | def?='DEF' | ghi?='GHI')
  ;

它解析了以下测试文件:

VL:'this is test dsl in xtext' IS ABC
VL:'this is test dsl in xtext' IS DEF
VL:'this is test dsl in xtext' IS GHI

干杯,史蒂夫