Skip to content

Inconsistent location of edge attributes #2

@PlanetEarthSoftware

Description

@PlanetEarthSoftware

Thanks for this library, beats auduchinok/DotParser which has many missing feature bugs; the only other .net GraphVis dot file parser that does not rely on compiled GraphVis C binaries in a .dll.

In some cases the Attributes are located in NodeStatements inside EdgeStatementSyntax rather than in the EdgeStatementSyntax itself.

 A -> B [label=mobile]
    EdgeStatementSynax
      Right=NodeStatementSyntax A
      Left=NodeStatementSyntax B [label=mobile]

 A -> {B, C} [label=mobile]
    EdgeStatementSynax [label=mobile]
      Right=NodeStatementSyntax A
      Left=SubgraphStatementSyntax
        [0] NodeStatementSyntax B
        [1] NodeStatementSyntax ,
        [2] NodeStatementSyntax C

A -> B -> C [label=mobile]
    EdgeStatementSynax
      Right=NodeStatementSyntax A
      Left=EdgeStatementSyntax
        Left=NodeStatementSyntax B
        Right=NodeStatementSyntax C [label=mobile]

 A -> {B, C} -> D [label=mobile]
    EdgeStatementSynax
      Right=NodeStatementSyntax A
      Left=EdgeStatementSyntax
        Left=SubgraphStatementSyntax
          [0] NodeStatementSyntax B
          [1] NodeStatementSyntax ,
          [2] NodeStatementSyntax C
        Right=NodeStatementSyntax D [label=mobile]

graphs.zip

FYI the attributes apply to all edges in the list of edges in the statement.
digraph { A -> B -> C [label=mobile] } is
edge A - B - C with label dot

It would ideal if the Attributes were set in the top level EdgeStatementSyntax or even copied to each EdgeStatementSyntax.

I am very busy so can not fork and fix this myself. If I have time I shall augment the README.md with a basic introduction, I had to look in the tests to get started with SyntaxTree tree = new Parser(str).Parse();.

You could add a mention to this project on https://graphviz.org/resources It may be a page under https://gitlab.com/graphviz/graphviz .

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions