YAJCo is a language development tool where the language is defined using a metamodel in the form of annotated Java classes. YAJCo can generate various tools for a defined language, including parser and pretty-printer. The goal of this work was to automatically generate support for the defined language in integrated development environments (IDEs). This goal is achieved by interconnecting YAJCo with Xtext — existing language workbench with support for multiple IDEs. The Xtext grammar is inferred automatically based on the defined metamodel, and subsequently used as input for generating. In this paper, we explain the concept of transforming metamodel to the Xtext grammar and generation of the IDE support. Attention is paid mainly to the differences between models. The solution is demonstrated on the created Mealy Machine Language and tested on the several examples implemented using the YAJCo tool in 4 chosen IDEs and editors — IntelliJ IDEA, Eclipse, Visual Studio Code and Atom.
Paper
Full text
Interconnecting YAJCo with Xtext: Experience Report
Semantic Scholar · Computer Science · 2019
Abstract
YAJCo is a language development tool where the language is defined using a metamodel in the form of annotated Java classes. YAJCo can generate various tools for a defined language, including parser and pretty-printer. The goal of this work was to automatically generate support for the defined language in integrated development environments (IDEs). This goal is achieved by interconnecting YAJCo with Xtext — existing language workbench with support for multiple IDEs. The Xtext grammar is inferred automatically based on the defined metamodel, and subsequently used as input for generating. In this paper, we explain the concept of transforming metamodel to the Xtext grammar and generation of the IDE support. Attention is paid mainly to the differences between models. The solution is demonstrated on the created Mealy Machine Language and tested on the several examples implemented using the YAJCo tool in 4 chosen IDEs and editors — IntelliJ IDEA, Eclipse, Visual Studio Code and Atom.