diff --git a/doc/gf-reference.html b/doc/gf-reference.html index f019a383d..c5c108760 100644 --- a/doc/gf-reference.html +++ b/doc/gf-reference.html @@ -7,45 +7,48 @@

GF Quick Reference

Aarne Ranta
-Wed Mar 29 13:21:48 2006 +Tue Apr 4 09:41:30 2006


- +


-This is a quick reference on GF grammars. +This is a quick reference on GF grammars. It aims to +cover all forms of expression available when writing +grammars. It assumes basic knowledge of GF, which +can be acquired from the +GF Tutorial. Help on GF commands is obtained on line by the -help command (h). +help command (help), and help on invoking +GF with (gf -help).

-

A Quick Example

+

A complete example

-This is a complete example, dividing a grammar -into three files. +This is a complete example of a GF grammar divided +into three modules in files. The grammar recognizes the +phrases one pizza and two pizzas.

-abstract, concrete, and resource. -

-

-File Order.gf +File Order.gf:

   abstract Order = {
@@ -83,7 +86,7 @@ File Res.gf:
   oper regNoun : Str -> {s : Num => Str} =
     \dog -> {s = table {
       Sg => dog ;
-      Pl => dog + "s"
+      _  => dog + "s"
       }
     } ;
   }
@@ -99,7 +102,7 @@ To use this example, do
 

-

Modules and files

+

Modules and files

One module per file. File named Foo.gf contains module named @@ -163,7 +166,7 @@ Comments have the forms

   -- till the end of line
   {- any number of lines between -}
-  --# reserved for compiler pragmas
+  --# used for compiler pragmas
 

A concrete can be opened like a resource. @@ -181,7 +184,7 @@ An abstract can be opened like an interface. Any concrete of it then works as an instance.

-

Judgements

+

Judgements

   cat C               -- declare category C
   cat C (x:A)(y:B x)  -- dependent category C
@@ -225,7 +228,7 @@ Judgements can also share RHS:
 

-

Types

+

Types

Abstract syntax (in fun):

@@ -259,7 +262,7 @@ Concrete syntax (in lincat): Resource (in oper): all those of concrete, plus

-  Tok              -- tokens (subset of Str)
+  Tok              -- tokens (subtype of Str)
   A -> B           -- functions from A to B
   Int              -- integers
   Strs             -- list of prefixes (for pre)
@@ -268,11 +271,11 @@ Resource (in oper): all those of concrete, plus
 

As parameter types, one can use any finite type: -param constants P, +P defined in param P, Ints n, and record types of parameter types.

-

Expressions

+

Expressions

Syntax trees = full function applications

@@ -286,7 +289,7 @@ Syntax trees = full function applications Higher-Order Abstract syntax (HOAS): functions as arguments:

-  F a (\y -> b)      -- : C if a : A, b : B (x : A), 
+  F a (\x -> c)      -- : C if a : A, c : C (x : B), 
                         fun F : A -> (B -> C) -> C
 

@@ -320,7 +323,7 @@ Tables _ => "mouse" -- wildcard pattern } table { - n => regn n "cat" ;-- variable pattern + n => regn n "cat" -- variable pattern } table Num {...} -- table given with arg. type table ["ox"; "oxen"] -- table as course of values @@ -336,7 +339,6 @@ Records

   {s = "Liz"; g = Fem} -- record in full form
   {s,t = "et"}         -- same as {s = "et";t= "et"}
-  
   {s = "Liz"} **       -- record extension: same as
     {g = Fem}             {s = "Liz" ; g = Fem}
   
@@ -392,14 +394,15 @@ Example:
 

-

Pattern matching

+

Pattern matching

These patterns can be used in branches of table and -case expressions. +case expressions. Patterns are matched in the order in +which they appear in the grammar.

   C                 -- atomic param constructor
-  C p q             -- param constr. appl- to patterns
+  C p q             -- param constr. applied to patterns
   x                 -- variable, matches anything
   _                 -- wildcard, matches anything
   "foo"             -- string
