mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-22 09:32:53 -06:00
Some additions to Time/TimeEng.gf
This commit is contained in:
@@ -5,26 +5,58 @@ abstract Time = Numeral ** {
|
|||||||
cat
|
cat
|
||||||
|
|
||||||
Date ;
|
Date ;
|
||||||
|
Year ;
|
||||||
|
Month ;
|
||||||
|
MonthName ;
|
||||||
|
Day ;
|
||||||
|
Time ;
|
||||||
Hour ;
|
Hour ;
|
||||||
Minute ;
|
Minute ;
|
||||||
Weekday ;
|
Weekday ;
|
||||||
|
|
||||||
fun
|
fun
|
||||||
|
|
||||||
-- The variants: "two twenty", "twenty past two", "twenty to two"
|
WeekdayDate : Weekday -> Date ; -- Monday
|
||||||
|
WeekdayTimeDate : Weekday -> Time -> Date ; -- Monday at twenty past two
|
||||||
|
MonthDayDate : MonthName -> Day -> Date ; -- the third of March
|
||||||
|
YearDate : Year -> Date ; -- two thousand eight
|
||||||
|
YearMonthDate : Year -> MonthName -> Date ; -- March 1995
|
||||||
|
YearMonthDayDate : Year -> MonthName -> Day -> Date ; -- January 1st, 2006
|
||||||
|
|
||||||
DayDate : Weekday -> Date ;
|
NumYear : Numeral -> Year ;
|
||||||
DayTimeDate : Weekday -> Time -> Date ;
|
DigYear : Digits -> Year ;
|
||||||
|
|
||||||
FormalTime : Hour -> Minute -> Time ;
|
NumMonth : Sub100 -> Month ;
|
||||||
PastTime : Hour -> Minute -> Time ;
|
DigMonth : Digits -> Month ;
|
||||||
ToTime : Hour -> Minute -> Time ;
|
NameMonth : MonthName -> Month ;
|
||||||
ExactTime : Hour -> Time ;
|
|
||||||
|
|
||||||
-- These range from 1 to 99 and are thus overgenerating.
|
NumDay : Sub100 -> Day ;
|
||||||
|
DigDay : Digits -> Day ;
|
||||||
|
|
||||||
NumHour : Sub100 -> Hour ;
|
FormalTime : Hour -> Minute -> Time ; -- "two twenty"
|
||||||
NumMinute : Sub100 -> Minute ;
|
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 : Digits -> Hour ;
|
||||||
|
NumMinute : Numeral -> Minute ;
|
||||||
|
DigMinute : Digits -> 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
|
fun
|
||||||
monday : Weekday ;
|
monday : Weekday ;
|
||||||
@@ -38,9 +70,11 @@ sunday : Weekday ;
|
|||||||
{-
|
{-
|
||||||
Add:
|
Add:
|
||||||
|
|
||||||
years
|
era (AD, BC)
|
||||||
|
|
||||||
dates: the x:th of y
|
twelve hour time (am, pm)
|
||||||
|
|
||||||
|
teen-hundred years: "x-teen hundred"
|
||||||
|
|
||||||
relative weeks: next week, last week, in x weeks, x weeks ago
|
relative weeks: next week, last week, in x weeks, x weeks ago
|
||||||
|
|
||||||
@@ -49,6 +83,26 @@ the day after tomorrow, in x days, x days ago
|
|||||||
|
|
||||||
relative time: in x minutes, in x hours
|
relative time: in x minutes, in x hours
|
||||||
|
|
||||||
|
temporal adverbs:
|
||||||
|
|
||||||
|
point:
|
||||||
|
|
||||||
|
- in 1992
|
||||||
|
- in July
|
||||||
|
- in July 1992
|
||||||
|
- on Monday
|
||||||
|
- on the first of July
|
||||||
|
- on the first of July, 1992
|
||||||
|
- on Monday at two twenty
|
||||||
|
|
||||||
|
starting:
|
||||||
|
|
||||||
|
- from (all of the above)
|
||||||
|
|
||||||
|
ending:
|
||||||
|
|
||||||
|
- to (all of the above)
|
||||||
|
|
||||||
-}
|
-}
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -4,22 +4,59 @@ concrete TimeEng of Time = NumeralEng **
|
|||||||
|
|
||||||
lincat
|
lincat
|
||||||
Date = SS ;
|
Date = SS ;
|
||||||
|
Year = SS;
|
||||||
|
Month = SS ;
|
||||||
|
MonthName = SS ;
|
||||||
|
Day = SS ;
|
||||||
Weekday = N ;
|
Weekday = N ;
|
||||||
Hour = SS ;
|
Hour = SS ;
|
||||||
Minute = SS ;
|
Minute = SS ;
|
||||||
Time = SS ;
|
Time = SS ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
DayDate day = ss (day.s ! singular ! nominative) ;
|
WeekdayDate day = ss (day.s ! singular ! nominative) ;
|
||||||
DayTimeDate day time = ss (day.s ! singular ! nominative ++ "at" ++ time.s) ;
|
WeekdayTimeDate day time = ss (day.s ! singular ! nominative ++ "at" ++ time.s) ;
|
||||||
|
MonthDayDate month day = variants { ss ("the" ++ day.s ++ "of" ++ month.s);
|
||||||
|
ss (month.s ++ day.s) } ;
|
||||||
|
YearDate year = ss (year.s) ;
|
||||||
|
YearMonthDate year month = ss (month.s ++ year.s) ;
|
||||||
|
YearMonthDayDate year month day = variants { ss ("the" ++ day.s ++ "of" ++ month.s ++ "," ++ year.s);
|
||||||
|
ss (month.s ++ day.s ++ "," ++ year.s) } ;
|
||||||
|
|
||||||
|
|
||||||
|
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"] ;
|
FormalTime = infixSS ["hundred and"] ;
|
||||||
PastTime h m = ss (m.s ++ "past" ++ h.s) ;
|
PastTime h m = ss (m.s ++ "past" ++ h.s) ;
|
||||||
ToTime h m = ss (m.s ++ "to" ++ h.s) ;
|
ToTime h m = ss (m.s ++ "to" ++ h.s) ;
|
||||||
|
HourTime h = ss (h.s ++ "o'clock") ;
|
||||||
ExactTime h = ss (h.s ++ "sharp") ;
|
ExactTime h = ss (h.s ++ "sharp") ;
|
||||||
|
|
||||||
NumHour n = {s = n.s ! NCard} ;
|
NumHour n = {s = n.s ! NCard} ;
|
||||||
|
DigHour n = {s = n.s ! NCard} ;
|
||||||
NumMinute 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" ;
|
monday = mkN "Monday" ;
|
||||||
tuesday = mkN "Tuesday" ;
|
tuesday = mkN "Tuesday" ;
|
||||||
|
|||||||
Reference in New Issue
Block a user