DotLang: DOT Language Library for .NET
DotLang provides a full fidelity lexer, recursive descent parser, and
abstract syntax tree for the Graphviz DOT Language,
written in modern C# 8.0. It is available as a netstandard2.0
library.
Resources
Goals
The primary goal of this project is to ultimately provide a language service for Visual Studio that provides rich syntactic and semantic analysis of Graphviz DOT files: syntax highlighting, semantic completion, and Quick Info tooltips.
To support this goal, the lexer and parser are written with inspiration
from Roslyn: nothing is ever discarded, and the produced AST
can be run through a SyntaxVisitor
to produce output DOT source code
that is identical to its input.
Anti-Goals
Notably, DotLang does not aspire to actually render Graphviz graphs. There are plenty of tools for this already.
Contribute
DotLang is a .NET Standard 2.0 project and can be built with the latest stable Visual Studio, Visual Studio for Mac, or the .NET Core toolchain.
Common commands to run when developing:
dotnet build
dotnet test
dotnet pack
dotnet msbuild /t:UpdateDocs
TODO
- Actual diagnostics
- Currently the parser just throws/bails
- Language service
- Would be awesome to leverage XML/HTML projection buffers for
XmlLiteralToken
- Would be awesome to leverage XML/HTML projection buffers for