summaryrefslogtreecommitdiff
path: root/examples/dates/DatesSwe.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/DatesSwe.gf
parent390566b17e69da2045a49e3da1f8debc60d42ccd (diff)
simple grammar for dates
Diffstat (limited to 'examples/dates/DatesSwe.gf')
-rw-r--r--examples/dates/DatesSwe.gf73
1 files changed, 73 insertions, 0 deletions
diff --git a/examples/dates/DatesSwe.gf b/examples/dates/DatesSwe.gf
new file mode 100644
index 000000000..d40ca201d
--- /dev/null
+++ b/examples/dates/DatesSwe.gf
@@ -0,0 +1,73 @@
+concrete DatesSwe 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 (opts "på" ++ w) ++ opts ("den" ++ d ++ m) ++ opts (opts "år" ++ y) ++ opts (klo ++ t) ;
+
+ MkYear i = i.s ;
+
+ MJan = "januari" ;
+ MFeb = "februari" ;
+ MMar = "mars" ;
+ MApr = "april" ;
+ MMay = "maj" ;
+ MJun = "juni" ;
+ MJul = "juli" ;
+ MAug = "augusti" ;
+ MSep = "september" ;
+ MOct = "oktober" ;
+ MNov = "november" ;
+ MDec = "december" ;
+
+ MkDay i = i.s ;
+
+ MkTime ap h m = h ! ap.p ++ opts (dot ++ 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 = "söndag" ;
+ WMon = "måndag" ;
+ WTue = "tisdag" ;
+ WWed = "onsdag" ;
+ WThu = "torsdag" ;
+ WFri = "fredag" ;
+ WSat = "lördag" ;
+
+ AM = {s = [] ; p = PAM} ;
+ PM = {s = [] ; p = PPM} ;
+
+oper
+ opts = optStr ;
+ dot = "." ;
+ comma = "," ;
+ klo = "kl." | "klockan" ;
+
+ ampm : Str -> Str -> PAMPM => Str = \a,p -> table {PAM => a ; PPM => p} ;
+
+param
+ PAMPM = PAM | PPM ;
+
+lin
+ DToday t = "idag" ++ opts (klo ++ t) ;
+ DTomorrow t = "imorgon" ++ opts (klo ++ t) ;
+ DYesterday t = "igår" ++ opts (klo ++ t) ;
+
+}
+