Skip to content

Releases: teo-tsirpanis/Farkle

Version 6.0.0-alpha.3

25 Nov 21:24
Compare
Choose a tag to compare
Version 6.0.0-alpha.3 Pre-release
Pre-release
  • Breaking change: .NET Framework 4.5 is no longer supported. The library targets .NET Standard 2.0, .NET Standard 2.1 and .NET 5.
  • Breaking change: Logging parser events is no longer supported. The logging function was removed from the signatures of parser APIs.
  • Breaking change: The function LALRParser.parseLALR was renamed to LALRParser.parse.
  • Breaking change: The Farkle.Parser.OptimizedOperations type was made internal.
  • Breaking change: Transformers no longer take the position of a terminal, but an ITransformerContext type containing more information.
  • Breaking change: Farkle's exception types were refactored. They inherit from FarkleException.
  • Breaking change: Post-processor exceptions are wrapped inside a PostProcessorException and thrown to user code.
  • Breaking change: Only objects of type PrecompilableDesigntimeFarkle can be marked for precompilation.
  • Minor breaking change: The Transformers and Fusers properties were removed from the Farkle.Builder.GrammarDefinition type.
  • Farkle will now optimize precompilable designtime Farkles using dynamic code generation. This feature is only supported on .NET Standard 2.1 if the runtime supports dynamic code compilation.
  • An API for the CharStream type was published.
  • An API for getting precompiled grammars was published.
  • The tokenizer can be extended by user code. TODO: write documentation
  • The runtime Farkle's extension methods became regular methods.
  • Exceptions that might occur when a precompiled grammar fails to be loaded can be suppressed with an AppContext switch.

Version 6.0.0-alpha.2

22 Aug 22:27
Compare
Choose a tag to compare
Version 6.0.0-alpha.2 Pre-release
Pre-release
  • Farkle supports creating regexes from strings. See more in https://teo-tsirpanis.github.io/Farkle/string-regexes.html.
  • The parser, the builder and the EGT(neo) reader became faster once again.
  • The precompiler does not crash when used from .NET Standard libraries.
  • Breaking change: The CharStream API became internal. A new one will be published in the next release.

Version 6.0.0-alpha.1

13 Apr 10:55
Compare
Choose a tag to compare
Version 6.0.0-alpha.1 Pre-release
Pre-release
  • Breaking change: Removed the legacy API for creating runtime Farkles from EGT files (the API with the transformers and fusers). EGT files are still supported (for now), but users are strongly urged to rewrite their grammars using Farkle.Builder, or implement the PostProcessor interface themselves (not recommended).
  • Breaking change: The PostProcessor type was moved to the root Farkle namespace. Some reusable post-processors were moved to the new Farkle.PostProcessors module.
  • Farkle can now build grammars at compile-time. See more in https://teo-tsirpanis.github.io/Farkle/the-precompiler.html.
  • Added a function to rename designtime Farkles; it might be useful for better diagnostic messages.

Version 5.4.1

23 Mar 11:47
Compare
Choose a tag to compare
  • Refactor some designtime Farkle functions (like many1) to use less nonterminals.
  • Add functions and regexes to create terminals for unsigned real numbers.

Version 5.4.0

20 Mar 11:26
Compare
Choose a tag to compare
  • You can now add lexical groups in a grammar. They resemble GOLD Parser's feature, but always advance by character and do not not support nesting.
  • Add a couple of methods in runtime Farkles to easily check whether building it had succeeded.
  • Lexical errors are reported at the point they occur; not at the point of the first character read by the tokenizer.
  • Made the untyped builder API easier to access. See the deprecation notice for the new functions to use.
  • Minor breaking change: The CharStream.readChar value gets the character index by value, not by reference. Callers have to increment it accordingly to get further characters.
  • Minor breaking change: The type Farkle.Grammar.OptimizedOperations was moved to the Farkle.Parser namespace; it was there for historical reasons.
  • As you might have seen, breaking changes on public members that do not affect the average Farkle user will not warrant a major version increase.

Version 5.3.0

23 Feb 10:13
Compare
Choose a tag to compare
  • Farkle's speed more than doubled by disabling tailcall optimizations.
  • Minor breaking change: The API of the CharStream type slightly changed. Most notably, the type CharStreamIndex was removed in favor of uint64, and the order of the last two arguments in the function CharStream.read has changed.

Version 5.2.0

09 Feb 09:36
Compare
Choose a tag to compare
  • The types DesigntimeFarkle<TResult> and PostProcessor<TResult> are covariant. The change was made possible by Covarsky, a tool written for this purpose.
  • Added a function called Regex.allButChars (Regex.NotOneOf for C#) that creates regexes accepting all characters except certain ones.
  • User code exceptions during post-processing are not captured anymore.
  • Farkle.Tools.MSBuild works with all .NET Core SDK versions after 2.0.

Version 5.1.0

30 Jan 23:01
Compare
Choose a tag to compare
  • It happened. Farkle can create grammars without the need of GOLD Parser. Farkle is now a parsing library on its own.
  • Move the CharStream type in the Farkle.IO namespace.
  • Add methods to parse text from .NET TextReaders. They should be preferred over parsing .NET Streams because the latter are supposed to contain binary data, not text.
  • The Farkle.CSharp namespace is no longer required. C# users just have to use Farkle to get their extension methods, unless they are writing their own post-processors for GOLD Parser grammars, where they have to use Farkle.PostProcessor.CSharp.
  • Breaking change: Farkle.Tools.MSBuild was upgraded to .NET Core 3.1. Nothing significant changed though, which means those who still use .NET Core 2.1 can stay in a previous version.
  • Breaking change: Reading grammars from EGT files now raises an exception. Rationale
  • Breaking change: Some utility functions that had nothing to do with parsing were either removed or made internal.
  • Breaking change: Internal errors of the parser (in the unfortunate case they happen) throw an exception. In the next release, exceptions in a transformer or fuser will not be caught either.

Version 5.0.1

20 Aug 21:36
Compare
Choose a tag to compare
  • Fix a bug where comments in input text would sometimes crash the parser.
  • Allow line comments in the last line of the input text.

Version 4.0.2

20 Aug 21:26
Compare
Choose a tag to compare
  • Fix a bug where comments in input text would sometimes crash the parser.