# Using the GF resource grammar library in multilingual grammars: an example

Author: Aarne Ranta <aarne (at) cs.chalmers.se>
Last update: Fri Dec 16 14:30:57 2005

- Quick try
- Structure
- Resource library version

This document describes the contents of the directory `GF/examples/mp3`.

This directory contains a small example of a dialogue system grammar built by using the GF resource grammar library. Its sole purpose is to demonstrate this usage, i.e.

- how the resource API is used to define concrete syntax

- how to divide the grammar into modules

Thus it is not intended to be (even a part of) a really useful system.

## Quick try

To try out the grammar, do for example

        gf mk3.gfcm                                 -- start GF

        > gr | l -multi                             -- random generate

        > p -tr "which song is played ?" | l -multi -- parse and translate

        > gt -tr | l -lang=MP3Swe                   -- generate Swedish "treebank"

        > si -tr | p | l -multi                     -- translate speech input
          [say:] I want to play Yesterday

The last command only works if you have installed ATK and compiled GF version 14/12/2005 or later.

## Structure

The directory consists of the following grammars:

- `MP3.gf` the main abstract syntax
- `MP3I.gf` functor implementation of the main abstract
- `MP3Eng.gf` English instantiation of the functor
- `MP3Fin.gf` Finnish instantiation of the functor (buggy)
- `MP3Fre.gf` French instantiation of the functor
- `MP3Ger.gf` German instantiation of the functor
- `MP3Swe.gf` Swedish instantiation of the functor
- `Lexicon.gf` the interface on which `MP3I.gf` depends
- `LexiconEng.gf` English instance of the interface
- `LexiconFin.gf` Finnish instance of the interface
- `LexiconFre.gf` French instance of the interface
- `LexiconGer.gf` German instance of the interface
- `LexiconSwe.gf` Swedish instance of the interface

The main linguistic content is in the functor `MP3I` and the instances of the `Lexicon` interface.

The way in which the implementation is divided to a functor and an interface depending on it should work as a model for building resource grammar applications in general.

In order to compile the grammars from source, you must set the environment variable `GF_LIB_PATH` to point at the root of your GF library, e.g. in the bash shell,

      export GF_LIB_PATH=/usr/local/lib/GF/

## Resource library version

The example builds on resource v. 0.6. The reason for not building on a later version is that German is not yet implemented for them. The example will probably be migrated to v. 1.0 soon. The new resource version will fix the bugs in the Finnish implementation.