From ecc132dccfc7617ed413f21ee37539475081f8ec Mon Sep 17 00:00:00 2001 From: aarne Date: Thu, 16 Sep 2004 14:47:18 +0000 Subject: [PATCH] Karin C's example --- grammars/video/Channel/channel.Eng.gf | 27 ++++ grammars/video/Channel/channel.Prolog.gf | 20 +++ grammars/video/Channel/channel.gf | 23 +++ grammars/video/Channel/channelProlog.gf | 22 +++ grammars/video/Channel/channelRes.Abs.gf | 29 ++++ grammars/video/Channel/channelRes.Prolog.gf | 27 ++++ grammars/video/Channel/channelResSwe.gf | 26 ++++ grammars/video/Channel/channelSwe.gf | 20 +++ grammars/video/Channel/date.Swe.gf | 56 ++++++++ grammars/video/README | 53 +++++++ grammars/video/Shared/general.Prolog.gf | 50 +++++++ grammars/video/Shared/general.gf | 51 +++++++ grammars/video/Shared/generalProlog.gf | 43 ++++++ grammars/video/Shared/generalSwe.gf | 43 ++++++ grammars/video/Shared/prologResource.gf | 19 +++ grammars/video/Shared/specific.gf | 29 ++++ grammars/video/Shared/specificProlog.gf | 22 +++ grammars/video/Shared/specificSwe.gf | 20 +++ grammars/video/System/genSystem.gf | 37 +++++ grammars/video/System/genSystemProlog.gf | 32 +++++ grammars/video/System/genSystemSwe.gf | 32 +++++ grammars/video/System/general.Prolog.gf | 32 +++++ grammars/video/System/re2specific.Swe.gf | 60 ++++++++ grammars/video/System/specSystem.gf | 59 ++++++++ grammars/video/System/specSystemProlog.gf | 45 ++++++ grammars/video/System/specSystemSwe.gf | 49 +++++++ grammars/video/System/specific.Prolog.gf | 46 ++++++ grammars/video/Time/time.Catalan.gf | 135 ++++++++++++++++++ grammars/video/Time/time.Eng.gf | 130 +++++++++++++++++ grammars/video/Time/time.Prolog.gf | 110 +++++++++++++++ grammars/video/Time/time.Symb.gf | 127 +++++++++++++++++ grammars/video/Time/time.gf | 106 ++++++++++++++ grammars/video/Time/timeProlog.gf | 103 ++++++++++++++ grammars/video/Time/timeResSwe.gf | 7 + grammars/video/Time/timeSwe.gf | 149 ++++++++++++++++++++ grammars/video/User/genUser.gf | 7 + grammars/video/User/genUserProlog.gf | 8 ++ grammars/video/User/genUserSwe.gf | 8 ++ grammars/video/User/general.Prolog.gf | 6 + grammars/video/User/specUser.gf | 36 +++++ grammars/video/User/specUserProlog.gf | 68 +++++++++ grammars/video/User/specUserSwe.gf | 35 +++++ grammars/video/User/specific.Prolog.gf | 68 +++++++++ grammars/video/Weekday/weekday.Eng.gf | 12 ++ grammars/video/Weekday/weekday.Prolog.gf | 13 ++ grammars/video/Weekday/weekday.gf | 15 ++ grammars/video/Weekday/weekdayProlog.gf | 14 ++ grammars/video/Weekday/weekdaySwe.gf | 12 ++ grammars/video/all.gf | 13 ++ grammars/video/allProlog.gf | 5 + grammars/video/allSwe.gf | 9 ++ grammars/video/icm100ResSwe.gf | 30 ++++ grammars/video/systemSwe.gf | 4 + src/GF/Compile/Compile.hs | 5 +- src/Makefile | 9 +- 55 files changed, 2212 insertions(+), 4 deletions(-) create mode 100644 grammars/video/Channel/channel.Eng.gf create mode 100644 grammars/video/Channel/channel.Prolog.gf create mode 100644 grammars/video/Channel/channel.gf create mode 100644 grammars/video/Channel/channelProlog.gf create mode 100644 grammars/video/Channel/channelRes.Abs.gf create mode 100644 grammars/video/Channel/channelRes.Prolog.gf create mode 100644 grammars/video/Channel/channelResSwe.gf create mode 100644 grammars/video/Channel/channelSwe.gf create mode 100644 grammars/video/Channel/date.Swe.gf create mode 100644 grammars/video/README create mode 100644 grammars/video/Shared/general.Prolog.gf create mode 100644 grammars/video/Shared/general.gf create mode 100644 grammars/video/Shared/generalProlog.gf create mode 100644 grammars/video/Shared/generalSwe.gf create mode 100644 grammars/video/Shared/prologResource.gf create mode 100644 grammars/video/Shared/specific.gf create mode 100644 grammars/video/Shared/specificProlog.gf create mode 100644 grammars/video/Shared/specificSwe.gf create mode 100644 grammars/video/System/genSystem.gf create mode 100644 grammars/video/System/genSystemProlog.gf create mode 100644 grammars/video/System/genSystemSwe.gf create mode 100644 grammars/video/System/general.Prolog.gf create mode 100644 grammars/video/System/re2specific.Swe.gf create mode 100644 grammars/video/System/specSystem.gf create mode 100644 grammars/video/System/specSystemProlog.gf create mode 100644 grammars/video/System/specSystemSwe.gf create mode 100644 grammars/video/System/specific.Prolog.gf create mode 100644 grammars/video/Time/time.Catalan.gf create mode 100644 grammars/video/Time/time.Eng.gf create mode 100644 grammars/video/Time/time.Prolog.gf create mode 100644 grammars/video/Time/time.Symb.gf create mode 100644 grammars/video/Time/time.gf create mode 100644 grammars/video/Time/timeProlog.gf create mode 100644 grammars/video/Time/timeResSwe.gf create mode 100644 grammars/video/Time/timeSwe.gf create mode 100644 grammars/video/User/genUser.gf create mode 100644 grammars/video/User/genUserProlog.gf create mode 100644 grammars/video/User/genUserSwe.gf create mode 100644 grammars/video/User/general.Prolog.gf create mode 100644 grammars/video/User/specUser.gf create mode 100644 grammars/video/User/specUserProlog.gf create mode 100644 grammars/video/User/specUserSwe.gf create mode 100644 grammars/video/User/specific.Prolog.gf create mode 100644 grammars/video/Weekday/weekday.Eng.gf create mode 100644 grammars/video/Weekday/weekday.Prolog.gf create mode 100644 grammars/video/Weekday/weekday.gf create mode 100644 grammars/video/Weekday/weekdayProlog.gf create mode 100644 grammars/video/Weekday/weekdaySwe.gf create mode 100644 grammars/video/all.gf create mode 100644 grammars/video/allProlog.gf create mode 100644 grammars/video/allSwe.gf create mode 100644 grammars/video/icm100ResSwe.gf create mode 100644 grammars/video/systemSwe.gf diff --git a/grammars/video/Channel/channel.Eng.gf b/grammars/video/Channel/channel.Eng.gf new file mode 100644 index 000000000..d0e0dd103 --- /dev/null +++ b/grammars/video/Channel/channel.Eng.gf @@ -0,0 +1,27 @@ +---File name channel.Eng.gf + +include channel.Abs.gf ; + + +lin +channel0 = {s = (variants {["0"]})} ; +channel1 = {s = (variants {["1"];["channel one"];["ettan"]})} ; +channel2 = {s = (variants {["2"];["channel two"];["tvåan"]})} ; +channel3 = {s = (variants {["3"];["channel three"];["trean"]})} ; +channel4 = {s = (variants {["3"];["channel four"];["trean"]})} ; +channel5 = {s = (variants {["3"];["channel tre"];["trean"]})} ; +channel6 = {s = (variants {["3"];["channel tre"];["trean"]})} ; +channel7 = {s = (variants {["3"];["channel tre"];["trean"]})} ; +channel8 = {s = (variants {["3"];["channel tre"];["trean"]})} ; +channel9 = {s = (variants {["3"];["channel tre"];["trean"]})} ; +channel10 = {s = (variants {["3"];["channel tre"];["trean"]})} ; +channel11 = {s = (variants {["3"];["channel tre"];["trean"]})} ; +channel12 = {s = (variants {["3"];["channel tre"];["trean"]})} ; +channel13 = {s = (variants {["3"];["channel tre"];["trean"]})} ; +channel14 = {s = (variants {["3"];["channel tre"];["trean"]})} ; +channel15 = {s = (variants {["3"];["channel tre"];["trean"]})} ; +channel16 = {s = (variants {["3"];["channel tre"];["trean"]})} ; +channel17 = {s = (variants {["3"];["channel tre"];["trean"]})} ; +channel18 = {s = (variants {["3"];["channel tre"];["trean"]})} ; +channel19 = {s = (variants {["3"];["channel tre"];["trean"]})} ; + diff --git a/grammars/video/Channel/channel.Prolog.gf b/grammars/video/Channel/channel.Prolog.gf new file mode 100644 index 000000000..532538559 --- /dev/null +++ b/grammars/video/Channel/channel.Prolog.gf @@ -0,0 +1,20 @@ +-- File namne channel.Prolog.gf + +include channel.Abs.gf ; +pattern +--channel0 = "0" ; +channel1 = "svt1" ; +channel2 = "svt2" ; +channel3 = "tv3" ; +channel4 = "tv4" ; +channel5 = "tv5" ; +channel6 = "tve" ; +channel7 = "raiuno" ; +channel8 = "sat1" ; +channel9 = "cnn" ; +channel10 = "bbcworld" ; +channel11 = "tvpolonia" ; +channel12 = "dr1" ; +channel13 = "dr2" ; +channel14 = "nrk1" ; +channel15 = "nrk2" ; \ No newline at end of file diff --git a/grammars/video/Channel/channel.gf b/grammars/video/Channel/channel.gf new file mode 100644 index 000000000..204860114 --- /dev/null +++ b/grammars/video/Channel/channel.gf @@ -0,0 +1,23 @@ +abstract channel = { + +cat +Channel ; + +fun +--channel0 : Channel ; +channel1 : Channel ; +channel2 : Channel ; +channel3 : Channel ; +channel4 : Channel ; +channel5 : Channel ; +channel6 : Channel ; +channel7 : Channel ; +channel8 : Channel ; +channel9 : Channel ; +channel10 : Channel ; +channel11 : Channel ; +channel12 : Channel ; +channel13 : Channel ; +channel14 : Channel ; +channel15 : Channel ; +} diff --git a/grammars/video/Channel/channelProlog.gf b/grammars/video/Channel/channelProlog.gf new file mode 100644 index 000000000..4f5e73f6e --- /dev/null +++ b/grammars/video/Channel/channelProlog.gf @@ -0,0 +1,22 @@ +-- File namne channel.Prolog.gf + +concrete channelProlog of channel = { + +pattern +--channel0 = "0" ; +channel1 = "svt1" ; +channel2 = "svt2" ; +channel3 = "tv3" ; +channel4 = "tv4" ; +channel5 = "tv5" ; +channel6 = "tve" ; +channel7 = "raiuno" ; +channel8 = "sat1" ; +channel9 = "cnn" ; +channel10 = "bbcworld" ; +channel11 = "tvpolonia" ; +channel12 = "dr1" ; +channel13 = "dr2" ; +channel14 = "nrk1" ; +channel15 = "nrk2" ; +} diff --git a/grammars/video/Channel/channelRes.Abs.gf b/grammars/video/Channel/channelRes.Abs.gf new file mode 100644 index 000000000..b07fb82f8 --- /dev/null +++ b/grammars/video/Channel/channelRes.Abs.gf @@ -0,0 +1,29 @@ +---File name channelRes.Abs.gf + + include /users/ling/karinc/GF/Grammars/resource/res.Types.gf ; + +cat +Channel ; + +fun + +channel0 : Channel ; +channel1 : Channel ; +channel2 : Channel ; +channel3 : Channel ; +channel4 : Channel ; +channel5 : Channel ; +channel6 : Channel ; +channel7 : Channel ; +channel8 : Channel ; +channel9 : Channel ; +channel10 : Channel ; +channel11 : Channel ; +channel12 : Channel ; +channel13 : Channel ; +channel14 : Channel ; +channel15 : Channel ; +channel16 : Channel ; +channel17 : Channel ; +channel18 : Channel ; +channel19 : Channel ; \ No newline at end of file diff --git a/grammars/video/Channel/channelRes.Prolog.gf b/grammars/video/Channel/channelRes.Prolog.gf new file mode 100644 index 000000000..3900cbf36 --- /dev/null +++ b/grammars/video/Channel/channelRes.Prolog.gf @@ -0,0 +1,27 @@ +-- File name channelRes.Prolog.gf + +include + /users/ling/karinc/GF/GFSommar/Video/VideoK/Channel/channelRes.Abs.gf ; + +pattern +channel0 = "0" ; +channel1 = "1" ; +channel2 = "2" ; +channel3 = "3" ; +channel4 = "4" ; +channel5 = "5" ; +channel6 = "6" ; +channel7 = "7" ; +channel8 = "8" ; +channel9 = "9" ; +channel10 = "10" ; +channel11 = "11" ; +channel12 = "12" ; +channel13 = "13" ; +channel14 = "14" ; +channel15 = "15" ; +channel16 = "16" ; +channel17 = "17" ; +channel18 = "18" ; +channel19 = "19" ; + diff --git a/grammars/video/Channel/channelResSwe.gf b/grammars/video/Channel/channelResSwe.gf new file mode 100644 index 000000000..71693325c --- /dev/null +++ b/grammars/video/Channel/channelResSwe.gf @@ -0,0 +1,26 @@ +concrete channelResSwe of channel = open ResourceSwe, ParadigmsSwe in { + +lincat Channel = PN ; + +lin +channel0 = pnReg (variants {["Nollan"];["Bollan"]}) utrum nonmasculine ; +channel1 = pnReg (variants {["s,v,t,ett"];["t,v,ett"];["kanal ett"];["ettan"]}) utrum nonmasculine ; +channel2 = pnReg (variants {["s v t två"];["t v två"];["kanal två"];["tvåan"]}) utrum nonmasculine ; +channel3 = pnReg (variants {["t v tre"];["kanal tre"];["trean"]}) utrum nonmasculine ; +channel4 = pnReg (variants {["t v fyra"];["fyran"]}) utrum nonmasculine ; +channel5 = pnReg (variants {["t v fem"];["femman"]}) utrum nonmasculine ; +channel6 = pnReg (variants {["t v e"]}) utrum nonmasculine ; +channel7 = pnReg (variants {["rai uno"]}) utrum nonmasculine ; +channel8 = pnReg (variants {["sat ains"]}) utrum nonmasculine ; +channel9 = pnReg (variants {["c n n"];["si n n"]}) utrum nonmasculine ; +channel10 = pnReg (variants {["b b c world"]}) utrum nonmasculine ; +channel11 = pnReg (variants {["t v polonia"];["polonia"]}) utrum nonmasculine ; +channel12 = pnReg (variants {["d r ett"]}) utrum nonmasculine ; +channel13 = pnReg (variants {["d r två"]}) utrum nonmasculine ; +channel14 = pnReg (variants {["n r k ett"]}) utrum nonmasculine ; +channel15 = pnReg (variants {["n r k två"]}) utrum nonmasculine ; +channel16 = pnReg (variants {["kanal X"];["Xan"]}) utrum nonmasculine ; +channel17 = pnReg (variants {["kanal X"];["Xan"]}) utrum nonmasculine ; +channel18 = pnReg (variants {["kanal X"];["Xan"]}) utrum nonmasculine ; +channel19 = pnReg (variants {["kanal X"];["Xan"]}) utrum nonmasculine ; +} diff --git a/grammars/video/Channel/channelSwe.gf b/grammars/video/Channel/channelSwe.gf new file mode 100644 index 000000000..3e4ee44ac --- /dev/null +++ b/grammars/video/Channel/channelSwe.gf @@ -0,0 +1,20 @@ +concrete channelSwe of channel = { +lin + +--channel0 = {s = (variants {["noll"]})} ; +channel1 = {s = (variants {["s v t ett"];["t v ett"];["kanal ett"];["ettan"]})} ; +channel2 = {s = (variants {["s v t två"];["t v två"];["kanal två"];["tvåan"]})} ; +channel3 = {s = (variants {["t v tre"];["kanal tre"];["trean"]})} ; +channel4 = {s = (variants {["t v fyra"];["fyran"]})} ; +channel5 = {s = (variants {["t v fem"];["kanal fem"];["femman"]})} ; +channel6 = {s = (variants {["t v espanja"];["t v e"]})} ; +channel7 = {s = (variants {["rai uno"]})} ; +channel8 = {s = (variants {["sat ains"]})} ; +channel9 = {s = (variants {["c n n"];["si n n"]})} ; +channel10 = {s = (variants {["b b c world"];["bi bi si world"];["bi bi si"];["b b c"]})} ; +channel11 = {s = (variants {["t v polonia"];["polonia"]})} ; +channel12 = {s = (variants {["d r ett"]})} ; +channel13 = {s = (variants {["d r två"]})} ; +channel14 = {s = (variants {["n r k ett"]})} ; +channel15 = {s = (variants {["n r k två"]})} ; +} diff --git a/grammars/video/Channel/date.Swe.gf b/grammars/video/Channel/date.Swe.gf new file mode 100644 index 000000000..87d887a9a --- /dev/null +++ b/grammars/video/Channel/date.Swe.gf @@ -0,0 +1,56 @@ +pattern +today = "today" ; +january = "01" ; +february = "02" ; +march = "03" ; +april = "04" ; +may = "05" ; +june = "06" ; +july = "07" ; +august = "08" ; +september = "09" ; +october = "10" ; +november = "11" ; +december = "12" ; + +day1 = "01" ; +day2 = "02" ; +day3 = "03" ; +day4 = "04" ; +day5 = "05" ; +day6 = "06" ; +day7 = "07" ; +day8 = "08" ; +day9 = "09" ; +day10 = "10" ; +day11 = "11" ; +day12 = "12" ; +day13 = "13" ; +day14 = "14" ; +day15 = "15" ; +day16 = "16" ; +day17 = "17" ; +day18 = "18" ; +day19 = "19" ; +day20 = "20" ; +day21 = "21" ; +day22 = "22" ; +day23 = "23" ; +day24 = "24" ; +day25 = "25" ; +day26 = "26" ; +day27 = "27" ; +day28 = "28" ; +day29 = "29" ; +day30 = "30" ; +day31 = "31" ; + +lin +month29 m = {s = m.s} ; +month30 m = {s = m.s} ; +month31 m = {s = m.s} ; +date29 d m = {s = d.s ++ m.s} ; +date30 d m = {s = d.s ++ m.s} ; +date3031 d m = {s = d.s ++ m.s} ; +date31 d m = {s = d.s ++ m.s} ; +date d = {s = d.s} ; diff --git a/grammars/video/README b/grammars/video/README new file mode 100644 index 000000000..796a2c08a --- /dev/null +++ b/grammars/video/README @@ -0,0 +1,53 @@ +Video dialogue grammars by Karin Cavallin. + +Reconstructed in GF 2 with multiple inheritance. AR 16/9/2004 + +Example usage (test Swedish generation and parsing, and Prolog +generation) + + > i allSwe.gf + > i allProlog.gf + + > gr -cat=DMove | l -tr -lang=allSwe | p -cat=DMove -lang=allSwe | l -lang=allProlog + vill du använda svenska eller engelska + ask ([language (X)]) + +The intended use of that grammar is in dialogue systems to program a +video recorder. Queries in Swedish are translated to Prolog. + +The original grammar is written in GF 1.2 and includes. There is a +very nice modular structure, which could not be reproduced with the +single inheritance straightjacket of GF 2.0. But now we can finally +do this again! + + +Map of abstract syntax inheritances. + + all + / \ + / \ + specUser specSystem + / \ / \ + genUser specific genSystem + | / | | \ | + | / | | \ | + | / channel time weekday | + | | | + | | | + -----general ------------------ + + +The map was obtained by: + +grep abstract *.gf */*.gf + +all.gf:abstract all = specUser,specSystem ** { +Channel/channel.gf:abstract channel = { +Shared/general.gf:abstract general = { +Shared/specific.gf:abstract specific = general, weekday, time, channel ** { +System/genSystem.gf:abstract genSystem = general ** { +System/specSystem.gf:abstract specSystem = specific, genSystem ** { +Time/time.gf:abstract time = { +User/genUser.gf:abstract genUser = general ** { +User/specUser.gf:abstract specUser = specific, genUser ** { +Weekday/weekday.gf:abstract weekday = { diff --git a/grammars/video/Shared/general.Prolog.gf b/grammars/video/Shared/general.Prolog.gf new file mode 100644 index 000000000..322c805b4 --- /dev/null +++ b/grammars/video/Shared/general.Prolog.gf @@ -0,0 +1,50 @@ +-- File name Shared/general.Prolog.gf +include + general.Abs.gf ; + +flags lexer=codelit ; unlexer=codelit ; startcat=DMoveList ; + + +oper +app : Str -> Str -> Str = + \pred -> \arg -> + pred ++ "(" ++ arg ++ ")" ; +appHakeOne : Str -> Str = + \arg -> + "["++ arg ++ "]" ; + + +lin +dmoves dm = {s = appHakeOne dm.s }; +dmoves1 dm = {s = dm.s }; +dmoves2 dm dms = {s = dm.s ++ "," ++ dms.s }; + +lin +answer p = {s = app "answer" p.s}; +--request a = {s = app "request" a.s }; + +--- Answers +propans a = {s = a.s} ; +negpropans a = {s = app "not" a.s} ; +shortans a = {s = a.s} ; +negShortAns a = {s = a.s} ; + +negprop n p = {s = n.s ++ p.s} ; + +pattern +neg = [] ; + +pattern +----Short answers +yes = "yes" ; +no = "no"; +english = "english" ; ----??? +swedish = "swedish" ; ----??? + +lin +indShortAns a = {s = a.s} ; +not n = {s = n.s} ; + +--avsluta?? +--börja om +top = { s = "top"} ; diff --git a/grammars/video/Shared/general.gf b/grammars/video/Shared/general.gf new file mode 100644 index 000000000..98922c8c6 --- /dev/null +++ b/grammars/video/Shared/general.gf @@ -0,0 +1,51 @@ +abstract general = { + +cat +Action ; +DMove ; +DMoves ; +DMoveList ; + +Ind ; +Prop ; + +fun +--- DMove +dmoves : DMoves -> DMoveList ; +dmoves1 : DMove -> DMoves ; +dmoves2 : DMove -> DMoves -> DMove ; + +-- File name User/general.Abs.gf + +cat +Answer ; +ShortAns ; +NegShortAns ; +NegProp ; +Neg ; + +fun +answer : Answer -> DMove ; +--request : Action -> DMove ; + +--- Answers +propans : Prop -> Answer ; +negpropans : NegProp -> Answer ; +shortans : ShortAns -> Answer ; +negShortAns : NegShortAns -> Answer ; + +negprop : Neg -> Prop -> NegProp ; +neg : Neg ; + +--Short answers +swedish : ShortAns ; +english : ShortAns ; +yes : ShortAns ; +no : NegShortAns ; +indShortAns : Ind -> ShortAns ; +not : ShortAns -> NegShortAns ; + +--avsluta?? +--börja om +top : Action ; +} diff --git a/grammars/video/Shared/generalProlog.gf b/grammars/video/Shared/generalProlog.gf new file mode 100644 index 000000000..907a6b787 --- /dev/null +++ b/grammars/video/Shared/generalProlog.gf @@ -0,0 +1,43 @@ +-- File name Shared/general.Prolog.gf + +concrete generalProlog of general = open prologResource in { + +flags lexer=codelit ; unlexer=codelit ; startcat=DMoveList ; + + + +lin +dmoves dm = {s = appHakeOne dm.s }; +dmoves1 dm = {s = dm.s }; +dmoves2 dm dms = {s = dm.s ++ "," ++ dms.s }; + +lin +answer p = {s = app "answer" p.s}; +--request a = {s = app "request" a.s }; + +--- Answers +propans a = {s = a.s} ; +negpropans a = {s = app "not" a.s} ; +shortans a = {s = a.s} ; +negShortAns a = {s = a.s} ; + +negprop n p = {s = n.s ++ p.s} ; + +pattern +neg = [] ; + +pattern +----Short answers +yes = "yes" ; +no = "no"; +english = "english" ; ----??? +swedish = "swedish" ; ----??? + +lin +indShortAns a = {s = a.s} ; +not n = {s = n.s} ; + +--avsluta?? +--börja om +top = { s = "top"} ; +} \ No newline at end of file diff --git a/grammars/video/Shared/generalSwe.gf b/grammars/video/Shared/generalSwe.gf new file mode 100644 index 000000000..b8e0c8f0f --- /dev/null +++ b/grammars/video/Shared/generalSwe.gf @@ -0,0 +1,43 @@ +concrete generalSwe of general = { + +flags lexer=codelit ; unlexer=codelit ; startcat=DMoveList ; + + +lincat DMove = {s : Str} ; + +lin +dmoves dm = {s = dm.s }; +dmoves1 dm = {s = dm.s }; +dmoves2 dm dms = {s = dm.s ++ "," ++ dms.s }; +lin + +answer a = {s = a.s } ; + + +--- Answers +propans a = {s = a.s} ; +negpropans a = {s = a.s} ; +shortans a = {s = a.s} ; +negShortAns a = {s = a.s} ; + +negprop n p = {s= n.s ++ p.s} ; + +pattern +neg = "inte" ; + +pattern +--Short answers +swedish = "svenska" ; +english = "engelska" ; +yes = (variants {"ja" ; "jajamensan" ; "japp"}) ; +no = "nej"; + +lin +indShortAns a = {s = a.s} ; +not n = {s = n.s} ; + +--avsluta?? +--börja om +-- variants? från början etc? +top = { s = ["börja om"]} ; +} diff --git a/grammars/video/Shared/prologResource.gf b/grammars/video/Shared/prologResource.gf new file mode 100644 index 000000000..a527500e1 --- /dev/null +++ b/grammars/video/Shared/prologResource.gf @@ -0,0 +1,19 @@ +resource prologResource = { + +oper +app : Str -> Str -> Str = + \pred -> \arg -> + pred ++ "(" ++ arg ++ ")" ; +appHakeOne : Str -> Str = + \arg -> + "["++ arg ++ "]" ; +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 ; + + +} diff --git a/grammars/video/Shared/specific.gf b/grammars/video/Shared/specific.gf new file mode 100644 index 000000000..424b1023e --- /dev/null +++ b/grammars/video/Shared/specific.gf @@ -0,0 +1,29 @@ +abstract specific = general, weekday, time, channel ** { + +cat +StartTime ; +EndTime ; +ChToStore ; +WdToStore ; + +cat +DelAction ; + +fun +--- Inds +indTime : Time -> Ind; +indChannel : Channel -> Ind; +indWeekday : Weekday -> Ind; + +fun +delAction : DelAction -> Action ; +delete_rec_job : DelAction ; + +fun +startTimeToStore : Time -> StartTime ; +endTimeToStore : Time -> EndTime ; +channelToStore : Channel -> ChToStore ; +weekdayToStore : Weekday -> WdToStore ; + +vcr_add_rec_job_no_args : Action ; ---- moved from specUser and specSystem +} diff --git a/grammars/video/Shared/specificProlog.gf b/grammars/video/Shared/specificProlog.gf new file mode 100644 index 000000000..8ca76dbed --- /dev/null +++ b/grammars/video/Shared/specificProlog.gf @@ -0,0 +1,22 @@ +-- File name Shared/specific.Prolog.gf + +concrete specificProlog of specific = + generalProlog, weekdayProlog, channelProlog, timeProlog ** + open prologResource in { + +lin +indTime t = {s = t.s} ; +indChannel c = {s = c.s} ; +indWeekday w = {s = w.s} ; + +delete_rec_job = {s = "delete_rec_job"} ; +delAction dact = {s = dact.s }; + + +startTimeToStore st = {s = app "start_time_to_store" st.s } ; +endTimeToStore et = {s = app "stop_time_to_store" et.s } ; +channelToStore ch = {s = app "channel_to_store" ch.s } ; +weekdayToStore wd = {s = app "weekday_to_store" wd.s } ; + +vcr_add_rec_job_no_args = {s = ["add_rec_job"]} ; -- hack!!! +} diff --git a/grammars/video/Shared/specificSwe.gf b/grammars/video/Shared/specificSwe.gf new file mode 100644 index 000000000..2361a0c5e --- /dev/null +++ b/grammars/video/Shared/specificSwe.gf @@ -0,0 +1,20 @@ +--# -path=.:../Time:../Channel:../Weekday + +concrete specificSwe of specific = generalSwe, weekdaySwe, timeSwe, channelSwe ** { + +lin +indTime t = {s = t.s} ; +indChannel c = {s = c.s} ; +indWeekday w = {s = w.s} ; + +delete_rec_job = {s = ["ta bort inspelning"]} ; +delAction dact = {s = dact.s }; + + +startTimeToStore st = {s = "från" ++ st.s } ; +endTimeToStore et = {s = "till" ++ et.s } ; +channelToStore ch = {s = "på" ++ ch.s } ; +weekdayToStore wd = {s = "på" ++ wd.s } ; + +vcr_add_rec_job_no_args = {s = ["spela in"]} ; ---- +} diff --git a/grammars/video/System/genSystem.gf b/grammars/video/System/genSystem.gf new file mode 100644 index 000000000..d25fb0fee --- /dev/null +++ b/grammars/video/System/genSystem.gf @@ -0,0 +1,37 @@ +-- general.Abs.gf + +abstract genSystem = general ** { + + +cat +Empty ; -- whatever this is good for? +Question ; +YNQuestion ; +WHQuestion ; +AltQuestion ; +PropQ ; + + +fun +greet : DMove ; -- "Welcome" +quit : DMove ; -- "Goodbye" + +ask : Question -> DMove ; + +--- Language +change_language : Action ; +language_alt : Question ; + +--- Actions +actionQ : WHQuestion ; + +--- Questions +whQuestion : WHQuestion -> Question ; +altQuestion : YNQuestion -> YNQuestion -> AltQuestion ; + +--- Issue +issue : Question -> PropQ ; + +--- Lists +nil : Empty ; +} diff --git a/grammars/video/System/genSystemProlog.gf b/grammars/video/System/genSystemProlog.gf new file mode 100644 index 000000000..511c80b7e --- /dev/null +++ b/grammars/video/System/genSystemProlog.gf @@ -0,0 +1,32 @@ +-- File name system.Prolog.gf + +concrete genSystemProlog of genSystem = generalProlog ** + open prologResource in { + + +pattern +greet = "greet" ; +quit = "quit" ; + +lin +ask q = {s = app "ask" q.s} ; + +lin +---Language +change_language = {s = "change_language"} ; +language_alt = {s = "[" ++ "language" ++ "(" ++ "X" ++ ")" ++ "]" } ; -- hack! + +---Actions +pattern +actionQ = "action" ; + +lin +whQuestion f = {s = "X" ++ "^" ++ app f.s "X"} ; +altQuestion a1 a2 = {s = a1.s ++ a2.s}; + +--- Issue +issue i = {s = app "issue" i.s} ; + +pattern +nil = "[]" ; +} diff --git a/grammars/video/System/genSystemSwe.gf b/grammars/video/System/genSystemSwe.gf new file mode 100644 index 000000000..8b9a93b0d --- /dev/null +++ b/grammars/video/System/genSystemSwe.gf @@ -0,0 +1,32 @@ +-- File name System/general.Swe.gf + +concrete genSystemSwe of genSystem = generalSwe ** open icm100ResSwe in { + +---- flags lexer=codelit ; unlexer=codelit ; startcat=DMoveList ; + +pattern +greet = ["Välkommen till videobandspelaren"] ; +quit = "hejdå" ; + +lin +ask a = {s = a.s} ; + +lin +---Language +change_language = {s = "byt" ++ "språk"} ; +language_alt = {s = ["vill du använda svenska eller engelska"]} ; + +---Actions +lin +actionQ = {s = "Vad" ++ "kan" ++ "jag" ++ "stå" ++ "till" ++ "tjänst" ++ "med"} ; + +lin +whQuestion w = {s = w.s }; +altQuestion a1 a2 = {s = "vill" ++ "du" ++ "spela" ++ "in" ++ a1.s ++ "eller" ++ a2.s}; + +--- Issue +issue i = {s = i.s} ; + +pattern +nil = "[]" ; +} \ No newline at end of file diff --git a/grammars/video/System/general.Prolog.gf b/grammars/video/System/general.Prolog.gf new file mode 100644 index 000000000..942d43e9c --- /dev/null +++ b/grammars/video/System/general.Prolog.gf @@ -0,0 +1,32 @@ +-- File name system.Prolog.gf + +include + general.Abs.gf ; + ../icm100.Prolog.gf ; + + +pattern +greet = "greet" ; +quit = "quit" ; + +lin +ask q = {s = app "ask" q.s} ; + +lin +---Language +change_language = {s = "change_language"} ; +language_alt = {s = "[" ++ "language" ++ "(" ++ "X" ++ ")" ++ "]" } ; -- hack! + +---Actions +pattern +actionQ = "action" ; + +lin +whQuestion f = {s = "X" ++ "^" ++ app f.s "X"} ; +altQuestion a1 a2 = {s = a1.s ++ a2.s}; + +--- Issue +issue i = {s = app "issue" i.s} ; + +pattern +nil = "[]" ; \ No newline at end of file diff --git a/grammars/video/System/re2specific.Swe.gf b/grammars/video/System/re2specific.Swe.gf new file mode 100644 index 000000000..664f3ef95 --- /dev/null +++ b/grammars/video/System/re2specific.Swe.gf @@ -0,0 +1,60 @@ +-- File name System/specific.Swe.gf + +include + specific.Abs.gf ; + +lin +-- Confirm recording job +confirmRecJob act = {s = ["bekräftar"] ++ act.s } ; +-- programmet är inspelat -- spela in +-- inspelningen är tillagd -- lägga till +-- programmet är borttaget -- ta bort + +q_lambdaActionDel dact = {s = ["vilket programnummer vill du ta bort"]}; + + + +vcr_add_rec_job_no_args = {s = ["spela in"]} ; -- hack!!! + + + +--- Time in question +startTimeToStoreQ st = {s = "från" ++ st.s } ; +-- prep Time +endTimeToStoreQ et = {s = "till" ++ et.s } ; +-- prep Time + +--- Channel and Weekday in question +channelToStoreQ ch = {s = "på" ++ ch.s } ; +-- prep Channel +weekdayToStoreQ wd = {s = "på" ++ wd.s } ; +--prep Weekday + + +--- WHQuestions --- Lambdas +q_lambdaWeekday wdts = {s = ["vilken dag vill du spela in på"]}; +q_lambdaChannel chts = {s = ["vilken kanal vill du spela in från"]}; +q_lambdaStartTime stts = {s = ["vilken tid vill du påbörja inspelningen"]}; +q_lambdaEndTime etts = {s = ["vilken tid vill du avsluta inspelningen"]}; + + + +--- Constructions for ynquestions +lin +ynQuST y = {s = y.s} ; +ynQuET y = {s = y.s} ; +ynQuCH y = {s = y.s} ; +ynQuWD y = {s = y.s} ; + +lin +--- Props +startTimeToStoreProp st = {s = st.s } ; +endTimeToStoreProp et = {s = et.s } ; +channelToStoreProp chst = {s = chst.s } ; +weekdayToStoreProp wdts = {s = wdts.s } ; + +channelListing chs = {s = chs.s } ; +channels1 ch = {s = ch.s } ; +channels2 ch chs = {s = ch.s ++ "," ++ chs.s } ; +channelListAction ch = {s = ch.s } ; +channelListActionDMove ch = {s = ch.s } ; \ No newline at end of file diff --git a/grammars/video/System/specSystem.gf b/grammars/video/System/specSystem.gf new file mode 100644 index 000000000..0b5f6957e --- /dev/null +++ b/grammars/video/System/specSystem.gf @@ -0,0 +1,59 @@ +-- File name System/specific.Abs.gf + +abstract specSystem = specific, genSystem ** { + +cat +StartTimeQ ; +EndTimeQ ; +ChToStoreQ ; +WdToStoreQ ; + +fun +confirmRecJob : Action -> DMove; +---- vcr_add_rec_job_no_args : Action ; -- spela in! moved to specific + +q_lambdaActionDel : DelAction -> WHQuestion ; + +-- Time in question +startTimeToStoreQ : Time -> StartTimeQ ; +endTimeToStoreQ : Time -> EndTimeQ ; + +--- Channel and Weekday in question +channelToStoreQ : Channel -> ChToStoreQ ; +weekdayToStoreQ : Weekday -> WdToStoreQ ; + +--- WHQuestions --- Lambdas +q_lambdaStartTime : StartTime -> WHQuestion ; +q_lambdaEndTime : EndTime -> WHQuestion ; +q_lambdaWeekday : WdToStore -> WHQuestion ; +q_lambdaChannel : ChToStore -> WHQuestion ; + + +--- Constructions for ynquestions +ynQuST : StartTimeQ -> YNQuestion ; +ynQuET : EndTimeQ -> YNQuestion ; +ynQuCH : ChToStoreQ -> YNQuestion ; +ynQuWD: WdToStoreQ -> YNQuestion ; + + +--- Props +startTimeToStoreProp : StartTime -> Prop ; +endTimeToStoreProp : EndTime -> Prop ; +channelToStoreProp : ChToStore -> Prop ; +weekdayToStoreProp : WdToStore -> Prop ; + + +cat +ChannelList ; +Channels ; +ChannelAction ; + +fun +channelListing : Channels -> ChannelList ; +channels1 : Channel -> Channels ; +channels2 : Channel -> Channels -> Channel ; +channelListAction : ChannelList -> ChannelAction ; +--channelListAction : ChannelList -> DMove ; +channelListActionDMove : ChannelAction -> DMove ; + +} diff --git a/grammars/video/System/specSystemProlog.gf b/grammars/video/System/specSystemProlog.gf new file mode 100644 index 000000000..6ee65c4e3 --- /dev/null +++ b/grammars/video/System/specSystemProlog.gf @@ -0,0 +1,45 @@ +-- File name System/specific.Prolog.gf + +concrete specSystemProlog of specSystem = genSystemProlog, specificProlog ** + open prologResource in { + +lin +-- Confirm recording job +confirmRecJob act = {s = app "confirm" act.s } ; + +q_lambdaActionDel dact = {s = ["rec_job_to_delete"]} ; + +--- Time in question +startTimeToStoreQ st = {s = app "start_time_to_store" st.s } ; +endTimeToStoreQ et = {s = app "stop_time_to_store" et.s } ; + +--- Channel and Weekday in question +channelToStoreQ ch = {s = app "channel_to_store" ch.s } ; +weekdayToStoreQ wd = {s = app "weekday_to_store" wd.s } ; + +--- WHQuestions --- Lambdas +q_lambdaWeekday wdts = {s = ["weekday_to_store"]} ; +q_lambdaChannel chts = {s = ["channel_to_store"]} ; +q_lambdaStartTime stts = {s = ["start_time_to_store"]} ; +q_lambdaEndTime etts = {s = ["stop_time_to_store"]} ; + + +--- Constructions for ynquestions +lin +ynQuST y = {s = y.s} ; +ynQuET y = {s = y.s} ; +ynQuCH y = {s = y.s} ; +ynQuWD y = {s = y.s} ; + +--- Props +startTimeToStoreProp st = {s = st.s } ; +endTimeToStoreProp et = {s = et.s } ; +channelToStoreProp chst = {s = chst.s } ; +weekdayToStoreProp wdts = {s = wdts.s } ; + +channelListing chs = {s = chs.s } ; +channels1 ch = {s = ch.s } ; +channels2 ch chs = {s = ch.s ++ "," ++ chs.s } ; +channelListAction ch = {s = ch.s } ; +channelListActionDMove ch = {s = ch.s } ; +} \ No newline at end of file diff --git a/grammars/video/System/specSystemSwe.gf b/grammars/video/System/specSystemSwe.gf new file mode 100644 index 000000000..e2f59cb89 --- /dev/null +++ b/grammars/video/System/specSystemSwe.gf @@ -0,0 +1,49 @@ +--# -path=.:..:../Shared:../Weekday:../Time:../Channel + +-- File name System/specific.Swe.gf + +concrete specSystemSwe of specSystem = specificSwe, genSystemSwe ** { + +lin +-- Confirm recording job +confirmRecJob act = {s = ["bekräftar"] ++ act.s } ; + +q_lambdaActionDel dact = {s = ["vilket programnummer vill du ta bort"]}; + +---- vcr_add_rec_job_no_args = {s = ["spela in"]} ; -- hack!!! + +--- Time in question +startTimeToStoreQ st = {s = "från" ++ st.s } ; +endTimeToStoreQ et = {s = "till" ++ et.s } ; + +--- Channel and Weekday in question +channelToStoreQ ch = {s = "på" ++ ch.s } ; +weekdayToStoreQ wd = {s = "på" ++ wd.s } ; + +--- WHQuestions --- Lambdas +q_lambdaWeekday wdts = {s = ["vilken dag vill du spela in på"]}; +q_lambdaChannel chts = {s = ["vilken kanal vill du spela in från"]}; +q_lambdaStartTime stts = {s = ["vilken tid vill du påbörja inspelningen"]}; +q_lambdaEndTime etts = {s = ["vilken tid vill du avsluta inspelningen"]}; + + +--- Constructions for ynquestions +lin +ynQuST y = {s = y.s} ; +ynQuET y = {s = y.s} ; +ynQuCH y = {s = y.s} ; +ynQuWD y = {s = y.s} ; + +lin +--- Props +startTimeToStoreProp st = {s = st.s } ; +endTimeToStoreProp et = {s = et.s } ; +channelToStoreProp chst = {s = chst.s } ; +weekdayToStoreProp wdts = {s = wdts.s } ; + +channelListing chs = {s = chs.s } ; +channels1 ch = {s = ch.s } ; +channels2 ch chs = {s = ch.s ++ "," ++ chs.s } ; +channelListAction ch = {s = ch.s } ; +channelListActionDMove ch = {s = ch.s } ; +} diff --git a/grammars/video/System/specific.Prolog.gf b/grammars/video/System/specific.Prolog.gf new file mode 100644 index 000000000..80f9d0764 --- /dev/null +++ b/grammars/video/System/specific.Prolog.gf @@ -0,0 +1,46 @@ +-- File name System/specific.Prolog.gf + +include + specific.Abs.gf ; + +lin +-- Confirm recording job +confirmRecJob act = {s = app "confirm" act.s } ; + +q_lambdaActionDel dact = {s = ["rec_job_to_delete"]} ; + +vcr_add_rec_job_no_args = {s = ["add_rec_job"]} ; -- hack!!! + +--- Time in question +startTimeToStoreQ st = {s = app "start_time_to_store" st.s } ; +endTimeToStoreQ et = {s = app "stop_time_to_store" et.s } ; + +--- Channel and Weekday in question +channelToStoreQ ch = {s = app "channel_to_store" ch.s } ; +weekdayToStoreQ wd = {s = app "weekday_to_store" wd.s } ; + +--- WHQuestions --- Lambdas +q_lambdaWeekday wdts = {s = ["weekday_to_store"]} ; +q_lambdaChannel chts = {s = ["channel_to_store"]} ; +q_lambdaStartTime stts = {s = ["start_time_to_store"]} ; +q_lambdaEndTime etts = {s = ["stop_time_to_store"]} ; + + +--- Constructions for ynquestions +lin +ynQuST y = {s = y.s} ; +ynQuET y = {s = y.s} ; +ynQuCH y = {s = y.s} ; +ynQuWD y = {s = y.s} ; + +--- Props +startTimeToStoreProp st = {s = st.s } ; +endTimeToStoreProp et = {s = et.s } ; +channelToStoreProp chst = {s = chst.s } ; +weekdayToStoreProp wdts = {s = wdts.s } ; + +channelListing chs = {s = chs.s } ; +channels1 ch = {s = ch.s } ; +channels2 ch chs = {s = ch.s ++ "," ++ chs.s } ; +channelListAction ch = {s = ch.s } ; +channelListActionDMove ch = {s = ch.s } ; \ No newline at end of file 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 + } + }; +} diff --git a/grammars/video/User/genUser.gf b/grammars/video/User/genUser.gf new file mode 100644 index 000000000..60afeafd6 --- /dev/null +++ b/grammars/video/User/genUser.gf @@ -0,0 +1,7 @@ +-- File name User/general.Abs.gf + +abstract genUser = general ** { + +fun +request : Action -> DMove ; +} \ No newline at end of file diff --git a/grammars/video/User/genUserProlog.gf b/grammars/video/User/genUserProlog.gf new file mode 100644 index 000000000..c1731a9ce --- /dev/null +++ b/grammars/video/User/genUserProlog.gf @@ -0,0 +1,8 @@ +-- File name User/general.Prolog.gf +--- the rest formarly known as User-general +-- is now considered shared-general + +concrete genUserProlog of genUser = generalProlog ** open prologResource in { +lin +request a = {s = app "request" a.s }; +} diff --git a/grammars/video/User/genUserSwe.gf b/grammars/video/User/genUserSwe.gf new file mode 100644 index 000000000..d173d3711 --- /dev/null +++ b/grammars/video/User/genUserSwe.gf @@ -0,0 +1,8 @@ +-- File name User/general.Swe.gf + +concrete genUserSwe of genUser = generalSwe ** { + +lin + +request a = {s = a.s }; +} diff --git a/grammars/video/User/general.Prolog.gf b/grammars/video/User/general.Prolog.gf new file mode 100644 index 000000000..bb148a33e --- /dev/null +++ b/grammars/video/User/general.Prolog.gf @@ -0,0 +1,6 @@ +-- File name User/general.Prolog.gf +--- the rest formarly known as User-general +-- is now considered shared-general + +lin +request a = {s = app "request" a.s }; \ No newline at end of file diff --git a/grammars/video/User/specUser.gf b/grammars/video/User/specUser.gf new file mode 100644 index 000000000..00aa69a44 --- /dev/null +++ b/grammars/video/User/specUser.gf @@ -0,0 +1,36 @@ +-- File name User/specific.Abs.gf + + +abstract specUser = specific, genUser ** { + +cat +AnswerReq ; +AnswerListReq ; +Request ; + +fun +--- Answers in request list +vcr_add_rec_job_args4 : AnswerReq -> AnswerReq -> AnswerReq -> AnswerReq -> Action ; +vcr_add_rec_job_args3 : AnswerReq -> AnswerReq -> AnswerReq -> Action ; +vcr_add_rec_job_args2 : AnswerReq -> AnswerReq -> Action ; +vcr_add_rec_job_args1 : AnswerReq -> Action ; +---- vcr_add_rec_job_no_args : Action ; -- spela in! moved to specific + +fun +--- Possible answers in request list +startTimeToStoreReq : StartTime -> AnswerReq ; +endTimeToStoreReq : EndTime -> AnswerReq ; +channelToStoreReq : ChToStore -> AnswerReq ; +weekdayToStoreReq : WdToStore -> AnswerReq ; + +--- AnswerList +answerListReq4 : AnswerReq -> AnswerReq -> AnswerReq -> AnswerReq -> AnswerListReq ; +answerListReq3 : AnswerReq -> AnswerReq -> AnswerReq -> AnswerListReq ; +answerListReq2 : AnswerReq -> AnswerReq -> AnswerListReq ; +answerListReq : AnswerListReq -> DMove; + +answerReq : AnswerReq -> Answer ; + +--requestChannelsDMove : Request -> DMove; +requestChannels : Action ; +} diff --git a/grammars/video/User/specUserProlog.gf b/grammars/video/User/specUserProlog.gf new file mode 100644 index 000000000..f586951ce --- /dev/null +++ b/grammars/video/User/specUserProlog.gf @@ -0,0 +1,68 @@ +-- File name User/specific.Prolog.gf + +concrete specUserProlog of specUser = genUserProlog, specificProlog ** + open prologResource in { + + + +--- Answers in request list +lin +vcr_add_rec_job_args4 chst wdts stts etts = + {s = + "add_rec_job" ++ "," ++ + app "answer" chst.s ++ "," ++ + app "answer" wdts.s ++ "," ++ + app "answer" stts.s ++ "," ++ + "answer" ++ "(" ++ etts.s } ; + +vcr_add_rec_job_args3 chst wdts stts = + {s = + "add_rec_job" ++ "," ++ + app "answer" chst.s ++ "," ++ + app "answer" wdts.s ++ "," ++ + "answer" ++ "(" ++ stts.s} ; + +vcr_add_rec_job_args2 chst wdts = {s = + "add_rec_job" ++ "," ++ + app "answer" chst.s ++ "," ++ + "answer" ++ "(" ++ wdts.s } ; + +vcr_add_rec_job_args1 chst = {s = + "add_rec_job" ++ "," ++ + "answer" ++ "(" ++ chst.s } ; + +---- vcr_add_rec_job_no_args = {s = "add_rec_job"} ; -- moved to specific + + + +--- Possible answers in request list +startTimeToStoreReq v = {s= v.s} ; +endTimeToStoreReq v = {s= v.s} ; +channelToStoreReq v = {s= v.s} ; +weekdayToStoreReq v = {s= v.s} ; + +--- AnswerList +answerListReq4 chts wdts stts etts = + { s = + app "answer" chts.s ++ "," ++ + app "answer" wdts.s ++ "," ++ + app "answer" stts.s ++ "," ++ + app "answer" etts.s } ; + +answerListReq3 chts wdts stts = + { s = + app "answer" chts.s ++ "," ++ + app "answer" wdts.s ++ "," ++ + app "answer" stts.s} ; + +answerListReq2 chts wdts = + { s = + app "answer" chts.s ++ "," ++ + app "answer" wdts.s } ; + +answerListReq aL = {s = aL.s} ; + +answerReq v = {s= v.s} ; + +requestChannels = {s = ["list_channels"]} ; +} diff --git a/grammars/video/User/specUserSwe.gf b/grammars/video/User/specUserSwe.gf new file mode 100644 index 000000000..cc3018c0a --- /dev/null +++ b/grammars/video/User/specUserSwe.gf @@ -0,0 +1,35 @@ +--# -path=.:..:../Shared:../Weekday:../Time:../Channel + +-- File name User/specific.Swe.gf + +concrete specUserSwe of specUser = specificSwe, genUserSwe ** { + +lin +--- Answers in request list +vcr_add_rec_job_args4 chts wdts stts etts = {s = + ["spela in"] ++ stts.s ++ "," ++ etts.s ++ "," ++ wdts.s ++ "," ++ chts.s }; +vcr_add_rec_job_args3 chts wdts stts = {s = + ["spela in"] ++ chts.s ++ "," ++ wdts.s ++ "," ++ stts.s }; +vcr_add_rec_job_args2 chts wdts = {s = + ["spela in"] ++ chts.s ++ "," ++ wdts.s }; +vcr_add_rec_job_args1 chts = {s = ["spela in"] ++ chts.s } ; +---- vcr_add_rec_job_no_args = {s = ["spela in"]} ; + +lin + +--- Possible answers in request list +startTimeToStoreReq v = {s= v.s} ; +endTimeToStoreReq v = {s= v.s} ; +channelToStoreReq v = {s= v.s} ; +weekdayToStoreReq v = {s= v.s} ; + +--- AnswerList +answerListReq4 chts wdts stts etts = {s = stts.s ++ "," ++ etts.s ++ "," ++ wdts.s ++ "," ++ chts.s }; +answerListReq3 chts wdts stts = {s = chts.s ++ "," ++ wdts.s ++ "," ++ stts.s }; +answerListReq2 chts wdts = {s = chts.s ++ "," ++ wdts.s }; +answerListReq aL = {s = aL.s} ; + +answerReq v = {s= v.s} ; + +requestChannels = {s= (variants{["lista alla kanaler"];["vilka kanaler finns det"]})}; +} diff --git a/grammars/video/User/specific.Prolog.gf b/grammars/video/User/specific.Prolog.gf new file mode 100644 index 000000000..fb3dd07a8 --- /dev/null +++ b/grammars/video/User/specific.Prolog.gf @@ -0,0 +1,68 @@ +-- File name User/specific.Prolog.gf + +include + specific.Abs.gf ; + general.Prolog.gf ; + + + +--- Answers in request list +lin +vcr_add_rec_job_args4 chst wdts stts etts = + {s = + "add_rec_job" ++ "," ++ + app "answer" chst.s ++ "," ++ + app "answer" wdts.s ++ "," ++ + app "answer" stts.s ++ "," ++ + "answer" ++ "(" ++ etts.s } ; + +vcr_add_rec_job_args3 chst wdts stts = + {s = + "add_rec_job" ++ "," ++ + app "answer" chst.s ++ "," ++ + app "answer" wdts.s ++ "," ++ + "answer" ++ "(" ++ stts.s} ; + +vcr_add_rec_job_args2 chst wdts = {s = + "add_rec_job" ++ "," ++ + app "answer" chst.s ++ "," ++ + "answer" ++ "(" ++ wdts.s } ; + +vcr_add_rec_job_args1 chst = {s = + "add_rec_job" ++ "," ++ + "answer" ++ "(" ++ chst.s } ; + +vcr_add_rec_job_no_args = {s = "add_rec_job"} ; + + + +--- Possible answers in request list +startTimeToStoreReq v = {s= v.s} ; +endTimeToStoreReq v = {s= v.s} ; +channelToStoreReq v = {s= v.s} ; +weekdayToStoreReq v = {s= v.s} ; + +--- AnswerList +answerListReq4 chts wdts stts etts = + { s = + app "answer" chts.s ++ "," ++ + app "answer" wdts.s ++ "," ++ + app "answer" stts.s ++ "," ++ + app "answer" etts.s } ; + +answerListReq3 chts wdts stts = + { s = + app "answer" chts.s ++ "," ++ + app "answer" wdts.s ++ "," ++ + app "answer" stts.s} ; + +answerListReq2 chts wdts = + { s = + app "answer" chts.s ++ "," ++ + app "answer" wdts.s } ; + +answerListReq aL = {s = aL.s} ; + +answerReq v = {s= v.s} ; + +requestChannels = {s = ["list_channels"]} ; diff --git a/grammars/video/Weekday/weekday.Eng.gf b/grammars/video/Weekday/weekday.Eng.gf new file mode 100644 index 000000000..773f41380 --- /dev/null +++ b/grammars/video/Weekday/weekday.Eng.gf @@ -0,0 +1,12 @@ +---File name weekday.Eng.gf + +include weekday.Abs.gf ; + +pattern +monday = "monday" ; +tuesday = "tuesday" ; +wednesday = "wednesday" ; +thursday = "thursday" ; +friday = "friday" ; +saturday = "saturday" ; +sunday = "sunday" ; \ No newline at end of file diff --git a/grammars/video/Weekday/weekday.Prolog.gf b/grammars/video/Weekday/weekday.Prolog.gf new file mode 100644 index 000000000..29018f420 --- /dev/null +++ b/grammars/video/Weekday/weekday.Prolog.gf @@ -0,0 +1,13 @@ +---File name weekday.Swe.gf + +include weekday.Abs.gf ; + +pattern +--today = "today" ; +monday = "monday" ; +tuesday = "tuesday" ; +wednesday = "wednesday" ; +thursday = "thursday" ; +friday = "friday" ; +saturday = "saturday" ; +sunday = "sunday" ; \ No newline at end of file diff --git a/grammars/video/Weekday/weekday.gf b/grammars/video/Weekday/weekday.gf new file mode 100644 index 000000000..1c37968e1 --- /dev/null +++ b/grammars/video/Weekday/weekday.gf @@ -0,0 +1,15 @@ +abstract weekday = { + +cat +Weekday ; + +fun +--today : Weekday ; +monday : Weekday ; +tuesday : Weekday ; +wednesday : Weekday ; +thursday : Weekday ; +friday : Weekday ; +saturday : Weekday ; +sunday : Weekday ; +} \ No newline at end of file diff --git a/grammars/video/Weekday/weekdayProlog.gf b/grammars/video/Weekday/weekdayProlog.gf new file mode 100644 index 000000000..ae824fce5 --- /dev/null +++ b/grammars/video/Weekday/weekdayProlog.gf @@ -0,0 +1,14 @@ +---File name weekday.Swe.gf + +concrete weekdayProlog of weekday = { + +pattern +--today = "today" ; +monday = "monday" ; +tuesday = "tuesday" ; +wednesday = "wednesday" ; +thursday = "thursday" ; +friday = "friday" ; +saturday = "saturday" ; +sunday = "sunday" ; +} diff --git a/grammars/video/Weekday/weekdaySwe.gf b/grammars/video/Weekday/weekdaySwe.gf new file mode 100644 index 000000000..38afb73fb --- /dev/null +++ b/grammars/video/Weekday/weekdaySwe.gf @@ -0,0 +1,12 @@ +concrete weekdaySwe of weekday = { + +pattern +--today = "idag" ; +monday = "måndag" ; +tuesday = "tisdag" ; +wednesday = "onsdag" ; +thursday = "torsdag" ; +friday = "fredag" ; +saturday = "lördag" ; +sunday = "söndag" ; +} diff --git a/grammars/video/all.gf b/grammars/video/all.gf new file mode 100644 index 000000000..9fd96be95 --- /dev/null +++ b/grammars/video/all.gf @@ -0,0 +1,13 @@ +-- wrapper module containing both User's and System's grammars. AR 16/9/2004 + +abstract all = specUser,specSystem ** { + +-- Suggestion: use different categories for system's and user's moves +-- and bring them together only here; now both use DMove + +-- cat Move ; +-- fun userMove : UMove -> Move ; +-- fun systemMove : SMove -> Move ; + +} ; + diff --git a/grammars/video/allProlog.gf b/grammars/video/allProlog.gf new file mode 100644 index 000000000..639106454 --- /dev/null +++ b/grammars/video/allProlog.gf @@ -0,0 +1,5 @@ +--# -path=.:Shared:Weekday:Time:Channel:User:System + +concrete allProlog of all = specUserProlog, specSystemProlog ** { + +} diff --git a/grammars/video/allSwe.gf b/grammars/video/allSwe.gf new file mode 100644 index 000000000..00098a1ff --- /dev/null +++ b/grammars/video/allSwe.gf @@ -0,0 +1,9 @@ +--# -path=.:Shared:Weekday:Time:Channel:User:System + +concrete allSwe of all = specUserSwe, specSystemSwe ** { + +-- lincat Move = {s : Str} ; +-- lin userMove m = {s = "Användaren:" ++ m.s} ; +-- lin systemMove m = {s = "Systemet:" ++ m.s} ; + +} diff --git a/grammars/video/icm100ResSwe.gf b/grammars/video/icm100ResSwe.gf new file mode 100644 index 000000000..e43e26bf8 --- /dev/null +++ b/grammars/video/icm100ResSwe.gf @@ -0,0 +1,30 @@ +resource icm100ResSwe = { + + param RefPol = Pos | Neg | Inter ; + param RefLev = Per | Sem | Und | Acc ; + + oper ex1 : RefPol => RefLev => Str = table { + Pos => table { + Per => ["jag hörde"]; + Sem => [""]; + Und => [""]; + Acc => ["okej"] + }; + + Neg => table { + Per => ["ursäkta jag hörde inte alls vad du sa"]; + Sem => ["jag förstår inte vad du menar"]; + Und => ["jag förstår inte riktigt vad du menar"]; + Acc => ["tyvärr kan inte hantera"] + }; + + Inter => table { + Per => (variants{}); + Sem => (variants{}); +-- Und => ["stämmer det"]; --hack! + Und => (variants{}); + Acc => (variants{}) + } + }; + +} \ No newline at end of file diff --git a/grammars/video/systemSwe.gf b/grammars/video/systemSwe.gf new file mode 100644 index 000000000..dcf3e084e --- /dev/null +++ b/grammars/video/systemSwe.gf @@ -0,0 +1,4 @@ +include Shared/specific.Swe.gf ; + Shared/general.Swe.gf ; + System/specific.Swe.gf ; + System/general.Swe.gf ; \ No newline at end of file diff --git a/src/GF/Compile/Compile.hs b/src/GF/Compile/Compile.hs index 8057904a8..b320a46f1 100644 --- a/src/GF/Compile/Compile.hs +++ b/src/GF/Compile/Compile.hs @@ -266,10 +266,11 @@ generateModuleCode opts path minfo@(name,info) = do code <- return $ MkGFC.prCanonModInfo minfo' return (gfcFile pname, code) if isCompilable info && emit && nomulti - then ioeIO $ writeFile file out >> putStr (" wrote file" +++ file) - else ioeIO $ putStrFlush $ "no need to save module" +++ prt name + then ioeIO (writeFile file out) >> ioeIOIf (putStr (" wrote file" +++ file)) + else ioeIOIf $ putStrFlush $ "no need to save module" +++ prt name return minfo' where + ioeIOIf = if oElem beSilent opts then (const (return ())) else ioeIO emitsGFR m = isModRes m && isCompilable info ---- isModRes m || (isModCnc m && mstatus m == MSIncomplete) isCompilable mi = case mi of diff --git a/src/Makefile b/src/Makefile index ce5873e52..cb7593c55 100644 --- a/src/Makefile +++ b/src/Makefile @@ -4,8 +4,7 @@ include config.mk GHMAKE=$(GHC) --make GHCXMAKE=ghcxmake GHCFLAGS=-package lang -package util -fglasgow-exts $(CPPFLAGS) $(LDFLAGS) -GHCOPTFLAGS=$(GHCFLAGS) -##GHCOPTFLAGS=-O $(GHCFLAGS) +GHCOPTFLAGS=-O $(GHCFLAGS) GHCFUDFLAG= JAVAFLAGS=-target 1.4 -source 1.4 @@ -29,6 +28,8 @@ BIN_DIST_DIR=$(DIST_DIR)-$(host) all: unix +temp: today noopt + unix: today nofud-links opt windows: today nofud-links justwindows @@ -41,6 +42,10 @@ opt: $(GHMAKE) $(GHCOPTFLAGS) $(GHCINCLUDENOFUD) GF.hs -o gf strip gf mv gf ../bin/ +noopt: + $(GHMAKE) $(GHCFLAGS) $(GHCINCLUDENOFUD) GF.hs -o gf + strip gf + mv gf ../bin/ ghc: nofud