| 
619
 | 
     1  | 
  | 
| 
 | 
     2  | 
Curated list of awesome resources on Compilers, Interpreters and Runtimes
  | 
| 
 | 
     3  | 
http://aalhour.com/awesome-compilers
  | 
| 
 | 
     4  | 
https://github.com/aalhour/awesome-compilers
  | 
| 
 | 
     5  | 
  | 
| 
 | 
     6  | 
----------------
  | 
| 
 | 
     7  | 
  | 
| 
599
 | 
     8  | 
Thinking Forth (Book to read)
  | 
| 
 | 
     9  | 
=================
  | 
| 
 | 
    10  | 
  | 
| 
620
 | 
    11  | 
Nice compiler overview talk (examples)
  | 
| 
 | 
    12  | 
http://venge.net/graydon/talks/CompilerTalk-2019.pdf
  | 
| 
 | 
    13  | 
  | 
| 
618
 | 
    14  | 
=================
  | 
| 
 | 
    15  | 
opinionated functional programming language compiling to the JVM 
  | 
| 
 | 
    16  | 
https://flix.github.io/#/research/
  | 
| 
 | 
    17  | 
https://flix.github.io/#/principles/
  | 
| 
599
 | 
    18  | 
  | 
| 
618
 | 
    19  | 
  | 
| 
 | 
    20  | 
=================
  | 
| 
 | 
    21  | 
General tail call elimination on the JVM
  | 
| 
 | 
    22  | 
  | 
| 
 | 
    23  | 
http://cs.au.dk/~magnusm/papers/cc18/paper.pdf
  | 
| 
 | 
    24  | 
  | 
| 
 | 
    25  | 
=================
  | 
| 
 | 
    26  | 
incremental approach to compiler  construction
  | 
| 
 | 
    27  | 
http://scheme2006.cs.uchicago.edu/11-ghuloum.pdf
  | 
| 
 | 
    28  | 
  | 
| 
 | 
    29  | 
=================
  | 
| 
550
 | 
    30  | 
Compiler courses
  | 
| 
 | 
    31  | 
http://www.cse.chalmers.se/edu/year/2017/course/TDA283/lectures/
  | 
| 
 | 
    32  | 
http://www.cs.columbia.edu/~sedwards/classes/2017/4115-fall/index.html
  | 
| 
 | 
    33  | 
http://www.cs.dartmouth.edu/~mckeeman/cs48/index.html
  | 
| 
553
 | 
    34  | 
http://www.cl.cam.ac.uk/teaching/1718/CompConstr/materials.html
  | 
| 
555
 | 
    35  | 
  | 
| 
 | 
    36  | 
  | 
| 
 | 
    37  | 
http://spivey.oriel.ox.ac.uk/corner/Welcome_to_Spivey%27s_Corner
  | 
| 
 | 
    38  | 
http://spivey.oriel.ox.ac.uk/corner/Compilers_(The_Farewell_Tour)
  | 
| 
 | 
    39  | 
http://spivey.oriel.ox.ac.uk/wiki2/files/compilers/book.pdf
  | 
| 
 | 
    40  | 
http://spivey.oriel.ox.ac.uk/corner/Programming_Languages
  | 
| 
 | 
    41  | 
  | 
| 
556
 | 
    42  | 
http://www.cs.cornell.edu/courses/cs3110/2015fa/index.php#Assignments
  | 
| 
 | 
    43  | 
Magnus
  | 
| 
 | 
    44  | 
http://www.cse.chalmers.se/edu/course/TDA283/
  | 
| 
 | 
    45  | 
Pfenning
  | 
| 
 | 
    46  | 
https://www.cs.cmu.edu/~fp/courses/15411-f14/
  | 
| 
 | 
    47  | 
https://www.cs.cmu.edu/~fp/courses/15411-f13/lectures/
  | 
| 
 | 
    48  | 
https://www.cs.cmu.edu/~fp/courses/15411-f14/lectures/
  | 
| 
550
 | 
    49  | 
===============================
  | 
| 
570
 | 
    50  | 
Compiler book links
  | 
| 
 | 
    51  | 
https://www.reddit.com/r/ProgrammingLanguages/comments/9k2hfd/introduction_to_compilers_and_language_design/
  | 
| 
 | 
    52  | 
  | 
| 
 | 
    53  | 
http://www.craftinginterpreters.com
  | 
| 
 | 
    54  | 
  | 
| 
 | 
    55  | 
