Right now it is not documented:
|
# Grammar Syntax (see PEP 617 for more information): |
|
# |
|
# rule_name: expression |
|
# Optionally, a type can be included right after the rule name, which |
|
# specifies the return type of the C or Python function corresponding to the |
|
# rule: |
|
# rule_name[return_type]: expression |
|
# If the return type is omitted, then a void * is returned in C and an Any in |
|
# Python. |
|
# e1 e2 |
|
# Match e1, then match e2. |
|
# e1 | e2 |
|
# Match e1 or e2. |
|
# The first alternative can also appear on the line after the rule name for |
|
# formatting purposes. In that case, a | must be used before the first |
|
# alternative, like so: |
|
# rule_name[return_type]: |
|
# | first_alt |
|
# | second_alt |
|
# ( e ) |
|
# Match e (allows also to use other operators in the group like '(e)*') |
|
# [ e ] or e? |
|
# Optionally match e. |
|
# e* |
|
# Match zero or more occurrences of e. |
|
# e+ |
|
# Match one or more occurrences of e. |
|
# s.e+ |
|
# Match one or more occurrences of e, separated by s. The generated parse tree |
|
# does not include the separator. This is otherwise identical to (e (s e)*). |
|
# &e |
|
# Succeed if e can be parsed, without consuming any input. |
|
# !e |
|
# Fail if e can be parsed, without consuming any input. |
|
# ~ |
|
# Commit to the current alternative, even if it fails to parse. |
|
# |
Linked PRs
Right now it is not documented:
cpython/Grammar/python.gram
Lines 45 to 81 in 5a4d3df
Linked PRs
&&grammar syntax #118324