LINKS
author Christian Urban <christian.urban@kcl.ac.uk>
Fri, 11 Oct 2024 19:13:00 +0100
changeset 967 ce5de01b9632
parent 764 6718ef6143b8
permissions -rw-r--r--
updated


Curated list of awesome resources on Compilers, Interpreters and Runtimes
http://aalhour.com/awesome-compilers
https://github.com/aalhour/awesome-compilers


----------------
Video about Language design

https://www.reddit.com/r/programming/comments/ians9l/computerphile_from_algol_60_to_pascal_video/

----------------

Thinking Forth (Book to read)
=================

Nice compiler overview talk (examples)
http://venge.net/graydon/talks/CompilerTalk-2019.pdf

=================
opinionated functional programming language compiling to the JVM 
https://flix.github.io/#/research/
https://flix.github.io/#/principles/

================
Compiler course in Edinburgh

http://www.inf.ed.ac.uk/teaching/courses/ct/19-20/

=================
General tail call elimination on the JVM

http://cs.au.dk/~magnusm/papers/cc18/paper.pdf

=================
incremental approach to compiler  construction
http://scheme2006.cs.uchicago.edu/11-ghuloum.pdf

=================
Compiler courses
http://www.cse.chalmers.se/edu/year/2017/course/TDA283/lectures/
http://www.cs.columbia.edu/~sedwards/classes/2017/4115-fall/index.html
http://www.cs.dartmouth.edu/~mckeeman/cs48/index.html
http://www.cl.cam.ac.uk/teaching/1718/CompConstr/materials.html


http://spivey.oriel.ox.ac.uk/corner/Welcome_to_Spivey%27s_Corner
http://spivey.oriel.ox.ac.uk/corner/Compilers_(The_Farewell_Tour)
http://spivey.oriel.ox.ac.uk/wiki2/files/compilers/book.pdf
http://spivey.oriel.ox.ac.uk/corner/Programming_Languages

http://www.cs.cornell.edu/courses/cs3110/2015fa/index.php#Assignments
Magnus
http://www.cse.chalmers.se/edu/course/TDA283/
Pfenning
https://www.cs.cmu.edu/~fp/courses/15411-f14/
https://www.cs.cmu.edu/~fp/courses/15411-f13/lectures/
https://www.cs.cmu.edu/~fp/courses/15411-f14/lectures/
===============================
Compiler book links
https://www.reddit.com/r/ProgrammingLanguages/comments/9k2hfd/introduction_to_compilers_and_language_design/

http://www.craftinginterpreters.com
podcast by author of above
  https://corecursive.com/032-bob-nystrom-on-building-an-interpreter/#


Book about SSA
http://ssabook.gforge.inria.fr/latest/book-full.pdf

http://cs.lmu.edu/~ray/notes/ir/
===============================
Selfhosting Lisp compiler for Lua

https://github.com/sctb/lumen
============================
Basic as a DSL in Scala
https://github.com/fogus/baysick/blob/master/src/main/scala/fogus/baysick/Baysick.scala


============================
Arihmetic with regexes

http://www.drregex.com/2018/11/how-to-match-b-c-where-abc-beast-reborn.html
============================
Static analysis lecture notes
https://cs.au.dk/~amoeller/spa/spa.pdf

============================

Pictures from the Starting Forth book

https://www.forth.com/starting-forth/2-stack-manipulation-operators-arithmetic/

--------------------------------
Java Byte Code for SCALA
https://www.toptal.com/scala/scala-bytecode-and-the-jvm

------------------
Yeti - ML for the JVM
https://mth.github.io/yeti/
http://dot.planet.ee/yeti/intro.html

------------------
Ocaml for LLVM
https://github.com/artagnon/rhine-ml 

---------------
Type inference 
http://www.calebh.io/Type-Inference-by-Solving-Constraints/



JVM languages
https://en.wikipedia.org/wiki/List_of_JVM_languages
https://www.codeproject.com/Articles/50377/Create-Your-Own-Programming-Language


Scheme
https://wespiser.com/writings/wyas/home.html
http://peter.michaux.ca/index#Scheme



