autumn
rekex
Our great sponsors
autumn | rekex | |
---|---|---|
3 | 16 | |
119 | 53 | |
- | - | |
0.0 | 0.0 | |
over 2 years ago | over 2 years ago | |
Java | Java | |
BSD 3-clause "New" or "Revised" License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
autumn
- Autumn: A Java parser combinator library written with an unmatched feature set
-
Principled Procedural Parsing (2019) [pdf]
>Autumn is a parser combinator framework written in Java that can be seen as an extensible superset of PEG. Autumn’s set of built-in parsers can be extended by the user2 using arbitrary Java code.
The user manual is here: https://github.com/norswap/autumn/blob/master/doc/README.md
rekex
-
Java 17 Features: Pattern Matching for switch and Sealed Classes
My thoughts on these 3 kinds of datatypes - https://github.com/zhong-j-yu/rekex/blob/main/doc/Datatypes_Abstract_OOP_Algebraic.md
-
A new parser generator for Java 17, with grammar as algebraic datatypes
You don't need a separate grammar file. The set of datatypes defines the grammar. Take a look at the calculator exmample, the datatype Exp0 defines a grammar rule: Exp0 is one or more Exp1 separated by "+" or "-".
- The simplest way to write a parser
- Show HN: The Simplest Parser Generator
- Datatypes – Abstract, OOP, Algebraic
-
[Discussion] To use var or explicit typing
I also found it more pleasing to use var in a method with lots of local variables of a common type, see this example
-
A better way to construct regex
The parent project, https://github.com/zhong-j-yu/rekex , is a parser generator that mirrors grammar rules with datatypes. Since recursive types are not a problem, we don't have have a problem with recursive grammar rules.
- Show HN: Rekex – parser generator that derives grammar from parse tree datatypes
-
RegExp - structured regular expression
Here's how URI regex looks like using the API: https://github.com/zhong-j-yu/rekex/blob/main/rekex-example/src/main/java/org/rekex/exmple/regexp/ExampleRegExp_Uri.java
What are some alternatives?
dart-petitparser - Dynamic parser combinators in Dart.
RRDiagram - Generate railroad diagrams from code or BNF, generate BNF from code
participle - A parser library for Go
parboiled - Elegant parsing in Java and Scala - lightweight, easy-to-use, powerful.
parser_builder - Lightweight template-based parser build system. Simple prototyping. Comfortable debugging. Effective developing.
Calculator
arborist - Arborist is a PEG parser that supports left-associative left recursion
autumn - Functional parser for the Rust programming language
pyparsing - Python library for creating PEG parsers [Moved to: https://github.com/pyparsing/pyparsing]
Covfefe - A parser for nondeterministic context free languages