Pidgin Versions Save

A lightweight and fast parsing library for C#.

v3.2.3

2 months ago

Fixed

  • Overloads for parsing from ITokenStreams and ParseStates have been made public as originally intended. Thanks @katherinefluxinc!

v3.2.2

10 months ago

Added

  • Support for AOT/trimming deployment scenarios.

v3.2.1

1 year ago

Fixed

  • A critical bug in Try() which had been broken in 3.2.0.
    • Thanks to @PJB3005 for reporting this bug in #140

Added

  • Support for Source Link

v3.2.0

1 year ago

Added

  • Four new combinators: ManyThen, AtLeastOnceThen, SkipManyThen, and SkipAtLeastOnceThen
    • These are versions of Until, AtLeastOnceUntil, SkipUntil, and SkipAtLeastOnceUntil which return the terminator.
    • Thanks to @chyyran and @atrauzzi, who asked for this in #121

Changed

  • Improved documentation for ExpressionParser, now including an example.
    • Thanks to @hswami, who asked for this in #113
  • Removed some Nuget dependencies which are no longer required (since they are part of .NET 5).

v3.1.0

2 years ago

Added

  • A pair of parsers for enum values, Enum and CIEnum. Thanks @RomanSoloweow!

v3.0.0

2 years ago

Removed

  • Removed support for .NET 4 and .NET Core 3.1. Pidgin is now a .NET 5 library.

Added

  • Published the (previously internal) TokenStream API. You can now write parsers which consume custom input streams.
  • Support for resumable parsing, through the ResumableTokenStream class.
  • An experimental API for writing your own parsers by subclassing Parser.

Changed

  • Parser.Real is now a property and not a method.
  • A new design for computing source positions. posCalculator now returns a SourcePosDelta struct representing the amount of text covered by a token, rather than updating the current source position in place.
    • Performance improvements in the code which computes source positions.
  • The Parse methods in ParseExtensions now take an IConfiguration object as an optional parameter (instead of a posCalculator func).
    • If you were using posCalculator, you can instead subclass DefaultConfiguration and override the PosCalculator property.
  • Performance improvements across the board thanks to a new Span-based implementation.
  • Performance improvements in SkipWhitespaces.
  • A new CI build system based on GitHub Actions.