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

hocc code generation #246

Merged
merged 10 commits into from
Aug 25, 2024
Merged

hocc code generation #246

merged 10 commits into from
Aug 25, 2024

Conversation

jasone
Copy link
Contributor

@jasone jasone commented Jul 18, 2024

The original source directive documentation used an implausible parser generator example to demonstrate nuances that are irrelevant to e.g. hocc code generation. Add a practical hocc-based example, and replace the original contrived example with another that focuses on the edge case nuances.

@jasone jasone self-assigned this Jul 18, 2024
@jasone jasone changed the title Revamp source directive documentation hocc code generation Jul 18, 2024
@jasone jasone force-pushed the codegen branch 4 times, most recently from 94cdf7b to fd6fd16 Compare August 8, 2024 18:56
@jasone jasone force-pushed the codegen branch 5 times, most recently from 06a77fb to e877ac0 Compare August 18, 2024 00:11
@jasone jasone force-pushed the codegen branch 4 times, most recently from bdcacb0 to 731297a Compare August 25, 2024 18:26
@jasone jasone marked this pull request as ready for review August 25, 2024 18:38
Jason Evans added 10 commits August 25, 2024 11:59
The original source directive documentation used an implausible parser generator
example to demonstrate nuances that are irrelevant to e.g. `hocc` code
generation. Add a practical `hocc`-based example, and replace the original
contrived example with another that focuses on the edge case nuances.
A cursor computation double-counted characters preceding the beginning of the
slice being searched. Remove the double counting and add a test on non-maximal
slices.
This is the last version based on the hand-written recursive descent parser.
Replace the hand-written recursive descent hocc parser with a hocc-generated
parser. The parsers have equivalent behavior with the inconsequential exception
of how leading/trailing comments are associated with reduction callback code and
the postlude.
This data structure simplification removes unnecessary complexity dating to
before the finalization of hocc's generated parser API.
Add hocc bootstrapping instructions in a comment at the top of `Parse.hmh`. Dune
refuses to allow writes outside the build directory, so this is a more manual
process than ideal.

Enhance symbol type syntax in the hocc grammar, which previously supported types
of the form `M.t` to support unqualified types (e.g. `t`), as well as general
qualified types (e.g. `M.N.t`).

Mangle `tl` as `tl__hocc__` in generated code.

Fix callback generation for prods sharing a callback block.

Implement richer binding pattern syntax.

Remove syntax support for embedded code within the hocc block, and make keywords
contextual rather than global. Incidentally, codegen failed to emit such
embedded code.
@jasone jasone merged commit fc40cce into BranchTaken:main Aug 25, 2024
1 check passed
@jasone jasone deleted the codegen branch August 25, 2024 19:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant