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