247 releases

new 0.6.52-nightly.3 Feb 9, 2025
0.6.52-nightly.1 Jan 29, 2025
0.6.51-nightly.0 Dec 29, 2024
0.6.49-nightly.0 Nov 26, 2024
0.5.13 Nov 26, 2022

#296 in Programming languages

Download history 181/week @ 2024-10-22 360/week @ 2024-10-29 388/week @ 2024-11-05 118/week @ 2024-11-12 308/week @ 2024-11-19 329/week @ 2024-11-26 302/week @ 2024-12-03 739/week @ 2024-12-10 279/week @ 2024-12-17 702/week @ 2024-12-24 477/week @ 2024-12-31 174/week @ 2025-01-07 608/week @ 2025-01-14 153/week @ 2025-01-21 369/week @ 2025-01-28 468/week @ 2025-02-04

1,645 downloads per month
Used in 6 crates

MIT/Apache

4MB
99K SLoC

The Erg compiler (codename: Centimetre)

The overall structure is described in detail in architecture.md(English).For other language translations of architecture.md, please check them out by yourself.

Use erg_compiler as a Python library

erg_compiler can be built as a Python library by using pyo3/maturin.

Example

import erg_compiler

module = erg_compiler.exec_module(".i = 1")
# foo.er:
# .bar = 1
foo = erg_compiler.__import__("foo")
assert module.i == 1
assert foo.bar == 1
import erg_compiler
erg_parser = erg_compiler.erg_parser
erg_ast = erg_compiler.erg_parser.ast

module = erg_parser.parse(".i = 1")
d = module.pop()
d.sig = erg_ast.VarSignature.new(erg_ast.Identifier.public("j"), None)
module.push(d)
ast = erg_ast.AST.new("test", module)
code = erg_compiler.compile_ast(ast)
exec(code)
assert j == 1

Debug install (using venv)

python -m venv .venv
source .venv/bin/activate
maturin develop --features pylib_compiler

Release install

maturin build -i python --release --features pylib_compiler
pip install <output wheel>

Dependencies

~2–28MB
~406K SLoC