summaryrefslogtreecommitdiff
path: root/grammars/video/Time
diff options
context:
space:
mode:
authoraarne <unknown>2004-09-16 14:47:18 +0000
committeraarne <unknown>2004-09-16 14:47:18 +0000
commitecc132dccfc7617ed413f21ee37539475081f8ec (patch)
treef6fe589eb3881e36b9a94d36aaba49fe4d4087e4 /grammars/video/Time
parent7769d0fb00a34fb4499017a4aec01a59246b69a1 (diff)
Karin C's example
Diffstat (limited to 'grammars/video/Time')
-rw-r--r--grammars/video/Time/time.Catalan.gf135
-rw-r--r--grammars/video/Time/time.Eng.gf130
-rw-r--r--grammars/video/Time/time.Prolog.gf110
-rw-r--r--grammars/video/Time/time.Symb.gf127
-rw-r--r--grammars/video/Time/time.gf106
-rw-r--r--grammars/video/Time/timeProlog.gf103
-rw-r--r--grammars/video/Time/timeResSwe.gf7
-rw-r--r--grammars/video/Time/timeSwe.gf149
8 files changed, 867 insertions, 0 deletions
diff --git a/grammars/video/Time/time.Catalan.gf b/grammars/video/Time/time.Catalan.gf
new file mode 100644
index 000000000..b987486cb
--- /dev/null
+++ b/grammars/video/Time/time.Catalan.gf
@@ -0,0 +1,135 @@
+-- Time grammar Catalan
+
+include time.Abs.gf ;
+
+lin
+
+hour0 = {s = refs "dotze" "una"} ;
+hour1 = {s = refs ["la una"] "dues"} ;
+hour2 = {s = refs "dues" "tres"} ;
+hour3 = {s = refs "tres" "quatre"} ;
+hour4 = {s = refs "quatre" "cinc"} ;
+hour5 = {s = refs "cinc" "sis"} ;
+hour6 = {s = refs "sis" "set"} ;
+hour7 = {s = refs "set" "vuit"} ;
+hour8 = {s = refs "vuit" "nou"} ;
+hour9 = {s = refs "nou" "deu"} ;
+hour10 = {s = refs "deu" "onze"} ;
+hour11 = {s = refs "onze" "dotze"} ;
+hour12 = {s = refs "dotze" "una" } ;
+hour13 = {s = refs "tretze" "dues" };
+hour14 = {s = refs "catorze" "tres" };
+hour15 = {s = refs "quinze" "quatre" };
+hour16 = {s = refs "setze" "cinc" };
+hour17 = {s = refs "disset" "sis" };
+hour18 = {s = refs "divuit" "set" };
+hour19 = {s = refs "dinou" "vuit" } ;
+hour20 = {s = refs "vint" "nou" } ;
+hour21 = {s = refs "vintiun_a" "deu" } ;
+hour22 = {s = refs "vintidues_dos" "onze" } ;
+hour23 = {s = refs "vintitres" "dotze" };
+
+pattern
+--Minutes
+minute0 = "zero" ;
+minute1 = "una" ;
+minute2 = "dues" ;
+minute3 = "tres" ;
+minute4 = "quatre" ;
+minute5 = "cinc" ;
+minute6 = "sis" ;
+minute7 = "set" ;
+minute8 = "vuit" ;
+minute9 = "nou" ;
+minute10 = "deu" ;
+minute11 = "onze" ;
+minute12 = "dotze" ;
+minute13 = "tretze" ;
+minute14 = "catorze" ;
+minute15 = "quinze" ;
+minute16 = "setze" ;
+minute17 = "disset" ;
+minute18 = "divuit" ;
+minute19 = "dinou" ;
+minute20 = "vint" ;
+minute21 = "vintiun_a" ;
+minute22 = "vintidues_dos" ;
+minute23 = "vintitres" ;
+minute24 = "vintiquatre" ;
+minute25 = "vinticinc" ;
+minute26 = "vintisis" ;
+minute27 = "vintiset" ;
+minute28 = "vintivuit" ;
+minute29 = "vintinou" ;
+minute30 = "trenta" ;
+minute31 = "trentauna" ;
+minute32 = "trentadues" ;
+minute33 = "trentatres" ;
+minute34 = "trentaquatre" ;
+minute35 = "trentacinc" ;
+minute36 = "trentasis" ;
+minute37 = "trentaset" ;
+minute38 = "trentavuit" ;
+minute39 = "trentanou" ;
+minute40 = "quaranta" ;
+minute41 = "quarantauna" ;
+minute42 = "quarantadues" ;
+minute43 = "quarantatres" ;
+minute44 = "quarantaquatre" ;
+minute45 = "quarantacinc" ;
+minute46 = "quarantasis" ;
+minute47 = "quarantaset" ;
+minute48 = "quarantavuit" ;
+minute49 = "quarantanou" ;
+minute50 = "cinquenta" ;
+minute51 = "cinquentauna" ;
+minute52 = "cinquentadues" ;
+minute53 = "cinquentatres" ;
+minute54 = "cinquentaquatre" ;
+minute55 = "cinquentacinc" ;
+minute56 = "cinquentasis" ;
+minute57 = "cinquentaset" ;
+minute58 = "cinquentavuit" ;
+minute59 = "cinquentanou" ;
+
+-- LexMinuteZero
+minuteZero = [] ;
+
+-- LexMinute
+minuteQuarter = "un" ++ "quart" ++ "de";
+minuteFive = "mig" ++ "quart" ++ "de";
+minuteTen = "cinc" ++ "minuts" ++ "per" ++ "a" ++ "un" ++ "quart" ++ "de";
+minuteTwenty = "un" ++ "quart" ++ "i" ++ "cinc" ++ "de";
+
+-- LexMinuteHalfFive
+minuteTwentyFive = "un" ++ "quart" ++ "i" ++ "deu" ++ "de";
+minuteThirtyFive = "dos" ++ "quarts" ++ "i" ++ "cinc" ++ "de";
+
+-- LexMinuteTo
+minuteQuarterTo = "tres" ++ "quarts" ++ "de" ;
+minuteFiveTo = "tres" ++ "quarts" ++ "i" ++ "deu" ++ "de";
+--minuteFiveTo = "cinc" ++ "minuts" ++ "per" ++ "a" ;
+minuteTenTo = "tres" ++ "quarts" ++ "i" ++ "cinc" ++ "de";
+minuteTwentyTo = "dos" ++ "quarts" ++ "i" ++ "deu" ++ "de";
+--minuteTwentyTo = "cinc" ++ "minuts" ++ "per" ++ "a" ++ "tres" ++ "quarts" ++ "de";
+
+-- LexMinuteHalf
+minuteHalf = "dos" ++ "quarts" ;
+
+-- Creates tables for each hour, consisting of
+-- Present hour - Formal, Next hour informal,
+-- (in catalan of the n:nd hour)
+param RefHour = ThisFormal | NextLex ;
+oper refs : Str -> Str -> RefHour => Str =
+ \x,y -> table {ThisFormal => x ; NextLex => y } ;
+
+lincat Hour = {s : RefHour => Str} ;
+
+lin
+time h m = {s = h.s ! ThisFormal ++ "i" ++ m.s} ;
+timeOnTheHour h m = {s = h.s ! ThisFormal ++ m.s } ;
+timePast h m = {s = m.s ++ h.s ! NextLex} ;
+timeTo h m = {s = m.s ++ h.s ! NextLex } ;
+timeHalf h m = {s = m.s ++ h.s ! NextLex } ;
+timeFiveToHalf h m = {s = m.s ++ h.s ! NextLex } ;
+timeFivePastHalf h m = {s = m.s ++ h.s ! NextLex } ; \ No newline at end of file
diff --git a/grammars/video/Time/time.Eng.gf b/grammars/video/Time/time.Eng.gf
new file mode 100644
index 000000000..04ee13c95
--- /dev/null
+++ b/grammars/video/Time/time.Eng.gf
@@ -0,0 +1,130 @@
+-- Time grammar English
+
+include time.Abs.gf ;
+
+
+lin
+hour0 = {s = refs ["null null"] (variants {["midnight"];["twelve"]}) "one"} ;
+hour1 = {s = refs "one" (variants {["one"];["one a.m"]}) "two"} ;
+hour2 = {s = refs "two" (variants {["two"];["two a.m"]}) "three"} ;
+hour3 = {s = refs "three" (variants {["three"];["three a.m"]}) "four"} ;
+hour4 = {s = refs "four" (variants {["four"];["four a.m"]}) "five"} ;
+hour5 = {s = refs "five" (variants {["five"];["five a.m"]}) "six"} ;
+hour6 = {s = refs "six" (variants {["six"];["six a.m"]}) "seven"} ;
+hour7 = {s = refs "seven" (variants {["seven"];["seven a.m"]}) "eight"} ;
+hour8 = {s = refs "eight" (variants {["eight"];["eight a.m"]}) "nine"} ;
+hour9 = {s = refs "nine" (variants {["nine"];["nine a.m"]}) "ten"} ;
+hour10 = {s = refs "ten" (variants {["ten"];["ten a.m"]}) "eleven"} ;
+hour11 = {s = refs "eleven" (variants {["eleven"];["eleven a.m"]}) "twelve"} ;
+hour12 = {s = refs "twelve" (variants {["twelve"];["twelve a.m"]}) "one" } ;
+hour13 = {s = refs "thirten" (variants {["one"];["one p.m"]}) "two" };
+hour14 = {s = refs "fourteen" (variants {["two"];["two p.m"]}) "three" } ;
+hour15 = {s = refs "fifteen" (variants {["three"];["three p.m"]}) "four" } ;
+hour16 = {s = refs "sixteen" (variants {["four"];["four p.m"]}) "five" } ;
+hour17 = {s = refs "seventeen" (variants {["five"];["five p.m"]}) "six" } ;
+hour18 = {s = refs "eighteen" (variants {["six"];["six p.m"]}) "seven" } ;
+hour19 = {s = refs "nineteen" (variants {["seven"];["seven p.m"]}) "eight" } ;
+hour20 = {s = refs "twenty" (variants {["eight"];["eight p.m"]}) "nine" } ;
+hour21 = {s = refs ["twenty one"] (variants {["nine"];["nine p.m"]}) "eight" } ;
+hour22 = {s = refs ["twenty two"] (variants {["ten"];["ten p.m"]}) "eleven" } ;
+hour23 = {s = refs ["twenty three"] (variants {["eleven"]}) (variants {["midnight"];["twelve"]})} ;
+
+
+lin
+
+minute0 = {s = mins (variants {["o'clock"];["sharp"];["hundred hours"]}) (variants{[""]}) (variants{})};
+minute1 = {s = mins ["oh one"] (variants{["one minute past"];["one past"]}) (variants{})};
+minute2 = {s = mins ["oh two"] (variants{["two minutes past"];["two past"]}) (variants{})};
+minute3 = {s = mins ["oh three"] (variants{["three minutes past"];["three past"]}) (variants{})};
+minute4 = {s = mins ["oh four"] (variants{["four minutes past"];["four past"]}) (variants{})};
+minute5 = {s = mins ["oh five"] (variants{["five minutes past"];["five past"]}) (variants{})};
+minute6 = {s = mins ["oh six"] (variants{["six minutes past"];["six past"]}) (variants{})};
+minute7 = {s = mins ["oh seven"] (variants{["seven minutes past"];["seven past"]}) (variants{})};
+minute8 = {s = mins ["oh eight"] (variants{["eight minutes past"];["eight past"]}) (variants{})};
+minute9 = {s = mins ["oh nine"] (variants{["nine minutes past"];["nine past"]}) (variants{})};
+
+minute10 = {s = mins ["ten"] (variants{["ten minutes past"];["ten past"]}) (variants{})};
+minute11 = {s = mins ["eleven"] (variants{["eleven minutes past"];["eleven past"]}) (variants{})};
+minute12 = {s = mins ["twelve"] (variants{["twelve minutes past"];["twelve past"]}) (variants{})};
+minute13 = {s = mins ["thirteen"] (variants{["thirteen minutes past"];["thirteen past"]}) (variants{})};
+minute14 = {s = mins ["fourteen"] (variants{["fourteen minutes past"];["fourteen past"]}) (variants{})};
+minute15 = {s = mins ["fifteen"] (variants{["fifteen minutes past"];["fifteen past"];["quarter past"];["a quarter past"]}) (variants{})};
+minute16 = {s = mins ["sixteen"] (variants{["sixteen minutes past"];["sixteen past"]}) (variants{})};
+minute17 = {s = mins ["seventeen"] (variants{["seventeen minutes past"];["seventeen past"]}) (variants{})};
+minute18 = {s = mins ["eightteen"] (variants{["eighteen minutes past"];["eighteen past"]}) (variants{})};
+minute19 = {s = mins ["nineteen"] (variants{["nineteen minutes past"];["nineteen past"]}) (variants{})};
+
+minute20 = {s = mins ["twenty"] (variants{["twenty minutes past"];["twenty past"]}) (variants{})};
+minute21 = {s = mins ["twenty one"] (variants{["twenty one minutes past"];["twenty one past"]}) (variants{})};
+minute22 = {s = mins ["twenty two"] (variants{["twenty two minutes past"];["twenty two past"]}) (variants{})};
+minute23 = {s = mins ["twenty three"] (variants{["twenty three minutes past"];["twenty three past"]}) (variants{})};
+minute24 = {s = mins ["twenty four"] (variants{["twenty four minutes past"];["twenty four past"]}) (variants{})};
+minute25 = {s = mins ["twenty five"] (variants{["twenty five minutes past"];["twenty two five past"]}) (variants{})};
+minute26 = {s = mins ["twenty six"] (variants{["twenty six minutes past"];["twenty six past"]}) (variants{})};
+minute27 = {s = mins ["twenty seven"] (variants{["twenty seven minutes past"];["twenty seven past"]}) (variants{})};
+minute28 = {s = mins ["twenty eight"] (variants{["twenty eight minutes past"];["twenty eight past"]}) (variants{})};
+minute29 = {s = mins ["twenty nine"] (variants{["twenty nine minutes past"];["twenty nine past"]}) (variants{})};
+
+minute30 = {s = mins ["thirty"] (variants{["thirty minutes past"];["thirty past"];["half past"]}) (variants{})};
+
+minute31 = {s = mins ["thirty one"] (variants{["one minute past half past????"]}) (variants{["twenty nine minutes to"];["twenty nine to"]})};
+minute32 = {s = mins ["thirty two"] (variants{}) (variants{["twenty eight minutes to"];["twenty eight to"]})};
+minute33 = {s = mins ["thirty three"] (variants{}) (variants{["twenty seven minutes to"];["twenty seven to"]})};
+minute34 = {s = mins ["thirty four"] (variants{}) (variants{["twenty six minutes to"];["twenty six to"]})};
+minute35 = {s = mins ["thirty five"] (variants{}) (variants{["twenty five minutes to"];["twenty five to"]})};
+minute36 = {s = mins ["thirty six"] (variants{}) (variants{["twenty four minutes to"];["twenty four to"]})};
+minute37 = {s = mins ["thirty seven"] (variants{}) (variants{["twenty three minutes to"];["twenty three to"]})};
+minute38 = {s = mins ["thirty eight"] (variants{}) (variants{["twenty two minutes to"];["twenty two to"]})};
+minute39 = {s = mins ["thirty nine"] (variants{}) (variants{["twenty one minutes to"];["twenty one to"]})};
+minute40 = {s = mins ["fourty"] (variants{}) (variants{["twenty minutes to"];["twenty to"]})};
+
+minute41 = {s = mins ["fourty one"] (variants{}) (variants{["nineteen minutes to"];["nineteen to"]})};
+minute42 = {s = mins ["fourty two"] (variants{}) (variants{["eightteen minutes to"];["eightteen to"]})};
+minute43 = {s = mins ["fourty three"] (variants{}) (variants{["seventeen minutes to"];["seventeen to"]})};
+minute44 = {s = mins ["fourty four"] (variants{}) (variants{["sixteen minutes to"];["sixteen to"]})};
+minute45 = {s = mins ["fourty five"] (variants{["three quarters past???"]}) (variants{["fifteen minutes to"];["fifteen to"]})};
+minute46 = {s = mins ["fourty six"] (variants{}) (variants{["fourteen minutes to"];["fourteen to"]})};
+minute47 = {s = mins ["fourty seven"] (variants{}) (variants{["thirteen minutes to"];["thirteen to"]})};
+minute48 = {s = mins ["fourty eight"] (variants{}) (variants{["twelve minutes to"];["twelve to"]})};
+minute49 = {s = mins ["fourty nine"] (variants{}) (variants{["eleven minutes to"];["eleven to"]})};
+minute50 = {s = mins ["fifty"] (variants{}) (variants{["ten minutes to"];["ten to"]})};
+
+minute51 = {s = mins ["fifty one"] (variants{}) (variants{["nine minutes to"];["nine to"]})};
+minute52 = {s = mins ["fifty two"] (variants{}) (variants{["eight minutes to"];["eight to"]})};
+minute53 = {s = mins ["fifty three"] (variants{}) (variants{["seven minutes to"];["seven to"]})};
+minute54 = {s = mins ["fifty four"] (variants{}) (variants{["six minutes to"];["six to"]})};
+minute55 = {s = mins ["fifty five"] (variants{}) (variants{["five minutes to"];["five to"]})};
+minute56 = {s = mins ["fifty six"] (variants{}) (variants{["four minutes to"];["four to"]})};
+minute57 = {s = mins ["fifty seven"] (variants{}) (variants{["three minutes to"];["three to"]})};
+minute58 = {s = mins ["fifty eight"] (variants{}) (variants{["two minutes to"];["two to"]})};
+minute59 = {s = mins ["fifty nine"] (variants{}) (variants{["one minute to"];["one to"]})};
+
+
+param RefHour = ThisFormal | ThisLex | NextLex ;
+oper refs : Str -> Str -> Str -> RefHour => Str =
+ \x,y,z -> table {ThisFormal => x ; ThisLex => y ; NextLex => z } ;
+
+lincat Hour = {s : RefHour => Str} ;
+lincat Minute = {s : MinMin => Str} ;
+
+param MinMin = Form | Past | To ;
+oper mins : Str -> Str -> Str -> MinMin => Str = \x,y,z -> table {Form => x ; Past => y ; To => z } ;
+--oper mins : Str -> Str -> Str -> MinMin => Str = \x,y,z -> table {Form => x ; Past => y ; To => z } ;
+-- jag vill ha en variantsexpanderare, tänk tänk
+--oper mins : Str -> Str -> Str -> MinMin => Str = \x,y,z -> table {Form => (variants{x}) ; Past => (variants{y}) ; To => (variants{z}) } ;
+-- Time expressions
+lin
+
+--timeFormal h m = {s = h.s ! ThisFormal ++ m.s ! Form} ;
+--timeInformal h m = {s = variants {
+ --m.s ! Past ++ h.s ! ThisLex ;
+ --m.s ! To ++ h.s ! NextLex
+ --}
+ --};
+
+time h m = {s = variants {
+ h.s ! ThisFormal ++ m.s ! Form ;
+ m.s ! Past ++ h.s ! ThisLex ;
+ m.s ! To ++ h.s ! NextLex
+ }
+ }; \ No newline at end of file
diff --git a/grammars/video/Time/time.Prolog.gf b/grammars/video/Time/time.Prolog.gf
new file mode 100644
index 000000000..564a12431
--- /dev/null
+++ b/grammars/video/Time/time.Prolog.gf
@@ -0,0 +1,110 @@
+-- Time grammar Prolog output notation
+
+include time.Abs.gf ;
+
+--flags lexer=codelit ; unlexer=codelit ; startcat=Time ;
+--flags lexer=code ; unlexer=code ; startcat=Time ;
+
+pattern
+
+hour0 = "00" ;
+hour1 = "01" ;
+hour2 = "02" ;
+hour3 = "03" ;
+hour4 = "04" ;
+hour5 = "05" ;
+hour6 = "06" ;
+hour7 = "07" ;
+hour8 = "08" ;
+hour9 = "09" ;
+hour10 = "10" ;
+hour11 = "11" ;
+hour12 = "12" ;
+hour13 = "13" ;
+hour14 = "14" ;
+hour15 = "15" ;
+hour16 = "16" ;
+hour17 = "17" ;
+hour18 = "18" ;
+hour19 = "19" ;
+hour20 = "20" ;
+hour21 = "21" ;
+hour22 = "22" ;
+hour23 = "23" ;
+
+--Minutes
+minute0 = "00" ;
+minute1 = "01" ;
+minute2 = "02" ;
+minute3 = "03" ;
+minute4 = "04" ;
+minute5 = "05" ;
+minute6 = "06" ;
+minute7 = "07" ;
+minute8 = "08" ;
+minute9 = "09" ;
+minute10 = "10" ;
+minute11 = "11" ;
+minute12 = "12" ;
+minute13 = "13" ;
+minute14 = "14" ;
+minute15 = "15" ;
+minute16 = "16" ;
+minute17 = "17" ;
+minute18 = "18" ;
+minute19 = "19" ;
+minute20 = "20" ;
+minute21 = "21" ;
+minute22 = "22" ;
+minute23 = "23" ;
+minute24 = "24" ;
+minute25 = "25" ;
+minute26 = "26" ;
+minute27 = "27" ;
+minute28 = "28" ;
+minute29 = "29" ;
+minute30 = "30" ;
+
+minute31 = "31" ;
+minute32 = "32" ;
+minute33 = "33" ;
+minute34 = "34" ;
+minute35 = "35" ;
+minute36 = "36" ;
+minute37 = "37" ;
+minute38 = "38" ;
+minute39 = "39" ;
+minute40 = "40" ;
+minute41 = "41" ;
+minute42 = "42" ;
+minute43 = "43" ;
+minute44 = "44" ;
+minute45 = "45" ;
+minute46 = "46" ;
+minute47 = "47" ;
+minute48 = "48" ;
+minute49 = "49" ;
+minute50 = "50" ;
+minute51 = "51" ;
+minute52 = "52" ;
+minute53 = "53" ;
+minute54 = "54" ;
+minute55 = "55" ;
+minute56 = "56" ;
+minute57 = "57" ;
+minute58 = "58" ;
+minute59 = "59" ;
+
+oper
+--with single quotes
+--app2 : Str -> Str -> Str -> Str = \pred -> \argH -> \argM -> pred ++ "(" ++ "'" ++ argH ++ ":" ++ argM ++ "'" ++ ")" ;
+--without single quotes
+--app2 : Str -> Str -> Str -> Str = \pred -> \argH -> \argM -> pred ++ "(" ++ argH ++ ":" ++ argM ++ ")" ;
+
+app3 : Str -> Str -> Str = \argH -> \argM -> argH ++ ":" ++ argM ;
+
+lin
+--timeFormal h m = {s = app2 "time" h.s m.s } ;
+--timeInformal h m = {s = app2 "time" h.s m.s } ;
+--time h m = {s = app2 "time" h.s m.s } ;
+time h m = {s = app3 h.s m.s } ; \ No newline at end of file
diff --git a/grammars/video/Time/time.Symb.gf b/grammars/video/Time/time.Symb.gf
new file mode 100644
index 000000000..81f877668
--- /dev/null
+++ b/grammars/video/Time/time.Symb.gf
@@ -0,0 +1,127 @@
+-- Time grammar Symbolic/Numerical
+
+include time.Abs.gf ;
+
+pattern
+
+hour0 = "00" ;
+hour1 = "01" ;
+hour2 = "02" ;
+hour3 = "03" ;
+hour4 = "04" ;
+hour5 = "05" ;
+hour6 = "06" ;
+hour7 = "07" ;
+hour8 = "08" ;
+hour9 = "09" ;
+hour10 = "10" ;
+hour11 = "11" ;
+hour12 = "12" ;
+hour13 = "13" ;
+hour14 = "14" ;
+hour15 = "15" ;
+hour16 = "16" ;
+hour17 = "17" ;
+hour18 = "18" ;
+hour19 = "19" ;
+hour20 = "20" ;
+hour21 = "21" ;
+hour22 = "22" ;
+hour23 = "23" ;
+
+--Minutes
+minute0 = "00" ;
+minute1 = "01" ;
+minute2 = "02" ;
+minute3 = "03" ;
+minute4 = "04" ;
+minute5 = "05" ;
+minute6 = "06" ;
+minute7 = "07" ;
+minute8 = "08" ;
+minute9 = "09" ;
+minute10 = "10" ;
+minute11 = "11" ;
+minute12 = "12" ;
+minute13 = "13" ;
+minute14 = "14" ;
+minute15 = "15" ;
+minute16 = "16" ;
+minute17 = "17" ;
+minute18 = "18" ;
+minute19 = "19" ;
+minute20 = "20" ;
+minute21 = "21" ;
+minute22 = "22" ;
+minute23 = "23" ;
+minute24 = "24" ;
+minute25 = "25" ;
+minute26 = "26" ;
+minute27 = "27" ;
+minute28 = "28" ;
+minute29 = "29" ;
+minute30 = "30" ;
+minute31 = "31" ;
+minute32 = "32" ;
+minute33 = "33" ;
+minute34 = "34" ;
+minute35 = "35" ;
+minute36 = "36" ;
+minute37 = "37" ;
+minute38 = "38" ;
+minute39 = "39" ;
+minute40 = "40" ;
+minute41 = "41" ;
+minute42 = "42" ;
+minute43 = "43" ;
+minute44 = "44" ;
+minute45 = "45" ;
+minute46 = "46" ;
+minute47 = "47" ;
+minute48 = "48" ;
+minute49 = "49" ;
+minute50 = "50" ;
+minute51 = "51" ;
+minute52 = "52" ;
+minute53 = "53" ;
+minute54 = "54" ;
+minute55 = "55" ;
+minute56 = "56" ;
+minute57 = "57" ;
+minute58 = "58" ;
+minute59 = "59" ;
+
+-- LexMinuteZero
+minuteZero = "00" ;
+
+--LexMinutePast
+minuteQuarter = "15" ;
+minuteFive = "05" ;
+minuteTen = "10" ;
+minuteTwenty = "20" ;
+--minuteTwentyFive = "25" ;
+
+--LexMinuteToHalf
+minuteTwentyFive = "25" ;
+
+--LexMinutePastHalf
+minuteThirtyFive = "35" ;
+
+--LexMinuteHalf
+minuteHalf = "30" ;
+
+--LexMinuteTo
+minuteQuarterTo = "45" ;
+minuteFiveTo = "55" ;
+minuteTenTo = "50" ;
+minuteTwentyTo = "40" ;
+--minuteTwentyFiveTo = "35" ;
+
+lin
+time h m = {s = h.s ++ m.s} ; -- 11 30
+timeOnTheHour h m = {s = h.s ++ m.s} ; -- 11 00
+timePast h m = {s = h.s ++ m.s} ; -- 11 10
+timeTo h m = {s = h.s ++ m.s} ; -- 10 50
+timeHalf h m = {s = h.s ++ m.s} ;
+timeFiveToHalf h m = {s = h.s ++ m.s } ;
+timeFivePastHalf h m = {s = h.s ++ m.s } ; \ No newline at end of file
diff --git a/grammars/video/Time/time.gf b/grammars/video/Time/time.gf
new file mode 100644
index 000000000..30023a0b4
--- /dev/null
+++ b/grammars/video/Time/time.gf
@@ -0,0 +1,106 @@
+-- Time grammar Abstract syntax
+
+abstract time = {
+cat
+
+-- Times
+Time ;
+Hour ;
+Minute ;
+
+fun
+-- Time
+hour0 : Hour ;
+hour1 : Hour ;
+hour2 : Hour ;
+hour3 : Hour ;
+hour4 : Hour ;
+hour5 : Hour ;
+hour6 : Hour ;
+hour7 : Hour ;
+hour8 : Hour ;
+hour9 : Hour ;
+hour10 : Hour ;
+hour11 : Hour ;
+hour12 : Hour ;
+hour13 : Hour ;
+hour14 : Hour ;
+hour15 : Hour ;
+hour16 : Hour ;
+hour17 : Hour ;
+hour18 : Hour ;
+hour19 : Hour ;
+hour20 : Hour ;
+hour21 : Hour ;
+hour22 : Hour ;
+hour23 : Hour ;
+
+-- Minutes
+minute0 : Minute ;
+minute1 : Minute ;
+minute2 : Minute ;
+minute3 : Minute ;
+minute4 : Minute ;
+minute5 : Minute ;
+minute6 : Minute ;
+minute7 : Minute ;
+minute8 : Minute ;
+minute9 : Minute ;
+minute10 : Minute ;
+minute11 : Minute ;
+minute12 : Minute ;
+minute13 : Minute ;
+minute14 : Minute ;
+minute15 : Minute ;
+minute16 : Minute ;
+minute17 : Minute ;
+minute18 : Minute ;
+minute19 : Minute ;
+minute20 : Minute ;
+minute21 : Minute ;
+minute22 : Minute ;
+minute23 : Minute ;
+minute24 : Minute ;
+minute25 : Minute ;
+minute26 : Minute ;
+minute27 : Minute ;
+minute28 : Minute ;
+minute29 : Minute ;
+minute30 : Minute ;
+minute31 : Minute ;
+minute32 : Minute ;
+minute33 : Minute ;
+minute34 : Minute ;
+minute35 : Minute ;
+minute36 : Minute ;
+minute37 : Minute ;
+minute38 : Minute ;
+minute39 : Minute ;
+minute40 : Minute ;
+minute41 : Minute ;
+minute42 : Minute ;
+minute43 : Minute ;
+minute44 : Minute ;
+minute45 : Minute ;
+minute46 : Minute ;
+minute47 : Minute ;
+minute48 : Minute ;
+minute49 : Minute ;
+minute50 : Minute ;
+minute51 : Minute ;
+minute52 : Minute ;
+minute53 : Minute ;
+minute54 : Minute ;
+minute55 : Minute ;
+minute56 : Minute ;
+minute57 : Minute ;
+minute58 : Minute ;
+minute59 : Minute ;
+
+-- Time expressions
+--timeFormal : Hour -> Minute -> Time ;
+--timeInformal : Hour -> Minute -> Time ;
+time : Hour -> Minute -> Time ;
+
+
+}
diff --git a/grammars/video/Time/timeProlog.gf b/grammars/video/Time/timeProlog.gf
new file mode 100644
index 000000000..8a791ae0b
--- /dev/null
+++ b/grammars/video/Time/timeProlog.gf
@@ -0,0 +1,103 @@
+-- Time grammar Prolog output notation
+
+concrete timeProlog of time = open prologResource in {
+
+--flags lexer=codelit ; unlexer=codelit ; startcat=Time ;
+--flags lexer=code ; unlexer=code ; startcat=Time ;
+
+pattern
+
+hour0 = "00" ;
+hour1 = "01" ;
+hour2 = "02" ;
+hour3 = "03" ;
+hour4 = "04" ;
+hour5 = "05" ;
+hour6 = "06" ;
+hour7 = "07" ;
+hour8 = "08" ;
+hour9 = "09" ;
+hour10 = "10" ;
+hour11 = "11" ;
+hour12 = "12" ;
+hour13 = "13" ;
+hour14 = "14" ;
+hour15 = "15" ;
+hour16 = "16" ;
+hour17 = "17" ;
+hour18 = "18" ;
+hour19 = "19" ;
+hour20 = "20" ;
+hour21 = "21" ;
+hour22 = "22" ;
+hour23 = "23" ;
+
+--Minutes
+minute0 = "00" ;
+minute1 = "01" ;
+minute2 = "02" ;
+minute3 = "03" ;
+minute4 = "04" ;
+minute5 = "05" ;
+minute6 = "06" ;
+minute7 = "07" ;
+minute8 = "08" ;
+minute9 = "09" ;
+minute10 = "10" ;
+minute11 = "11" ;
+minute12 = "12" ;
+minute13 = "13" ;
+minute14 = "14" ;
+minute15 = "15" ;
+minute16 = "16" ;
+minute17 = "17" ;
+minute18 = "18" ;
+minute19 = "19" ;
+minute20 = "20" ;
+minute21 = "21" ;
+minute22 = "22" ;
+minute23 = "23" ;
+minute24 = "24" ;
+minute25 = "25" ;
+minute26 = "26" ;
+minute27 = "27" ;
+minute28 = "28" ;
+minute29 = "29" ;
+minute30 = "30" ;
+
+minute31 = "31" ;
+minute32 = "32" ;
+minute33 = "33" ;
+minute34 = "34" ;
+minute35 = "35" ;
+minute36 = "36" ;
+minute37 = "37" ;
+minute38 = "38" ;
+minute39 = "39" ;
+minute40 = "40" ;
+minute41 = "41" ;
+minute42 = "42" ;
+minute43 = "43" ;
+minute44 = "44" ;
+minute45 = "45" ;
+minute46 = "46" ;
+minute47 = "47" ;
+minute48 = "48" ;
+minute49 = "49" ;
+minute50 = "50" ;
+minute51 = "51" ;
+minute52 = "52" ;
+minute53 = "53" ;
+minute54 = "54" ;
+minute55 = "55" ;
+minute56 = "56" ;
+minute57 = "57" ;
+minute58 = "58" ;
+minute59 = "59" ;
+
+lin
+--timeFormal h m = {s = app2 "time" h.s m.s } ;
+--timeInformal h m = {s = app2 "time" h.s m.s } ;
+--time h m = {s = app2 "time" h.s m.s } ;
+time h m = {s = app3 h.s m.s } ;
+}
diff --git a/grammars/video/Time/timeResSwe.gf b/grammars/video/Time/timeResSwe.gf
new file mode 100644
index 000000000..0f9ad0526
--- /dev/null
+++ b/grammars/video/Time/timeResSwe.gf
@@ -0,0 +1,7 @@
+resource timeResSwe = {
+param RefHour = ThisFormal | ThisLex | NextLex ;
+oper refs : Str -> Str -> Str -> RefHour => Str = \x,y,z -> table {ThisFormal => x ; ThisLex => y ; NextLex => z } ;
+param MinMin = Form | Past | To ;
+oper mins : Str -> Str -> Str -> MinMin => Str = \u,x,y -> table {Form => u ; Past => x ; To => y } ;
+
+}
diff --git a/grammars/video/Time/timeSwe.gf b/grammars/video/Time/timeSwe.gf
new file mode 100644
index 000000000..e9ea45e31
--- /dev/null
+++ b/grammars/video/Time/timeSwe.gf
@@ -0,0 +1,149 @@
+-- Time grammar Swedish
+
+concrete timeSwe of time = open timeResSwe in {
+
+lincat Time = {s : Str} ;
+
+--Hours
+lin
+-- Some of the time expressions is omitted because of the prolog in godis.
+-- hours after 13 and 00 are only interpreted as 13,14 etc when explicitly uttered,
+-- one o'clock is ONLY interpreted as 01:00, not 13:00.
+-- if someone needs the more elaborated forms of time use
+-- the commented lines, and comment the corresponding units.
+
+--hour0 = {s = refs (variants{["noll noll"];["noll"]}) "tolv" "ett"} ;
+hour0 = {s = refs (variants{["noll noll"];["noll"]})(variants{}) (variants{})} ;
+hour1 = {s = refs "ett" "ett" "två"} ;
+hour2 = {s = refs "två" "två" "tre"} ;
+hour3 = {s = refs "tre" "tre" "fyra"} ;
+hour4 = {s = refs "fyra" "fyra" "fem"} ;
+hour5 = {s = refs "fem" "fem" "sex"} ;
+hour6 = {s = refs "sex" "sex" "sju"} ;
+hour7 = {s = refs "sju" "sju" "åtta"} ;
+hour8 = {s = refs "åtta" "åtta" "nio"} ;
+hour9 = {s = refs "nio" "nio" "tio"} ;
+hour10 = {s = refs "tio" "tio" "elva"} ;
+hour11 = {s = refs "elva""elva" "tolv"} ;
+hour12 = {s = refs "tolv" "tolv" "ett" } ;
+
+--hour13 = {s = refs "tretton" "ett" "två" };
+--hour14 = {s = refs "fjorton" "två" "tre" };
+--hour15 = {s = refs "femton" "tre" "fyra" };
+--hour16 = {s = refs "sexton" "fyra" "fem" };
+--hour17 = {s = refs "sjutton" "fem" "sex" };
+--hour18 = {s = refs "arton" "sex" "sju" };
+--hour19 = {s = refs "nitton" "sju" "åtta" } ;
+--hour20 = {s = refs "tjugo" "åtta" "nio" } ;
+--hour21 = {s = refs ["tjugo ett"] "nio" "tio" } ;
+--hour22 = {s = refs ["tjugo två"] "tio" "elva" } ;
+--hour23 = {s = refs ["tjugo tre"] "elva" "tolv" };
+
+hour13 = {s = refs "tretton" (variants{})(variants{}) };
+hour14 = {s = refs "fjorton"(variants{})(variants{})};
+hour15 = {s = refs "femton"(variants{})(variants{})};
+hour16 = {s = refs "sexton"(variants{})(variants{})};
+hour17 = {s = refs "sjutton"(variants{})(variants{})};
+hour18 = {s = refs "arton"(variants{})(variants{})};
+hour19 = {s = refs "nitton"(variants{})(variants{})} ;
+hour20 = {s = refs "tjugo"(variants{})(variants{})} ;
+hour21 = {s = refs ["tjugo ett"](variants{})(variants{})} ;
+hour22 = {s = refs ["tjugo två"](variants{})(variants{})} ;
+hour23 = {s = refs ["tjugo tre"](variants{})(variants{})};
+
+
+--Minutes
+--0-9
+--minute0 = {s = mins (variants{["noll noll"]}) (variants{}) (variants{}) (variants{[""]})} ;
+minute0 = {s = mins ["noll noll"] (variants{[""]}) (variants{})} ;
+minute1 = {s = mins ["noll ett"] (variants {["ett över"] ; ["en minut över"]}) (variants{}) } ;
+minute2 = {s = mins ["noll två"] (variants {["två över"] ; ["två minuter över"]}) (variants{})} ;
+minute3 = {s = mins ["noll tre"] (variants { ["tre över"] ; ["tre minuter över"]}) (variants{})} ;
+minute4 = {s = mins ["noll fyra"] (variants { ["fyra över"] ; ["fyra minuter över"]}) (variants{})} ;
+minute5 = {s = mins ["noll fem"] (variants { ["fem över"] ; ["fem minuter över"]}) (variants{})} ;
+minute6 = {s = mins ["noll sex"] (variants { ["sex över"] ; ["sex minuter över"]}) (variants{})} ;
+minute7 = {s = mins ["noll sju"] (variants { ["sju över"] ; ["sju minuter över"]}) (variants{})} ;
+minute8 = {s = mins ["noll åtta"] (variants { ["åtta över"] ; ["åtta minuter över"]}) (variants{})} ;
+minute9 = {s = mins ["noll nio"] (variants { ["nio över"] ; ["nio minuter över"]}) (variants{})} ;
+
+--10-19
+minute10 = {s = mins ["tio"] (variants { ["tio över"] ; ["tio minuter över"]}) (variants{})} ;
+minute11 = {s = mins ["elva"] (variants { ["elva över"] ; ["elva minuter över"]}) (variants{})} ;
+minute12 = {s = mins ["tolv"] (variants { ["tolv över"] ; ["tolv minuter över"]}) (variants{})} ;
+minute13 = {s = mins ["tretton"] (variants { ["tretton över"] ; ["tretton minuter över"]}) (variants{})} ;
+minute14 = {s = mins ["fjorton"] (variants { ["fjorton över"] ; ["fjorton minuter över"]}) (variants{})} ;
+minute15 = {s = mins ["femton"] (variants { ["femton över"] ; ["femton minuter över"] ; ["kvart över"]}) (variants{})} ;
+minute16 = {s = mins ["sexton"] (variants { ["sexton över"] ; ["sexton minuter över"]}) (variants{})} ;
+minute17 = {s = mins ["sjutton"] (variants { ["sjutton över"] ; ["sjutton minuter över"]}) (variants{})} ;
+minute18 = {s = mins ["arton"] (variants { ["arton över"] ; ["arton minuter över"]}) (variants{})} ;
+minute19 = {s = mins ["nitton"] (variants { ["nitton över"] ; ["nitton minuter över"]}) (variants{})} ;
+
+--20-29
+minute20 = {s = mins ["tjugo"] (variants { ["tjugo över"] ; ["tjugo minuter över"]}) (variants {})} ;
+minute21 = {s = mins ["tjugo ett"] (variants { ["tjugo en över"] ;["tjugo ett över"] ; ["tjugo en minuter över"]}) (variants {}) } ;
+minute22 = {s = mins ["tjugo två"] (variants { ["tjugo två över"] ; ["tjugo två minuter över"]}) (variants {}) } ;
+minute23 = {s = mins ["tjugo tre"] (variants { ["tjugo tre över"] ; ["tjugo tre minuter över"]}) (variants {}) } ;
+minute24 = {s = mins ["tjugo fyra"] (variants { ["tjugo fyra över"] ; ["tjugo fyra minuter över"]}) (variants {["sex minuter i halv"];["sex i halv"]}) } ;
+minute25 = {s = mins ["tjugo fem"] (variants { ["tjugo fem över"] ; ["tjugo fem minuter över"]}) (variants {["fem minuter i halv"];["fem i halv"]}) } ;
+minute26 = {s = mins ["tjugo sex"] (variants { ["tjugo sex över"] ; ["tjugo sex minuter över"]}) (variants {["fyra minuter i halv"];["fyra i halv"]}) } ;
+minute27 = {s = mins ["tjugo sju"] (variants { ["tjugo sju över"] ; ["tjugo sju minuter över"]}) (variants {["tre minuter i halv"];["tre i halv"]}) } ;
+minute28 = {s = mins ["tjugo åtta"] (variants { ["tjugo åtta över"] ; ["tjugo åtta minuter över"]}) (variants {["två minuter i halv"];["två i halv"]}) } ;
+minute29 = {s = mins ["tjugo nio"] (variants { ["tjugo nio över"] ; ["tjugo nio minuter över"]}) (variants {["en minut i halv"];["en i halv"]}) } ;
+
+--30-39
+minute30 = {s = mins ["trettio"] (variants { ["trettio minuter över"]}) ["halv"] } ;
+minute31 = {s = mins ["trettio ett"] (variants { ["trettio en över"] ; ["trettio ett över"] ; ["trettio en minuter över"]}) (variants {["tjugo nio minuter i"];["tjugo nio i"];["en minut över halv"];["en över halv"]}) } ;
+minute32 = {s = mins ["trettio två"] (variants { ["trettio två över"] ; ["trettio två minuter över"]}) (variants {["tjugo åtta minuter i"];["tjugo åtta i"];["två minuter över halv"];["två över halv"]}) } ;
+minute33 = {s = mins ["trettio tre"] (variants { ["trettio tre över"] ; ["trettio tre minuter över"]}) (variants {["tjugo sju minuter i"];["tjugo sju i"];["tre minuter över halv"];["tre över halv"]}) } ;
+minute34 = {s = mins ["trettio fyra"] (variants { ["trettio fyra över"] ; ["trettio fyra minuter över"]}) (variants {["tjugosex minuter i"];["tjugosex i"];["fyra minuter över halv"];["fyra över halv"]}) } ;
+minute35 = {s = mins ["trettio fem"] (variants { ["trettio fem över"] ; ["trettio fem minuter över"]}) (variants {["tjugo fem minuter i"];["tjugo fem i"];["fem minuter över halv"]; ["fem över halv"]}) } ;
+minute36 = {s = mins ["trettio sex"] (variants { ["trettio sex över"] ; ["trettio sex minuter över"]}) (variants {["tjugo fyra minuter i"];["tjugo fyra i"];["sex minuter över halv"];["sex över halv"]}) } ;
+minute37 = {s = mins ["trettio sju"] (variants { ["trettio sju över"] ; ["trettio sju minuter över"]}) (variants {["tjugo tre minuter i"];["tjugo tre i"];["sju minuter över halv"];["sju över halv"]}) } ;
+minute38 = {s = mins ["trettio åtta"] (variants { ["trettio åtta över"] ; ["trettio åtta minuter över"]}) (variants {["tjugo två minuter i"];["tjugo två i"]}) } ;
+minute39 = {s = mins ["trettio nio"] (variants { ["trettio nio över"] ; ["trettio nio minuter över"]}) (variants {["tjugo en minuter i"];["tjugo en i"];["tjugo ett i"]}) } ;
+
+--40-49
+minute40 = {s = mins ["fyrtio"] (variants {}) (variants {["tjugo minuter i"];["tjugo i"]}) } ;
+minute41 = {s = mins ["fyrtio ett"] (variants {}) (variants {["nitton minuter i"];["nitton i"]}) } ;
+minute42 = {s = mins ["fyrtio två"] (variants {}) (variants {["arton minuter i"];["arton i"]}) } ;
+minute43 = {s = mins ["fyrtio tre"] (variants {}) (variants {["sjutton minuter i"];["sjutton i"]}) } ;
+minute44 = {s = mins ["fyrtio fyra"] (variants {}) (variants {["sexton minuter i"];["sexton i"]}) } ;
+minute45 = {s = mins (variants {["fyrtio fem"];["tre kvart"]}) (variants {}) (variants {["femton minuter i"];["femton i"];["kvart i"]}) } ;
+minute46 = {s = mins ["fyrtio sex"] (variants {}) (variants {["fjorton minuter i"];["fjorton i"]}) } ;
+minute47 = {s = mins ["fyrtio sju"] (variants {}) (variants {["tretton minuter i"];["tretton i"]}) } ;
+minute48 = {s = mins ["fyrtio åtta"] (variants {}) (variants {["tolv minuter i"];["tolv i"]}) } ;
+minute49 = {s = mins ["fyrtio nio"] (variants {}) (variants {["elva minuter i"];["elva i"]}) } ;
+
+--50-59
+minute50 = {s = mins ["femtio"] (variants {}) (variants {["tio minuter i"];["tio i"]}) } ;
+minute51 = {s = mins ["femtio ett"] (variants {}) (variants {["nio minuter i"];["nio i"]}) } ;
+minute52 = {s = mins ["femtio två"] (variants {}) (variants {["åtta minuter i"];["åtta i"]}) } ;
+minute53 = {s = mins ["femtio tre"] (variants {}) (variants {["sju minuter i"];["sju i"]}) } ;
+minute54 = {s = mins ["femtio fyra"] (variants {}) (variants {["sex minuter i"];["sex i"]}) } ;
+minute55 = {s = mins ["femtio fem"] (variants {}) (variants {["fem minuter i"];["fem i"]}) } ;
+minute56 = {s = mins ["femtio sex"] (variants {}) (variants {["fyra minuter i"];["fyra i"]}) } ;
+minute57 = {s = mins ["femtio sju"] (variants {}) (variants {["tre minuter i"];["tre i"]}) } ;
+minute58 = {s = mins ["femtio åtta"] (variants {}) (variants {["två minuter i"];["två i"]}) } ;
+minute59 = {s = mins ["femtio nio"] (variants {}) (variants {["en minut i"];["en i"];["ett i"]}) } ;
+
+lincat Hour = {s : RefHour => Str} ;
+
+lincat Minute = {s : MinMin => Str} ;
+
+-- Time expressions
+lin
+--timeDotty h m = {s = h.s ! ThisLex ++ m.s ! Dot };
+--timeInformal h m = {s = variants {
+ --m.s ! Past ++ h.s ! ThisLex ;
+ --m.s ! To ++ h.s ! NextLex
+ --}
+ --};
+--timeFormal h m = {s = h.s ! ThisFormal ++ m.s ! Form} ;
+time h m = {s = variants {
+ h.s ! ThisFormal ++ m.s ! Form ;
+ h.s ! ThisFormal ++ "och" ++ m.s ! Form ;
+ m.s ! Past ++ h.s ! ThisLex ;
+ m.s ! To ++ h.s ! NextLex
+ }
+ };
+}