Book about SSA
  | 
| 
 | 
    56  | 
http://ssabook.gforge.inria.fr/latest/book-full.pdf
  | 
| 
 | 
    57  | 
  | 
| 
 | 
    58  | 
http://cs.lmu.edu/~ray/notes/ir/
  | 
| 
 | 
    59  | 
===============================
  | 
| 
556
 | 
    60  | 
Selfhosting Lisp compiler for Lua
  | 
| 
 | 
    61  | 
  | 
| 
 | 
    62  | 
https://github.com/sctb/lumen
  | 
| 
 | 
    63  | 
============================
  | 
| 
595
 | 
    64  | 
Basic as a DSL in Scala
  | 
| 
 | 
    65  | 
https://github.com/fogus/baysick/blob/master/src/main/scala/fogus/baysick/Baysick.scala
  | 
| 
556
 | 
    66  | 
  | 
| 
597
 | 
    67  | 
  | 
| 
 | 
    68  | 
============================
  | 
| 
 | 
    69  | 
Arihmetic with regexes
  | 
| 
 | 
    70  | 
  | 
| 
 | 
    71  | 
http://www.drregex.com/2018/11/how-to-match-b-c-where-abc-beast-reborn.html
  | 
| 
595
 | 
    72  | 
============================
  | 
| 
 | 
    73  | 
Static analysis lecture notes
  | 
| 
 | 
    74  | 
https://cs.au.dk/~amoeller/spa/spa.pdf
  | 
| 
 | 
    75  | 
  | 
| 
 | 
    76  | 
============================
  | 
| 
550
 | 
    77  | 
  | 
| 
 | 
    78  | 
Pictures from the Starting Forth book
  | 
| 
546
 | 
    79  | 
  | 
| 
 | 
    80  | 
https://www.forth.com/starting-forth/2-stack-manipulation-operators-arithmetic/
  | 
| 
 | 
    81  | 
  | 
| 
 | 
    82  | 
--------------------------------
  | 
| 
550
 | 
    83  | 
Java Byte Code for SCALA
  | 
| 
 | 
    84  | 
https://www.toptal.com/scala/scala-bytecode-and-the-jvm
  | 
| 
546
 | 
    85  | 
  | 
| 
550
 | 
    86  | 
------------------
  | 
| 
546
 | 
    87  | 
Yeti - ML for the JVM
  | 
| 
 | 
    88  | 
https://mth.github.io/yeti/
  | 
| 
 | 
    89  | 
http://dot.planet.ee/yeti/intro.html
  | 
| 
 | 
    90  | 
  | 
| 
550
 | 
    91  | 
------------------
  | 
| 
 | 
    92  | 
Ocaml for LLVM
  | 
| 
 | 
    93  | 
https://github.com/artagnon/rhine-ml 
  | 
| 
 | 
    94  | 
  | 
| 
 | 
    95  | 
---------------
  | 
| 
 | 
    96  | 
Type inference 
  | 
| 
 | 
    97  | 
http://www.calebh.io/Type-Inference-by-Solving-Constraints/
  | 
| 
 | 
    98  | 
  | 
| 
 | 
    99  | 
  | 
| 
546
 | 
   100  | 
  | 
| 
 | 
   101  | 
JVM languages
  | 
| 
 | 
   102  | 
https://en.wikipedia.org/wiki/List_of_JVM_languages
  | 
| 
 | 
   103  | 
https://www.codeproject.com/Articles/50377/Create-Your-Own-Programming-Language
  | 
| 
 | 
   104  | 
  | 
| 
 | 
   105  | 
  | 
| 
 | 
   106  | 
Scheme
  | 
| 
 | 
   107  | 
https://wespiser.com/writings/wyas/home.html
  | 
| 
 | 
   108  | 
http://peter.michaux.ca/index#Scheme
  | 
| 
 | 
   109  | 
  | 
| 
 | 
   110  | 
  | 
| 
 | 
   111  | 
  | 
| 
476
 | 
   112  | 
assmebly (calculator RPN)
  | 
| 
 | 
   113  | 
  | 
| 
 | 
   114  | 
https://dere.github.io/2017-02-12/beginners-assembly-part1/
  | 
| 
 | 
   115  | 
  | 
| 
 | 
   116  | 
  | 
| 
477
 | 
   117  | 
webassembly
  | 
| 
 | 
   118  | 
https://sourceware.org/ml/binutils/2017-03/msg00044.html
  | 
| 
 | 
   119  | 
