
Grammar extracted by Vadim Zaytsev, see the Grammar Zoo entry for details: markup/graphical/graphml/doux/extracted
Source used for this grammar: Guillaume Doux, A metamodel for the GraphML format 1.0, GraphML.ecore, 2009/03/16
LocatedElement, Root, Element, Key, Graph, Edge, HyperEdge, Node, Port, EndPoint, Data, ElemType, AttrType, EdgeType, Boolean, Integer, String), 0 root (—), 3 top (LocatedElement, Boolean, Integer), 0 bottom (—).[keys], [graphs], [id], [datas], [for], [attrName], [type], [defValue], [contents], [edgeDefault], [source], [target], [sourceport], [targetport], [endpoints], [subgraph], [ports], [name], [node] 2, [port], [key], [value], [edge], [graph], [double], [string], [integer], [boolean], [directed], [undirected].LocatedElement ::= Root
LocatedElement ::= Element
LocatedElement ::= Port
LocatedElement ::= EndPoint
LocatedElement ::= Data
Root ::= [keys]::Key [graphs]::Graph
Element ::= Key
Element ::= Graph
Element ::= Edge
Element ::= HyperEdge
Element ::= Node
Element ::=
[id]::String [datas]::DataKey ::= [for]::ElemType [attrName]::String [type]::AttrType [defValue]::String
Graph ::=
[contents]::Element [edgeDefault]::EdgeTypeEdge ::= [source]::Node [target]::Node [sourceport]::Port [targetport]::Port
HyperEdge ::=
[endpoints]::EndPointNode ::=
[subgraph]::Graph [ports]::PortPort ::= [name]::String
EndPoint ::= [node]::Node [port]::Port
Data ::= [key]::String [value]::String
ElemType ::= [edge]::ε [node]::ε [graph]::ε
AttrType ::= [double]::ε [string]::ε [integer]::ε [boolean]::ε
EdgeType ::= [directed]::ε [undirected]::ε
Boolean ::= "true" "false"
Integer ::= integer
String ::= string