Skip to content

sampsyo/bril

Folders and files

NameName
Last commit message
Last commit date

Latest commit

88df287 · Feb 24, 2025
Feb 23, 2025
Feb 19, 2025
Feb 21, 2025
Feb 10, 2025
Jan 28, 2022
Feb 5, 2025
Feb 24, 2025
Jun 24, 2021
Feb 24, 2025
Oct 28, 2024
Aug 26, 2021
Feb 14, 2025
Feb 24, 2025
Feb 24, 2025
Feb 24, 2025
Feb 24, 2025
Jan 6, 2024
Feb 24, 2025
Aug 26, 2020
Aug 30, 2023
Sep 3, 2019
May 26, 2023
Jan 30, 2025
Feb 9, 2022
Feb 20, 2025
Feb 24, 2025
Feb 19, 2025

Repository files navigation

Bril: A Compiler Intermediate Representation for Learning

Bril (the Big Red Intermediate Language) is a compiler IR made for teaching CS 6120, a grad compilers course. It is an extremely simple instruction-based IR that is meant to be extended. Its canonical representation is JSON, which makes it easy to build tools from scratch to manipulate it.

This repository contains the documentation, including the language reference document, and some infrastructure for Bril. There are some quick-start instructions below for some of the main tools, but check out the docs for more details about what's available.

Install the Tools

Reference Interpreter

You will want the IR interpreter, which uses Deno. Just type this:

$ deno install -g brili.ts

As Deno tells you, you will then need to add $HOME/.deno/bin to your $PATH. You will then have brili, which takes a Bril program as JSON on stdin and executes it.

Text Format

The parser & pretty printer for the human-editable text form of Bril are in Python. A good way to install them is using uv. Install uv, then go to the bril-txt directory and type:

$ uv tool install .

The tools are called bril2json and bril2txt. They also take input on stdin and produce output on stdout.

Tests

There are some tests in the test/ directory. They use Turnt, which lets us write the expected output for individual commands. Install it with pip:

$ pip install --user turnt

Then run all the tests by typing make test.