summaryrefslogtreecommitdiff
path: root/examples/dates/DatesFre.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/DatesFre.gf
parent390566b17e69da2045a49e3da1f8debc60d42ccd (diff)
simple grammar for dates
Diffstat (limited to 'examples/dates/DatesFre.gf')
-rw-r--r--examples/dates/DatesFre.gf73
1 files changed, 73 insertions, 0 deletions
diff --git a/examples/dates/DatesFre.gf b/examples/dates/DatesFre.gf
new file mode 100644
index 000000000..7adad70db
--- /dev/null
+++ b/examples/dates/DatesFre.gf
@@ -0,0 +1,73 @@
+concrete DatesFre of Dates = open Prelude in {
+
+flags coding = utf8 ;
+
+lincat
+ Date, Year, Month, Day, Time, Minute, Weekday = Str ; Hour = PAMPM => Str ; Ampm = {s : Str ; p : PAMPM} ;
+
+lin
+ DFull y m d w t = opts w ++ opts ("le" ++ d ++ m) ++ opts (opts "en" ++ y) ++ opts (klo ++ t) ;
+
+ MkYear i = i.s ;
+
+ MJan = "janvier" ;
+ MFeb = "février" ;
+ MMar = "mars" ;
+ MApr = "avril" ;
+ MMay = "mai" ;
+ MJun = "juin" ;
+ MJul = "juillet" ;
+ MAug = "août" ;
+ MSep = "septembre" ;
+ MOct = "octobre" ;
+ MNov = "novembre" ;
+ MDec = "décembre" ;
+
+ MkDay i = i.s ;
+
+ MkTime ap h m = h ! ap.p ++ opts ("h" ++ m) ++ ap.s ;
+
+ H01 = ampm "1" "13" ;
+ H02 = ampm "2" "14" ;
+ H03 = ampm "3" "15" ;
+ H04 = ampm "4" "16" ;
+ H05 = ampm "5" "17" ;
+ H06 = ampm "6" "18" ;
+ H07 = ampm "7" "19" ;
+ H08 = ampm "8" "20" ;
+ H09 = ampm "9" "21" ;
+ H10 = ampm "10" "22" ;
+ H11 = ampm "11" "23" ;
+ H12 = ampm "0" "12" ; -- 12.01 a.m. = 0.01 ; 12.01 p.m. = 13.01
+
+ MkMinute i = i.s ;
+
+ WSun = "dimanche" ;
+ WMon = "lundi" ;
+ WTue = "mardi" ;
+ WWed = "mercredi" ;
+ WThu = "jeudi" ;
+ WFri = "vendredi" ;
+ WSat = "samedi" ;
+
+ AM = {s = [] ; p = PAM} ;
+ PM = {s = [] ; p = PPM} ;
+
+oper
+ opts = optStr ;
+ dot = "." ;
+ comma = "," ;
+ klo = "à" ;
+
+ ampm : Str -> Str -> PAMPM => Str = \a,p -> table {PAM => a ; PPM => p} ;
+
+param
+ PAMPM = PAM | PPM ;
+
+lin
+ DToday t = "aujourd'hui" ++ opts (klo ++ t) ;
+ DTomorrow t = "demain" ++ opts (klo ++ t) ;
+ DYesterday t = "hier" ++ opts (klo ++ t) ;
+
+}
+