summaryrefslogtreecommitdiff
path: root/examples/dates/DatesEng.gf
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2011-02-25 15:44:25 +0000
committeraarne <aarne@chalmers.se>2011-02-25 15:44:25 +0000
commit77b02544fb91a658346f25019cbf2a21b79f9081 (patch)
tree9f54c2af27a0ee5e328c6984abdaa6ae967009d6 /examples/dates/DatesEng.gf
parent390566b17e69da2045a49e3da1f8debc60d42ccd (diff)
simple grammar for dates
Diffstat (limited to 'examples/dates/DatesEng.gf')
-rw-r--r--examples/dates/DatesEng.gf66
1 files changed, 66 insertions, 0 deletions
diff --git a/examples/dates/DatesEng.gf b/examples/dates/DatesEng.gf
new file mode 100644
index 000000000..2113c11dd
--- /dev/null
+++ b/examples/dates/DatesEng.gf
@@ -0,0 +1,66 @@
+concrete DatesEng of Dates = open Prelude in {
+
+lincat
+ Date, Year, Month, Day, Time, Hour, Minute, Weekday, Ampm = Str ;
+
+lin
+ DFull y m d w t = opts (opts "on" ++ w ++ comma) ++ opts (bothWays m d ++ opts comma) ++ opts (y ++ opts comma) ++ opts ("at" ++ t) ;
+
+ MkYear i = i.s ;
+
+ MJan = "January" ;
+ MFeb = "February" ;
+ MMar = "March" ;
+ MApr = "April" ;
+ MMay = "May" ;
+ MJun = "June" ;
+ MJul = "July" ;
+ MAug = "August" ;
+ MSep = "September" ;
+ MOct = "October" ;
+ MNov = "November" ;
+ MDec = "December" ;
+
+ MkDay i = i.s ;
+
+ MkTime ap h m = h ++ opts (dot ++ m) ++ opts ap ;
+
+ H01 = "1" ;
+ H02 = "2" ;
+ H03 = "3" ;
+ H04 = "4" ;
+ H05 = "5" ;
+ H06 = "6" ;
+ H07 = "7" ;
+ H08 = "8" ;
+ H09 = "9" ;
+ H10 = "10" ;
+ H11 = "11" ;
+ H12 = "12" ;
+
+ MkMinute i = i.s ;
+
+ WSun = "Sunday" ;
+ WMon = "Monday" ;
+ WTue = "Tuesday" ;
+ WWed = "Wednesday" ;
+ WThu = "Thursday" ;
+ WFri = "Friday" ;
+ WSat = "Saturday" ;
+
+ AM = "a.m." ;
+ PM = "p.m." ;
+
+oper
+ opts = optStr ;
+ dot = "." ;
+ comma = "," ;
+
+lin
+ DToday t = "today" ++ opts ("at" ++ t) ;
+ DTomorrow t = "tomorrow" ++ opts ("at" ++ t) ;
+ DYesterday t = "yesterday" ++ opts ("at" ++ t) ;
+
+
+}
+