A General Architecture for Heterogeneous Language Engineering and Projectional Editor Support
Tony Clark

TL;DR
This paper introduces a versatile architecture for language engineering that supports heterogeneous languages through a unified projectional editor approach, emphasizing abstract syntax and declarative integration.
Contribution
It presents a general meta-tool architecture with abstract and concrete meta-languages, enabling flexible language support in projectional editors, implemented in Racket.
Findings
Successfully integrates heterogeneous languages using declarative rules.
Demonstrates the architecture with concrete examples in Racket.
Supports both textual and graphical language features.
Abstract
Tool support for language engineering has typically prioritises concrete syntax over abstract syntax by providing meta-languages for expressing concrete syntax and then mapping concrete to abstract structures. Text-based languages are usually specified using a BNF-like language used to generate a syntax-aware editor that includes features such as keyword completion. Similarly, graphical languages are defined using a declarative graphical syntax language, producing an editor that supports features such as shapes, graphs and edges. Projectional editors invert traditional approaches by prioritising abstract over concrete syntax. This paper describes a projectional meta-tool architecture, including general purpose abstract and concrete meta-languages, that uses declarative rules to integrate the syntax and tool support for a range of heterogeneous languages. The architecture has been…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsModel-Driven Software Engineering Techniques · Semantic Web and Ontologies · Service-Oriented Architecture and Web Services
