forked from GitHub/gf-core
changed names of resource-1.3; added a note on homepage on release
This commit is contained in:
104
lib/resource-1.3/time/Time.gf
Normal file
104
lib/resource-1.3/time/Time.gf
Normal file
@@ -0,0 +1,104 @@
|
||||
abstract Time = Cat, Numeral ** {
|
||||
|
||||
-- Time grammar Abstract syntax. Modified by BB and AR from Karin Cavallin.
|
||||
|
||||
-- Dates and times
|
||||
|
||||
cat
|
||||
|
||||
DateTime ;
|
||||
|
||||
Date ;
|
||||
Year ;
|
||||
Month ;
|
||||
MonthName ;
|
||||
Day ;
|
||||
|
||||
Time ;
|
||||
Hour ;
|
||||
Minute ;
|
||||
Weekday ;
|
||||
|
||||
[Dig]{1};
|
||||
|
||||
fun
|
||||
|
||||
DateTimeDateTime : Date -> Time -> DateTime ;
|
||||
|
||||
WeekdayDate : Weekday -> Date ; -- Monday
|
||||
MonthDayDate : MonthName -> Day -> Date ; -- the third of March
|
||||
MonthDate : MonthName -> Date ; -- March
|
||||
YearDate : Year -> Date ; -- two thousand eight
|
||||
YearMonthDate : Year -> MonthName -> Date ; -- March 1995
|
||||
YearMonthDayDate : Year -> MonthName -> Day -> Date ; -- January 1st, 2006
|
||||
|
||||
NumYear : Numeral -> Year ;
|
||||
DigYear : [Dig] -> Year ;
|
||||
|
||||
NumMonth : Sub100 -> Month ;
|
||||
DigMonth : [Dig] -> Month ;
|
||||
NameMonth : MonthName -> Month ;
|
||||
|
||||
NumDay : Sub100 -> Day ;
|
||||
DigDay : [Dig] -> Day ;
|
||||
|
||||
FormalTime : Hour -> Minute -> Time ; -- "two twenty"
|
||||
PastTime : Hour -> Minute -> Time ; -- "twenty past two"
|
||||
ToTime : Hour -> Minute -> Time ; -- "twenty to two"
|
||||
HourTime : Hour -> Time ; -- "two o'clock"
|
||||
ExactTime : Hour -> Time ; -- "sharp"
|
||||
|
||||
NumHour : Numeral -> Hour ;
|
||||
DigHour : [Dig] -> Hour ;
|
||||
NumMinute : Numeral -> Minute ;
|
||||
DigMinute : [Dig] -> Minute ;
|
||||
|
||||
fun
|
||||
january : MonthName ;
|
||||
february : MonthName ;
|
||||
march : MonthName ;
|
||||
april : MonthName ;
|
||||
may : MonthName ;
|
||||
june : MonthName ;
|
||||
july : MonthName ;
|
||||
august : MonthName ;
|
||||
september : MonthName ;
|
||||
october : MonthName ;
|
||||
november : MonthName ;
|
||||
december : MonthName ;
|
||||
|
||||
fun
|
||||
monday : Weekday ;
|
||||
tuesday : Weekday ;
|
||||
wednesday : Weekday ;
|
||||
thursday : Weekday ;
|
||||
friday : Weekday ;
|
||||
saturday : Weekday ;
|
||||
sunday : Weekday ;
|
||||
|
||||
-- Date and time adverbs
|
||||
|
||||
fun
|
||||
OnDate : Date -> Adv ;
|
||||
AtTime : Time -> Adv ;
|
||||
|
||||
|
||||
{-
|
||||
Add:
|
||||
|
||||
era (AD, BC)
|
||||
|
||||
twelve hour time (am, pm)
|
||||
|
||||
teen-hundred years: "x-teen hundred"
|
||||
|
||||
relative weeks: next week, last week, in x weeks, x weeks ago
|
||||
|
||||
relative days: today, tomorrow, yesterday, the day before yesterday,
|
||||
the day after tomorrow, in x days, x days ago
|
||||
|
||||
relative time: in x minutes, in x hours
|
||||
|
||||
-}
|
||||
|
||||
} ;
|
||||
93
lib/resource-1.3/time/TimeEng.gf
Normal file
93
lib/resource-1.3/time/TimeEng.gf
Normal file
@@ -0,0 +1,93 @@
|
||||
--# -path=.:present
|
||||
concrete TimeEng of Time = CatEng, NumeralEng **
|
||||
open Prelude, CatEng, ParadigmsEng, ResEng in {
|
||||
|
||||
param DateType = YearMonthType | DayType ;
|
||||
|
||||
lincat
|
||||
DateTime = SS ;
|
||||
|
||||
Date = { s : Str; t : DateType } ;
|
||||
Year = SS;
|
||||
Month = SS ;
|
||||
MonthName = SS ;
|
||||
Day = SS ;
|
||||
Weekday = N ;
|
||||
Hour = SS ;
|
||||
Minute = SS ;
|
||||
Time = SS ;
|
||||
|
||||
[Dig] = { s : CardOrd => Str } ;
|
||||
|
||||
lin
|
||||
|
||||
DateTimeDateTime date time = { s = date.s ++ "at" ++ time.s };
|
||||
|
||||
WeekdayDate day = { s = day.s ! singular ! nominative; t = DayType } ;
|
||||
MonthDayDate month day = { s = variants { "the" ++ day.s ++ "of" ++ month.s;
|
||||
month.s ++ day.s } ;
|
||||
t = DayType } ;
|
||||
MonthDate month = { s = month.s ; t = YearMonthType } ;
|
||||
YearDate year = { s = year.s ; t = YearMonthType } ;
|
||||
YearMonthDate year month = { s = month.s ++ year.s; t = YearMonthType } ;
|
||||
YearMonthDayDate year month day = { s = variants { "the" ++ day.s ++ "of" ++ month.s ++ "," ++ year.s;
|
||||
month.s ++ day.s ++ "," ++ year.s };
|
||||
t = DayType } ;
|
||||
|
||||
|
||||
NumYear n = {s = n.s ! NCard} ;
|
||||
DigYear n = {s = n.s ! NCard} ;
|
||||
|
||||
NumMonth n = {s = n.s ! NCard} ;
|
||||
DigMonth n = {s = n.s ! NCard} ;
|
||||
NameMonth n = { s = n.s } ;
|
||||
|
||||
NumDay n = {s = n.s ! NOrd} ;
|
||||
DigDay n = {s = n.s ! NOrd} ;
|
||||
|
||||
FormalTime = infixSS ["hundred and"] ;
|
||||
PastTime h m = ss (m.s ++ "past" ++ h.s) ;
|
||||
ToTime h m = ss (m.s ++ "to" ++ h.s) ;
|
||||
HourTime h = ss (h.s ++ "o'clock") ;
|
||||
ExactTime h = ss (h.s ++ "sharp") ;
|
||||
|
||||
NumHour n = {s = n.s ! NCard} ;
|
||||
DigHour n = {s = n.s ! NCard} ;
|
||||
NumMinute n = {s = n.s ! NCard} ;
|
||||
DigMinute n = {s = n.s ! NCard} ;
|
||||
|
||||
january = ss "January" ;
|
||||
february = ss "February" ;
|
||||
march = ss "March" ;
|
||||
april = ss "April" ;
|
||||
may = ss "May" ;
|
||||
june = ss "June" ;
|
||||
july = ss "July" ;
|
||||
august = ss "August" ;
|
||||
september = ss "September" ;
|
||||
october = ss "October" ;
|
||||
november = ss "November" ;
|
||||
december = ss "December" ;
|
||||
|
||||
monday = mkN "Monday" ;
|
||||
tuesday = mkN "Tuesday" ;
|
||||
wednesday = mkN "Wednesday" ;
|
||||
thursday = mkN "Thursday" ;
|
||||
friday = mkN "Friday" ;
|
||||
saturday = mkN "Saturday" ;
|
||||
sunday = mkN "Sunday" ;
|
||||
|
||||
|
||||
OnDate date = let prep = case date.t of {
|
||||
YearMonthType => "in";
|
||||
DayType => "on"
|
||||
}
|
||||
in { s = prep ++ date.s } ;
|
||||
|
||||
AtTime time = { s = "at" ++ time.s } ;
|
||||
|
||||
|
||||
BaseDig d = { s = \\o => d.s!o } ;
|
||||
ConsDig d ds = { s = \\o => d.s!NCard ++ ds.s!o } ;
|
||||
|
||||
} ;
|
||||
Reference in New Issue
Block a user