
Grammar extracted by Vadim Zaytsev, see the Grammar Zoo entry for details: markup/graphical/dot/palies/extracted
Source used for this grammar: Jean Paliès, DOT 1.0, DOT.ecore, 2005/06/30 [Atlantic]
Boolean, Integer, String, Label, SimpleLabel, ComplexLabel, Compartment, VerticalCompartment, HorizontalCompartment, SimpleCompartment, Anchor, GraphElement, Graph, Layer, Nodelike, SubGraph, Node, Arc, DirectedArc, UndirectedArc, Shape, NodeShape, SimpleNodeShape, PointNodeShape, ComplexNodeShape, PolygonNodeShape, MNodeShape, RecordNodeShape, ArrowShape), 0 root (—), 1 top (GraphElement), 1 bottom (Double 3).[content] 2, [compartments] 3, [complexLabel] 2, [anchor] 2, [name], [source], [type], [rankDir], [labeljust], [labelloc] 2, [concentrate], [nodes] 3, [boundingBox], [compound], [layers] 2, [nodeSeparation], [ordering], [size] 2, [ratio], [center], [arcs], [graph], [layerSeparator], [fixedSize], [fontname], [fontsize], [height], [width], [shape], [arrowHead], [headlabel], [taillabel], [arrowTail], [tail_lp], [head_lp], [fromNode], [toNode], [constraint], [group], [minlen], [sameHead], [sameTail], [lhead], [ltail], [decorate], [sides], [skew], [distortion], [isRegular], [orientation], [toplabel], [bottomlabel], [clipping], [isPlain].Boolean ::= "true" "false"
Integer ::= integer
String ::= string
Label ::= SimpleLabel
Label ::= ComplexLabel
SimpleLabel ::= [content]::String
ComplexLabel ::=
[compartments]::CompartmentCompartment ::= VerticalCompartment
Compartment ::= HorizontalCompartment
Compartment ::= SimpleCompartment
VerticalCompartment ::= [complexLabel]::ComplexLabel [compartments]::Compartment [anchor]::Anchor
HorizontalCompartment ::= [complexLabel]::ComplexLabel [compartments]::Compartment [anchor]::Anchor
SimpleCompartment ::= [content]::String
Anchor ::= [name]::String [source]::Compartment
GraphElement ::= Graph
GraphElement ::= Layer
GraphElement ::= Nodelike
GraphElement ::= Arc
GraphElement ::= Shape
Graph ::= [type]::String [rankDir]::String [labeljust]::String [labelloc]::String [concentrate]::Boolean [nodes]::Nodelike [boundingBox]::String [compound]::Boolean [layers]::Layer [nodeSeparation]::Double [ordering]::String [size]::String [ratio]::String [center]::Boolean
Layer ::= [nodes]::Nodelike [arcs]::Arc [graph]::Graph [layerSeparator]::String
Nodelike ::= SubGraph
Nodelike ::= Node
SubGraph ::=
[nodes]::Nodelike [labelloc]::StringNode ::= [fixedSize]::Boolean [fontname]::String [fontsize]::Integer [height]::Integer [width]::Integer [shape]::NodeShape
Arc ::= DirectedArc
Arc ::= UndirectedArc
DirectedArc ::= [arrowHead]::ArrowShape [headlabel]::Label [taillabel]::Label [arrowTail]::ArrowShape [tail_lp]::Double [head_lp]::Double
UndirectedArc ::=
[fromNode]::Nodelike [toNode]::Nodelike [layers]::Layer [constraint]::Boolean [group]::String [minlen]::Integer [sameHead]::String [sameTail]::String [lhead]::Nodelike [ltail]::Nodelike [decorate]::BooleanShape ::= NodeShape
Shape ::= ArrowShape
NodeShape ::= SimpleNodeShape
NodeShape ::= PointNodeShape
NodeShape ::= ComplexNodeShape
SimpleNodeShape ::= ε
PointNodeShape ::= ε
ComplexNodeShape ::= PolygonNodeShape
ComplexNodeShape ::= MNodeShape
ComplexNodeShape ::= RecordNodeShape
PolygonNodeShape ::= [sides]::Integer [skew]::Integer [distortion]::Integer [isRegular]::Boolean [orientation]::Integer
MNodeShape ::= [toplabel]::Label [bottomlabel]::Label
RecordNodeShape ::= ε
ArrowShape ::= [clipping]::String [isPlain]::Boolean [size]::Integer