Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32k
gh-127833: Reword and expand the Notation section#134443
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:main
Are you sure you want to change the base?
Conversation
Prepare the docs for using the notation used in the `python.gram`file. If we want to sync the two, the meta-syntax should be the same.Also, remove the distinction between lexical and syntactic rules.With f- and t-strings, the line between the two is blurry.
Co-authored-by: Blaise Pabon <blaise@gmail.com>
@lysnikolaou, does this look correct to you? |
Co-authored-by: Blaise Pabon <blaise@gmail.com>Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
I'll have a look at this tomorrow if that's okay. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Looks great in general! Left a few not-so-significant comments inline
* ``&e``: a positive lookahead (that is, ``e`` is required to match but | ||
not consumed) | ||
* ``!e``: a negative lookahead (that is, ``e`` is required *not* to match) | ||
* ``~`` ("cut"): commit to the current alternative, even if it fails to parse |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
* ``~`` ("cut"): commit to the current alternative, even if it fails to parse | |
* ``~`` ("cut"): commit to the current alternative and fail the rule | |
even if this fails to parse |
* ``"a"..."z"``: Two literal characters separated by three dots mean a choice | ||
of any single character in the given (inclusive) range of ASCII characters. | ||
* ``<...>``: A phrase between angular brackets gives an informal description | ||
of the matched symbol (for example, ``<any ASCII character except "\">``), | ||
or an abbreviation that is defined in nearby text (for example, ``<Lu>``). |
lysnikolaouMay 29, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Should we be mentioning somewhere that these are not part of the actual Python grammar, but part of the notation to make it easier to describe specific constructs? Maybe as part of the first paragraph that says that this is a mixture of EBNF and PEG?
The definition to the right of the colon uses the following syntax elements: | ||
* ``name``: A name refers to another rule. | ||
Where possible, it is a link to the rule's definition. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
What possibilities exist, other than referencing another rule?
*Syntactic* definitions then use these tokens, rather than source characters. | ||
This documentation uses the same BNF grammar for both styles of definitions. | ||
All uses of BNF in the next chapter (“Lexical Analysis”) are lexical definitions; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
All uses of BNF in the next chapter (“Lexical Analysis”) are lexical definitions; | |
All uses of BNF in the next chapter (:ref:`lexical`) are lexical definitions; |
?
Uh oh!
There was an error while loading.Please reload this page.
Prepare the docs for using the notation used in the
python.gram
file. If we want to sync the two, the meta-syntax should be the same.Also, remove the distinction between lexical and syntactic rules.
With f- and t-strings, the line between the two is blurry.
📚 Documentation preview 📚:https://cpython-previews--134443.org.readthedocs.build/