<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Build a Compiler with Mica on Mica Development UG</title><link>https://mica-dev.com/learn/build-a-compiler/</link><description>Recent content in Build a Compiler with Mica on Mica Development UG</description><image><title>Mica Development UG</title><url>https://mica-dev.com/Mica%20Development%20Web.jpeg</url><link>https://mica-dev.com/Mica%20Development%20Web.jpeg</link></image><generator>Hugo</generator><language>en</language><atom:link href="https://mica-dev.com/learn/build-a-compiler/index.xml" rel="self" type="application/rss+xml"/><item><title>1 — Why PL/0</title><link>https://mica-dev.com/learn/build-a-compiler/why-pl0/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mica-dev.com/learn/build-a-compiler/why-pl0/</guid><description>What a compiler actually is, the entire PL/0 language on one page, and why the smallest complete compiler ever published is still the best one to learn from.</description></item><item><title>2 — Get it running</title><link>https://mica-dev.com/learn/build-a-compiler/get-it-running/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mica-dev.com/learn/build-a-compiler/get-it-running/</guid><description>From nothing to two working PL/0 compilers, a p-code listing, and a native executable you compiled yourself — including the backend dependency and what its licence says.</description></item><item><title>3 — The shape of a compiler</title><link>https://mica-dev.com/learn/build-a-compiler/the-shape/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mica-dev.com/learn/build-a-compiler/the-shape/</guid><description>The seven parts of a working compiler, why they are ordered the way they are, and what front end and back end actually mean once you can see both.</description></item><item><title>4 — The scanner</title><link>https://mica-dev.com/learn/build-a-compiler/the-scanner/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mica-dev.com/learn/build-a-compiler/the-scanner/</guid><description>Turning characters into words: the vocabulary, the lookup that finds reserved words, and why a compiler records a position for everything it reads.</description></item><item><title>5 — The symbol table</title><link>https://mica-dev.com/learn/build-a-compiler/the-symbol-table/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mica-dev.com/learn/build-a-compiler/the-symbol-table/</guid><description>How a compiler answers what does this name mean here — scope, nesting and shadowing, in one array and forty lines of code.</description></item><item><title>6 — The parser</title><link>https://mica-dev.com/learn/build-a-compiler/the-parser/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mica-dev.com/learn/build-a-compiler/the-parser/</guid><description>Recursive descent: how a grammar becomes a program, where operator precedence actually lives, and how a compiler reports five real mistakes instead of fifty phantoms.</description></item><item><title>7 — The seam</title><link>https://mica-dev.com/learn/build-a-compiler/the-seam/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mica-dev.com/learn/build-a-compiler/the-seam/</guid><description>One parse driving two different back ends: the sixteen operations that make it possible, and what an interface costs in a language with function pointers and in one without.</description></item><item><title>8 — The oracle</title><link>https://mica-dev.com/learn/build-a-compiler/the-oracle/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mica-dev.com/learn/build-a-compiler/the-oracle/</guid><description>Wirth&amp;#39;s stack machine: eight instructions, the activation record, and the static link that makes a procedure able to read a variable declared two levels out.</description></item><item><title>9 — The Dragon road</title><link>https://mica-dev.com/learn/build-a-compiler/the-dragon-road/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mica-dev.com/learn/build-a-compiler/the-dragon-road/</guid><description>The second back end: emitting a real intermediate language, what an IL is for, and the two structural problems that stand between a parse and a production code generator.</description></item><item><title>10 — Proving it</title><link>https://mica-dev.com/learn/build-a-compiler/proving-it/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mica-dev.com/learn/build-a-compiler/proving-it/</guid><description>How two compilers are made to check each other, why a slow reference implementation is worth keeping, and what honest testing of a compiler looks like.</description></item><item><title>11 — Exercises</title><link>https://mica-dev.com/learn/build-a-compiler/exercises/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mica-dev.com/learn/build-a-compiler/exercises/</guid><description>Change the language yourself — nine exercises from a ten-minute warm-up to a genuine piece of compiler engineering, each with the hard part marked.</description></item><item><title>Appendix A — Wirth's original PL/0</title><link>https://mica-dev.com/learn/build-a-compiler/appendix-wirth/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mica-dev.com/learn/build-a-compiler/appendix-wirth/</guid><description>The 1975 PL/0 compiler in Pascal, complete, as Niklaus Wirth published it — with a guide to what to look at and a map from his procedures to the ones in this series.</description></item></channel></rss>