Python 3.4 Grammar

Top level symbols:

single_input ::=
NEWLINE
|
|
compound_stmt NEWLINE
file_input ::=
( NEWLINE | stmt )* ENDMARKER
eval_input ::=
testlist ( NEWLINE )* ENDMARKER
decorator ::=
@ dotted_name ( ( ( argslist )? ) )? NEWLINE
decorators ::=
( decorator )+
decorated ::=
funcdef ::=
def NAME parameters ( -> test )? : suite
parameters ::=
( ( typedargslist )? )
typedargslist ::=
tfpdef ( = test )? ( , tfpdef ( = test )? )* ( , ( other_typedargs )? )?
other_typedargs ::=
* ( tfpdef )? ( , tfpdef ( = test )? )* ( , ** tfpdef )?
|
** tfpdef
tfpdef ::=
NAME ( : test )?
varargslist ::=
vfpdef ( = test )? ( , vfpdef ( = test )? )* ( , ( other_varargs )? )?
other_varargs ::=
* ( vfpdef )? ( , vfpdef ( = test )? )* ( , ** vfpdef )?
|
** vfpdef
vfpdef ::=
NAME
stmt ::=
simple_stmt | compound_stmt
simple_stmt ::=
small_stmt ( ; small_stmt )* ( ; )? NEWLINE
small_stmt ::=
expr_stmt | del_stmt | pass_stmt | flow_stmt | import_stmt | global_stmt | nonlocal_stmt | assert_stmt
expr_stmt ::=
testlist_star_expr ::=
( test | star_expr ) ( , ( test | star_expr ) )* ( , )?
augassign ::=
+= | -= | *= | /= | %= | &= | |= | ^= | <<= | >>= | **= | //=
del_stmt ::=
pass_stmt ::=
pass
flow_stmt ::=
break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt
break_stmt ::=
break
continue_stmt ::=
continue
return_stmt ::=
return ( testlist )?
yield_stmt ::=
yield_expr
raise_stmt ::=
raise ( test ( from test )? )?
import_stmt ::=
import_name | import_from
import_name ::=
import_from ::=
from ( ( . | ... )* dotted_name | ( . | ... )+ ) import ( * | ( import_as_names ) | import_as_names )
import_as_name ::=
NAME ( as NAME )?
dotted_as_name ::=
dotted_name ( as NAME )?
import_as_names ::=
dotted_as_names ::=
dotted_name ::=
NAME ( . NAME )*
global_stmt ::=
global NAME ( , NAME )*
nonlocal_stmt ::=
nonlocal NAME ( , NAME )*
assert_stmt ::=
assert test ( , test )?
compound_stmt ::=
if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated
if_stmt ::=
if test : suite ( elif test : suite )* ( else : suite )?
while_stmt ::=
while test : suite ( else : suite )?
for_stmt ::=
for exprlist in testlist : suite ( else : suite )?
try_stmt ::=
try : suite ( ( except_clause : suite )+ ( else : suite )? ( finally : suite )? | finally : suite )
with_stmt ::=
with with_item ( , with_item )* : suite
with_item ::=
test ( as expr )?
except_clause ::=
except ( test ( as NAME )? )?
suite ::=
|
NEWLINE INDENT ( stmt )+ DEDENT
test ::=
or_test ( if or_test else test )?
|
test_nocond ::=
or_test | lambdef_nocond
lambdef ::=
lambda ( varargslist )? : test
lambdef_nocond ::=
lambda ( varargslist )? : test_nocond
or_test ::=
and_test ::=
not_test ( and not_test )*
not_test ::=
|
comparison ::=
comp_op ::=
< | > | == | >= | <= | <> | != | in | not in | is | is not
star_expr ::=
* expr
expr ::=
xor_expr ::=
and_expr ::=
shift_expr ::=
arith_expr ( ( << | >> ) arith_expr )*
arith_expr ::=
term ( ( + | - ) term )*
term ::=
factor ( ( * | / | % | // ) factor )*
factor ::=
( + | - | ~ ) factor
|
power ::=
atom ( trailer )* ( ** factor )?
atom ::=
|
[ ( testlist_comp )? ]
|
{ ( dictorsetmaker )? }
|
NAME
|
NUMBER
|
( STRING )+
|
...
|
None
|
True
|
False
testlist_comp ::=
( test | star_expr ) ( comp_for | ( , ( test | star_expr ) )* ( , )? )
trailer ::=
( ( argslist )? )
|
|
. NAME
subscriptlist ::=
subscript ( , subscript )* ( , )?
subscript ::=
|
( test )? : ( test )? ( sliceop )?
sliceop ::=
: ( test )?
exprlist ::=
( expr | star_expr ) ( , ( expr | star_expr ) )* ( , )?
testlist ::=
test ( , test )* ( , )?
dictorsetmaker ::=
( test : test ( comp_for | ( , test : test )* ( , )? ) )
|
test ( comp_for | ( , test )* ( , )? )
classdef ::=
class NAME ( ( ( argslist )? ) )? : suite
argslist ::=
( argument , )* ( argument ( , )? | other_args )
other_args ::=
* test ( , argument )* ( , ** test )?
|
** test
argument ::=
|
comp_iter ::=
comp_for | comp_if
comp_for ::=
comp_if ::=
yield_expr ::=
yield ( yield_arg )?
yield_arg ::=
from test
|

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~