GoldDot and GSS
GSS allows for customization of the resulting DOT files produced by GoldDot.Module Properties
When GoldDot creates a module it then calls doGss() on that module. This automatically pulls the property values from the GSS file and propagates the GSS parser into on that module. This automatically pulls the property values from the GSS file and propagates the GSS parser into that module (via its GssParser property).
See Gss Reflection for more information.
The rest are not reflected and instead are pulled directly from the GssParser. They are then passed, without much parsing, directly to the output for DOT to handle.
Graph and Node nodes
Dot allows properties to be assigned to graph and node nodes. GoldDot places these into the header of DOT file if it finds anything in the following (graph-specific) paths:
- WorldMaker.Util.GoldDot.ParseTree.#Graph
- WorldMaker.Util.GoldDot.ParseTree.#Node
- WorldMaker.Util.GoldDot.DfaGraph.#Graph
- WorldMaker.Util.GoldDot.DfaGraph.#Node
- WorldMaker.Util.GoldDot.LalrGraph.#Graph
- WorldMaker.Util.GoldDot.LalrGraph.#Node
Grammar Rules and Symbols
Both Grammar Rules and Symbols are shared across graphs (ParseTree and LalrGraph, ParseTree and DfaGraph, respectively). Paths:
- Rules.Rule#.ParseTree
- Rules.Rule#.LalrGraph
- Symbols.Symbol#.ParseTree
- Symbols.Symbol#.DfaGraph
The # corresponds to the Table Index of the Rule or Symbol you wish to style. The GoldDot GSS Skeleton Template can be used to produce a full list of Rules and Symbols with appropriate comments.
Graph Specifics
- ParseTree.Nodes.rule#
- ParseTree.Nodes.symbol#
- DfaGraph.States.state#
- DfaGraph.Edges.edge#
- DfaGraph.Nodes.symbol#
- LalrGraph.Gotos.goto#
- LalrGraph.Reduces.reduce#
- LalrGraph.Shifts.shift#
- LalrGraph.Accept.Edge
- LalrGraph.Accept.State
- LalrGraph.Nodes.rule#
Here # denotes local designations (basically "encounter" numbers). Many can be found from the names used in the resulting file. Some may have to be counted. This allows for micromanagement of the styles, but is probably beyond most usage.