Skip to content

gh-118235: Move RAISE_SYNTAX_ERROR actions to invalid rules and make sure they stay there #119731

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

Merged
merged 5 commits into from
May 30, 2024

Conversation

encukou
Copy link
Member

@encukou encukou commented May 29, 2024

The Full Grammar specification in the docs omits rule actions, so grammar rules that raise a syntax error looked like valid syntax.
This was solved in #118237 by hiding those rules in the custom syntax highlighter.

This moves all syntax-error alternatives to invalid rules, adds a validator that ensures that actions containing RAISE_SYNTAX_ERROR are in invalid rules, and reverts the syntax highlighter hack.


📚 Documentation preview 📚: https://cpython-previews--119731.org.readthedocs.build/

encukou added 4 commits May 1, 2024 17:37
…validate

Add a validator that makes sure RAISE_SYNTAX_ERROR only appears in
invalid rules. This looks at the action text, as a string.

Move all such actions to invalid rules. This works for two of them,
but not the type_param rules, where the SyntaxError that ends up
being raised is the one from &&'(' in the function definition.
… spec (pythonGH-118237)"

This reverts commit ef940de.

The highlighter change is no longer needed, since all RAISE_SYNTAX_ERROR
actions are in invalid rules.
visit_Alt should only be called from GrammarValidator.validate_rule, when
self.rulename is a string, but mypy doesn't know that.
@pablogsal
Copy link
Member

Excellent approach!

@encukou encukou merged commit 48f21b3 into python:main May 30, 2024
46 checks passed
@encukou encukou deleted the invalid-grammar-pr branch May 30, 2024 07:27
@encukou
Copy link
Member Author

encukou commented May 30, 2024

Thanks!

noahbkim pushed a commit to hudson-trading/cpython that referenced this pull request Jul 11, 2024
… make sure they stay there (pythonGH-119731)

The Full Grammar specification in the docs omits rule actions, so grammar rules that raise a syntax error looked like valid syntax.
This was solved in ef940de by hiding those rules in the custom syntax highlighter.

This moves all syntax-error alternatives to invalid rules, adds a validator that ensures that actions containing RAISE_SYNTAX_ERROR are in invalid rules, and reverts the syntax highlighter hack.
estyxx pushed a commit to estyxx/cpython that referenced this pull request Jul 17, 2024
… make sure they stay there (pythonGH-119731)

The Full Grammar specification in the docs omits rule actions, so grammar rules that raise a syntax error looked like valid syntax.
This was solved in ef940de by hiding those rules in the custom syntax highlighter.

This moves all syntax-error alternatives to invalid rules, adds a validator that ensures that actions containing RAISE_SYNTAX_ERROR are in invalid rules, and reverts the syntax highlighter hack.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants