module languages/graph/syntax/Graph imports languages/aterm/syntax/ATerms basic/Integers basic/Strings exports sorts Graph NodeList Node NodeId AttributeList Attribute Shape Direction EdgeList Edge Polygon Point context-free syntax graph(NodeList, EdgeList,AttributeList) -> Graph "[" {Node ","}* "]" -> NodeList node(NodeId, AttributeList) -> Node String -> NodeId "[" {Attribute ","}* "]" -> AttributeList label(String) -> Attribute shape(Shape) -> Attribute location(Integer,Integer) -> Attribute size(Integer, Integer) -> Attribute curve-points(Polygon) -> Attribute bounding-box(Point, Point) -> Attribute direction(Direction) -> Attribute info(String, ATerm) -> Attribute "plaintext" -> Shape "ellipse" -> Shape "circle" -> Shape "egg" -> Shape "triangle" -> Shape "box" -> Shape "diamond" -> Shape "trapezium" -> Shape "parallelogram" -> Shape "house" -> Shape "hexagon" -> Shape "octagon" -> Shape "forward" -> Direction "back" -> Direction "both" -> Direction "none" -> Direction "[" {Edge ","}* "]" -> EdgeList edge(NodeId, NodeId, AttributeList) -> Edge "[" {Point ","}* "]" -> Polygon point(Integer, Integer) -> Point