Dieser Präprozessor eliminiert diverse Mengenkurzschreibweisen
(E und R)
im gegebenen
Setty-Programm.
Ein korrektes
Setty-Programm
sollte nach Ausführung des
Setty-Präprozessors
gemäß folgender Grammatik
SG
interpretierbar sein:
Setty-Grammatik SG = (N, T, P, S) mit
N = {Program, SetU, SetI, SetD, Set, From, To},
T = {LPAREN1 := '(', RPAREN1 := ')',
LPAREN2 := '[', RPAREN2 := ']',
LPAREN3 := '{', RPAREN3 := '}',
PLUS := '+', MINUS := '-',
SEMICOLON := ';', QUESTIONMARK := '?',
COMPLEMENT := 'C', UNION := 'u'|'v',
INTERSECTION := 'n', DIFFERENCE := '\',
IS := 'Is', IN := 'in',
NOT := 'not',
NUMBER := ['+'|'-']('0'-'9')+['.'('0'-'9')+],
INFINITY := 'inf'},
P = {Program ::= IS NUMBER [ NOT ] IN SetU QUESTIONMARK,
SetU ::= SetI ( UNION SetI )*,
SetI ::= SetD ( INTERSECTION SetD )*,
SetD ::= Set [ DIFFERENCE Set ],
Set ::= COMPLEMENT LPAREN1 SetU RPAREN1
| LPAREN1 SetU RPAREN1
| LPAREN3 [ NUMBER ( SEMICOLON NUMBER )* ] RPAREN3
| From SEMICOLON To,
From ::= RPAREN2 ( NUMBER | MINUS INFINITY )
| LPAREN2 NUMBER,
To ::= NUMBER ( LPAREN2 | RPAREN2 )
| [ PLUS ] INFINITY LPAREN2} und
S = Program.