forked from GitHub/gf-core
documenting implementation started
This commit is contained in:
66
src/GF/Devel/gf-code.txt
Normal file
66
src/GF/Devel/gf-code.txt
Normal file
@@ -0,0 +1,66 @@
|
||||
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==
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user