Syntax Grammar

Grammar symbols:

* = zero or more
+ = one or more
| = or
; = terminator
 
 

ShapeScript

::=

<Shape>*;

 

Shape

::=

<ShapeDeclaration> <ShapeBody>;

 

ShapeDeclaration

::=

<ShapeType> <ShapeName>;

 

ShapeType

::=

"shape" | "decoration";

 

ShapeName

::=

<ReservedShapeName> | <stringliteral>;

 

ReservedShapeName

::=

See Reserved Names for full reserved shape listing.

 

ShapeBody

::=

"{" <InitialisationAttributeAssignment>* <DrawingStatement>* <SubShape>* "}";

 

InitialisationAttributeAssignment

::=

<Attribute> "=" <Value> ";";

 

Attribute

::=

See Shape Attributes for full listing of attribute names.

 

DrawingStatement

::=

<IfElseSection> | <Method>;

 

IfElseSection

::=

"if" "(" <QueryExpression> ")" <TrueSection> ( <ElseSection> ) ;

 

QueryExpression

::=

<QueryName> "(" <ParameterList> ")";

 

QueryName

::=

See Query Methods for a full listing of Query names.

 

TrueSection

::=

"{" <DrawingStatement>* "}"

 

ElseSection

::=

"else" "{" <DrawingStatement>* "}"

 

Method

::=

<MethodName> "(" <ParameterList> ")" ";";

 

MethodName

::=

See Drawing Methods for a full listing of method names.