Writing an Interpreter in Object Pascal: Part 1: Lexical and Basic Syntax Analysis

Writing an Interpreter in Object Pascal: Part 1: Lexical and Basic Syntax Analysis

06/01/2019

Herbert Sauro

This is part 1 of a series that will show you how to write an interactive interpreter in Object Pascal. Part 1 of the series will cover introductory material including a description of the language we’ll create, a full lexical analyzer for the language, how to use DUnitX for unit testing, and an introduction to the essential concepts in syntax analysis, recursive descent, grammar, and EBNF. Along the way, we’ll create a simple REPL, give a detailed discussion of how to parse expressions and build a simple interactive calculator to illustrate the theory. The book provides fully working code and explains in plain English how the code works and why certain decisions were made, including alternative designs. The book makes liberal use of code throughout the book chapters. Everything is done without the help of third-party tools such as Yacc, ANTLR or Flex. All you need is a standard installation of Free Pascal or Embarcaderos’s Delphi (including the free community edition).

The text is geared to hobbyists and midlevel developers who need an accessible introduction to lexical analysis and parsing. It’s also for students starting out in compiler and interpreter design and need something more digestible.

All source code is open source under Apache 2.0 and available from Github.

Writing an Interpreter in Object Pascal: Part 1: The Runtime System

Writing an Interpreter in Object Pascal: Part 1: The Runtime System

12/03/2020

Herbert Sauro
This is part 2 of a series that will show you how to write an interactive interpreter in Object Pascal. Part 2 describes the building of the first version of a virtual machine together with a simple assembler. The book combines the virtual machine with the syntax checker for the Rhodus language. Intermediate code is generated directly as the source code is parsed. At the end of Part II, the reader will be a very serviceable interpreter that supports user-defined functions, built-in functions, string, and list support together with a range of looping constructs. A simple console application is provided to allow users to exercise the interpreter. The book provides fully working open-source code (also deposited at Github) and explains in plain English how the code works and why certain decisions were made. The book makes liberal use of code throughout the book chapters. Everything is done without the help of third-party tools. All you need is a standard installation of Free Pascal or Embarcaderos's excellent Delphi (including the free community edition). The text is geared to hobbyists and midlevel developers who need an easy introduction to building a simple virtual machine and code generator. The book is also for students starting out in compiler and interpreter design and need something more digestible before getting immersed in compiler theory.