summaryrefslogtreecommitdiff
path: root/examples/gfm-format
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2010-12-01 08:10:23 +0000
committeraarne <aarne@chalmers.se>2010-12-01 08:10:23 +0000
commit9b6f775b760883b49fd9c56580f22dc5933a7d2a (patch)
treeed7f628348e20076daca1db519ceccaecea96115 /examples/gfm-format
parentacfa9722e262cc94a486373288c94b27dbbf7ba0 (diff)
documentation in gfm-format examples (dir renamed from multi)
Diffstat (limited to 'examples/gfm-format')
-rw-r--r--examples/gfm-format/Food.gfm76
-rw-r--r--examples/gfm-format/Words.gfm22
2 files changed, 98 insertions, 0 deletions
diff --git a/examples/gfm-format/Food.gfm b/examples/gfm-format/Food.gfm
new file mode 100644
index 000000000..feb3dfcf6
--- /dev/null
+++ b/examples/gfm-format/Food.gfm
@@ -0,0 +1,76 @@
+-- Full .gfm format: multi-module files (see Words.gfm for a baseline format)
+-- The compiler recognizes the suffix .gfm and a file for each module.
+-- Food.gf, FoodEng.gf, FoodIta.gf
+-- The first non-comment line must give a list of lang names for the top modules.
+-- This modules are the ones imported in 'import Food.gfm'.
+-- Their prefix comes from this file.
+-- This file must be UTF-8 encoded.
+
+
+> langs Eng Ita
+
+abstract Food = {
+
+ cat
+ Phrase ; Item ; Kind ; Quality ;
+
+ flags startcat = Phrase ;
+
+ fun
+ Is : Item -> Quality -> Phrase ;
+ This, That : Kind -> Item ;
+ QKind : Quality -> Kind -> Kind ;
+ Wine, Cheese, Fish : Kind ;
+ Very : Quality -> Quality ;
+ Fresh, Warm, Italian, Expensive, Delicious, Boring : Quality ;
+
+}
+
+concrete FoodEng of Food = {
+
+
+ lincat
+ Phrase, Item, Kind, Quality = {s : Str} ;
+
+ lin
+ Is item quality = {s = item.s ++ "is" ++ quality.s} ;
+ This kind = {s = "this" ++ kind.s} ;
+ That kind = {s = "that" ++ kind.s} ;
+ QKind quality kind = {s = quality.s ++ kind.s} ;
+ Wine = {s = "wine"} ;
+ Cheese = {s = "cheese"} ;
+ Fish = {s = "fish"} ;
+ Very quality = {s = "very" ++ quality.s} ;
+ Fresh = {s = "fresh"} ;
+ Warm = {s = "warm"} ;
+ Italian = {s = "Italian"} ;
+ Expensive = {s = "expensive"} ;
+ Delicious = {s = "delicious"} ;
+ Boring = {s = "boring"} ;
+
+}
+
+concrete FoodIta of Food = {
+
+ flags coding = utf8 ;
+
+ lincat
+ Phrase, Item, Kind, Quality = {s : Str} ;
+
+ lin
+ Is item quality = {s = item.s ++ "è" ++ quality.s} ;
+ This kind = {s = "questo" ++ kind.s} ;
+ That kind = {s = "quel" ++ kind.s} ;
+ QKind quality kind = {s = kind.s ++ quality.s} ;
+ Wine = {s = "vino"} ;
+ Cheese = {s = "formaggio"} ;
+ Fish = {s = "pesce"} ;
+ Very quality = {s = "molto" ++ quality.s} ;
+ Fresh = {s = "fresco"} ;
+ Warm = {s = "caldo"} ;
+ Italian = {s = "italiano"} ;
+ Expensive = {s = "caro"} ;
+ Delicious = {s = "delizioso"} ;
+ Boring = {s = "noioso"} ;
+
+}
diff --git a/examples/gfm-format/Words.gfm b/examples/gfm-format/Words.gfm
new file mode 100644
index 000000000..0e3aafb3e
--- /dev/null
+++ b/examples/gfm-format/Words.gfm
@@ -0,0 +1,22 @@
+-- Baseline of .gfm format: multilingual word lists (see Food.gfm for multi-module gf)
+-- The compiler recognizes the suffix .gfm and creates four files:
+-- Words.gf, WordsEng.gf, WordsFin.gf, WordsSwe.gf
+-- The first non-comment line must give a list of lang names.
+-- The prefix comes from this file, as well as the abstract name.
+-- Languages are separated by ';', variants within a language by ','.
+-- Multi-word expressions are allowed.
+-- The startcat is S.
+-- The abstract name is multi_word_S for the first multi word (or word) on each line.
+-- This file must be UTF-8 encoded.
+
+> langs Eng Swe Fin
+
+house ; hus ; talo
+car, automobile ; bil ; auto
+man ; man ; mies
+girl ; flicka, tjej ; tyttö
+technical university ; teknisk högskola ; teknillinen korkeakoulu
+
+
+
+