Sketch = Composite(Box) Mode. // Sketch = Shape Mode. Shape : VisualComponent | // ShapeGroup | Box | Line *common* Coordinates. // Repetition-Buffer rule ShapeGroup = "{" List(Shape) "}". VisualComponents = List(VisualComponent). VisualComponent : ShapeGroup | ADecorator. ADecorator : ScrollDecorator | BorderDecorator *common* VisualComponents. ScrollDecorator = "scroll". BorderDecorator = "border". Coordinates = Point Point. Point = Integer Integer. Box = "box". Line = "line". Mode : Gesture | Transfer | Drag *common* [ Mode]. Gesture = "gesture" Shape Point. Drag = "drag" ShapeGroup Point. Transfer = "transfer" ShapeGroup Point. List(S) ~ {S}. Main = . Cursor = . DrawingVisitor = Color. Color : Black | Red. Black = "black". Red = "red". Decorator(S) : Temp(S) | Decor(S). Decor(S) : Decor1(S) | Decor2(S) *common* Decorator(S). Decor1(S) = . Decor2(S) = . Composite(S) : Temp(S) | Compound(S). Compound(S) = "(" List(Composite(S)) ")". Temp(S) = S.