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