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

Group multiple declarations into the same AST node #1207

Merged
merged 4 commits into from
Jun 1, 2022

Conversation

WardBrian
Copy link
Member

@WardBrian WardBrian commented May 31, 2022

This closes stan-dev/stan#2610

It does 3 things:

  1. Multiple vardecls like int a, b; are stored in the same AST node, much like in Clang's C++ AST: https://stackoverflow.com/questions/41339220/clang-ast-visitor-for-single-line-multiple-variable-declaration. This saves some memory and allows the following two bullets
  2. As a result, the pretty-printer no longer turns int a, b; into int a; int b; but rather preserves the original syntax. (this is quite a nice benefit, see the test output)
  3. Finally, it resolves the above issue by allowing decls most places a statement was previously specified.

Other than the parsing and pretty-printing changes, all behavior is the same. The MIR works as before, where each item is split into its own vardecl statement.

Submission Checklist

  • Run unit tests
  • Documentation
    • If a user-facing facing change was made, the documentation PR is here: grammar in documentation needs to be updated

Release notes

The pretty-printer now preserves multiple declarations in one line like int a, b; rather than splitting them into two declarations.

Declarations are now allowed in places they previously would not parse, such as the only statement in the body of an if statement.

Copyright and Licensing

By submitting this pull request, the copyright holder is agreeing to
license the submitted work under the BSD 3-clause license (https://opensource.org/licenses/BSD-3-Clause)

@WardBrian WardBrian added cleanup Code simplification or clean-up parsing issues related to the parser and syntax errors labels May 31, 2022
@WardBrian WardBrian requested review from rybern and nhuurre May 31, 2022 20:16
@rok-cesnovar
Copy link
Member

Yay!

@WardBrian WardBrian requested a review from nhuurre June 1, 2022 16:26
@WardBrian WardBrian merged commit cb108ee into stan-dev:master Jun 1, 2022
@WardBrian WardBrian deleted the vardecl-grouping branch June 1, 2022 19:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cleanup Code simplification or clean-up parsing issues related to the parser and syntax errors
Projects
None yet
Development

Successfully merging this pull request may close these issues.

declare and define does not work at the top of a block without curly braces
3 participants