Skip to content

Releases: teo-tsirpanis/Farkle

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.

Version 5.0.0

13 Aug 20:48
Compare
Choose a tag to compare
  • Fix a bug where the tokenizer would erroneously report an EOF instead of a lexical error. - #8
  • Add CharStream.TryLoadFirstCharacter. With this method, you can check whether the input of a character stream has ended, and safely access CharStream.FirstCharacter.
  • Bring back Grammar.StartSymbol, but implement it correctly this time.
  • Write more tests and documentation.