Nahmd,
Nach etwas Grübeln habe ich eine kleine, aber feine Ergänzung gefunden:
Du kannst vor eine Rule ein “+” schreiben - das steht für “und außerdem”. Formal: ist das Zwischenergebnis der Vorgängerrules “TRUE”, wird diese Rule übersprungen.
Das braucht nur eine triviale Ergänzung der Grammatik (ein “[ “+” ]” am Anfang der Produktion zu ), und weniger als zehn Zeilen Code. Ist bereits eingebaut und darf ausprobiert werden: http://www.netzwolf.info/kartografie/osm/opening_hours/#examples (Beispiele 12 bis 14)
Diese Schreibweise ist auch hilfreich für das “am Vormittag offen, Mittwoch auch Nachmittags”.
In der Realität wird das häufig so geschrieben “Mo-Fr 08:00-12:00; We 15:00-18:00”, und dann ist Mittwoch vormittags geschlossen (bitte nicht mich schlagen, das ist Wiki-Vorgabe). Diese Situation aus der Realität kann man jetzt intuitiv so abbilden: “Mo-Fr 08:00-12:00; + We 15:00-18:00”.
Ich hoffe, es gefällt.
Gruß Wolf
Nachtrag zur Erkärung:
Ich sehe das “und nach Vereinbarung” nicht als Zeitangabe – die Zeitangabe erfolgt außerhalb, denn insbesondere soll “nach Vereinbarung” ja auf bestimmte zeitbereiche begrenz werden können – sondern als alternativer Ergebniswert neben “open” und “closed”.
Beispiel (Club)
Th-Sa 21:00-03:00; Sa 22:00-03:00 “Krawattenzwang”
Oder (Schwimmbad):
Mo-Fr 08:00-12:00, 15:00-18:00; Sa 10:00-14:00 "nur bei gutem Wetter; We 15:00-18:00 “freier Eintritt”; Th 08:00-09:00 “Damenschwimmen”
Oder (Berghütte, die irgendwann im Juni öffnet und irgendwann im Oktober schließt):
Jun-Oct “Ist von Mitte Juni bis Mitte Oktober geöffnet, genauen Termin bitte nachfragen”; Jul-Sep 00:00-24:00
So bekommt man ein “open”, wenn sicher offen, ein “close”, wenn sicher zu, und ein “Ansagetext” für die Fälle, bei denen man sich verabreden muss, die Sache vom Wetter abhängt, man keine genauen Angaben hat oder die Angabe nicht alle Nas lang korrigieren will, oder wenn das “open” von Merkmalen des Besuchers abhängt. Mit einer sehr einfachen syntaktischen Kostruktion kann man sehr viele Fälle der realität abdecken.