TC-1 Goals

Things to learn during this stage that you should remember:

Basic use of the GNU Build System

Autoconf, Automake. The initial set up of the project will best be done via autoreconf -fvim, but once the project initiated (i.e., configure and the Makefile.in exists) you should depend on make only. The GNU Build System.

Integration into an existing framework

Putting your own code into the provided code base.

Basic C++ classes

The classes Location provide a good start to study foreign C++ classes. Your understanding of them will be controlled, including the operator s.

Writing and debugging a scanner and a parser

Learn to use RE/Flex and Bison. Resolve simple conflicts due to precedences and associativities thanks to directives (e.g., %left etc.) and hard conflicts with loop unrolling. For example, you will need to resolve the important lvalue and array instantiation conflict.

Location Tracking

Understand how to track the location and update it, within the scanner and the parser.

Implementation of a few simple C++ classes

The code for misc::symbol and misc::unique is incomplete.

A first standard container: std::set

The implementation of the misc::unique class relies on std::set.

The Flyweight design pattern

The misc::unique class is an implementation of the Flyweight design pattern.

Version Control System

Using the Git version control system is mandatory. Learn to use its powers carefully to handle working in group and merge from a different upstream remote.