Skip to content

abock/dotlang

Repository files navigation

DotLang: DOT Language Library for .NET

.NET Core NuGet Badge License

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

Releases

No releases published

Packages

No packages published

Languages