Как получить доступ к переменной экземпляра Java в DSL?

У меня есть модель данных(Car.java), исходный шаблон(файл dsl) и прикладная программа.

Класс шаблона Car.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.

Проблема?

У меня нет доступа к cars (переменной экземпляра) из прикладной программы в файле шаблона. Как я могу получить переменную экземпляра cars (не класс Java, например Car) в файле index.template?


person Community    schedule 23.05.2018    source источник
comment
Вы уже посмотрели на xbase   -  person Christian Dietrich    schedule 23.05.2018
comment
Я субъективно чувствую, что вы спрашиваете, какой инструмент вы можете использовать для выполнения этого DSL-рендеринга свойств объекта; однако ваш вопрос говорит о том, как получить доступ к переменной из файла шаблона (проще говоря, вы спрашиваете о области действия). Если я прав, то это, вероятно, причина отрицательного голоса. Возможно, вы захотите изменить свой вопрос, задав именно то, что вы хотите   -  person Christopher Francisco    schedule 23.05.2018


Ответы (1)


Посмотрите про Xbase. В официальной документации: https://www.eclipse.org/Xtext/documentation/305_xbase.html

Xbase обеспечивает интеграцию всех DSL с системой типов java.

person Arne Deutsch    schedule 23.05.2018
comment
Спасибо за ваш ответ. У меня уже есть доступ к типам Java. Как я могу получить переменные экземпляра типов Java (например, автомобилей)? - person ; 23.05.2018
comment
Это делается путем реализации права jvmmodelinferrer - person Christian Dietrich; 24.05.2018