Mercurial > hg > camir-aes2014
diff toolboxes/graph_visualisation/share/graphviz/doc/html/info/lang.html @ 0:e9a9cd732c1e tip
first hg version after svn
author | wolffd |
---|---|
date | Tue, 10 Feb 2015 15:05:51 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolboxes/graph_visualisation/share/graphviz/doc/html/info/lang.html Tue Feb 10 15:05:51 2015 +0000 @@ -0,0 +1,215 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<!-- + This is a generated document. Do not edit. +--> +<HTML VERSION="2.0"> +<HEAD> +<TITLE>The DOT Language</TITLE> +</HEAD> +<BODY BGCOLOR=white> +<A NAME="top"></A> +<H1 ALIGN=CENTER>The DOT Language</H1> +<HR> +The following is an abstract grammar defining the DOT language. +Terminals are shown in bold font and nonterminals in italics. +Literal characters are given in single quotes. +Parentheses ( and ) indicate grouping when needed. +Square brackets [ and ] enclose optional items. +Vertical bars | separate alternatives. +<TABLE> +<TR> + <TD ALIGN=RIGHT><I>graph</I></TD> + <TD ALIGN=LEFT>:</TD> + <TD ALIGN=LEFT>[ <B>strict</B> ] (<B>graph</B> | <B>digraph</B>) [ <I>ID</I> ] <B>'{'</B> <I>stmt_list</I> <B>'}'</B></TD> +</TR> +<TR> + <TD ALIGN=RIGHT><I>stmt_list</I></TD> + <TD ALIGN=LEFT>:</TD> + <TD ALIGN=LEFT>[ <I>stmt</I> [ <B>';'</B> ] [ <I>stmt_list</I> ] ]</TD> +</TR> +<TR> + <TD ALIGN=RIGHT><I>stmt</I></TD> + <TD ALIGN=LEFT>:</TD> + <TD ALIGN=LEFT><I>node_stmt</I></TD> +</TR> +<TR> + <TD ALIGN=RIGHT></TD> + <TD ALIGN=LEFT>|</TD> + <TD ALIGN=LEFT><I>edge_stmt</I></TD> +</TR> +<TR> + <TD ALIGN=RIGHT></TD> + <TD ALIGN=LEFT>|</TD> + <TD ALIGN=LEFT><I>attr_stmt</I></TD> +</TR> +<TR> + <TD ALIGN=RIGHT></TD> + <TD ALIGN=LEFT>|</TD> + <TD ALIGN=LEFT><I>ID</I> <B>'='</B> <I>ID</I></TD> +</TR> +<TR> + <TD ALIGN=RIGHT></TD> + <TD ALIGN=LEFT>|</TD> + <TD ALIGN=LEFT><I>subgraph</I></TD> +</TR> +<TR> + <TD ALIGN=RIGHT><I>attr_stmt</I></TD> + <TD ALIGN=LEFT>:</TD> + <TD ALIGN=LEFT>(<B>graph</B> | <B>node</B> | <B>edge</B>) <I>attr_list</I></TD> +</TR> +<TR> + <TD ALIGN=RIGHT><I>attr_list</I></TD> + <TD ALIGN=LEFT>:</TD> + <TD ALIGN=LEFT><B>'['</B> [ <I>a_list</I> ] <B>']'</B> [ <I>attr_list</I> ]</TD> +</TR> +<TR> + <TD ALIGN=RIGHT><I>a_list</I></TD> + <TD ALIGN=LEFT>:</TD> + <TD ALIGN=LEFT><I>ID</I> [ <B>'='</B> <I>ID</I> ] [ <B>','</B> ] [ <I>a_list</I> ]</TD> +</TR> +<TR> + <TD ALIGN=RIGHT><I>edge_stmt</I></TD> + <TD ALIGN=LEFT>:</TD> + <TD ALIGN=LEFT>(<I>node_id</I> | <I>subgraph</I>) <I>edgeRHS</I> [ <I>attr_list</I> ]</TD> +</TR> +<TR> + <TD ALIGN=RIGHT><I>edgeRHS</I></TD> + <TD ALIGN=LEFT>:</TD> + <TD ALIGN=LEFT><I>edgeop</I> (<I>node_id</I> | <I>subgraph</I>) [ <I>edgeRHS</I> ]</TD> +</TR> +<TR> + <TD ALIGN=RIGHT><I>node_stmt</I></TD> + <TD ALIGN=LEFT>:</TD> + <TD ALIGN=LEFT><I>node_id</I> [ <I>attr_list</I> ]</TD> +</TR> +<TR> + <TD ALIGN=RIGHT><I>node_id</I></TD> + <TD ALIGN=LEFT>:</TD> + <TD ALIGN=LEFT><I>ID</I> [ <I>port</I> ]</TD> +</TR> +<TR> + <TD ALIGN=RIGHT><I>port</I></TD> + <TD ALIGN=LEFT>:</TD> + <TD ALIGN=LEFT><B>':'</B> <I>ID</I> [ <B>':'</B> <I>compass_pt</I> ]</TD> +</TR> +<TR> + <TD ALIGN=RIGHT></TD> + <TD ALIGN=LEFT>|</TD> + <TD ALIGN=LEFT><B>':'</B> <I>compass_pt</I></TD> +</TR> +<TR> + <TD ALIGN=RIGHT><I>subgraph</I></TD> + <TD ALIGN=LEFT>:</TD> + <TD ALIGN=LEFT>[ <B>subgraph</B> [ <I>ID</I> ] ] <B>'{'</B> <I>stmt_list</I> <B>'}'</B></TD> +</TR> +<TR> + <TD ALIGN=RIGHT><I>compass_pt</I></TD> + <TD ALIGN=LEFT>:</TD> + <TD ALIGN=LEFT>(<B>n</B> | <B>ne</B> | <B>e</B> | <B>se</B> | <B>s</B> | <B>sw</B> | <B>w</B> | <B>nw</B> | <B>c</B> | <B>_</B>)</TD> +</TR> +</TABLE> +<P> +The keywords <B>node</B>, <B>edge</B>, <B>graph</B>, <B>digraph</B>, +<B>subgraph</B>, and <B>strict</B> are case-independent. +Note also that the allowed compass point values are not keywords, so +these strings can be used elsewhere as ordinary identifiers and, conversely, +the parser will actually accept any identifier. +<P> +An <I>ID</I> is one of the following: +<MENU> +<LI> Any string of alphabetic (<TT>[a-zA-Z\200-\377]</TT>) characters, underscores (<TT>'_'</TT>) or +digits (<TT>[0-9]</TT>), not beginning with a digit; +<LI> a number [<tt>-</tt>]<sup>?</sup>(<tt>.</tt>[<tt>0</tt>-<tt>9</tt>]<sup>+</sup> | [<tt>0</tt>-<tt>9</tt>]<sup>+</sup>(<tt>.</tt>[<tt>0</tt>-<tt>9</tt>]<sup>*</sup>)<sup>?</sup> ); +<LI> any double-quoted string ("...") possibly containing escaped +quotes (\")<SUP>1</SUP>; +<LI> an <A NAME=html>HTML string</A> (<...>). +</MENU> +Note that in HTML strings, angle +brackets must occur in matched pairs, and unescaped newlines are allowed. +In addition, the content must be legal XML, so that the special XML +escape sequences for ", &, <, and > may be necessary +in order to embed these characters in attribute values or raw text. +<P> +Both quoted strings and HTML strings are scanned as a unit, so +any embedded comments will be treated as part of the strings. +<P> +An <I>edgeop</I> is <TT>-></TT> in directed graphs and <TT>--</TT> in +undirected graphs. +<P> +An <I>a_list</I> clause of the form <I>ID</I> is equivalent to +<I>ID</I><TT>=true</TT>. +<P> +The language supports C++-style comments: <TT>/* */</TT> and <TT>//</TT>. +In addition, a line beginning with a '#' character is considered a line +output from a C preprocessor (e.g., # 34 to indicate line 34 ) and discarded. +<P> +Semicolons aid readability but are not required except in the rare case +that a named subgraph with no body immediately preceeds an anonymous +subgraph, since the precedence rules cause this sequence to be parsed as +a subgraph with a heading and a body. +Also, any amount of whitespace may be inserted between terminals. +<P> +As another aid for readability, dot allows single logical lines to +span multiple physical lines using the standard C convention of a +backslash immediately preceding a newline character. In addition, +double-quoted strings can be concatenated using a '+' operator. +As HTML strings can contain newline characters, they do not support the +concatenation operator. +<H2>Semantic Notes</H2> +If a default attribute is +defined using a <B>node</B>, <B>edge</B>, or <B>graph</B> statement, +or by an attribute assignment not attached to a node or edge, any object of the +appropriate type defined afterwards will inherit this attribute value. +This holds until the default attribute is set to a new value, from which +point the new value is used. Objects defined before a default attribute +is set will have an empty string value attached to the attribute once +the default attribute definition is made. +<P> +Note, in particular, that a subgraph receives the attribute settings of +its parent graph at the time of its definition. This can be useful; for +example, one can assign a font to the root graph and all subgraphs will +also use the font. For some attributes, however, this property is +undesirable. If one attaches a label to the root graph, it is probably +not the desired effect to have the label used by all subgraphs. Rather +than listing the graph attribute at the top of the graph, and the +resetting the attribute as needed in the subgraphs, one can simple defer +the attribute definition if the graph until the appropriate subgraphs +have been defined. +<P> +If an edge belongs to a cluster, its endpoints belong to that cluster. +Thus, where you put an edge can effect a layout, as clusters are sometimes +laid out recursively. +<H2>Character encodings</H2> +The DOT language assumes at least the ascii character set. +Quoted strings, both ordinary and HTML-like, may contain non-ascii characters. +In most cases, these strings are uninterpreted: they simply serve as +unique identifiers or values passed through untouched. Labels, however, +are meant to be displayed, which requires that the software be able to +compute the size of the text and determine the appropriate glyphs. +For this, it needs to know what character encoding is used. +<P> +By default, DOT assumes the UTF-8 character encoding. It also accepts +the Latin1 (ISO-8859-1) character set, assuming the input graph uses +the <B><A HREF=attrs.html#a:charset>charset</A></B> attribute to +specify this. For graphs using other +character sets, there are usually programs, such as <TT>iconv</TT>, which +will translate from one character set to another. +<P> +Another way to avoid non-ascii characters in labels is to use HTML entities +for special characters. During label evaluation, these entities are +translated into the underlying character. This +<a HREF="http://www.graphviz.org/doc/char.html"> +table</a> shows the supported entities, with their Unicode value, a typical +glyph, and the HTML entity name. Thus, to include a lower-case Greek beta +into a string, one can use the ascii sequence <TT>&beta;</TT>. +In general, one should only use entities that are allowed in the output +character set, and for which there is a glyph in the font. +<HR> +<OL TYPE="1"> +<LI> In quoted strings in DOT, the only escaped character is double-quote +("). That is, in quoted strings, the dyad \" is converted to "; all other +characters are left unchanged. In particular, \\ remains \\. Layout +engines may apply additional escape sequences. +</OL> +</BODY> +</HTML>