Karin C's example

This commit is contained in:
aarne
2004-09-16 14:47:18 +00:00
parent 7769d0fb00
commit ecc132dccf
55 changed files with 2212 additions and 4 deletions

View 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"]})} ;

View 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" ;

View 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 ;
}

View 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" ;
}

View 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 ;

View 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" ;

View 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 ;
}

View 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å"]})} ;
}

View 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
View 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 = {

View 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"} ;

View 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 ;
}

View 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"} ;
}

View 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"]} ;
}

View 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 ;
}

View 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
}

View 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!!!
}

View 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"]} ; ----
}

View 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 ;
}

View 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 = "[]" ;
}

View 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 = "[]" ;
}

View 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 = "[]" ;

View 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 } ;

View 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 ;
}

View 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 } ;
}

View 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 } ;
}

View 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 } ;

View 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 } ;

View 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
}
};

View 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 } ;

View 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
View 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 ;
}

View 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 } ;
}

View 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 } ;
}

View 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
}
};
}

View File

@@ -0,0 +1,7 @@
-- File name User/general.Abs.gf
abstract genUser = general ** {
fun
request : Action -> DMove ;
}

View 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 };
}

View File

@@ -0,0 +1,8 @@
-- File name User/general.Swe.gf
concrete genUserSwe of genUser = generalSwe ** {
lin
request a = {s = a.s };
}

View 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 };

View 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 ;
}

View 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"]} ;
}

View 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"]})};
}

View 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"]} ;

View 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" ;

View 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" ;

View 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 ;
}

View 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" ;
}

View 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
View 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 ;
} ;

View 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
View 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} ;
}

View 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{})
}
};
}

View File

@@ -0,0 +1,4 @@
include Shared/specific.Swe.gf ;
Shared/general.Swe.gf ;
System/specific.Swe.gf ;
System/general.Swe.gf ;

View File

@@ -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

View File

@@ -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