Tinyray-Grammatik TG = (N, T, P, S) mit
N = {
Tinyray, Global, Defaults, Geo, Sun, Camera,
Background, Ambience, Fog, Bounding, Triangle,
Sphere, Plane, Parameters, Vector
},
T = {
TINYRAY := 'Tinyray', CAMERA := 'Camera',
BOUNDING := 'Bounding', SPHERE := 'Sphere',
TRIANGLE := 'Triangle', PLANE := 'Plane',
AMBIENCE := 'Ambience', SUN := 'Sun',
BACKGROUND := 'Background', FOG := 'Fog',
DEFAULTS := 'Defaults',
LBRACE := '{', RBRACE := '}',
LBRACKET := '[', RBRACKET := ']',
SEP := ','|';',
REAL := ['+'|'-'] ((('0'-'9')+) | (('0'-'9')*'.'('0'-'9')+))
[('E'|'e') ['+'|'-'] ('0'-'9')+]
},
P = {
Tinyray ::= TINYRAY LBRACE (Global | Defaults | Geo | Sun)* RBRACE,
Global ::= Camera | Background | Ambience | Fog,
Defaults ::= DEFAULTS LBRACE Parameters RBRACE,
Geo ::= Bounding | Triangle | Sphere | Plane,
Sun ::= SUN LBRACE Vector SEP Vector RBRACE,
Camera ::= CAMERA LBRACE Vector SEP Vector [ SEP Vector ] RBRACE,
Background ::= BACKGROUND LBRACE Vector RBRACE,
Ambience ::= AMBIENCE LBRACE Vector RBRACE,
Fog ::= FOG LBRACE Vector SEP REAL RBRACE,
Bounding ::= BOUNDING LBRACE (Bounding | Triangle |
Sphere | Defaults)* RBRACE,
Triangle ::= TRIANGLE LBRACE Vector SEP Vector
SEP Vector [ SEP Parameters ] RBRACE,
Sphere ::= SPHERE LBRACE Vector SEP REAL [ SEP Parameters ] RBRACE,
Plane ::= PLANE LBRACE Vector SEP Vector
SEP Vector [ SEP Parameters ] RBRACE,
Parameters ::= Vector [ SEP Vector [ SEP REAL [ SEP REAL [
SEP REAL ] ] ] ],
Vector ::= LBRACKET REAL SEP REAL SEP REAL RBRACKET
} und
S = Tinyray. |