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 |