/idris2-dot-parse

A lexer+parser library for the DOT language (graphviz) written in Idris2.

Primary LanguageIdrisBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

idris2-dot-parse

An Idris2 lexer and parser for the DOT language.

Last tested using Idris2-v0.6.0 commit c64c6a43a.

TODO-list

  • Lexer
    • whitespace (filtered)
    • comments (filtered)
    • symbols (brackets, braces, separators, and equals)
    • keywords
    • compass points
    • identifiers (ish)
      • names
      • numerals
      • double-quoted strings
      • HTML-strings (HTML-parsing is probably a library/package on its own)
    • operators
      • edgeops (graph+digraph)
      • multilines
      • string concatenation
  • Parser + AST (these are linked; AST-types get implemented as parser grows)
    • terminals
      • symbols
      • keywords
      • compass points
      • types of identifier
      • edge operators ('--' and '->')
      • (the other terminals?...)
    • identifiers
    • assignment (ID '=' ID)
    • handle multiline strings
    • handle string concatenation
    • attributes
      • a_list
      • attr_list
      • attr_stmt
    • ports
    • nodes
      • node_id
      • node_stmt
    • edges
      • edgeop
      • edgeRHS
      • edge_stmt
    • subgraphs
    • statements (stmt)
    • list of statements (stmt_list)
    • graphs, the thing at the top of it all
  • Semantic analysis
  • Idris DOT representation/reasoning
    • datatypes for constructing DOT graphs mostly correctly
    • utility functions (e.g. addEdge and similar)
    • provable properties about the DOT graphs
    • correct-by-construction DOT graphs
  • ... the rest of this todo-list ...

LICENSE

This work is licensed under the BSD-3-Clause license.