An Idris2 lexer and parser for the DOT language.
Last tested using Idris2-v0.6.0 commit c64c6a43a.
- 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
- terminals
- 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 ...
This work is licensed under the BSD-3-Clause license.