1
0
forked from GitHub/gf-core

changed names of resource-1.3; added a note on homepage on release

This commit is contained in:
aarne
2008-06-25 16:54:35 +00:00
parent 7d721eb16e
commit c5c6d13546
1729 changed files with 113 additions and 32 deletions

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

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