Farkle is a text parser library for .NET, featuring the best of both worlds: LALR parser combinators. Users define the terminals and nonterminals of their grammars, what to do when each of them is encountered, and Farkle takes care of the rest.
The Farkle library can be installed from NuGet:
dotnet add package Farkle
Learn more about Farkle's features, compared with other .NET parsers.
The library comes with comprehensible documentation.
Quick Start: Creating a calculator to get started with writing a simple calculator in F#.
Using Farkle with C# to learn what changes when using Farkle in a C# project.
API Reference contains automatically generated documentation for all types, modules and functions in the library.
A JSON parser powered by Farkle and written in both C# and F#.
A mathematical expression parser powered by Farkle and written in F#, also showcasing some more advanced features.
I used Farkle to write a linear programming problem parser for a university assignment. The code is extensively commented in Greek.
A simple indent-based language parser that supports virtual terminals written in F#. The most advanced example; it explains how to write a custom tokenizer.
The project is hosted on GitHub where you can report issues, fork the project and submit pull requests.
The library is available under the MIT license, which allows modification and redistribution for both commercial and non-commercial purposes. For more information see the License file in the GitHub repository.