Sketch = Decorator(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) = "decoration1". Decor2(S) = "decoration2". Composite(S) : Temp(S) | Compound(S). Compound(S) = "(" List(Composite(S)) ")". Temp(S) = S.