Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Formal grammar for EQL #2178

Closed
homedirectory opened this issue Feb 7, 2024 · 0 comments
Closed

Formal grammar for EQL #2178

homedirectory opened this issue Feb 7, 2024 · 0 comments
Assignees
Labels
EQL Major Indicates a major versioning impact. P3 - normal Technology upgrade
Milestone

Comments

@homedirectory
Copy link
Contributor

homedirectory commented Feb 7, 2024

Description

It is proposed to describe a formal grammar for EQL to gain the following benefits:

  • Facilitation of informal reasoning during development of the parser. As of now the only reference point is the fluent API itself, which is difficult to view as the grammar's representation since it is, in fact, its product.
  • A better understanding of the state of EQL's fluent API can be gained by reverse engineering it into a formal grammar.

The Extended Backus-Naur form (EBNF) is a suitable notation candidate.

Fling is a fluent API generator that provides means of expressing a grammar in EBNF using Java. Fling can be used to write down the grammar of EQL. The resulting grammar will be represented as a Java object, meaning that it can be transformed into arbitraty other formats if necessary.

Expected outcome

A formal grammar for EQL expressed in a suitable notation.

@homedirectory homedirectory self-assigned this Feb 7, 2024
homedirectory added a commit that referenced this issue Feb 15, 2024
A canonical representation serves as a reference, thus it is written in
a human-readable form.
homedirectory added a commit that referenced this issue Feb 15, 2024
This also includes complex ones, such as caseWhen.
homedirectory added a commit that referenced this issue Feb 15, 2024
homedirectory added a commit that referenced this issue Feb 15, 2024
homedirectory added a commit that referenced this issue Feb 15, 2024
homedirectory added a commit that referenced this issue Feb 15, 2024
homedirectory added a commit that referenced this issue Feb 15, 2024
homedirectory added a commit that referenced this issue Feb 15, 2024
homedirectory added a commit that referenced this issue Feb 15, 2024
homedirectory added a commit that referenced this issue Feb 16, 2024
homedirectory added a commit that referenced this issue Mar 4, 2024
…yield operands

This allows the body of expressions to use yield operands, not just
single operands.
@01es 01es added this to the 2.0.0 milestone Jul 18, 2024
@01es 01es added the Major Indicates a major versioning impact. label Aug 7, 2024
homedirectory added a commit that referenced this issue Aug 8, 2024
homedirectory added a commit that referenced this issue Aug 8, 2024
homedirectory added a commit that referenced this issue Aug 8, 2024
homedirectory added a commit that referenced this issue Aug 8, 2024
… grammar

Can't apply the same label to elements of different types.
homedirectory added a commit that referenced this issue Aug 8, 2024
This will make it easier to compose transformations.
homedirectory added a commit that referenced this issue Aug 8, 2024
homedirectory added a commit that referenced this issue Aug 8, 2024
1. Hide constructors of Sequence and use efficient static methods.
2. Modify the structure of Alternation to use a list of Term instead of
   a list of Sequence.
homedirectory added a commit that referenced this issue Aug 9, 2024
Generalise the concept of metadata, which can be applied to any part of
BNF, not limited to terms.
homedirectory added a commit that referenced this issue Aug 9, 2024
@01es 01es removed the pull request label Aug 15, 2024
@01es 01es closed this as completed Aug 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
EQL Major Indicates a major versioning impact. P3 - normal Technology upgrade
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants