summaryrefslogtreecommitdiff
path: root/doc/gf-history.html
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2008-06-27 11:32:49 +0000
committeraarne <aarne@cs.chalmers.se>2008-06-27 11:32:49 +0000
commit64d2a981a99c8f48f85c4efd0cecd1db1e5ce93a (patch)
tree8ec777785ae6b99e4ade6ab7c97a7653317b82ad /doc/gf-history.html
parent032531c6a690edbb377ff11ee2a743a30c5bf500 (diff)
more rm in doc
Diffstat (limited to 'doc/gf-history.html')
-rw-r--r--doc/gf-history.html865
1 files changed, 0 insertions, 865 deletions
diff --git a/doc/gf-history.html b/doc/gf-history.html
deleted file mode 100644
index 3fe8153e2..000000000
--- a/doc/gf-history.html
+++ /dev/null
@@ -1,865 +0,0 @@
-<html>
-<body bgcolor="#FFFFFF" text="#000000" >
-<center>
-<IMG SRC="gf-logo.gif">
-
-
-<h1>Grammatical Framework History of Changes</h1>
-
-
-
-Changes in functionality since May 17, 2005, release of GF Version 2.2
-
-</center>
-
-<p>
-
-25/6 (BB)
-Added new speech recognition grammar printers for non-recursive SRGS grammars,
-as used by Nuance Recognizer 9.0. Try <tt>pg -printer=srgs_xml_non_rec</tt>
-or <tt>pg -printer=srgs_abnf_non_rec</tt>.
-
-<p>
-
-19/6 (AR)
-Extended the functor syntax (<tt>with</tt> modules) so that the functor can have
-restricted import and a module body (whose function is normally to complete restricted
-import). Thus the following format is now possible:
-<pre>
- concrete C of A = E ** CI - [f,g] with (...) ** open R in {...}
-</pre>
-At the same time, the possibility of an empty module body was added to other modules
-for symmetry. This can be useful for "proxy modules" that just collect other modules
-without adding anything, e.g.
-<pre>
- abstract Math = Arithmetic, Geometry ;
-</pre>
-
-
-<p>
-
-
-18/6 (AR)
-Added a warning for clashing constants. A constant coming from multiple opened modules
-was interpreted as "the first" found by the compiler, which was a source of difficult
-errors. Clashing is officially forbidden, but we chose to give a warning instead of
-raising an error to begin with (in version 2.8).
-
-<p>
-
-30/1/2007 (AR)
-Semantics of variants fixed for complex types. Officially, it was only
-defined for basic types (Str and parameters). When used for records, results were
-multiplicative, which was nor usable. But now variants should work for any type.
-
-<p>
-
-<hr>
-
-<p>
-
-22/12 (AR) <b>Release of GF version 2.7</b>.
-
-<p>
-
-21/12 (AR)
-Overloading rules for GF version 2.7:
-<ol>
-<li> If a unique instance is found by exact match with argument types,
- that instance is used.
-<li> Otherwise, if exact match with the expected value type gives a
- uniques instance, that instance is used.
-<li> Otherwise, if among possible instances only one returns a non-function
- type, that instance is used, but a warning is issued.
-<li> Otherwise, an error results, and the list of possible instances is shown.
-</ol>
-These rules are still experimental, but all future developments will guarantee
-that their type-correct use will work. Rule (3) is only needed because the
-current type checker does not always know an expected type. It can give
-an incorrect result which is captured later in the compilation. To be noticed,
-in particular, is that exact match is required. Match by subtyping will be
-investigated later.
-
-<p>
-
-21/12 (BB) Java Speech Grammar Format with SISR tags can now be generated.
-Use <tt>pg -printer=jsgf_sisr_old</tt>. The SISR tags are in Working Draft
-20030401 format, which is supported by the OptimTALK VoiceXML interpreter
-and the IBM XHTML+Voice implementation use by the Opera web browser.
-
-<p>
-
-21/12 (BB) <a name="voicexml">
-VoiceXML 2.0 dialog systems can now be generated from GF grammars.
-Use <tt>pg -printer=vxml</tt>.
-
-<p>
-
-21/12 (BB) <a name="javascript">
-JavaScript code for linearization and type annotation can now be
-generated from a multilingual GF grammar. Use <tt>pm -printer=js</tt>.
-
-
-<p>
-
-5/12 (BB) <a name="gfcc2c">
-A new tool for generating C linearization libraries
-from a GFCC file. <tt>make gfcc2c</tt> in <tt>src</tt>
-compiles the tool. The generated
-code includes header files in <tt>lib/c</tt> and should be linked
-against <tt>libgfcc.a</tt> in <tt>lib/c</tt>. For an example of
-using the generated code, see <tt>src/tools/c/examples/bronzeage</tt>.
-<tt>make</tt> in that directory generates a GFCC file, then generates
-C code from that, and then compiles a program <tt>bronzeage-test</tt>.
-The <tt>main</tt> function for that program is defined in
-<tt>bronzeage-test.c</tt>.
-
-
-<p>
-
-20/11 (AR) Type error messages in concrete syntax are printed with a
-heuristic where a type of the form <tt>{... ; lock_C : {} ; ...}</tt>
-is printed as <tt>C</tt>. This gives more readable error messages, but
-can produce wrong results if lock fields are hand-written or if subtypes
-of lock-fielded categories are used.
-
-<p>
-
-17/11 (AR) <a name="overloading">
-Operation overloading: an <tt>oper</tt> can have many types,
-from which one is picked at compile time. The types must have different
-argument lists. Exact match with the arguments given to the <tt>oper</tt>
-is required. An example is given in
-<a href="../lib/resource-1.0/doc/gfdoc/Constructors.gf"><tt>Constructors.gf</tt></a>.
-The purpose of overloading is to make libraries easier to use, since
-only one name for each grammatical operation is needed: predication, modification,
-coordination, etc. The concrete syntax is, at this experimental level, not
-extended but relies on using a record with the function name repeated
-as label name (see the example). The treatment of overloading is inspired
-by C++, and was first suggested by Björn Nringert.
-
-<p>
-
-
-3/10 (AR) A new low-level format <tt>gfcc</tt> ("Canonical Canonical GF").
-It is going to replace the <tt>gfc</tt> format later, but is already now
-an efficient format for multilingual generation.
-See <a href="../src/GF/Canon/GFCC/doc/gfcc.html">GFCC document</a>
-for more information.
-
-<p>
-
-1/9 (AR) New way for managing errors in grammar compilation:
-<pre>
- Predef.Error : Type ;
- Predef.error : Str -> Predef.Error ;
-</pre>
-Denotationally, <tt>Error</tt> is the empty type and thus a
-subtype of any other types: it can be used anywhere. But the
-<tt>error</tt> function is not canonical. Hence the compilation
-is interrupted when <tt>(error s)</tt> is translated to GFC, and
-the message <tt>s</tt> is emitted. An example use is given in
-<tt>english/ParadigmsEng.gf</tt>:
-<pre>
- regDuplV : Str -> V ;
- regDuplV fit =
- case last fit of {
- ("a" | "e" | "i" | "o" | "u" | "y") =>
- Predef.error (["final duplication makes no sense for"] ++ fit) ;
- t =>
- let fitt = fit + t in
- mkV fit (fit + "s") (fitt + "ed") (fitt + "ed") (fitt + "ing")
- } ;
-</pre>
-This function thus cannot be applied to a stem ending with a vowel,
-which is exactly what we want. In future, it may be good to add similar
-checks to all morphological paradigms in the resource.
-
-
-<p>
-
-16/8 (AR) New generation algorithm: slower but works with less
-memory. Default of <tt>gt</tt>; use <tt>gt -mem</tt> for the old
-algorithm. The new option <tt>gt -all</tt> lazily generates all
-trees until interrupted. It cannot be piped to other GF commands,
-hence use <tt>gt -all -lin</tt> to print out linearized strings
-rather than trees.
-
-<hr>
-
-
-22/6 (AR) <b>Release of GF version 2.6</b>.
-
-<p>
-
-20/6 (AR) The FCFG parser is know the default, as it even handles literals.
-The old default can be selected by <tt>p -old</tt>. Since
-FCFG does not support variable bindings, <tt>-old</tt> is automatically
-selected if the grammar has bindings - and unless the <tt>-fcfg</tt> flag
-is used.
-
-<p>
-
-17/6 (AR) The FCFG parser is now the recommended method for parsing
-heavy grammars such as the resource grammars. It does not yet support
-literals and variable bindings.
-
-<p>
-
-1/6 (AR) Added the FCFG parser written by Krasimir Angelov. Invoked by
-<tt>p -fcfg</tt>. This parser is as general as MCFG but faster.
-It needs more testing and debugging.
-
-<p>
-
-1/6 (AR) The command <tt>r = reload</tt> repeats the latest
-<tt>i = import</tt> command.
-
-<p>
-
-30/5 (AR) It is now possible to use the flags <tt>-all, -table, -record</tt>
-in combination with <tt>l -multi</tt>, and also with <tt>tb</tt>.
-
-<p>
-
-18/5 (AR) Introduced a wordlist format <tt>gfwl</tt> for
-quick creation of language exercises and (in future) multilingual lexica.
-The format is now very simple:
-<pre>
- # Svenska - Franska - Finska
- berg - montagne - vuori
- klättra - grimper / escalader - kiivetä / kiipeillä
-</pre>
-but can be extended to cover paradigm functions in addition to just
-words.
-
-<p>
-
-3/4 (AR) The predefined abstract syntax type <tt>Int</tt> now has two
-inherent parameters indicating its last digit and its size. The (hard-coded)
-linearization type is
-<pre>
- {s : Str ; size : Predef.Ints 1 ; last : Predef.Ints 9}
-</pre>
-The <tt>size</tt> field has value <tt>1</tt> for integers greater than 9, and
-value <tt>0</tt> for other integers (which are never negative). This parameter can
-be used e.g. in calculating number agreement,
-<pre>
- Risala i = {s = i.s ++ table (Predef.Ints 1 * Predef.Ints 9) {
- &lt;0,1&gt; =&gt; "risalah" ;
- &lt;0,2&gt; =&gt; "risalatan" ;
- &lt;0,_&gt; | &lt;1,0&gt; =&gt; "rasail" ;
- _ =&gt; "risalah"
- } ! &lt;i.size,i.last&gt;
- } ;
-</pre>
-Notice that the table has to be typed explicitly for <tt>Ints k</tt>,
-because type inference would otherwise return <tt>Int</tt> and therefore
-fail to expand the table.
-
-
-<p>
-
-31/3 (AR) Added flags and options to some commands, to help generation:
-<ul>
-<li> <tt>gt -noexpand=NP,V,TV</tt> does not expand these categories,
-but only generates metavariables for them.
-<li> <tt>gt -doexpand=NP,V,TV</tt> only expands these categories,
-and generates metavariables for others.
-<li> <tt>gr -cf</tt> has the same flags.
-<li> <tt>l -mark=metacat</tt> marks the metavariables with their categories.
-<li> <tt>p -fail</tt> marks with <tt>#FAIL</tt> strings that have no parse.
-<li> <tt>p -ambiguous</tt> marks as <tt>#AMBIGUOUS</tt>
- strings that have more than one parse.
-</ul>
-
-<p>
-
-<hr>
-
-21/3/2006 <b>Release of GF 2.5</b>.
-
-<p>
-
-16/3 (AR) Added two flag values to <tt>pt -transform=X</tt>:
-<tt>nodup</tt> which excludes terms where a constant is duplicated,
-and
-<tt>nodupatom</tt> which excludes terms where an atomic constant is duplicated.
-The latter, in particular, is useful as a filter in generation:
-<pre>
- gt -cat=Cl | pt -transform=nodupatom
-</pre>
-This gives a corpus where words don't (usually) occur twice in the same clause.
-
-<p>
-
-6/3 (AR) Generalized the <tt>gfe</tt> file format in two ways:
-<ol>
-<li> Use the real grammar parser, hence <tt>(in M.C "foo")</tt> expressions
- may occur anywhere. But the <i>ad hoc</i> word substitution syntax is
- abandoned: ordinary <tt>let</tt> (and <tt>where</tt>) expressions
- can now be used instead.
-<li> The resource may now be a treebank, not just a grammar. Parsing
- is thus replaced by treebank lookup, which in most cases is faster.
-</ol>
-A minor novelty is that the <tt>--# -resource=FILE</tt> flag can now be
-relative to <tt>GF_LIB_PATH</tt>, both for grammars and treebanks.
-The flag <tt> --# -treebank=IDENT</tt> gives the language whose treebank
-entries are used, in case of a multilingual treebank.
-
-<p>
-
-4/3 (AR) Added command <tt>use_treebank = ut</tt> for lookup in a treebank.
-This command can be used as a fast substitute for parsing, but also as a
-way to browse treebanks.
-<pre>
- ut "He adds this to that" | l -multi -- use treebank lookup as parser in translation
- ut -assocs | grep "ComplV2" -- show all associations with ComplV2
-</pre>
-
-<p>
-
-3/3 (AR) Added option <tt>-treebank</tt> to the <tt>i</tt> command. This adds treebanks to
-the shell state. The possible file formats are
-<ol>
-<li> XML file with a multilingual treebank, produced by <tt>tb -xml</tt>
-<li> tab-organized text file with a unilingual treebank, produced by <tt>ut -assocs</tt>
-</ol>
-Notice that the treebanks in shell state are unilingual, and have strings as keys.
-Multilingual treebanks have trees as keys. In case 1, one unilingual treebank per
-language is built in the shell state.
-
-
-<p>
-
-1/3 (AR) Added option <tt>-trees</tt> to the command <tt>tree_bank = tb</tt>.
-By this option, the command just returns the trees in the treebank. It can be
-used for producing new treebanks with the same trees:
-<pre>
- rf old.xml | tb -trees | tb -xml | wf new.xml
-</pre>
-Recall that only treebanks in the XML format can be read with the <tt>-trees</tt>
-and <tt>-c</tt> flags.
-
-<p>
-
-1/3 (AR) A <tt>.gfe</tt> file can have a <tt>--# -path=PATH</tt> on its
-second line. The file given on the first line (<tt>--# -resource=FILE</tt>)
-is then read w.r.t. this path. This is useful if the resource file has
-no path itself, which happens when it is gfc-only.
-
-<p>
-
-25/2 (AR) The flag <tt>preproc</tt> of the <tt>i</tt> command (and thereby
-to <tt>gf</tt> itself) causes GF to apply a preprocessor to each sourcefile
-it reads.
-
-<p>
-
-8/2 (AR) The command <tt>tb = tree_bank</tt> for creating and testing against
-multilingual treebanks. Example uses:
-<pre>
- gr -cat=S -number=100 | tb -xml | wf tb.xml -- random treebank into file
- rf tb.txt | tb -c -- read comparison treebank from file
-</pre>
-
-<p>
-
-10/1 (AR) Forbade variable binding inside negation and Kleene star
-patterns.
-
-<p>
-
-7/1 (AR) Full set of regular expression patterns, with
-as-patterns to enable variable bindings to matched expressions:
-<ul>
- <li> <i>p</i> <tt>+</tt> <i>q</i> : token consisting of <i>p</i> followed by <i>q</i>
- <li> <i>p</i> <tt>*</tt> : token <i>p</i> repeated 0 or more times
- (max the length of the strin to be matched)
- <li> <tt>-</tt> <i>p</i> : matches anything that <i>p</i> does not match
- <li> <i>x</i> <tt>@</tt> <i>p</i> : bind to <i>x</i> what <i>p</i> matches
- <li> <i>p</i> <tt>|</tt> <i>q</i> : matches what either <i>p</i> or <i>q</i> matches
-</ul>
-The last three apply to all types of patterns, the first two only to token strings.
-Example: plural formation in Swedish 2nd declension
-(<i>pojke-pojkar, nyckel-nycklar, seger-segrar, bil-bilar</i>):
-<pre>
- plural2 : Str -> Str = \w -> case w of {
- pojk + "e" => pojk + "ar" ;
- nyck + "e" + l@("l" | "r" | "n") => nyck + l + "ar" ;
- bil => bil + "ar"
- } ;
-</pre>
-Semantics: variables are always bound to the <b>first match</b>, in the sequence defined
-as the list <tt>Match p v</tt> as follows:
-<pre>
- Match (p1|p2) v = Match p1 v ++ Match p2 v
- Match (p1+p2) s = [Match p1 s1 ++ Match p2 s2 | i <- [0..length s], (s1,s2) = splitAt i s]
- Match p* s = Match "" s ++ Match p s ++ Match (p + p) s ++ ...
- Match c v = [[]] if c == v -- for constant patterns c
- Match x v = [[(x,v)]] -- for variable patterns x
- Match x@p v = [[(x,v)]] + M if M = Match p v /= []
- Match p v = [] otherwise -- failure
-</pre>
-Examples:
-<ul>
-<li> <tt>x + "e" + y</tt> matches <tt>"peter"</tt> with <tt>x = "p", y = "ter"</tt>
-<li> <tt>x@("foo"*)</tt> matches any token with <tt>x = ""</tt>
-<li> <tt>x + y@("er"*)</tt> matches <tt>"burgerer"</tt> with <tt>x = "burg", y = "erer"</tt>
-</ul>
-<p>
-
-6/1 (AR) Concatenative string patterns to help morphology definitions...
-This can be seen as a step towards regular expression string patterns.
-The natural notation <tt>p1 + p2</tt> will be considered later.
-<b>Note</b>. This was done on 7/1.
-
-<p>
-
-5/1/2006 (BB) New grammar printers <tt>slf_sub</tt> and <tt>slf_sub_graphviz</tt>
-for creating SLF networks with sub-automata.
-
-<hr>
-
-22/12 <b>Release of GF 2.4</b>.
-
-<p>
-
-21/12 (AR) It now works to parse escaped string literals from command
-line, and also string literals with spaces:
-<pre>
- gf examples/tram0/TramEng.gf
- > p -lexer=literals "I want to go to \"Gustaf Adolfs torg\" ;"
- QInput (GoTo (DestNamed "Gustaf Adolfs torg"))
-</pre>
-
-<p>
-
-20/12 (AR) Support for full disjunctive patterns (<tt>P|Q</tt>) i.e.
-not just on top level.
-
-<p>
-
-14/12 (BB) The command <tt>si</tt> (<tt>speech_input</tt>) which creates
-a speech recognizer from a grammar for English and admits speech input
-of strings has been added. The command uses an
-<a href="http://htk.eng.cam.ac.uk/develop/atk.shtml">ATK</a> recognizer and
-creates a recognition
-network which accepts strings in the currently active grammar.
-In order to use the <tt>si</tt> command,
-you need to install the
-<a href="http://www.cs.chalmers.se/~bringert/darcs/atkrec/">atkrec library</a>
-and configure GF with <tt>./configure --with-atk</tt> before compiling.
-You need to set two environment variables for the <tt>si</tt> command to
-work. <tt>ATK_HOME</tt> should contain the path to your copy of ATK
-and <tt>GF_ATK_CFG</tt> should contain the path to your GF ATK configuration
-file. A default version of this file can be found in
- <tt>GF/src/gf_atk.cfg</tt>.
-
-
-<p>
-
-11/12 (AR) Parsing of float literals now possible in object language.
-Use the flag <tt>lexer=literals</tt>.
-
-<p>
-
-6/12 (AR) Accept <tt>param</tt> and <tt>oper</tt> definitions in
-<tt>concrete</tt> modules. The definitions are just inlined in the
-current module and not inherited. The purpose is to support rapid
-prototyping of grammars.
-
-<p>
-
-2/12 (AR) The built-in type <tt>Float</tt> added to abstract syntax (and
-resource). Values are stored as Haskell's <tt>Double</tt> precision
-floats. For the syntax of float literals, see BNFC document.
-NB: some bug still prevents parsing float literals in object
-languages. <b>Bug fixed 11/12.</b>
-
-<p>
-
-1/12 (BB,AR) The command <tt>at = apply_transfer</tt>, which applies
-a transfer function to a term. This is used for noncompositional
-translation. Transfer functions are defined in a special transfer
-language (file suffix <tt>.tr</tt>), which is compiled into a
-run-time transfer core language (file suffix <tt>.trc</tt>).
-The compiler is included in <tt>GF/transfer</tt>. The following is
-a complete example of how to try out transfer:
-<pre>
- % cd GF/transfer
- % make -- compile the trc compiler
- % cd examples -- GF/transfer/examples
- % ../compile_to_core -i../lib numerals.tr
- % mv numerals.trc ../../examples/numerals
- % cd ../../examples/numerals -- GF/examples/numerals
- % gf
- > i decimal.gf
- > i BinaryDigits.gf
- > i numerals.trc
- > p -lang=Cncdecimal "123" | at num2bin | l
- 1 0 0 1 1 0 0 1 1 1 0
-</pre>
-Other relevant commands are:
-<ul>
-<li> <tt>i file.trc</tt>: import a transfer module
-<li> <tt>pg -printer=transfer</tt>: create a syntax datatype in <tt>.tr</tt> format
-</ul>
-For more information on the commands, see <tt>help</tt>. Documentation on
-the transfer language: to appear.
-
-<p>
-
-17/11 (AR) Made it possible for lexers to be nondeterministic.
-Now with a simple-minded implementation that the parser is sent
-each lexing result in turn. The option <tt>-cut</tt> is used for
-breaking after first lexing leading to successful parse. The only
-nondeterministic lexer right now is <tt>-lexer=subseqs</tt>, which
-first filters with <tt>-lexer=ignore</tt> (dropping words neither in
-the grammar nor literals) and then starts ignoring other words from
-longest to shortest subsequence. This is usable for parser tasks
-of keyword spotting type, but expensive (2<sup>n</sup>) in long input.
-A smarter implementation is therefore desirable.
-
-<p>
-
-14/11 (AR) Functions can be made unparsable (or "internal" as
-in BNFC). This is done by <tt>i -noparse=file</tt>, where
-the nonparsable functions are given in <tt>file</tt> using the
-line format <tt>--# noparse Funs</tt>. This can be used e.g. to
-rule out expensive parsing rules. It is used in
-<tt>lib/resource/abstract/LangVP.gf</tt> to get parse values
-structured with <tt>VP</tt>, which is obtained via transfer.
-So far only the default (= old) parser generator supports this.
-
-<p>
-
-14/11 (AR) Removed the restrictions how a lincat may look like.
-Now any record type that has a value in GFC (i.e. without any
-functions in it) can be used, e.g. {np : NP ; cn : Bool => CN}.
-To display linearization values, only <tt>l -record</tt> shows
-nice results.
-
-<p>
-
-9/11 (AR) GF shell state can now have several abstract syntaxes with
-their associated concrete syntaxes. This allows e.g. parsing with
-resource while testing an application. One can also have a
-parse-transfer-lin chain from one abstract syntax to another.
-
-<p>
-7/11 (BB) Running commands can now be interrupted with Ctrl-C, without
-killing the GF process. This feature is not supported on Windows.
-
-<p>
-
-1/11 (AR) Yet another method for adding probabilities: append
-<tt> --# prob Double</tt> to the end of a line defining a function.
-This can be (1) a <tt>.cf</tt> rule (2) a <tt>fun</tt> rule, or
-(3) a <tt>lin</tt> rule. The probability is attached to the
-first identifier on the line.
-
-<p>
-1/11 (BB) Added generation of weighted SRGS grammars. The weights
-are calculated from the function probabilities. The algorithm
-for calculating the weights is not yet very good.
-Use <tt>pg -printer=srgs_xml_prob</tt>.
-
-<p>
-31/10 (BB) Added option for converting grammars to SRGS grammars in XML format.
-Use <tt>pg -printer=srgs_xml</tt>.
-
-<p>
-
-31/10 (AR) Probabilistic grammars. Probabilities can be used to
-weight random generation (<tt>gr -prob</tt>) and to rank parse
-results (<tt>p -prob</tt>). They are read from a separate file
-(flag <tt>i -probs=File</tt>, format <tt>--# prob Fun Double</tt>)
-or from the top-level grammar file itself (option <tt>i -prob</tt>).
-To see the probabilities, use <tt>pg -printer=probs</tt>.
-<br>
-As a by-product, the probabilistic random generation algorithm is
-available for any context-free abstract syntax. Use the flag
-<tt>gr -cf</tt>. This algorithm is much faster than the
-old (more general) one, but it may sometimes loop.
-
-<p>
-
-12/10 (AR) Flag <tt>-atoms=Int</tt> to the command <tt>gt = generate_trees</tt>
-takes away all zero-argument functions except Int per category. In
-this way, it is possible to generate a corpus illustrating each
-syntactic structure even when the lexicon (which consists of
-zero-argument functions) is large.
-
-<p>
-
-6/10 (AR) New commands <tt>dc = define_command</tt> and
-<tt>dt = define_tree</tt> to define macros in a GF session.
-See <tt>help</tt> for details and examples.
-
-<p>
-
-5/10 (AR) Printing missing linearization rules:
-<tt>pm -printer=missing</tt>. Command <tt>g = grep</tt>,
-which works in a way similar to Unix grep.
-
-<p>
-
-5/10 (PL) Printing graphs with function and category dependencies:
-<tt>pg -printer=functiongraph</tt>, <tt>pg -printer=typegraph</tt>.
-
-<p>
-
-20/9 (AR) Added optimization by <b>common subexpression elimination</b>.
-It works on GFC modules and creates <tt>oper</tt> definitions for
-subterms that occur more than once in <tt>lin</tt> definitions. These
-<tt>oper</tt> definitions are automatically reinlined in functionalities
-that don't support <tt>oper</tt>s in GFC. This conversion is done by
-module and the <tt>oper</tt>s are not inherited. Moreover, the subterms
-can contain free variables which means that the <tt>oper</tt>s are not
-always well typed. However, since all variables in GFC are type-specific
-(and local variables are <tt>lin</tt>-specific), this does not destroy
-subject reduction or cause illegal captures.
-<br>
-The optimization is triggered by the flag <tt>optimize=OPT_subs</tt>,
-where <tt>OPT</tt> is any of the other optimizations (see <tt>h -optimize</tt>).
-The most aggressive value of the flag is <tt>all_subs</tt>. In experiments,
-the size of a GFC module can shrink by 85% compared to plain <tt>all</tt>.
-
-<p>
-
-18/9 (AR) Removed superfluous spaces from GFC printing. This shrinks
-the GFC size by 5-10%.
-
-<p>
-
-15/9 (AR) Fixed some bugs in dependent-type type checking of abstract
-modules at compile time. The type checker is more severe now, which means
-that some old grammars may fail to compile - but this is usually the
-right result. However, the type checker of <tt>def</tt> judgements still
-needs work.
-
-<p>
-
-14/9 (AR) Added printing of grammars to a format without parameters, in
-the spirit of Peanos "Latino sine flexione". The command <tt>pg -unpar</tt>
-does the trick, and the result can be saved in a <tt>gfcm</tt> file. The generated
-concrete syntax modules get the prefix <tt>UP_</tt>. The translation is briefly:
-<pre>
- (P => T)* = T*
- (t ! p)* = t*
- (table {p => t ; ...})* = t*
-</pre>
-In order for this to be maximally useful, the grammar should be written in such
-a way that the first value of every parameter type is the desired one. For
-instance, in Peano's case it would be the ablative for noun cases, the singular for
-numbers, and the 2nd person singular imperative for verb forms.
-
-<p>
-
-14/9 (BB) Added finite state approximation of grammars.
-Internally the conversion is done <tt>cfg -&gt; regular -&gt; fa -&gt; slf</tt>, so the
-different printers can be used to check the output of each stage.
-The new options are:
-<dl>
-<dt><tt>pg -printer=slf</tt></dt>
-<dd>A finite automaton in the HTK SLF format.</dd>
-<dt><tt>pg -printer=slf_graphviz</tt></dt>
-<dd>The same FA as in SLF, but in Graphviz format.</dd>
-<dt><tt>pg -printer=fa_graphviz</tt></dt>
-<dd>A finite automaton with labelled edges, instead of labelled nodes which SLF has.</dd>
-<dt><tt>pg -printer=regular</tt></dt>
-<dd>A regular grammar in a simple BNF.</dd>
-</dl>
-
-<p>
-
-4/9 (AR) Added the option <tt>pg -printer=stat</tt> to show
-statistics of gfc compilation result. To be extended with new information.
-The most important stats now are the top-40 sized definitions.
-
-<p>
-<hr>
-
-1/7 <b>Release of GF 2.3</b>.
-
-<p>
-
-
-1/7 (AR) Added the flag <tt>-o</tt> to the <tt>vt</tt> command
-to just write the <tt>.dot</tt> file without going to <tt>.ps</tt>
-(cf. 20/6).
-
-<p>
-
-29/6 (AR) The printer used by Embedded Java GF Interpreter
-(<tt>pm -header</tt>) now produces
-working code from all optimized grammars - hence you need not select a
-weaker optimization just to use the interpreter. However, the
-optimization <tt>-optimize=share</tt> usually produces smaller object
-grammars because the "unoptimizer" just undoes all optimizations.
-(This is to be considered a temporary solution until the interpreter
-knows how to handle stronger optimizations.)
-
-<p>
-
-27/6 (AR) The flag <tt>flags optimize=noexpand</tt> placed in a
-resource module prevents the optimization phase of the compiler when
-the <tt>.gfr</tt> file is created. This can prevent serious code
-explosion, but it will also make the processing of modules using the
-resource slowwer. A favourable example is <tt>lib/resource/finnish/ParadigmsFin</tt>.
-
-<p>
-
-23/6 (HD,AR) The new editor GUI <tt>gfeditor</tt> by Hans-Joachim
-Daniels can now be used. It is based on Janna Khegai's <tt>jgf</tt>.
-New functionality include HTML display (<tt>gfeditor -h</tt>) and
-programmable refinement tooltips.
-
-<p>
-
-23/6 (AR) The flag <tt>unlexer=finnish</tt> can be used to bind
-Finnish suffixes (e.g. possessives) to preceding words. The GF source
-notation is e.g. <tt>"isä" ++ "&*" ++ "nsa" ++ "&*" ++ "ko"</tt>,
-which unlexes to <tt>"isänsäkö"</tt>. There is no corresponding lexer
-support yet.
-
-
-<p>
-
-22/6 (PL,AR) The MCFG parser (<tt>p -mcfg</tt>) now works on all
-optimized grammars - hence you need not select a weaker optimization
-to use this parser. The same concerns the CFGM printer (<tt>pm -printer=cfgm</tt>).
-
-<p>
-
-20/6 (AR) Added the command <tt>visualize_tree</tt> = <tt>vt</tt>, to
-display syntax trees graphically. Like <tt>vg</tt>, this command uses
-GraphViz and Ghostview. The foremost use is to pipe the parser to this
-command.
-
-<p>
-
-17/6 (BB) There is now support for lists in GF abstract syntax.
-A list category is declared as:
-<pre>
-cat [C]
-</pre>
-or
-<pre>
-cat [C]{n}
-</pre>
-where <tt>C</tt> is a category and <tt>n</tt> is a non-negative integer.
-<tt>cat [C]</tt> is equivalent to <tt>cat [C]{0}</tt>. List category
-syntax can be used whereever categories are used.
-
-<p>
-
-<tt>cat [C]{n}</tt> is equivalent to the declarations:
-<pre>
-cat ListC
-fun BaseC : C^n -&gt; ListC
-fun ConsC : C -&gt; ListC -&gt; ListC
-</pre>
-
-where <tt>C^0 -&gt; X</tt> means <tt>X</tt>, and <tt>C^m</tt> (where
-m &gt; 0) means <tt>C -&gt; C^(m-1)</tt>.
-
-<p>
-
-A lincat declaration on the form:
-<pre>
-lincat [C] = T
-</pre>
-is equivalent to
-<pre>
-lincat ListC = T
-</pre>
-
-The linearizations of the list constructors are written
-just like they would be if the function declarations above
-had been made manually, e.g.:
-<pre>
-lin BaseC x_1 ... x_n = t
-lin ConsC x xs = t'
-</pre>
-
-<p>
-
-10/6 (AR) Preprocessor of <tt>.gfe</tt> files can now be performed as part of
-any grammar compilation. The flag <tt>-ex</tt> causes GF to look for
-the <tt>.gfe</tt> files and preprocess those that are younger
-than the corresponding <tt>.gf</tt> files. The files are first sorted
-and grouped by the resource, so that each resource only need be compiled once.
-
-<p>
-
-10/6 (AR) Editor GUI can now be alternatively invoked by the shell
-command <tt>gf -edit</tt> (equivalent to <tt>jgf</tt>).
-
-<p>
-
-10/6 (AR) Editor GUI command <tt>pc Int</tt> to pop <tt>Int</tt>
-items from the clip board.
-
-<p>
-
-4/6 (AR) Sequence of commands in the Java editor GUI now possible.
-The commands are separated by <tt> ;; </tt> (notice the space on
-both sides of the two semicolons). Such a sequence can be sent
-from the "GF Command" pop-up field, but is mostly intended
-for external processes that communicate with GF.
-
-<p>
-
-3/6 (AR) The format <tt>.gfe</tt> defined to support
-<b>grammar writing by examples</b>. Files of this format are first
-converted to <tt>.gf</tt> files by the command
-<pre>
- gf -examples File.gfe
-</pre>
-See <a href="../lib/resource/doc/example/QuestionsI.gfe">
-<tt>../lib/resource/doc/examples/QuestionsI.gfe</tt></a>
-for an example.
-
-<p>
-
-31/5 (AR) Default of p -rawtrees=k changed to 999999.
-
-<p>
-
-31/5 (AR) Support for restricted inheritance. Syntax:
-<pre>
- M -- inherit everything from M, as before
- M [a,b,c] -- only inherit constants a,b,c
- M-[a,b,c] -- inherit everything except a,b,c
-</pre>
-Caution: there is no check yet for completeness and
-consistency, but restricted inheritance can create
-run-time failures.
-
-<p>
-
-29/5 (AR) Parser support for reading GFC files line per line.
-The category <tt>Line</tt> in <tt>GFC.cf</tt> can be used
-as entrypoint instead of <tt>Grammar</tt> to achieve this.
-
-<p>
-
-28/5 (AR) Environment variables and path wild cards.
-<ul>
-<li> <tt>GF_LIB_PATH</tt> gives the location of <tt>GF/lib</tt>
-<li> <tt>GF_GRAMMAR_PATH</tt> gives a list of directories appended
- to the explicitly given path
-<li> <tt>DIR/*</tt> is expanded to the union of all subdirectories
- of <tt>DIR</tt>
-</ul>
-<p>
-
-
-26/5/2005 (BB) Notation for list categories.
-
-
-
-</body>
-</html>