LeMP 30.1.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package LeMP --version 30.1.1                
NuGet\Install-Package LeMP -Version 30.1.1                
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="LeMP" Version="30.1.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add LeMP --version 30.1.1                
#r "nuget: LeMP, 30.1.1"                
#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 LeMP as a Cake Addin
#addin nuget:?package=LeMP&version=30.1.1

// Install LeMP as a Cake Tool
#tool nuget:?package=LeMP&version=30.1.1                


The ecsharp repository holds several tools for enhancing .NET and C# development:

  • The Loyc .NET Core libraries, a set of libraries whose theme is "stuff that should be built into the .NET framework, but isn't." These libraries have their own repository and home page, and the Loyc .NET Core repository is the Core/ folder in this repository. One of these libraries (Loyc.Syntax) supports universal syntax trees, LES2 and LES3.

  • Enhanced C# (or EC#) is a liberalization and regularization of the C# language. You can think of EC# as a C# preprocessor, since only the "front end" part of the project is done. The preprocessor consists of three mostly-independent parts,

    1. The Enhanced C# parser
    2. LeMP, the Lexical Macro Processor
    3. LeMP Standard Macros
  • LLLPG, the Loyc LL(k) Parser Generator, which is used to generate code from the grammars of Enhanced C#, LES, and LLLPG itself.

These projects are the first products of the Loyc (Language of Your Choice) initiative.


If you just want the core libraries, you can find them in NuGet. Otherwise, see

How to build

Open Loyc.netfx.sln in Visual Studio (or Loyc.netstd.sln for the .NET Standard edition), set the build configuration to Debug, and build it!

If you need to change any .ecs or .les source files (Enhanced C# or LES), you'll need to install the latest LeMP extension for Visual Studio, which can be found on the Releases page. There is no build step for these files, so the extension is not required for building. Unfortunately VS Code is not supported at this time - let me know if you need support.

If Visual Studio complains about OxyPlot, the easiest fix is to unload the LoycCore.Benchmarks project (nothing depends on it). To fix it properly, open Core\Loyc.netstd.sln, right-click the solution, choose "Restore NuGet packages", build the solution (just to make sure it worked), and then return to the original solution.

Visual Studio may complain, while building a .NET Framework 4.7.2 project, that 'Your project does not reference ".NETFramework,Version=v4.7.2" framework...." if you built the .NET Standard version of the same project earlier. To fix this, locate the folder named obj inside the project from which the error message originated, delete the entire obj folder, and rebuild (the project.assets.json file inside that folder seems to be causing the error).

How to publish new versions

This is more of a note-to-self than anything. Pull-requestors can ignore it.

  1. Rebuild all (Release configuration in Loyc.all.sln) and run tests (Tests.exe)
  2. Update version in Core/AssemblyVersion.cs
  3. Update appveyor.yml at version: (first line)
  4. Update appveyor.yml at - set SEMVER=
  5. (Tentative) If the VS extension is to be released, update the version number in Visual Studio Integration\LoycForVS2017\source.extension.vsixmanifest
  6. If a GitHub release is to be created, uninstall the LeMP VS extension and rebuild it with UpdateLibLeMPAndReinstall.bat. Manually check that it still works.
  7. Commit changes
  8. Push changes and check whether the build succeeded on AppVeyor.
  9. On success, create an (unannotated) git tag like v31.1.0 locally: git tag v31.1.0.
  10. Push the tag to make Appveyor publish NuGet packages: git push origin v31.1.0.
  11. Every so often, create a release on GitHub.com. Prepare a zip file from the built binaries and include Lib\LeMP\LeMP_VisualStudio.vsix separately as part of the release.
  12. Update version-history.md on ecsharp.net and core.loyc.net, and update documentation by running doc/Doxygen.bat in the gh-pages branch.
  13. If applicable, release a new version of the extension on the Visual Studio Marketplace
Product 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 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (4)

Showing the top 4 NuGet packages that depend on LeMP:

Package Downloads

LLLPG is a recursive-decent parser generator for C#, with Visual Studio integration and a feature set better than ANTLR version 2. This package contains the core LLLPG executable, which can be run from the command-line. Visual Studio users should typically download a release of LeMP from https://github.com/qwertie/ecsharp/releases instead of using this package.


A library for writing custom Backlang plugins


Package Description


The Backlang Compiler Chain

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
30.1.2 104 6/30/2024
30.1.1 120 4/29/2024
30.1.0 3,634 6/16/2022
29.0.3 1,013 1/13/2021
29.0.2 557 1/12/2021
29.0.1 530 1/12/2021
29.0.0 635 12/25/2020
28.4.0 606 11/30/2020
28.3.0 631 11/16/2020
28.2.0 653 7/24/2020
28.1.0 645 7/6/2020
28.0.0 688 7/4/2020
27.2.1 710 5/12/2020
27.2.0 780 4/5/2020
27.1.5 693 3/30/2020
27.1.4 721 3/30/2020
27.1.3 690 3/30/2020
27.0.4 732 3/10/2020
27.0.2 712 2/18/2020
26.8.5 776 1/15/2020
26.8.1 1,009 5/13/2019
26.8.0 783 5/12/2019
26.6.0 823 3/17/2019
26.5.0 1,184 2/17/2019
26.4.0 1,301 9/29/2018
26.2.0 1,213 1/24/2018
24.3.0 2,359 1/10/2017