dev@lang@compilation - odalet/misc GitHub Wiki
Compilation
Resources
Blogs
-
Joe Duffy's blog:
-
Paranoid Coding
Books
Scholar
Type Inference
-
Gradual Typing + inference
- mono- vs bi-directional type inference (Hindley-Milner): https://eli.thegreenplace.net/2018/type-inference/
- Unification Algorithm: https://eli.thegreenplace.net/2018/unification/
- https://en.wikipedia.org/wiki/Gradual_typing
- https://en.wikipedia.org/wiki/Hindley%E2%80%93Milner_type_system
- http://www.cs.cmu.edu/~aldrich/FOOL/fool08/siek-slides.pdf
- https://www.cs.umd.edu/~avik/projects/iogti/paper.pdf
- https://www.irif.fr/~gc/papers/popl19.pdf
- http://ecee.colorado.edu/~siek/dls08igtlc.pdf
- https://www.researchgate.net/publication/330153340_Dynamic_type_inference_for_gradual_Hindley-Milner_typing/fulltext/5c30159f92851c22a35b342d/Dynamic-type-inference-for-gradual-Hindley-Milner-typing.pdf
- mono- vs bi-directional type inference (Hindley-Milner): https://eli.thegreenplace.net/2018/type-inference/
-
Lexing
- Compiler Design (Lexical analysis): https://www.tutorialspoint.com/compiler_design/compiler_design_lexical_analysis.htm
- Compiler Construction/Lexical analysis: https://en.wikibooks.org/wiki/Compiler_Construction/Lexical_analysis
Wikipedia
- https://en.wikipedia.org/wiki/Operator-precedence_parser
- https://en.wikipedia.org/wiki/Shunting-yard_algorithm
Code / sample languages
C
- chibicc: A Small C Compiler
- tcc
- lcc
- Companion book: https://drh.github.io/lcc/
XSharp
Minsk
- Github: https://github.com/terrajobst/minsk
- Youtube Series: https://www.youtube.com/playlist?list=PLRAdsfhKI4OWNOSfS7EUu5GRAVmze1t2y
Go
- Toolchain: https://dave.cheney.net/tag/toolchain
- https://go.googlesource.com/go/+refs
- https://go.googlesource.com/go/+/refs/heads/master/src
- https://go.googlesource.com/go/+/refs/tags/weekly.2009-11-06/src/cmd/gc/walk.c
Cflat (Wayback machine)
- https://web.archive.org/web/2005*/http://iti.spbu.ru/eng/grants/Cflat.asp
- https://web.archive.org/web/20051003220405/http://iti.spbu.ru/eng/grants/Cflat.asp
Pony
Stark
C++ based Lexer/Parser (VS Magazine)
JS
- JInt: Javascript Interpreter for .NET
- JS + Wasm: https://www.courier.com/blog/build-a-webassembly-language-lexing/
Misc Tricks
- TextReader to IEnumerable: http://blog.einbu.no/2009/03/parsing-textfiles-with-linq/
Cross-compilation
- toolchains: https://toolchains.bootlin.com/
Backend
SSA
- https://en.wikipedia.org/wiki/Static_single_assignment_form
- Understanding static single assignment forms
- Methods to implement a register-based IR in static single assignment form
- SSA in Scheme
- Translating Out of Static Single Assignment Form
LLVM
- http://llvm.org/docs/LangRef.html
- https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html
- Mapping High Level Constructs to LLVM IR