如何在 DSL 中访问 Java 的实例变量?

How to access instance variable of Java in DSL?

我有一个数据模型(Car.java)、源模板(dsl文件)和应用程序.

模板ClassCar.java

public class Car {

    public String name;
    public  int price;

    public Car() {
    }
}

模板文件index.template

<body>
    <table>
        <tr>
            <th>Name</th>  
            <th>Price</th>
        </tr>        
        {FOR car : cars}
            <tr>
                <td>{car.name}</td> 
                <td>{car.price}</td>
            </tr>   
    </table>                
</body>

注意: { }

包含的模板符号元素丰富的纯文本

在程序中使用模板:

Car c1 = new Car("??", 52642);
Car c2 = new Car("??", 29000);
Car c3 = new Car("??", 9000);
List<Car> cars= new ArrayList<>();
cars.add(c1);
...
...

输出应该是汽车集合的所有元素。

有问题吗?

我无法从模板文件中的应用程序访问 cars(实例变量)。 如何在 index.template 文件中获取实例变量 cars(不是 java class,如 Car)?

看看Xbase。在官方文档中:https://www.eclipse.org/Xtext/documentation/305_xbase.html

Xbase 通过 java 类型系统为所有 DSL 提供集成。