Guide to GF Implementation Code Aarne Ranta This document describes the code in GF grammar compiler and interactive environment. It is aimed to cover well the implementation of the forthcoming GF3. In comparison to GF 2.8, this implementation uses - the same source language, GF (only slightly modified) - a different run-time target language, GFCC (instead of GFCM) - a different separate compilation target language (a fragment GF itself, instead of GFC) - a different internal representation of source code Apart from GFCC, the goal of GF3 is simplification and consolidation, rather than innovation. This is shown in particular in the abolition of GFC, and in the streamlined internal source code format. The insight needed to achieve these simplifications would not have been possible (at least for us) without years of experimenting with the more messy formats; those formats moreover grew organically when features were added to the GF language, and the old implementation was thus a result of evolution rather than careful planning. GF3 is planned to be released in an Alpha version in the end of 2007, its sources forming a part of GF release 2.9. There are currently two versions of GF3, as regards executables and ``make`` items: - ``gf3``, using the old internal representation of source language, and integrating a compiler from GF to GFCC and an interpreter of GFCC - ``testgf3``, using the new formats everywhere but implementing the compiler only; this program does not yet yield reasonable output The descriptions below will target the newest ideas, that is, ``textgf3`` whenever it differs from ``gf3``. ==The structure of the code== Code that is not shared with GF 2.8 is located in subdirectories of ``GF/Devel/``. Those subdirectories will, however, be moved one level up. Currently they include - ``GF/Devel/Grammar``: the datatypes and basic operations of source code - ``GF/Devel/Compile``: the phases of compiling GF to GFCC The other directories involved are - ``GF/GFCC``: data types and functionalities of GFCC - ``GF/Infra``: infrastructure utilities for the implementation - ``GF/Data``: datastructures belonging to infrastructure ==The source code implementation== ==The compiler== ==The GFCC interpreter== ==The GF command interpreter==