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