mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-13 14:59:32 -06:00
67 lines
2.3 KiB
Plaintext
67 lines
2.3 KiB
Plaintext
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==
|
|
|
|
|
|
|
|
|
|
|
|
|