为 java 等方法调用编写 Xtext 语法

Writing Xtext Grammar for method calls like java

您好,我已经为我的一个使用 xtext 编辑器的要求编写了如下语法。

Feature:
    dclass=[ecore::EClass] (".")? (feature=[ecore::EStructuralFeature])?;

基本上我正在交叉引用我的 emf 模型,这样我就可以在我的对象上调用方法,它支持如下所示的功能 - 如果我有员工 class,方法为 getSalary() 并且薪水为 class 使用方法 getBasic() 目前支持以下调用

Employee.salary

但是我想要的是因为上面的代码 returns Salary 我想在上面调用更多的方法

Employee.salary.amount

or Employee.getSalary().getAmount()

我怎样才能做到这一点?有帮助吗?

我只是将语法更改如下,然后通过范围提供程序我实现了内容辅助。

Feature:
    {Feature} dclass=[ecore::EClass];

DotExpression:
    (Feature) ({DotExpression.ref=current} "."tail=[ecore::EStructuralFeature])*;

使用 DotExpression 获得 java 喜欢的行为