@@ -414,7 +417,7 @@ These patterns can be used in branches of table and
 

-

Sample library functions

+

Sample library functions

   -- lib/prelude/Predef.gf
   drop   : Int -> Tok -> Tok   -- drop prefix of length
@@ -446,7 +449,7 @@ These patterns can be used in branches of table and
 

-

Flags

+

Flags

Flags can appear, with growing priority,

@@ -480,13 +483,13 @@ Some common flags used in grammars: optimize=noexpand for resource, if =all too big

-For the full set of values for flag, -use on-line h -flag. +For the full set of values for FLAG, +use on-line h -FLAG.

-

File paths

+

File paths

-Colon-separated lists of directories tried in the +Colon-separated lists of directories searched in the given order:

@@ -499,12 +502,12 @@ when invoked, or as flag to the i command.
 The prefix --# is used only in files.
 

-If the variabls GF_LIB_PATH is defined, its +If the environment variabls GF_LIB_PATH is defined, its value is automatically prefixed to each directory to extend the original search path.

-

Alternative grammar formats

+

Alternative grammar formats

Old GF (before GF 2.0): all judgements in any kinds of modules, @@ -530,7 +533,7 @@ Rules must be one per line. The RHS can be empty.

where the RHS is a regular expression of categories -and quoted tokens: "foo", T U, T|U, T*, T+, T?, or empty. +and quoted tokens: "foo", CAT, T U, T|U, T*, T+, T?, or empty. Rule labels are generated automatically.

@@ -560,7 +563,7 @@ are preprocessed by using a parser given by the flag and the result is written to foo.gf.

-

References

+

References

GF Homepage