https://hacks.mozilla.org/2017/02/a-cartoon-intro-to-webassembly/
  | 
| 
495
 | 
   120  | 
https://webassembly.github.io/spec/
  | 
| 
477
 | 
   121  | 
  | 
| 
 | 
   122  | 
webassembly explorer
  | 
| 
 | 
   123  | 
https://mbebenita.github.io/WasmExplorer/
  | 
| 
 | 
   124  | 
  | 
| 
495
 | 
   125  | 
ARM
  | 
| 
 | 
   126  | 
https://azeria-labs.com/writing-arm-assembly-part-1/
  | 
| 
477
 | 
   127  | 
  | 
| 
495
 | 
   128  | 
JVM
  | 
| 
 | 
   129  | 
https://www.toptal.com/scala/scala-bytecode-and-the-jvm
  | 
| 
 | 
   130  | 
  | 
| 
 | 
   131  | 
Growing a compiler
  | 
| 
 | 
   132  | 
http://www.cs.dartmouth.edu/~mckeeman/cs48/mxcom/gem/html/GrowingCompiler.html
  | 
| 
477
 | 
   133  | 
  | 
| 
 | 
   134  | 
free books
  | 
| 
 | 
   135  | 
https://github.com/vhf/free-programming-books/blob/master/free-programming-books.md
  | 
| 
495
 | 
   136  | 
https://john.cs.olemiss.edu/~hcc/csci658/notes/Free_Prog_Lang_Textbooks.html
  | 
| 
 | 
   137  | 
  | 
| 
 | 
   138  | 
MIPS
  | 
| 
 | 
   139  | 
http://courses.missouristate.edu/kenvollmar/mars/
  | 
| 
 | 
   140  | 
  | 
| 
 | 
   141  | 
PEG
  | 
| 
 | 
   142  | 
  | 
| 
 | 
   143  | 
https://github.com/taocpp/PEGTL
  | 
| 
 | 
   144  | 
  | 
| 
 | 
   145  | 
  | 
| 
 | 
   146  | 
Parser
  | 
| 
 | 
   147  | 
https://www.reddit.com/r/programming/comments/615hoz/how_to_write_a_recursive_descent_parser/
  | 
| 
 | 
   148  | 
https://www.reddit.com/r/ProgrammingLanguages/comments/60gmgc/writing_a_recursive_descent_expression_parser/
  | 
| 
 | 
   149  | 
http://www.craftinginterpreters.com/parsing-expressions.html
  | 
| 
 | 
   150  | 
  | 
| 
 | 
   151  | 
  | 
| 
 | 
   152  | 
small languages
  | 
| 
 | 
   153  | 
https://github.com/Michael2109/cobalt
  | 
| 
 | 
   154  | 
http://www.red-lang.org/p/about.html
  | 
| 
 | 
   155  | 
http://craftinginterpreters.com/contents.html
  | 
| 
 | 
   156  | 
https://michaelhaywoodblog.wordpress.com
  | 
| 
 | 
   157  | 
https://ruslanspivak.com/lsbasi-part1/
  | 
| 
 | 
   158  | 
http://selfie.cs.uni-salzburg.at
  | 
| 
550
 | 
   159  | 
https://academy.realm.io/posts/tryswift-samuel-giddins-building-tiny-compiler-swift-ios/
  | 
| 
 | 
   160  | 
https://legacy.gitbook.com/book/luxlang/the-lux-programming-language/details
  | 
| 
 | 
   161  | 
https://github.com/rhysd/gocaml
  | 
| 
 | 
   162  | 
https://github.com/aalhour/awesome-compilers#educational-and-toy-projects
  | 
| 
 | 
   163  | 
https://rsms.me/hue-intro
  | 
| 
495
 | 
   164  | 
  | 
| 
 | 
   165  | 
  | 
| 
 | 
   166  | 
automata
  | 
| 
 | 
   167  | 
https://www7.in.tum.de/um/courses/auto/ws1314/script/autonotes.pdf
  | 
| 
 | 
   168  | 
  | 
| 
 | 
   169  | 
Reges helpers
  | 
| 
 | 
   170  | 
https://regex101.com
  | 
| 
 | 
   171  | 
http://www.regular-expressions.info/tutorial.html
  | 
| 
 | 
   172  | 
  | 
| 
 | 
   173  | 
  | 
| 
 | 
   174  | 
Regex performance benchmark
  | 
| 
 | 
   175  | 
