Newer
Older
Overview
========
Everything here is taken from the slides for the "Compiler Construction"
course, i.e. it is directly from Prof. Ronald C. Moore.
Or at least, after all this time, I really don't remember having stolen
this code from somewhere else, but if you find an older copy that looks
similar, please let me know, so I can give credit where credit is due --
or disavow knowledge of that source (as the case may be).
You are in the following subdirectory
** `halfBakedCompiler`
This code take mathematical expressions and builds an abstract syntax tree,
a.k.a. an AST. It then dumps this AST as text.
The parsing is equivalent to that in `interpreter` and `interpret++`
(neighboring directories and predecessor programs).
This version builds on `interpreter++` (and also requires C++17).
See **Chapter 1 Front End Construction**, Slides 22-24
(and please let me know when the inevitable day comes
when these slide numbers are no longer correct).
Building and Running
====================
This version requires a C++17 compatible C++ compiler,
such as newer versions of `g++` or `clang`.
Build the program by running `make`.
In case of doubt, use the voodo command `make clean` and then repeat `make`.
To test the program, run `make tests`. This also illustrates how the intepreter is used.
Alternatively, just run the program with *no* parameters (i.e. simply `./halfbaker`).
It will tell you how it wants to be run (Hint: there are two usages).
Contents (Manifest)
====================
You should find here:
* `ast.cpp` and `ast.h`
Source code for the AST classes -- the data structures built by the parser.
* `lexer.cpp` and `lexer.h`
Source code for the lexer.
* `parser.cpp` and `parser.h`
Source code for the recursive descent parser.
* `main.cpp`
Source code for `main` -- the driver.
* `Makefile`
Used to run `make` (obviously?).
* `tests`
A directory full of test cases. Run `make tests`
(either in directory `tests` or the parent directory)
to run the tests. Not unit tests, rather acceptance tests,
but regression tests all the same.
* `README.md`
This file.
Ronald Moore
https://fbi.h-da.de/personen/ronald-moore/
ronald.moore@h-da.de