Künstliche Intelligenz
TypeScript: Langium 4.0 bringt Infix-Operatoren für kompaktere Grammatik
Mit Version 4.0 hat das Open-Source-Projekt Langium eine Reihe neuer Funktionen veröffentlicht, darunter die Unterstützung für Infix-Operatoren. Diese Erweiterung soll nicht nur die Definition komplexer Ausdrücke vereinfachen, sondern auch die Parsing-Leistung steigern. Langium ist ein Framework von Eclipse zur Entwicklung domänenspezifischer Sprachen (DSLs) in TypeScript und bietet integrierte Unterstützung für das Language Server Protocol (LSP).
Kompaktere Grammatik mit Infix-Notation
Bisher mussten Entwicklerinnen und Entwickler binäre Ausdrücke wie Additionen, Vergleiche oder logische Verknüpfungen über sogenannte Baumstruktur-Transformationen definieren. Die neue Infix-Notation ist laut Entwicklerteam eine kompaktere Möglichkeit, solche Operatoren auszudrücken, und zudem leichter zu lesen und zu verstehen.
Infix-Notation bezeichnet dabei die Darstellung von Operatoren zwischen ihren Operanden, etwa bei der Schreibweise a + b
. Diese Form ist aus Programmiersprachen wie JavaScript oder Python bekannt und entspricht der üblichen mathematischen Notation. Im Gegensatz dazu stehen Präfix- oder Postfix-Notationen, bei denen Operatoren vor bzw. nach den Operanden stehen.
Ein einfaches Beispiel aus dem Changelog veranschaulicht die neue Syntax:
infix BinaryExpression on PrimaryExpression:
'%' // <-- Highest precedence
> '^'
> '*' | '/'
> '+' | '-'; // <-- Lowest precedence
PrimaryExpression infers Expression:
'(' Expression ')' |
{infer NumberLiteral} value=NUMBER;
Die neue Notation ist offenbar nicht nur syntaktisch eleganter, sondern wird zugleich als effizienter angepriesen: Beim Parsen solcher Ausdrücke soll sie bis zu 50 Prozent schneller sein als der bisherige Ansatz. Diese Angaben basieren auf internen Messungen des Entwicklerteams. Die vorherige Methode bleibt weiterhin verfügbar, was eine schrittweise Umstellung ermöglicht.
Langium als Baukasten für eigene Sprachen
Das Eclipse-Projekt Langium richtet sich an Entwicklerinnen und Entwickler, die eigene textuelle Sprachen entwerfen und mit Entwicklungswerkzeugen wie Visual Studio Code integrieren wollen. Es kombiniert Sprachdefinition, AST-Generierung und Sprachserver in einem Toolset. Im Unterschied zu klassischen Parser-Generatoren wie ANTLR (ANother Tool for Language Recognition) ist Langium nativ in TypeScript geschrieben und ermöglicht dadurch eine engere Verzahnung mit modernen Web-Toolchains.
Neben der Infix-Notation bietet Langium weitere Neuerungen wie Multi-Referenzen oder einen Strict Mode für Grammatikdefinitionen. Es wird laut Ankündigungsbeitrag zunehmend für komplexe Projekte eingesetzt, etwa zur Modellierung von Anforderungen, Konfigurationssprachen oder domänenspezifischen Tools.
Weitere Informationen finden sich im Changelog auf GitHub.
(mdo)