Course overview In recent compilers implementation, it became popular to translate from one high-level language to another high-level language. Examples might be desugaring new version of JavaScript to an older version of JavaScript, or languages like TypeScript, etc. Such high-level compilers are known today as transpilers, and what is the topic of our course. It [ ]
Course overview How programming languages work under the hood? What s the difference between compiler and interpreter? What is a virtual machine, and JIT-compiler? And what about the difference between functional and imperative programming? There are so many questions when it comes to implementing a programming language! The problem with compiler classes in school is such [ ]
Course overview Untyped programs are often prone to errors, runtime exceptions, and can make debugging much harder. That s why many production languages implement a static typechecker an extra module, which is aimed to increase programs safety and make development simpler. Type checking or type inference? What is Type theory and Type judgements? Is my [ ]
Building an Interpreter from scratch Building a Transpiler from scratch Building a Parser from scratch Building a Typechecker from scratch Building a Virtual Machine from scratch Programming Language with LLVM Parsing Algorithms Garbage Collection Algorithms Automata Theory: inside a RegExp machine Recommended literature Many books on engineering a compiler usually start from the topic of [ ]
Course overview How programming languages work under the hood? What s the difference between compiler and interpreter? What is a virtual machine, and JIT-compiler? And what about the difference between functional and imperative programming? There are so many questions when it comes to implementing a programming language! The problem with compiler classes in school is such [ ]
Parsing lookaheads Property access: dot and square brackets Primitives and Objects Dynamic objects Prototypes This value Conclusion Level: introductory Take a look at the following JS code snippet: Being small, this one-liner describes many major topics from the mysterious JavaScript language, which we re about to cover in today s note. Note: if you d like to take [ ]
Course overview Parsing or syntactic analysis is one of the first stages in designing and implementing a compiler. A well-designed syntax of your programming language is a big motivation why users would prefer and choose exactly your language. Note: this is a practical class on building a manual Recursive-descent parser. If you re interested in parsing [ ]
Course overview Parsing or syntactic analysis is one of the first stages in designing and implementing a compiler. A well-designed syntax of your programming language is a big motivation why users would prefer and choose exactly your language. Note: this is a class on theory of parsers and parsing algorithms. If you re interested in manual [ ]
Video lecture Tracing vs. Direct collectors C++ specifics Exposed pointers semantics Pointer or number? GC roots Implementation Traceable objects Object header Object graph The garbage Custom allocator Mark phase Sweep phase Obtaining pointers Determining roots Conclusion In this articles we re going to implement a Mark-Sweep garbage collector in C++. This is the 9th lecture from [ ]
Course overview How programming languages work under the hood? What s the difference between compiler and interpreter? What is a virtual machine, and JIT-compiler? And what about the difference between functional and imperative programming? There are so many questions when it comes to implementing a programming language! The problem with compiler classes in school is they [ ]