Bril

2 views
Skip to first unread message

Gábor Horváth

unread,
Dec 20, 2020, 4:45:14 AM12/20/20
to compiler-seminar-budapest
Sziasztok!

Nemrég futottam bele az alábbi projektbe: https://github.com/sampsyo/bril
Az egész nem túl nagy, de nagyon jó passokkal való kísérletezésre, ha valakinek épp nincs saját hobbinyelve.
A repo tartalma:
  • Dokumentáció egy JSON alapú IR-hoz egy apró nyelvnek
  • Pretty printer, ami a JSON-t assemblyhez hasonló formátumba ki tudja írni
  • Parser amivel a fenti formátumból visszakapható a JSON
  • Egy interpreter
Az egészben az a zseniális, hogy mivel JSON alapú, ezért tetszőleges nyelvben dolgozhat az ember, és utána a saját transformációs pipeline-ját unix shellben össze tudja rakni.

Egy Móriczka példa a + operátor - ra cserélésére, majd a kód interpreterben való futtatására:
cat ../test/parse/add.json | python negate_add.py | brili
A pass python kódja:
import json
import sys

ir = json.load(sys.stdin)

for func in ir["functions"]:
for instr in func["instrs"]:
if instr["op"] == "add":
instr["op"] = "sub"

print(json.dumps(ir, indent=4))

Szerintem ez az egész két esetben lehet hasznos. Egyrészt ha kis efforttal (pl LLVM fordításhoz képest) akar az ember megpróbálni implementálni egy jól ismert compiler algoritmust tanulásképp (vagy esetleg egy új algoritmust, instrumentációt stb). Vagy ha egy új nyelvi elemmel akart kísérletezni, már adott egy apró nyelv amit ki lehet egészíteni.

Sok példa algoritmus már le van implementálva a repoban, pl value numbering, azokkal is lehet szemezgetni. Az biztos, ha egyszer újra tartok fordítóprogramos órát, akkor valami ilyesmit fogok használni :)

Üdv,
Gábor

Csaba Hruska

unread,
Dec 20, 2020, 5:50:39 AM12/20/20
to Gábor Horváth, compiler-seminar-budapest
Oktatasi szempontobol a kicsi es egyszeru a legfontosoabb, meg az is hogy pop tech-re epul. Ez total jo kezdoknek, viszont tuti nem skalazodik productionre, de nem is szabad arra hasznalni, ja meg erre ugyis rajon az ember amikor ezt megprobalja, es talan annak a belatasa hogy miert nem jo ez ipari forditonak a tanulasi szakasz kimaxolasa. :)

--
Azért kapta ezt az üzenetet, mert feliratkozott a Google Csoportok „compiler-seminar-budapest” csoportjára.
Az erről a csoportról és az ahhoz kapcsolódó e-mailekről való leiratkozáshoz küldjön egy e-amailt a(z) compiler-seminar-b...@googlegroups.com címre.
Ha szeretné megtekinteni ezt a beszélgetést az interneten, látogasson el ide: https://groups.google.com/d/msgid/compiler-seminar-budapest/CAPRL4a1P2c9kjy0jcr9i%3DpUJPpFfrmWE5odBeRx49qBEqb-UXA%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages