Skip to content

sebaFlame/CNFDotnet

Repository files navigation

CNFDotnet

Testing out different parser implementations

Rationale

I've created this project to learn different parser implementations. It's a C# translation based on the code of grammophone by @mdaines.

Tooling

The first tool is grammophone itself, to veriy my translation. This is also the first project I developed completely using ViM on WSL1.

Mandatory vim plugins are OmniSharp-vim and Sharpen Up. OmniSharp-vim relies on OmniSharp-Roslyn for C# support. Sharpen Up - among other things - adds default mappings to OmniSharp-vim.

Optionally you can get the debugger Vimspector. It has .NET (core) support out of the box using netcoredbg.

After some initial issues with the debugger (puremourning/vimspector#448), it was a tolerable experience, but I had to figth ViM many times. It's fast, but can not compare to a fully fledged IDE.

Usage

This library is solely made to run the tests. The tests validate different types of grammars. As of now: LL(1), LR(0), SLR(1), LR(1) and LALR(1).

The code in Parsing is well documented and should explain every single step in the grammar validation and parsing process.