Warpstone 2.0.0-preview1
dotnet add package Warpstone --version 2.0.0-preview1
NuGet\Install-Package Warpstone -Version 2.0.0-preview1
<PackageReference Include="Warpstone" Version="2.0.0-preview1" />
paket add Warpstone --version 2.0.0-preview1
#r "nuget: Warpstone, 2.0.0-preview1"
// Install Warpstone as a Cake Addin #addin nuget:?package=Warpstone&version=2.0.0-preview1&prerelease // Install Warpstone as a Cake Tool #tool nuget:?package=Warpstone&version=2.0.0-preview1&prerelease
<img src="https://raw.githubusercontent.com/CptWesley/Warpstone/master/logo_1024x1024.png" width="178" height="178">
Warpstone
Parser combinator forged deep within Ikit's forges in the Under-City from a shard of Morrslieb itself.
What is it?
Warpstone is a parser combinator library written in C# targetting .NET Standard 2.0, meaning that it can be used by any application running either .NET Framework >= 4.6.1, .NET Core >= 2.0 or Mono >= 5.4. The main focus of the library is to provide a powerful lightweight parser combinator framework for developers to create their own parsers with.
Why did you make it?
After following a course on compiler construction I was intrigued and wanted a way of parsing languages within code without requiring external tools to generate a parser for me first. During my quest I stumbled upon the concept of parser combinators and started looking for existing libraries for .NET. I soon stumbled upon Pidgin. After toying around with the library for a bit I felt dissatisfied with some of its syntax and I still felt like I didn't fully understand the concepts it was using behind the scenes. This led me to create my own parser combinator library, with syntax inspired by Pidgin.
Why the name? (Or: What are all those strange words in the description?!?!?)
Coming up with names is difficult, I wanted to get the project started and at the time I was consumed by the Warhammer Fantasy universe.
Downloads
Usage
It's useful to take a look at one of the available example projects for JSON parsing and expression parsing.
To start off, one first needs to add (one of) the following imports:
using Warpstone;
using static Warpstone.Parsers.BasicParsers;
using static Warpstone.Parsers.CommonParsers;
using static Warpstone.Parsers.ExpressionParsers;
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- System.Collections.Immutable (>= 5.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.0.0-preview1 | 131 | 11/30/2023 |
1.1.0-preview5 | 167 | 8/2/2022 |
1.1.0-preview4 | 268 | 7/11/2021 |
1.1.0-preview3 | 265 | 7/11/2021 |
1.1.0-preview2 | 248 | 7/9/2021 |
1.1.0-preview1 | 249 | 7/9/2021 |
1.0.8.2-preview2 | 257 | 6/29/2021 |
1.0.8.2-alpha | 293 | 6/18/2021 |
1.0.8.1 | 365 | 5/25/2021 |
1.0.8 | 348 | 5/25/2021 |
1.0.7.1 | 452 | 11/26/2020 |
1.0.7 | 400 | 11/24/2020 |
1.0.6.1 | 451 | 10/17/2020 |
1.0.6 | 386 | 10/17/2020 |
1.0.5 | 395 | 10/16/2020 |
1.0.4 | 419 | 9/12/2020 |
1.0.3.3 | 416 | 9/12/2020 |
1.0.3.2 | 441 | 9/12/2020 |
1.0.3.1 | 447 | 9/12/2020 |
1.0.3 | 471 | 9/12/2020 |
1.0.2 | 513 | 5/2/2020 |
1.0.1 | 485 | 4/4/2020 |
1.0.0 | 492 | 4/4/2020 |
### v2.0.0
- Reworked library from scratch.
- Changed to Packrat parsing.
- Added support for left-recursion.