forked from GitHub/gf-core
Karin C's example
This commit is contained in:
27
grammars/video/Channel/channel.Eng.gf
Normal file
27
grammars/video/Channel/channel.Eng.gf
Normal file
@@ -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"]})} ;
|
||||
|
||||
20
grammars/video/Channel/channel.Prolog.gf
Normal file
20
grammars/video/Channel/channel.Prolog.gf
Normal file
@@ -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" ;
|
||||
23
grammars/video/Channel/channel.gf
Normal file
23
grammars/video/Channel/channel.gf
Normal file
@@ -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 ;
|
||||
}
|
||||
22
grammars/video/Channel/channelProlog.gf
Normal file
22
grammars/video/Channel/channelProlog.gf
Normal file
@@ -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" ;
|
||||
}
|
||||
29
grammars/video/Channel/channelRes.Abs.gf
Normal file
29
grammars/video/Channel/channelRes.Abs.gf
Normal file
@@ -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 ;
|
||||
27
grammars/video/Channel/channelRes.Prolog.gf
Normal file
27
grammars/video/Channel/channelRes.Prolog.gf
Normal file
@@ -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" ;
|
||||
|
||||
26
grammars/video/Channel/channelResSwe.gf
Normal file
26
grammars/video/Channel/channelResSwe.gf
Normal file
@@ -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 ;
|
||||
}
|
||||
20
grammars/video/Channel/channelSwe.gf
Normal file
20
grammars/video/Channel/channelSwe.gf
Normal file
@@ -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å"]})} ;
|
||||
}
|
||||
56
grammars/video/Channel/date.Swe.gf
Normal file
56
grammars/video/Channel/date.Swe.gf
Normal file
@@ -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} ;
|
||||
53
grammars/video/README
Normal file
53
grammars/video/README
Normal file
@@ -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 = {
|
||||
50
grammars/video/Shared/general.Prolog.gf
Normal file
50
grammars/video/Shared/general.Prolog.gf
Normal file
@@ -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"} ;
|
||||
51
grammars/video/Shared/general.gf
Normal file
51
grammars/video/Shared/general.gf
Normal file
@@ -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 ;
|
||||
}
|
||||
43
grammars/video/Shared/generalProlog.gf
Normal file
43
grammars/video/Shared/generalProlog.gf
Normal file
@@ -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"} ;
|
||||
}
|
||||
43
grammars/video/Shared/generalSwe.gf
Normal file
43
grammars/video/Shared/generalSwe.gf
Normal file
@@ -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"]} ;
|
||||
}
|
||||
19
grammars/video/Shared/prologResource.gf
Normal file
19
grammars/video/Shared/prologResource.gf
Normal file
@@ -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 ;
|
||||
|
||||
|
||||
}
|
||||
29
grammars/video/Shared/specific.gf
Normal file
29
grammars/video/Shared/specific.gf
Normal file
@@ -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
|
||||
}
|
||||
22
grammars/video/Shared/specificProlog.gf
Normal file
22
grammars/video/Shared/specificProlog.gf
Normal file
@@ -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!!!
|
||||
}
|
||||
20
grammars/video/Shared/specificSwe.gf
Normal file
20
grammars/video/Shared/specificSwe.gf
Normal file
@@ -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"]} ; ----
|
||||
}
|
||||
37
grammars/video/System/genSystem.gf
Normal file
37
grammars/video/System/genSystem.gf
Normal file
@@ -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 ;
|
||||
}
|
||||
32
grammars/video/System/genSystemProlog.gf
Normal file
32
grammars/video/System/genSystemProlog.gf
Normal file
@@ -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 = "[]" ;
|
||||
}
|
||||
32
grammars/video/System/genSystemSwe.gf
Normal file
32
grammars/video/System/genSystemSwe.gf
Normal file
@@ -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 = "[]" ;
|
||||
}
|
||||
32
grammars/video/System/general.Prolog.gf
Normal file
32
grammars/video/System/general.Prolog.gf
Normal file
@@ -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 = "[]" ;
|
||||
60
grammars/video/System/re2specific.Swe.gf
Normal file
60
grammars/video/System/re2specific.Swe.gf
Normal file
@@ -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 } ;
|
||||
59
grammars/video/System/specSystem.gf
Normal file
59
grammars/video/System/specSystem.gf
Normal file
@@ -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 ;
|
||||
|
||||
}
|
||||
45
grammars/video/System/specSystemProlog.gf
Normal file
45
grammars/video/System/specSystemProlog.gf
Normal file
@@ -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 } ;
|
||||
}
|
||||
49
grammars/video/System/specSystemSwe.gf
Normal file
49
grammars/video/System/specSystemSwe.gf
Normal file
@@ -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 } ;
|
||||
}
|
||||
46
grammars/video/System/specific.Prolog.gf
Normal file
46
grammars/video/System/specific.Prolog.gf
Normal file
@@ -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 } ;
|
||||
135
grammars/video/Time/time.Catalan.gf
Normal file
135
grammars/video/Time/time.Catalan.gf
Normal file
@@ -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 } ;
|
||||
130
grammars/video/Time/time.Eng.gf
Normal file
130
grammars/video/Time/time.Eng.gf
Normal file
@@ -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
|
||||
}
|
||||
};
|
||||
110
grammars/video/Time/time.Prolog.gf
Normal file
110
grammars/video/Time/time.Prolog.gf
Normal file
@@ -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 } ;
|
||||
127
grammars/video/Time/time.Symb.gf
Normal file
127
grammars/video/Time/time.Symb.gf
Normal file
@@ -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 } ;
|
||||
106
grammars/video/Time/time.gf
Normal file
106
grammars/video/Time/time.gf
Normal file
@@ -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 ;
|
||||
|
||||
|
||||
}
|
||||
103
grammars/video/Time/timeProlog.gf
Normal file
103
grammars/video/Time/timeProlog.gf
Normal file
@@ -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 } ;
|
||||
}
|
||||
7
grammars/video/Time/timeResSwe.gf
Normal file
7
grammars/video/Time/timeResSwe.gf
Normal file
@@ -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 } ;
|
||||
|
||||
}
|
||||
149
grammars/video/Time/timeSwe.gf
Normal file
149
grammars/video/Time/timeSwe.gf
Normal file
@@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
7
grammars/video/User/genUser.gf
Normal file
7
grammars/video/User/genUser.gf
Normal file
@@ -0,0 +1,7 @@
|
||||
-- File name User/general.Abs.gf
|
||||
|
||||
abstract genUser = general ** {
|
||||
|
||||
fun
|
||||
request : Action -> DMove ;
|
||||
}
|
||||
8
grammars/video/User/genUserProlog.gf
Normal file
8
grammars/video/User/genUserProlog.gf
Normal file
@@ -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 };
|
||||
}
|
||||
8
grammars/video/User/genUserSwe.gf
Normal file
8
grammars/video/User/genUserSwe.gf
Normal file
@@ -0,0 +1,8 @@
|
||||
-- File name User/general.Swe.gf
|
||||
|
||||
concrete genUserSwe of genUser = generalSwe ** {
|
||||
|
||||
lin
|
||||
|
||||
request a = {s = a.s };
|
||||
}
|
||||
6
grammars/video/User/general.Prolog.gf
Normal file
6
grammars/video/User/general.Prolog.gf
Normal file
@@ -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 };
|
||||
36
grammars/video/User/specUser.gf
Normal file
36
grammars/video/User/specUser.gf
Normal file
@@ -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 ;
|
||||
}
|
||||
68
grammars/video/User/specUserProlog.gf
Normal file
68
grammars/video/User/specUserProlog.gf
Normal file
@@ -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"]} ;
|
||||
}
|
||||
35
grammars/video/User/specUserSwe.gf
Normal file
35
grammars/video/User/specUserSwe.gf
Normal file
@@ -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"]})};
|
||||
}
|
||||
68
grammars/video/User/specific.Prolog.gf
Normal file
68
grammars/video/User/specific.Prolog.gf
Normal file
@@ -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"]} ;
|
||||
12
grammars/video/Weekday/weekday.Eng.gf
Normal file
12
grammars/video/Weekday/weekday.Eng.gf
Normal file
@@ -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" ;
|
||||
13
grammars/video/Weekday/weekday.Prolog.gf
Normal file
13
grammars/video/Weekday/weekday.Prolog.gf
Normal file
@@ -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" ;
|
||||
15
grammars/video/Weekday/weekday.gf
Normal file
15
grammars/video/Weekday/weekday.gf
Normal file
@@ -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 ;
|
||||
}
|
||||
14
grammars/video/Weekday/weekdayProlog.gf
Normal file
14
grammars/video/Weekday/weekdayProlog.gf
Normal file
@@ -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" ;
|
||||
}
|
||||
12
grammars/video/Weekday/weekdaySwe.gf
Normal file
12
grammars/video/Weekday/weekdaySwe.gf
Normal file
@@ -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" ;
|
||||
}
|
||||
13
grammars/video/all.gf
Normal file
13
grammars/video/all.gf
Normal file
@@ -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 ;
|
||||
|
||||
} ;
|
||||
|
||||
5
grammars/video/allProlog.gf
Normal file
5
grammars/video/allProlog.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:Shared:Weekday:Time:Channel:User:System
|
||||
|
||||
concrete allProlog of all = specUserProlog, specSystemProlog ** {
|
||||
|
||||
}
|
||||
9
grammars/video/allSwe.gf
Normal file
9
grammars/video/allSwe.gf
Normal file
@@ -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} ;
|
||||
|
||||
}
|
||||
30
grammars/video/icm100ResSwe.gf
Normal file
30
grammars/video/icm100ResSwe.gf
Normal file
@@ -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{})
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
4
grammars/video/systemSwe.gf
Normal file
4
grammars/video/systemSwe.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
include Shared/specific.Swe.gf ;
|
||||
Shared/general.Swe.gf ;
|
||||
System/specific.Swe.gf ;
|
||||
System/general.Swe.gf ;
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user