~~TRANS~~
===== Course on formal languages: Parsing =====
I teach the part of this course related to the [[wp>Chomsky hierarchy]] and [[wp>parsing]]. The materials of this course are distributed under the [[https://en.wikipedia.org/wiki/Creative_Commons_license|Creative Commons Attribution Alone licence]] {{:ccby.png?60}}
.
==== Slides ====
The slides for my part of the course are available {{:parsing.pdf|here}} (in French).
==== Practical assignment ====
The exercises for the practical assignment (in French) can be downloaded {{:parsing-tp.pdf|here}}.
==== Source code ====
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;
{{:parsing.zip|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
==== Toolchain ====
The project relies on [[http://jflex.de/download.html|JFlex]] scanner generator and [[http://web.cecs.pdx.edu/~mpj/jacc/|Jacc]] parser generator. Both tools generate Java code. {{:parsing-workflow.pdf|Here}} is a short overview of a typical workflow.
This toolchain was suggested by [[http://lacl.univ-paris12.fr/gava/actuel.htm|Frédéric Gava]] (section Parsing de fichiers en Java). This page also contains other slides about parsing.