I teach the part of this course related to the Chomsky hierarchy and parsing. The materials of this course are distributed under the Creative Commons Attribution Alone licence .
The slides for my part of the course are available here (in French).
The exercises for the practical assignment (in French) can be downloaded here.
In this course I show a simple interpreter for a language of variable assignments. The variables can either be strings or integer numbers. A program in this language may look as follows:
String var1 = "hello world 1 + 2"; int var2 = 1 - (2 + 3); int var3 = 4 + var2;
This archive contains the complete source code of the interpreter as well as several example programs.
To build the project, run the following commands:
jflex arith.flex jacc arith.jacc javac ArithEval.java
The following command runs just the scanner on the first example:
java Yylex examples/example1.duck
The following command runs the interpreter on the first example:
java ArithEval examples/example1.duck
The project relies on JFlex scanner generator and Jacc parser generator. Both tools generate Java code. Here is a short overview of a typical workflow.
This toolchain was suggested by Frédéric Gava (section Parsing de fichiers en Java). This page also contains other slides about parsing.