https://github.com/sampsyo/bril
an educational compiler intermediate representation
https://github.com/sampsyo/bril
bril compiler programming-language
Last synced: 8 days ago
JSON representation
an educational compiler intermediate representation
- Host: GitHub
- URL: https://github.com/sampsyo/bril
- Owner: sampsyo
- License: mit
- Created: 2019-05-06T02:06:57.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2025-03-12T11:50:12.000Z (about 1 month ago)
- Last Synced: 2025-04-06T13:04:56.637Z (15 days ago)
- Topics: bril, compiler, programming-language
- Language: Rust
- Homepage: https://capra.cs.cornell.edu/bril/
- Size: 6.3 MB
- Stars: 648
- Watchers: 13
- Forks: 280
- Open Issues: 30
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Bril: A Compiler Intermediate Representation for Learning
=========================================================Bril (the Big Red Intermediate Language) is a compiler IR made for teaching [CS 6120][cs6120], 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][docs], including the [language reference document][langref], 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.[docs]: https://capra.cs.cornell.edu/bril/
[langref]: https://capra.cs.cornell.edu/bril/lang/index.html
[brilts]: https://github.com/sampsyo/bril/blob/master/bril-ts/bril.tsInstall 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`][path].
You will then have `brili`, which takes a Bril program as JSON on stdin and executes it.[deno]: https://deno.land
[path]: https://unix.stackexchange.com/a/26059/61192### 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][uv-install], 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 [uv][]:$ uv tool install turnt
Then run all the tests by typing `make test`.
[pip]: https://packaging.python.org/tutorials/installing-packages/
[cs6120]: https://www.cs.cornell.edu/courses/cs6120/2020fa/
[turnt]: https://github.com/cucapra/turnt
[uv]: https://docs.astral.sh/uv/
[uv-install]: https://docs.astral.sh/uv/getting-started/installation/