Mon 21 Oct 2024 11:30 - 12:00 at IBR East - Software Language Design and Implementation II Chair(s): Jeff Smits

Compilation is all about tree rewriting. In functional languages where all data is tree shaped, tree rewriting is facilitated by pattern matching, but data immutability leads to copying for each update. In object-oriented languages like Java or C++, a standard approach is to use the visitor pattern, which increases modularization but also adds indirection and introduces boilerplate code. In this paper, we introduce a middle ground in the form of Trieste – a novel tree-rewriting DSL implemented in C++. Trieste combines the power of C++ with the expressivity of pattern matching.

A Trieste toolchain consists of one or more sequences of rewrite passes. Each pass rewrites an abstract syntax tree (AST) in place using subtree pattern matching, where the result is dynamically checked for well-formedness. Sequences of Trieste passes can be used to read a file to produce an AST, convert from one AST to another, or write an AST to disk. The well-formedness specification, in addition to checking the shape of trees, can be used for scoped name binding as well as generating random well-formed trees for fuzz testing.

Trieste has been used to build fully compliant parsers for YAML and JSON, a transpiler from YAML to JSON, and a compiler and interpreter for the policy language Rego.

Mon 21 Oct

Displayed time zone: Pacific Time (US & Canada) change

11:00 - 12:30
Software Language Design and Implementation IISLE at IBR East
Chair(s): Jeff Smits Delft University of Technology
11:00
30m
Talk
Type Checking with Rewriting Rules
SLE
Dimi Racordon EPFL, LAMP
DOI
11:30
30m
Talk
Trieste: A C++ DSL for Flexible Tree Rewriting (Tool paper)
SLE
Sylvan Clebsch Microsoft Azure Research, Matilda Blomqvist Uppsala University, Elias Castegren Uppsala University, Matthew Johnson Azure Research, Microsoft, Matthew J. Parkinson Microsoft Azure Research
DOI
12:00
30m
Talk
Method Bundles (New Ideas/Vision paper)
SLE
Dimi Racordon EPFL, LAMP, Dave Abrahams Adobe
DOI