diff --git a/doc/gf-reference.pdf b/doc/gf-reference.pdf index 4a43a8635..6eed355b8 100644 Binary files a/doc/gf-reference.pdf and b/doc/gf-reference.pdf differ diff --git a/doc/gf-reference.txt b/doc/gf-reference.txt index 16e7b2378..d0c11ec34 100644 --- a/doc/gf-reference.txt +++ b/doc/gf-reference.txt @@ -9,19 +9,23 @@ Aarne Ranta %!target:html -This is a quick reference on GF grammars. +This is a quick reference on GF grammars. It aims to +cover all forms of expression available when writing +grammars. It assumes basic knowledge of GF, which +can be acquired from the +[GF Tutorial http://www.cs.chalmers.se/~aarne/GF/doc/tutorial/]. Help on GF commands is obtained on line by the -help command (``h``). +help command (``help``), and help on invoking +GF with (``gf -help``). -==A Quick Example== +===A complete example=== -This is a complete example, dividing a grammar -into three files. +This is a complete example of a GF grammar divided +into three modules in files. The grammar recognizes the +phrases //one pizza// and //two pizzas//. -``abstract``, ``concrete``, and ``resource``. - -File ``Order.gf`` +File ``Order.gf``: ``` abstract Order = { cat @@ -54,7 +58,7 @@ param Num = Sg | Pl ; oper regNoun : Str -> {s : Num => Str} = \dog -> {s = table { Sg => dog ; - Pl => dog + "s" + _ => dog + "s" } } ; } @@ -69,7 +73,7 @@ To use this example, do -==Modules and files== +===Modules and files=== One module per file. File named ``Foo.gf`` contains module named @@ -122,7 +126,7 @@ Comments have the forms ``` -- till the end of line {- any number of lines between -} ---# reserved for compiler pragmas +--# used for compiler pragmas ``` A ``concrete`` can be opened like a ``resource``. It is translated as follows: @@ -138,7 +142,7 @@ Any ``concrete`` of it then works as an ``instance``. -==Judgements== +===Judgements=== ``` cat C -- declare category C @@ -179,7 +183,7 @@ fun f,g : A -- same as fun f : A ; g : A ``` -==Types== +===Types=== Abstract syntax (in ``fun``): ``` @@ -208,7 +212,7 @@ Ints n -- type of n first integers ``` Resource (in ``oper``): all those of concrete, plus ``` -Tok -- tokens (subset of Str) +Tok -- tokens (subtype of Str) A -> B -- functions from A to B Int -- integers Strs -- list of prefixes (for pre) @@ -216,12 +220,12 @@ PType -- parameter type Type -- any type ``` As parameter types, one can use any finite type: -``param`` constants ``P``, +``P`` defined in ``param P``, ``Ints n``, and record types of parameter types. -==Expressions== +===Expressions=== Syntax trees = full function applications ``` @@ -232,7 +236,7 @@ f a b -- : C if fun f : A -> B -> C ``` Higher-Order Abstract syntax (HOAS): functions as arguments: ``` -F a (\y -> b) -- : C if a : A, b : B (x : A), +F a (\x -> c) -- : C if a : A, c : C (x : B), fun F : A -> (B -> C) -> C ``` Tokens and token lists @@ -260,7 +264,7 @@ table { -- by pattern matching _ => "mouse" -- wildcard pattern } table { - n => regn n "cat" ;-- variable pattern + n => regn n "cat" -- variable pattern } table Num {...} -- table given with arg. type table ["ox"; "oxen"] -- table as course of values @@ -274,7 +278,6 @@ Records ``` {s = "Liz"; g = Fem} -- record in full form {s,t = "et"} -- same as {s = "et";t= "et"} - {s = "Liz"} ** -- record extension: same as {g = Fem} {s = "Liz" ; g = Fem} @@ -318,13 +321,14 @@ lin F A B = {s = ["for all"] ++ A.s ++ B.$1 ++ B.s} ``` -==Pattern matching== +===Pattern matching=== These patterns can be used in branches of ``table`` and -``case`` expressions. +``case`` expressions. Patterns are matched in the order in +which they appear in the grammar. ``` C -- atomic param constructor -C p q -- param constr. appl- to patterns +C p q -- param constr. applied to patterns x -- variable, matches anything _ -- wildcard, matches anything "foo" -- string @@ -338,7 +342,7 @@ p + "s" -- sequence of two string patterns p* -- repetition of a string pattern ``` -==Sample library functions== +===Sample library functions=== ``` -- lib/prelude/Predef.gf @@ -371,7 +375,7 @@ oper ``` -==Flags== +===Flags=== Flags can appear, with growing priority, - in files, judgement ``flags`` and without dash (``-``) @@ -400,14 +404,14 @@ optimize=values good for lexicon concrete optimize=all usually good for resource optimize=noexpand for resource, if =all too big ``` -For the full set of values for ``flag``, -use on-line ``h -flag``. +For the full set of values for ``FLAG``, +use on-line ``h -FLAG``. -==File paths== +===File paths=== -Colon-separated lists of directories tried in the +Colon-separated lists of directories searched in the given order: ``` --# -path=.:../abstract:../common:prelude @@ -417,12 +421,12 @@ first line in the top file, as flag to ``gf`` when invoked, or as flag to the ``i`` command. The prefix ``--#`` is used only in files. -If the variabls ``GF_LIB_PATH`` is defined, its +If the environment variabls ``GF_LIB_PATH`` is defined, its value is automatically prefixed to each directory to extend the original search path. -==Alternative grammar formats== +===Alternative grammar formats=== **Old GF** (before GF 2.0): all judgements in any kinds of modules, @@ -442,7 +446,7 @@ Rules must be one per line. The RHS can be empty. S ::= (NP+ ("is" | "was") AP | V NP*) ; ``` where the RHS is a regular expression of categories -and quoted tokens: ``"foo", T U, T|U, T*, T+, T?``, or empty. +and quoted tokens: ``"foo", CAT, T U, T|U, T*, T+, T?``, or empty. Rule labels are generated automatically. @@ -465,7 +469,7 @@ are preprocessed by using a parser given by the flag and the result is written to ``foo.gf``. -==References== +===References=== [GF Homepage http://www.cs.chalmers.se/~aarne/GF/]