Goflex
A lexical analyzer generator.
Идеята е remake на flex. { документация }
Background
- Искам да си направя собствен език и за това ми трябва имплементация на компилатор.
- За целта първо ми трябва lexer.
- Не искам сам да си пиша лексъра from scratch, за това ще използвам туула.
Usage
Според някакъв DSL, си дефинирам правилата (регулярните изрази), които определят лексемите в моя език (сиреч отделните думи които имат някакво значение).
Компилирам програмата, и като output получавам tokenizer за моя специфичен език.
С Компилирания токенайзър мога да правя каквото ми трябва по-нататък в компилирането на програма, или пък мога да го ползвам стендалоун.
Features
- Дефинираш си собствени лексически правила и получаваш наготово tokenizer
- Ще можеш да закачаш произволен callback, който да се повика при match-ване на tokeх
- Output на автомата ( transducer-а ), който ще разпознава езика който генерираме
- Чиста документация и examples
Допълнително
По-яко ще е според мен да се дистрибутира под формата на библиотека, която може да се extend-ва. За имплементацията най-вероятно ще ми трябва и библиотека, която генерира по регулярен израз автомати и transducer-и, което може да се branchout-не и като additional библиотека за поддръжка.