Skip to content

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
@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