summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraarne <unknown>2004-04-28 09:08:31 +0000
committeraarne <unknown>2004-04-28 09:08:31 +0000
commit1bd3dc8433b433cae6937a246045f9e4cbb8bf73 (patch)
tree71da3486f9e13b49096c38b7dea1fc64c00b4178
parente5c60c9cfd25d260576c451f3005d8f6f27966a4 (diff)
timetable
-rw-r--r--grammars/timetable/Timetable.gf31
-rw-r--r--grammars/timetable/TimetableEng.gf22
-rw-r--r--grammars/timetable/TimetableHTML.gf24
3 files changed, 77 insertions, 0 deletions
diff --git a/grammars/timetable/Timetable.gf b/grammars/timetable/Timetable.gf
new file mode 100644
index 000000000..8eab2600b
--- /dev/null
+++ b/grammars/timetable/Timetable.gf
@@ -0,0 +1,31 @@
+abstract Timetable = {
+ cat
+ Table ;
+ TrainList CityList ;
+ City ;
+ CityList ;
+ Train CityList ;
+ Stop ;
+ Time ;
+ Number ;
+
+ fun
+ MkTable : (cs : CityList) -> TrainList cs -> Table ;
+ NilTrain : (cs : CityList) -> TrainList cs ;
+ ConsTrain :
+ (cs : CityList) -> Number -> Train cs -> TrainList cs -> TrainList cs ;
+ OneCity : City -> CityList ;
+ ConsCity : City -> CityList -> CityList ;
+
+ StopTime : Time -> Stop ;
+ NoStop : Stop ;
+
+ LocTrain : (c : City) -> Stop -> Train (OneCity c) ;
+ CityTrain :
+ (c : City) -> Stop -> (cs : CityList) ->
+ Train cs -> Train (ConsCity c cs) ;
+
+ T : Int -> Time ;
+ N : Int -> Number ;
+ C : String -> City ;
+}
diff --git a/grammars/timetable/TimetableEng.gf b/grammars/timetable/TimetableEng.gf
new file mode 100644
index 000000000..2800ce010
--- /dev/null
+++ b/grammars/timetable/TimetableEng.gf
@@ -0,0 +1,22 @@
+--# -path=.:../prelude
+
+concrete TimetableEng of Timetable = open Prelude in {
+
+ lin
+ MkTable cs ts = ss (["trains on the line from"] ++ cs.s ++ ":" ++ ts.s) ;
+ NilTrain _ = ss [] ;
+ ConsTrain cs n t ts = ss (n.s ++ ":" ++ t.s ++ ";") ;
+ OneCity c = c ;
+ ConsCity c cs = ss (c.s ++ "to" ++ cs.s) ;
+
+ StopTime t = t ;
+ NoStop = ss ["no stop"] ;
+
+ LocTrain c s = cc2 c s ;
+ CityTrain c s cs t = ss (c.s ++ s.s ++ "," ++ t.s) ;
+
+ T i = prefixSS "at" i ;
+ N n = prefixSS "train" n ;
+ C s = s ;
+
+}
diff --git a/grammars/timetable/TimetableHTML.gf b/grammars/timetable/TimetableHTML.gf
new file mode 100644
index 000000000..41b7c39a0
--- /dev/null
+++ b/grammars/timetable/TimetableHTML.gf
@@ -0,0 +1,24 @@
+--# -path=.:../prelude
+
+concrete TimetableHTML of Timetable = open Prelude in {
+
+ lin
+ MkTable cs ts =
+ ss ("<table>" ++ "<tr><td></td>"++ cs.s ++ </tr> ++ ts.s ++ "</table>") ;
+ NilTrain _ = ss [] ;
+ ConsTrain cs n t ts =
+ ss ("<tr>" ++ n.s ++ t.s ++ "</tr>") ;
+ OneCity c = ss ("<td>" ++ c ++ "</td>") ;
+ ConsCity c cs = ss (c.s ++ "to" ++ cs.s) ;
+
+ StopTime t = t ;
+ NoStop = ss ["no stop"] ;
+
+ LocTrain c s = cc2 c s ;
+ CityTrain c s cs t = ss (c.s ++ s.s ++ "," ++ t.s) ;
+
+ T i = prefixSS "at" i ;
+ N n = prefixSS "train" n ;
+ C s = s ;
+
+}