next up previous contents index
Next: Animations Up: Graph Description Language (GDL) Previous: Remarks

GDL's Grammar

This section presents the grammar of GDL (Graph Description Language) in EBNF (Extended Bacchus Naur Form).


graph                  :  "graph: {" (graph_entry)* "}"
graph_entry            :  graph_attribute
                       |  graph
                       |  node
                       |  edge
                       |  node_defaults
                       |  edge_defaults
                       |  foldnode_defaults
                       |  foldedge_defaults
                       |  backedge
                       |  nearedge
                       |  lnearedge
                       |  rnearedge
                       |  bentnearedge
                       |  lbentnearedge
                       |  rbentnearedge
                       |  region
graph_attribute        :  graph_attribute_name ":" attribute_value
graph_attribute_name   :  any attribute listed in section graph attributes
node_defaults          :  "node."node_attribute
edge_defaults          :  "edge."edge_attribute
foldnode_defaults      :  "foldnode."node_attribute
foldedge_defaults      :  "foldedge."edge_attribute
node                   :  "node: {" (node_attribute)* "}"
edge                   :  "edge: {" (edge_attribute)* "}"
backedge               :  "backedge: {" (edge_attribute)* "}"
nearedge               :  "nearedge: {" (edge_attribute)* "}"
lnearedge              :  "leftnearedge: {" (edge_attribute)* "}"
rnearedge              :  "rightnearedge: {" (edge_attribute)* "}"
bentnearedge           :  "bentnearedge: {" (edge_attribute)* "}"
lbentnearedge          :  "leftbentnearedge: {" (edge_attribute)* "}"
rbentnearedge          :  "rightbentnearedge: {" (edge_attribute)* "}"
region                 :  "region: {" (region_attribute)* "}"
node_attribute         :  node_attribute_name ":" attribute_value
edge_attribute         :  edge_attribute_name ":" attribute_value
region_attribute       :  "sourcename" ":" string_list
                       |  "targetname" ":" string_list
                       |  "state" ":" enum_status
                       |  "class" ":" integer_list
                       |  "range" ":" integer_value
node_attribute_name    :  any attribute listed in section node attributes
edge_attribute_name    :  any attribute listed in section edge attributes
attribute_value        :  integer_value
                       |  float_value
                       |  string_value
                       |  enum_value
integer_list           :  (integer_value)*
integer_value          :  any integer constant in C style
float_value            :  any float constant in C style
string_list            :  (string_value)*
string_value           :  """ (character)* """
enum_value             :  any possible key word value for a graph, node or edge attribute
enum_status            :  any possible key word value for the graph attribute state
character              :  any printable ASCII character

Note that graph:, node: and edge:, etc. are keywords. Therefore, no whitespace 4 character is allowed before these colons.

Integers are sequences of digits. Floating point numbers consist of a sequence of digits followed by a dot `.', followed by a sequence of digits. C style comments (/* ... */) and C++ style comments (//...) are allowed.


next up previous contents index
Next: Animations Up: Graph Description Language (GDL) Previous: Remarks

Last modified on 11 August 2003 by webmaster. © 2000-2003 AbsInt