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

Make TQLv2 executable #4239

Merged
merged 80 commits into from
Jul 2, 2024
Merged

Make TQLv2 executable #4239

merged 80 commits into from
Jul 2, 2024

Conversation

jachris
Copy link
Contributor

@jachris jachris commented May 22, 2024

Following up on #3991, this PR adds everything that is needed to execute TQLv2. All features are gated behind --tql2, thus no changelog is necessary.

It contains the following new functionality:

  • Name resolution and binding of operators, functions and methods.
  • A prototype of let binding substitution.
  • Compilation of ast::pipeline objects to pipeline.
  • A small collection of loaders, parsers, printers and savers.
  • A base library of 25 operators, 16 functions and 6 methods.
  • A basic implementation of fork { ... } and if { ... } else { ... }.
  • A revamped summarize operator with implicit grouping.
  • An evaluator for actual expressions, making TQLv2 much more powerful than TQLv1.
  • Various utilities to implement all the above.

This PR does not yet include the integration for the web app, documentation or an actual test suite.

@jachris jachris added the feature New functionality label May 22, 2024
@jachris jachris force-pushed the topic/tql2-execution branch 4 times, most recently from 5392c38 to e04859b Compare May 22, 2024 13:30
@jachris jachris marked this pull request as ready for review June 28, 2024 14:44
The previous implementation did not return `signed` for `signed - unsigned` or
multiplications that involve `signed`. Furthermore, it seems to have bug in the
definition of `subtract`. Since I did not find a library that does what we want,
I ultimately decided to implement this myself. Hopefully it doesn't contain too
many bugs. In any case, this can be improved later.
@jachris jachris merged commit 22f5e02 into main Jul 2, 2024
65 checks passed
@jachris jachris deleted the topic/tql2-execution branch July 2, 2024 10:44
dominiklohmann added a commit that referenced this pull request Jul 2, 2024
Just a refactoring, not a functional change. Idea shamelessly stolen
from #4239 (comment).
dominiklohmann added a commit that referenced this pull request Jul 2, 2024
Just a refactoring, not a functional change. Idea shamelessly stolen
from #4239 (comment).
dominiklohmann added a commit that referenced this pull request Jul 2, 2024
Just a refactoring, not a functional change. Idea shamelessly stolen
from #4239 (comment).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New functionality
Projects
None yet
4 participants