Atomize 1.1.0

dotnet add package Atomize --version 1.1.0
NuGet\Install-Package Atomize -Version 1.1.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Atomize" Version="1.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Atomize --version 1.1.0
#r "nuget: Atomize, 1.1.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Atomize as a Cake Addin
#addin nuget:?package=Atomize&version=1.1.0

// Install Atomize as a Cake Tool
#tool nuget:?package=Atomize&version=1.1.0

Atomize/__Quickstart__

alternate text is missing from this package README image alternate text is missing from this package README image

Atomize is a combinatory parser building library supporting the standard PEG operators, as well as:

  • Positive and negative look-behind
  • Directly and indirectly left recursive parsers

Installation

Atomize can be installed via NuGet or

dotnet add package Atomize

Documentation

User Guide
References

Example: BasicCalculator

Implementing a parser based on the following grammar:

Additive
: Additive /[+-]/ Multiplicative
| Multiplicative;

Multiplicative
: Multiplicative /[*\/]/ Atomic
| Atomic;

Atomic
: NUMBER
| '(' Additive ')';
using static Atomize.Parse;

public static class BasicCalculator
{
   private static readonly Parser<double> Atomic = 
      Choice(
         from n in Text.Number 
         select double.Parse(n.Span),

         Island(Atom('('), Ref(() => Additive!), Atom(')'))
      );

   private static readonly Parser<double> Multiplicative = 
      DirectLeftRecursion(
         Choice(
            from left in Ref(() => Multiplicative!)
            from op in Choice(Atom('*'), Atom('/')),
            from right in Atomic
            select op == '*'
               ? left * double.Parse(right.Span)
               : left / double.Parse(right.Span),
            
            Atomic
         )
      );    
   
   private static readonly Parser<double> Additive =
      DirectLeftRecursion(
         Choice(
            from left in Ref(() => Additive!)
            from op in Choice(Atom('+'), Atom('-')),
            from right in Multiplicative
            select op == '+'
               ? left + double.Parse(right.Span)
               : left - double.Parse(right.Span),
            
            Multiplicative)); 

   public static IParseResult<double> Apply(TextScanner expr) => 
      Additive(expr);
}
Product Compatible and additional computed target framework versions.
.NET net7.0 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Atomize:

Package Downloads
AtoMac

A combination of the `Atomize` and `Mackerel` libraries.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.0 134 10/4/2023