https://rust-leipzig.github.io/regex/2017/03/28/comparison-of-regex-engines/
  | 
| 
 | 
   176  | 
https://github.com/k-takata/Onigmo
  | 
| 
 | 
   177  | 
  | 
| 
 | 
   178  | 
Sulzmann
  | 
| 
 | 
   179  | 
https://github.com/pippijn/dreml/
  | 
| 
 | 
   180  | 
  | 
| 
 | 
   181  | 
  | 
| 
 | 
   182  | 
Scala parser
  | 
| 
 | 
   183  | 
http://enear.github.io/2016/03/31/parser-combinators/
  | 
| 
 | 
   184  | 
  | 
| 
 | 
   185  | 
  | 
| 
 | 
   186  | 
ANTLR megatutorial
  | 
| 
 | 
   187  | 
https://tomassetti.me/antlr-mega-tutorial/
  | 
| 
 | 
   188  | 
  | 
| 
 | 
   189  | 
From regex to LLVM
  | 
| 
 | 
   190  | 
https://www.youtube.com/watch?v=Ukqb6nMjFyk
  | 
| 
 | 
   191  | 
  | 
| 
 | 
   192  | 
  | 
| 
 | 
   193  | 
  | 
| 
 | 
   194  | 
  | 
| 
 | 
   195  | 
Static code analysis
  | 
| 
550
 | 
   196  | 
https://medium.com/@Coder_HarryLee/videos-about-static-code-analysis-7654b40f9a3b
  | 
| 
 | 
   197  | 
  | 
| 
 | 
   198  | 
  | 
| 
 | 
   199  | 
Brainfuck compiler
  | 
| 
 | 
   200  | 
https://github.com/PurpleMyst/bf_compiler
  | 
| 
 | 
   201  | 
https://www.reddit.com/r/programming/comments/8371tk/a_brainfuck_to_llvm_ir_compiler_written_in_python/
  | 
| 
 | 
   202  | 
http://www.wilfred.me.uk/blog/2015/02/21/my-first-llvm-compiler/
  | 
| 
 | 
   203  | 
  | 
| 
 | 
   204  | 
===============================
  | 
| 
 | 
   205  | 
A simple recursive regular expression matcher written in Scala.
  | 
| 
 | 
   206  | 
https://github.com/marconilanna/RegexMatcher
  | 
| 
 | 
   207  | 
  | 
| 
 | 
   208  | 
===============================
  | 
| 
 | 
   209  | 
A neat little tool to build presentations using the Scala REPL
  | 
| 
 | 
   210  | 
https://github.com/marconilanna/REPLesent
  | 
| 
 | 
   211  | 
  | 
| 
 | 
   212  | 
  | 
| 
 | 
   213  | 
======================
  | 
| 
 | 
   214  | 
Minimal Static Single Assignment Form
  | 
| 
 | 
   215  | 
Max Wagner and Denis Lohner
  | 
| 
 | 
   216  | 
  | 
| 
 | 
   217  | 
This formalization is an extension to "Verified Construction of Static Single 
  | 
| 
 | 
   218  | 
Assignment Form". In their work, the authors have shown that Braun et al.'s 
  | 
| 
 | 
   219  | 
static single assignment (SSA) construction algorithm produces minimal SSA form 
  | 
| 
 | 
   220  | 
for input programs with a reducible control flow graph (CFG). However Braun et 
  | 
| 
 | 
   221  | 
al. also proposed an extension to their algorithm that they claim produces 
  | 
| 
 | 
   222  | 
minimal SSA form even for irreducible CFGs.
  | 
| 
 | 
   223  | 
In this formalization we support that claim by giving a mechanized proof.
  | 
| 
 | 
   224  | 
  | 
| 
 | 
   225  | 
As the extension of Braun et al.'s algorithm aims for removing so-called 
  | 
| 
 | 
   226  | 
redundant strongly connected components of phi functions, we show that this 
  | 
| 
 | 
   227  | 
suffices to guarantee minimality according to Cytron et al..
  | 
| 
 | 
   228  | 
  | 
| 
 | 
   229  | 
https://www.isa-afp.org/entries/Minimal_SSA.shtml
  | 
| 
 | 
   230  | 
  | 
| 
 | 
   231  | 
  | 
| 
553
 | 
   232  | 
=========================
  | 
| 
 | 
   233  | 
How Clang compiles a function
  | 
| 
 | 
   234  | 
https://blog.regehr.org/archives/1605  |