diff --git a/doc/gf-ideas.html b/doc/gf-ideas.html
new file mode 100644
index 000000000..a032061e1
--- /dev/null
+++ b/doc/gf-ideas.html
@@ -0,0 +1,284 @@
+
+
+
+
+
+GF Project Ideas
+
+GF Project Ideas
+
+Resource Grammars, Web Applications, etc
+contact: Aarne Ranta (aarne at chalmers dot se)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Resource Grammar Implementations
+
+GF Resource Grammar Library is an open-source computational grammar resource
+that currently covers 12 languages.
+The Library is a collaborative effort to which programmers from many countries
+have contributed. The next goal is to extend the library
+to all of the 23 official EU languages. Also other languages
+are welcome all the time. The following diagram show the current status of the
+library. Each of the red and yellow ones are a potential project.
+
+
+
+
+
+
+
+red=wanted, green=exists, orange=in-progress, solid=official-eu, dotted=non-eu
+
+
+The linguistic coverage of the library includes the inflectional morphology
+and basic syntax of each language. It can be used in GF applications
+and also ported to other formats. It can also be used for building other
+linguistic resources, such as morphological lexica and parsers.
+The library is licensed under LGPL.
+
+
+Tasks
+
+Writing a grammar for a language is usually easier if other languages
+from the same family already have grammars. The colours have the same
+meaning as in the diagram above. Thus, in particular, each of the languages
+coloured red below are possible programming projects.
+
+
+Baltic:
+
+
+
+
+Celtic:
+
+
+
+
+Fenno-Ugric:
+
+
+- Estonian
+
- Finnish
+
- Hungarian
+
+
+
+Germanic:
+
+
+- Danish
+
- Dutch
+
- English
+
- German
+
- Norwegian
+
- Swedish
+
+
+
+Hellenic:
+
+
+
+
+Romance:
+
+
+- Catalan
+
- French
+
- Italian
+
- Portuguese
+
- Romanian
+
- Spanish
+
+
+
+Semitic:
+
+
+
+
+Slavonic:
+
+
+- Bulgarian
+
- Czech
+
- Polish
+
- Russian
+
- Slovak
+
- Slovenian
+
+
+
+Who is qualified
+
+Writing a resource grammar implementation requires good general programming
+skills, and a good explicit knowledge of the grammar of the target language.
+A typical participant could be
+
+
+- native or fluent speaker of the target language
+
- interested in languages on the theoretical level, and preferably familiar
+ with many languages (to be able to think about them on an abstract level)
+
- familiar with functional programming languages such as ML or Haskell
+ (GF itself is a language similar to these)
+
- on Master's or PhD level in linguistics, computer science, or mathematics
+
+
+
+But it is the quality of the assignment that is assessed, not any formal
+requirements. The "typical participant" was described to give an idea of
+who is likely to succeed in this.
+
+
+The Summer School
+
+A Summer School on resource grammars and applications will
+be organized at the campus of Chalmers University of Technology in Gothenburg,
+Sweden, on 17-28 August 2009. It can be seen as a natural checkpoint in
+a resource grammar project; the participants are assumed to learn GF before
+the Summer School, but how far they have come in their projects may vary.
+
+
+More information on the Summer School web page:
+
+
+http://www.cs.chalmers.se/Cs/Research/Language-technology/GF/doc/gf-summerschool.html
+
+
+Other project ideas
+
+GF interpreter in Java
+
+The idea is to write a run-time system for GF grammars in Java. This enables
+the use of embedded grammars in Java applications. This project is
+a fresh-up of earlier work,
+now using the new run-time format PGF and addressing a new parsing algorithm.
+
+
+Requirements: Java, Haskell, basics of compilers and parsing algorithms.
+
+
+GF interpreter in C#
+
+The idea is to write a run-time system for GF grammars in C#. This enables
+the use of embedded grammars in C# applications. This project is
+similar to earlier work
+on Java, now addressing C# and using the new run-time format PGF.
+
+
+Requirements: C#, Haskell, basics of compilers and parsing algorithms.
+
+
+GF localization library
+
+This is an idea for a software localization library using GF grammars.
+The library should replace strings by grammar rules, which can be conceived
+as very smart templates always guaranteeing grammatically correct output.
+The library should be based on the
+GF Resource Grammar Library, providing infrastructure
+currently for 12 languages.
+
+
+Requirements: GF, some natural languages, some localization platform
+
+
+Multilingual grammar applications for mobile phones
+
+GF grammars can be compiled into programs that can be run on different
+platforms, such as web browsers and mobile phones. An example is a
+numeral translator running on both these platforms.
+
+
+The proposed project is rather open: find some cool applications of
+the technology that are useful or entertaining for mobile phone users. A
+part of the project is to investigate implementation issues such as making
+the best use of the phone's resources. Possible applications have
+something to do with translation; one suggestion is an sms editor/translator.
+
+
+Requirements: GF, JavaScript, some phone application development tools
+
+
+Multilingual grammar applications for the web
+
+This project is rather open: find some cool applications of
+the technology that are useful or entertaining on the web. Examples include
+
+
+- translators: see demo
+
- multilingual wikis: see demo
+
- fridge magnets: see demo
+
+
+
+Requirements: GF, JavaScript or Java and Google Web Toolkit, CGI
+
+
+GMail gadget for GF
+
+It is possible to add custom gadgets to GMail. If you are going to write
+e-mail in a foreign language then you probably will need help from
+dictonary or you may want to check something in the grammar. GF provides
+all resources that you may need but you have to think about how to
+design gadget that fits well in the GMail environment and what
+functionality from GF you want to expose.
+
+
+Requirements: GF, Google Web Toolkit
+
+
+Dissemination and intellectual property
+
+All code suggested here will be released under the LGPL just like
+the current resource grammars and run-time GF libraries,
+with the copyright held by respective authors.
+
+
+As a rule, the code will be distributed via the GF web site.
+
+
+
+
+
diff --git a/doc/gf-ideas.txt b/doc/gf-ideas.txt
new file mode 100644
index 000000000..cf66a589e
--- /dev/null
+++ b/doc/gf-ideas.txt
@@ -0,0 +1,216 @@
+GF Project Ideas
+Resource Grammars, Web Applications, etc
+contact: Aarne Ranta (aarne at chalmers dot se)
+
+%!Encoding : iso-8859-1
+
+%!target:html
+%!postproc(html): #BECE
+%!postproc(html): #ENCE
+%!postproc(html): #GRAY
+%!postproc(html): #EGRAY
+%!postproc(html): #RED
+%!postproc(html): #YELLOW
+%!postproc(html): #ERED
+
+#BECE
+[gf-logo.png]
+#ENCE
+
+
+==Resource Grammar Implementations==
+
+GF Resource Grammar Library is an open-source computational grammar resource
+that currently covers 12 languages.
+The Library is a collaborative effort to which programmers from many countries
+have contributed. The next goal is to extend the library
+to all of the 23 official EU languages. Also other languages
+are welcome all the time. The following diagram show the current status of the
+library. Each of the red and yellow ones are a potential project.
+
+#BECE
+[school-langs.png]
+#ENCE
+
+
+//red=wanted, green=exists, orange=in-progress, solid=official-eu, dotted=non-eu//
+
+The linguistic coverage of the library includes the inflectional morphology
+and basic syntax of each language. It can be used in GF applications
+and also ported to other formats. It can also be used for building other
+linguistic resources, such as morphological lexica and parsers.
+The library is licensed under LGPL.
+
+
+===Tasks===
+
+Writing a grammar for a language is usually easier if other languages
+from the same family already have grammars. The colours have the same
+meaning as in the diagram above. Thus, in particular, each of the languages
+coloured red below are possible programming projects.
+
+Baltic:
+- #RED Latvian #ERED
+- #RED Lithuanian #ERED
+
+
+Celtic:
+- #RED Irish #ERED
+
+
+Fenno-Ugric:
+- #RED Estonian #ERED
+- #GRAY Finnish #EGRAY
+- #RED Hungarian #ERED
+
+
+Germanic:
+- #GRAY Danish #EGRAY
+- #RED Dutch #ERED
+- #GRAY English #EGRAY
+- #GRAY German #EGRAY
+- #GRAY Norwegian #EGRAY
+- #GRAY Swedish #EGRAY
+
+
+Hellenic:
+- #RED Greek #ERED
+
+
+Romance:
+- #GRAY Catalan #EGRAY
+- #GRAY French #EGRAY
+- #GRAY Italian #EGRAY
+- #RED Portuguese #ERED
+- #YELLOW Romanian #ERED
+- #GRAY Spanish #EGRAY
+
+
+Semitic:
+- #YELLOW Arabic #ERED
+- #RED Maltese #ERED
+
+
+Slavonic:
+- #GRAY Bulgarian #EGRAY
+- #RED Czech #ERED
+- #YELLOW Polish #ERED
+- #GRAY Russian #EGRAY
+- #RED Slovak #ERED
+- #RED Slovenian #ERED
+
+
+
+===Who is qualified===
+
+Writing a resource grammar implementation requires good general programming
+skills, and a good explicit knowledge of the grammar of the target language.
+A typical participant could be
+- native or fluent speaker of the target language
+- interested in languages on the theoretical level, and preferably familiar
+ with many languages (to be able to think about them on an abstract level)
+- familiar with functional programming languages such as ML or Haskell
+ (GF itself is a language similar to these)
+- on Master's or PhD level in linguistics, computer science, or mathematics
+
+
+But it is the quality of the assignment that is assessed, not any formal
+requirements. The "typical participant" was described to give an idea of
+who is likely to succeed in this.
+
+
+===The Summer School===
+
+A Summer School on resource grammars and applications will
+be organized at the campus of Chalmers University of Technology in Gothenburg,
+Sweden, on 17-28 August 2009. It can be seen as a natural checkpoint in
+a resource grammar project; the participants are assumed to learn GF before
+the Summer School, but how far they have come in their projects may vary.
+
+More information on the Summer School web page:
+
+[``http://www.cs.chalmers.se/Cs/Research/Language-technology/GF/doc/gf-summerschool.html`` http://www.cs.chalmers.se/Cs/Research/Language-technology/GF/doc/gf-summerschool.html]
+
+
+==Other project ideas==
+
+===GF interpreter in Java===
+
+The idea is to write a run-time system for GF grammars in Java. This enables
+the use of **embedded grammars** in Java applications. This project is
+a fresh-up of [earlier work http://www.cs.chalmers.se/~bringert/gf/gf-java.html],
+now using the new run-time format PGF and addressing a new parsing algorithm.
+
+Requirements: Java, Haskell, basics of compilers and parsing algorithms.
+
+
+===GF interpreter in C#===
+
+The idea is to write a run-time system for GF grammars in C#. This enables
+the use of **embedded grammars** in C# applications. This project is
+similar to [earlier work http://www.cs.chalmers.se/~bringert/gf/gf-java.html]
+on Java, now addressing C# and using the new run-time format PGF.
+
+Requirements: C#, Haskell, basics of compilers and parsing algorithms.
+
+
+===GF localization library===
+
+This is an idea for a software localization library using GF grammars.
+The library should replace strings by grammar rules, which can be conceived
+as very smart templates always guaranteeing grammatically correct output.
+The library should be based on the
+[GF Resource Grammar Library http://www.cs.chalmers.se/Cs/Research/Language-technology/GF/lib/resource/doc/synopsis.html], providing infrastructure
+currently for 12 languages.
+
+Requirements: GF, some natural languages, some localization platform
+
+
+===Multilingual grammar applications for mobile phones===
+
+GF grammars can be compiled into programs that can be run on different
+platforms, such as web browsers and mobile phones. An example is a
+[numeral translator http://www.cs.chalmers.se/Cs/Research/Language-technology/GF/demos/index-numbers.html] running on both these platforms.
+
+The proposed project is rather open: find some cool applications of
+the technology that are useful or entertaining for mobile phone users. A
+part of the project is to investigate implementation issues such as making
+the best use of the phone's resources. Possible applications have
+something to do with translation; one suggestion is an sms editor/translator.
+
+Requirements: GF, JavaScript, some phone application development tools
+
+
+===Multilingual grammar applications for the web===
+
+This project is rather open: find some cool applications of
+the technology that are useful or entertaining on the web. Examples include
+- translators: see [demo http://tournesol.cs.chalmers.se:41296/translate]
+- multilingual wikis: see [demo http://csmisc14.cs.chalmers.se/~meza/restWiki/wiki.cgi]
+- fridge magnets: see [demo http://tournesol.cs.chalmers.se:41296/fridge]
+
+
+Requirements: GF, JavaScript or Java and Google Web Toolkit, CGI
+
+
+===GMail gadget for GF===
+
+It is possible to add custom gadgets to GMail. If you are going to write
+e-mail in a foreign language then you probably will need help from
+dictonary or you may want to check something in the grammar. GF provides
+all resources that you may need but you have to think about how to
+design gadget that fits well in the GMail environment and what
+functionality from GF you want to expose.
+
+Requirements: GF, Google Web Toolkit
+
+
+
+==Dissemination and intellectual property==
+
+All code suggested here will be released under the LGPL just like
+the current resource grammars and run-time GF libraries,
+with the copyright held by respective authors.
+
+As a rule, the code will be distributed via the GF web site.
+
diff --git a/examples/bronzeage/SwadeshEng.gf b/examples/bronzeage/SwadeshEng.gf
index 7ebab9596..9b2cb878e 100644
--- a/examples/bronzeage/SwadeshEng.gf
+++ b/examples/bronzeage/SwadeshEng.gf
@@ -2,5 +2,6 @@
concrete SwadeshEng of Swadesh = SwadeshI with
(Syntax = SyntaxEng),
+v v v v v v v
+^ ^ ^ ^ ^ ^ ^
(Lexicon = LexiconEng) ;
-
diff --git a/examples/bronzeage/SwadeshI.gf b/examples/bronzeage/SwadeshI.gf
index 331f926aa..192ad95e9 100644
--- a/examples/bronzeage/SwadeshI.gf
+++ b/examples/bronzeage/SwadeshI.gf
@@ -98,6 +98,7 @@ incomplete concrete SwadeshI of Swadesh = open Syntax, Lexicon in {
white_A = Lexicon.white_A ;
wide_A = Lexicon.wide_A ;
yellow_A = Lexicon.yellow_A ;
+
-- Nouns
animal_N = Lexicon.animal_N ;
ashes_N = Lexicon.ashes_N ;
diff --git a/lib/javascript/editor.html b/lib/javascript/editor.html
index f445ad03c..dd189d9ab 100644
--- a/lib/javascript/editor.html
+++ b/lib/javascript/editor.html
@@ -10,7 +10,7 @@
Web-based Syntax Editor
-
+
diff --git a/lib/javascript/grammar.js b/lib/javascript/grammar.js
index 163f0c3cd..69175bba4 100644
--- a/lib/javascript/grammar.js
+++ b/lib/javascript/grammar.js
@@ -1 +1 @@
-var Food = new GFGrammar(new GFAbstract("Phrase",{Boring: new Type([], "Quality"), Cheese: new Type([], "Kind"), Delicious: new Type([], "Quality"), Expensive: new Type([], "Quality"), Fish: new Type([], "Kind"), Fresh: new Type([], "Quality"), Is: new Type(["Item", "Quality"], "Phrase"), Italian: new Type([], "Quality"), QKind: new Type(["Quality", "Kind"], "Kind"), That: new Type(["Kind"], "Item"), This: new Type(["Kind"], "Item"), Very: new Type(["Quality"], "Quality"), Warm: new Type([], "Quality"), Wine: new Type([], "Kind")}),{FoodEng: new GFConcrete({},{Boring: function(cs){return new Arr(new Str("boring"));}, Cheese: function(cs){return new Arr(new Str("cheese"));}, Delicious: function(cs){return new Arr(new Str("delicious"));}, Expensive: function(cs){return new Arr(new Str("expensive"));}, Fish: function(cs){return new Arr(new Str("fish"));}, Fresh: function(cs){return new Arr(new Str("fresh"));}, Is: function(cs){return new Arr(new Seq(Food.concretes["FoodEng"].rule("_6", cs), new Str("is"), Food.concretes["FoodEng"].rule("_7", cs)));}, Italian: function(cs){return new Arr(new Str("Italian"));}, QKind: function(cs){return new Arr(new Seq(Food.concretes["FoodEng"].rule("_6", cs), Food.concretes["FoodEng"].rule("_7", cs)));}, That: function(cs){return new Arr(new Seq(new Str("that"), Food.concretes["FoodEng"].rule("_6", cs)));}, This: function(cs){return new Arr(new Seq(new Str("this"), Food.concretes["FoodEng"].rule("_6", cs)));}, Very: function(cs){return new Arr(new Seq(new Str("very"), Food.concretes["FoodEng"].rule("_6", cs)));}, Warm: function(cs){return new Arr(new Str("warm"));}, Wine: function(cs){return new Arr(new Str("wine"));}, _21: function(cs){return new Arr(cs[0]);}, _6: function(cs){return cs[0].sel(new Int(0));}, _7: function(cs){return cs[1].sel(new Int(0));}, Item: function(cs){return Food.concretes["FoodEng"].rule("_21", cs);}, Kind: function(cs){return Food.concretes["FoodEng"].rule("_21", cs);}, Phrase: function(cs){return Food.concretes["FoodEng"].rule("_21", cs);}, Quality: function(cs){return Food.concretes["FoodEng"].rule("_21", cs);}, "Int": function(cs){return new Arr(cs[0]);}, "Float": function(cs){return new Arr(cs[0]);}, "String": function(cs){return new Arr(cs[0]);}}, new Parser("Phrase",[new Rule(1, new FunApp("Boring",[]),[],[[new Terminal("boring")]]), new Rule(1, new FunApp("Delicious",[]),[],[[new Terminal("delicious")]]), new Rule(1, new FunApp("Expensive",[]),[],[[new Terminal("expensive")]]), new Rule(1, new FunApp("Fresh",[]),[],[[new Terminal("fresh")]]), new Rule(1, new FunApp("Italian",[]),[],[[new Terminal("Italian")]]), new Rule(1, new FunApp("Very",[new Arg(0)]),[1],[[new Terminal("very"), new ArgProj(0, 0)]]), new Rule(1, new FunApp("Warm",[]),[],[[new Terminal("warm")]]), new Rule(2, new FunApp("Cheese",[]),[],[[new Terminal("cheese")]]), new Rule(2, new FunApp("Fish",[]),[],[[new Terminal("fish")]]), new Rule(2, new FunApp("QKind",[new Arg(0), new Arg(1)]),[1, 2],[[new ArgProj(0, 0), new ArgProj(1, 0)]]), new Rule(2, new FunApp("Wine",[]),[],[[new Terminal("wine")]]), new Rule(3, new FunApp("Is",[new Arg(0), new Arg(1)]),[4, 1],[[new ArgProj(0, 0), new Terminal("is"), new ArgProj(1, 0)]]), new Rule(4, new FunApp("That",[new Arg(0)]),[2],[[new Terminal("that"), new ArgProj(0, 0)]]), new Rule(4, new FunApp("This",[new Arg(0)]),[2],[[new Terminal("this"), new ArgProj(0, 0)]])],{Float:[-3], Int:[-2], Item:[4], Kind:[2], Phrase:[3], Quality:[1], String:[-1], _Var:[-4]})), FoodIta: new GFConcrete({},{Boring: function(cs){return new Arr(new Str("noioso"));}, Cheese: function(cs){return new Arr(new Str("formaggio"));}, Delicious: function(cs){return new Arr(new Str("delizioso"));}, Expensive: function(cs){return new Arr(new Str("caro"));}, Fish: function(cs){return new Arr(new Str("pesce"));}, Fresh: function(cs){return new Arr(new Str("fresco"));}, Is: function(cs){return new Arr(new Seq(Food.concretes["FoodIta"].rule("_6", cs), new Str("è"), Food.concretes["FoodIta"].rule("_7", cs)));}, Italian: function(cs){return new Arr(new Str("italiano"));}, QKind: function(cs){return new Arr(new Seq(Food.concretes["FoodIta"].rule("_7", cs), Food.concretes["FoodIta"].rule("_6", cs)));}, That: function(cs){return new Arr(new Seq(new Str("quel"), Food.concretes["FoodIta"].rule("_6", cs)));}, This: function(cs){return new Arr(new Seq(new Str("questo"), Food.concretes["FoodIta"].rule("_6", cs)));}, Very: function(cs){return new Arr(new Seq(new Str("molto"), Food.concretes["FoodIta"].rule("_6", cs)));}, Warm: function(cs){return new Arr(new Str("caldo"));}, Wine: function(cs){return new Arr(new Str("vino"));}, _21: function(cs){return new Arr(cs[0]);}, _6: function(cs){return cs[0].sel(new Int(0));}, _7: function(cs){return cs[1].sel(new Int(0));}, Item: function(cs){return Food.concretes["FoodIta"].rule("_21", cs);}, Kind: function(cs){return Food.concretes["FoodIta"].rule("_21", cs);}, Phrase: function(cs){return Food.concretes["FoodIta"].rule("_21", cs);}, Quality: function(cs){return Food.concretes["FoodIta"].rule("_21", cs);}, "Int": function(cs){return new Arr(cs[0]);}, "Float": function(cs){return new Arr(cs[0]);}, "String": function(cs){return new Arr(cs[0]);}}, new Parser("Phrase",[new Rule(1, new FunApp("Boring",[]),[],[[new Terminal("noioso")]]), new Rule(1, new FunApp("Delicious",[]),[],[[new Terminal("delizioso")]]), new Rule(1, new FunApp("Expensive",[]),[],[[new Terminal("caro")]]), new Rule(1, new FunApp("Fresh",[]),[],[[new Terminal("fresco")]]), new Rule(1, new FunApp("Italian",[]),[],[[new Terminal("italiano")]]), new Rule(1, new FunApp("Very",[new Arg(0)]),[1],[[new Terminal("molto"), new ArgProj(0, 0)]]), new Rule(1, new FunApp("Warm",[]),[],[[new Terminal("caldo")]]), new Rule(2, new FunApp("Cheese",[]),[],[[new Terminal("formaggio")]]), new Rule(2, new FunApp("Fish",[]),[],[[new Terminal("pesce")]]), new Rule(2, new FunApp("QKind",[new Arg(0), new Arg(1)]),[1, 2],[[new ArgProj(1, 0), new ArgProj(0, 0)]]), new Rule(2, new FunApp("Wine",[]),[],[[new Terminal("vino")]]), new Rule(3, new FunApp("Is",[new Arg(0), new Arg(1)]),[4, 1],[[new ArgProj(0, 0), new Terminal("è"), new ArgProj(1, 0)]]), new Rule(4, new FunApp("That",[new Arg(0)]),[2],[[new Terminal("quel"), new ArgProj(0, 0)]]), new Rule(4, new FunApp("This",[new Arg(0)]),[2],[[new Terminal("questo"), new ArgProj(0, 0)]])],{Float:[-3], Int:[-2], Item:[4], Kind:[2], Phrase:[3], Quality:[1], String:[-1], _Var:[-4]}))});
+var Food = new GFGrammar(new GFAbstract("Phrase",{Boring: new Type([], "Quality"), Cheese: new Type([], "Kind"), Delicious: new Type([], "Quality"), Expensive: new Type([], "Quality"), Fish: new Type([], "Kind"), Fresh: new Type([], "Quality"), Is: new Type(["Item", "Quality"], "Phrase"), Italian: new Type([], "Quality"), QKind: new Type(["Quality", "Kind"], "Kind"), That: new Type(["Kind"], "Item"), This: new Type(["Kind"], "Item"), Very: new Type(["Quality"], "Quality"), Warm: new Type([], "Quality"), Wine: new Type([], "Kind")}),{FoodEng: new GFConcrete({},{Boring: function(cs){return new Arr(new Str("boring"));}, Cheese: function(cs){return new Arr(new Str("cheese"));}, Delicious: function(cs){return new Arr(new Str("delicious"));}, Expensive: function(cs){return new Arr(new Str("expensive"));}, Fish: function(cs){return new Arr(new Str("fish"));}, Fresh: function(cs){return new Arr(new Str("fresh"));}, Is: function(cs){return new Arr(new Seq(cs[0].sel(new Int(0)), new Str("is"), cs[1].sel(new Int(0))));}, Italian: function(cs){return new Arr(new Str("Italian"));}, QKind: function(cs){return new Arr(new Seq(cs[0].sel(new Int(0)), cs[1].sel(new Int(0))));}, That: function(cs){return new Arr(new Seq(new Str("that"), cs[0].sel(new Int(0))));}, This: function(cs){return new Arr(new Seq(new Str("this"), cs[0].sel(new Int(0))));}, Very: function(cs){return new Arr(new Seq(new Str("very"), cs[0].sel(new Int(0))));}, Warm: function(cs){return new Arr(new Str("warm"));}, Wine: function(cs){return new Arr(new Str("wine"));}, Item: function(cs){return new Arr(cs[0]);}, Kind: function(cs){return new Arr(cs[0]);}, Phrase: function(cs){return new Arr(cs[0]);}, Quality: function(cs){return new Arr(cs[0]);}, "Int": function(cs){return new Arr(cs[0]);}, "Float": function(cs){return new Arr(cs[0]);}, "String": function(cs){return new Arr(cs[0]);}}, new Parser("Phrase",[new Rule(1, new FunApp("Boring",[]),[],[[new Terminal("boring")]]), new Rule(1, new FunApp("Delicious",[]),[],[[new Terminal("delicious")]]), new Rule(1, new FunApp("Expensive",[]),[],[[new Terminal("expensive")]]), new Rule(1, new FunApp("Fresh",[]),[],[[new Terminal("fresh")]]), new Rule(1, new FunApp("Italian",[]),[],[[new Terminal("Italian")]]), new Rule(1, new FunApp("Very",[new Arg(0)]),[1],[[new Terminal("very"), new ArgProj(0, 0)]]), new Rule(1, new FunApp("Warm",[]),[],[[new Terminal("warm")]]), new Rule(2, new FunApp("Cheese",[]),[],[[new Terminal("cheese")]]), new Rule(2, new FunApp("Fish",[]),[],[[new Terminal("fish")]]), new Rule(2, new FunApp("QKind",[new Arg(0), new Arg(1)]),[1, 2],[[new ArgProj(0, 0), new ArgProj(1, 0)]]), new Rule(2, new FunApp("Wine",[]),[],[[new Terminal("wine")]]), new Rule(3, new FunApp("Is",[new Arg(0), new Arg(1)]),[4, 1],[[new ArgProj(0, 0), new Terminal("is"), new ArgProj(1, 0)]]), new Rule(4, new FunApp("That",[new Arg(0)]),[2],[[new Terminal("that"), new ArgProj(0, 0)]]), new Rule(4, new FunApp("This",[new Arg(0)]),[2],[[new Terminal("this"), new ArgProj(0, 0)]])],{Float:[-3], Int:[-2], Item:[4], Kind:[2], Phrase:[3], Quality:[1], String:[-1], _Var:[-4]})), FoodIta: new GFConcrete({},{Boring: function(cs){return new Arr(new Str("noioso"));}, Cheese: function(cs){return new Arr(new Str("formaggio"));}, Delicious: function(cs){return new Arr(new Str("delizioso"));}, Expensive: function(cs){return new Arr(new Str("caro"));}, Fish: function(cs){return new Arr(new Str("pesce"));}, Fresh: function(cs){return new Arr(new Str("fresco"));}, Is: function(cs){return new Arr(new Seq(cs[0].sel(new Int(0)), new Str("è"), cs[1].sel(new Int(0))));}, Italian: function(cs){return new Arr(new Str("italiano"));}, QKind: function(cs){return new Arr(new Seq(cs[1].sel(new Int(0)), cs[0].sel(new Int(0))));}, That: function(cs){return new Arr(new Seq(new Str("quel"), cs[0].sel(new Int(0))));}, This: function(cs){return new Arr(new Seq(new Str("questo"), cs[0].sel(new Int(0))));}, Very: function(cs){return new Arr(new Seq(new Str("molto"), cs[0].sel(new Int(0))));}, Warm: function(cs){return new Arr(new Str("caldo"));}, Wine: function(cs){return new Arr(new Str("vino"));}, Item: function(cs){return new Arr(cs[0]);}, Kind: function(cs){return new Arr(cs[0]);}, Phrase: function(cs){return new Arr(cs[0]);}, Quality: function(cs){return new Arr(cs[0]);}, "Int": function(cs){return new Arr(cs[0]);}, "Float": function(cs){return new Arr(cs[0]);}, "String": function(cs){return new Arr(cs[0]);}}, new Parser("Phrase",[new Rule(1, new FunApp("Boring",[]),[],[[new Terminal("noioso")]]), new Rule(1, new FunApp("Delicious",[]),[],[[new Terminal("delizioso")]]), new Rule(1, new FunApp("Expensive",[]),[],[[new Terminal("caro")]]), new Rule(1, new FunApp("Fresh",[]),[],[[new Terminal("fresco")]]), new Rule(1, new FunApp("Italian",[]),[],[[new Terminal("italiano")]]), new Rule(1, new FunApp("Very",[new Arg(0)]),[1],[[new Terminal("molto"), new ArgProj(0, 0)]]), new Rule(1, new FunApp("Warm",[]),[],[[new Terminal("caldo")]]), new Rule(2, new FunApp("Cheese",[]),[],[[new Terminal("formaggio")]]), new Rule(2, new FunApp("Fish",[]),[],[[new Terminal("pesce")]]), new Rule(2, new FunApp("QKind",[new Arg(0), new Arg(1)]),[1, 2],[[new ArgProj(1, 0), new ArgProj(0, 0)]]), new Rule(2, new FunApp("Wine",[]),[],[[new Terminal("vino")]]), new Rule(3, new FunApp("Is",[new Arg(0), new Arg(1)]),[4, 1],[[new ArgProj(0, 0), new Terminal("è"), new ArgProj(1, 0)]]), new Rule(4, new FunApp("That",[new Arg(0)]),[2],[[new Terminal("quel"), new ArgProj(0, 0)]]), new Rule(4, new FunApp("This",[new Arg(0)]),[2],[[new Terminal("questo"), new ArgProj(0, 0)]])],{Float:[-3], Int:[-2], Item:[4], Kind:[2], Phrase:[3], Quality:[1], String:[-1], _Var:[-4]}))});
diff --git a/next-lib/src/Make.hs b/next-lib/src/Make.hs
index 9fca1713a..bd835def4 100644
--- a/next-lib/src/Make.hs
+++ b/next-lib/src/Make.hs
@@ -152,8 +152,12 @@ demos abstr ls = "gr -number=100 | l -treebank " ++ unlexer abstr ls ++
lang (lla,la) = lla ++ "/All" ++ la ++ ".gf"
compat (lla,la) = lla ++ "/Compatibility" ++ la ++ ".gf"
symbol (lla,la) = lla ++ "/Symbol" ++ la ++ ".gf"
+v v v v v v v
+try (lla,la) = "api/Syntax" ++ la ++ ".gf"
+*************
try (lla,la) = "api/Try" ++ la ++ ".gf"
syntax (lla,la) = "api/Syntax" ++ la ++ ".gf"
+^ ^ ^ ^ ^ ^ ^
symbolic (lla,la) = "api/Symbolic" ++ la ++ ".gf"
parse (lla,la) = "parse/Parse" ++ la ++ ".gf"
diff --git a/src/server/lighttpd.conf b/src/server/lighttpd.conf
index 09f73f102..23b7f6d8c 100644
--- a/src/server/lighttpd.conf
+++ b/src/server/lighttpd.conf
@@ -50,7 +50,7 @@ fastcgi.debug = 0
fastcgi.server = ( ".pgf" =>
((
"socket" => basedir + "/" + var.PID + "-pgf.socket",
- "bin-path" => basedir + "/pgf.fcgi",
+ "bin-path" => basedir + "/dist/build/pgf-server/pgf-server",
# Use 2 OS threads (to be able to use 2 cores).
# Limit heap size to 512 MB.
"bin-environment" => ("GHCRTS" => "-N2 -M512M"),