assmebly (calculator RPN)

https://dere.github.io/2017-02-12/beginners-assembly-part1/


webassembly
https://sourceware.org/ml/binutils/2017-03/msg00044.html
https://hacks.mozilla.org/2017/02/a-cartoon-intro-to-webassembly/
https://webassembly.github.io/spec/

webassembly explorer
https://mbebenita.github.io/WasmExplorer/

ARM
https://azeria-labs.com/writing-arm-assembly-part-1/

JVM
https://www.toptal.com/scala/scala-bytecode-and-the-jvm

Growing a compiler
http://www.cs.dartmouth.edu/~mckeeman/cs48/mxcom/gem/html/GrowingCompiler.html

free books
https://github.com/vhf/free-programming-books/blob/master/free-programming-books.md
https://john.cs.olemiss.edu/~hcc/csci658/notes/Free_Prog_Lang_Textbooks.html

MIPS
http://courses.missouristate.edu/kenvollmar/mars/

PEG

https://github.com/taocpp/PEGTL


Parser
https://www.reddit.com/r/programming/comments/615hoz/how_to_write_a_recursive_descent_parser/
https://www.reddit.com/r/ProgrammingLanguages/comments/60gmgc/writing_a_recursive_descent_expression_parser/
http://www.craftinginterpreters.com/parsing-expressions.html


small languages
https://github.com/Michael2109/cobalt
http://www.red-lang.org/p/about.html
http://craftinginterpreters.com/contents.html
https://michaelhaywoodblog.wordpress.com
https://ruslanspivak.com/lsbasi-part1/
http://selfie.cs.uni-salzburg.at
https://academy.realm.io/posts/tryswift-samuel-giddins-building-tiny-compiler-swift-ios/
https://legacy.gitbook.com/book/luxlang/the-lux-programming-language/details
https://github.com/rhysd/gocaml
https://github.com/aalhour/awesome-compilers#educational-and-toy-projects
https://rsms.me/hue-intro


automata
https://www7.in.tum.de/um/courses/auto/ws1314/script/autonotes.pdf

Reges helpers
https://regex101.com
http://www.regular-expressions.info/tutorial.html


Regex performance benchmark
https://rust-leipzig.github.io/regex/2017/03/28/comparison-of-regex-engines/
https://github.com/k-takata/Onigmo

Sulzmann
https://github.com/pippijn/dreml/


Scala parser
http://enear.github.io/2016/03/31/parser-combinators/


ANTLR megatutorial
https://tomassetti.me/antlr-mega-tutorial/

From regex to LLVM
https://www.youtube.com/watch?v=Ukqb6nMjFyk




Static code analysis
https://medium.com/@Coder_HarryLee/videos-about-static-code-analysis-7654b40f9a3b


Brainfuck compiler
https://github.com/PurpleMyst/bf_compiler
https://www.reddit.com/r/programming/comments/8371tk/a_brainfuck_to_llvm_ir_compiler_written_in_python/
http://www.wilfred.me.uk/blog/2015/02/21/my-first-llvm-compiler/

===============================
A simple recursive regular expression matcher written in Scala.
https://github.com/marconilanna/RegexMatcher

===============================
A neat little tool to build presentations using the Scala REPL
https://github.com/marconilanna/REPLesent


======================
Minimal Static Single Assignment Form
Max Wagner and Denis Lohner

This formalization is an extension to "Verified Construction of Static Single 
Assignment Form". In their work, the authors have shown that Braun et al.'s 
static single assignment (SSA) construction algorithm produces minimal SSA form 
for input programs with a reducible control flow graph (CFG). However Braun et 
al. also proposed an extension to their algorithm that they claim produces 
minimal SSA form even for irreducible CFGs.
In this formalization we support that claim by giving a mechanized proof.

As the extension of Braun et al.'s algorithm aims for removing so-called 
redundant strongly connected components of phi functions, we show that this 
suffices to guarantee minimality according to Cytron et al..

https://www.isa-afp.org/entries/Minimal_SSA.shtml


=========================
How Clang compiles a function
https://blog.regehr.org/archives/1605