- int
- float
- str
- bool
-
file_input: (NEWLINE | stmt)* EOF; -
funcdef: 'def' NAME parameters ':' suite; -
parameters: '(' typedargslist? ')'; -
typedargslist: (tfpdef ('=' test)? (',' tfpdef ('=' test)?)*); -
tfpdef: NAME ; -
stmt: simple_stmt | compound_stmt; -
simple_stmt: small_stmt NEWLINE; -
small_stmt: expr_stmt | flow_stmt; -
expr_stmt: testlist ( (augassign testlist) | ('=' testlist)*); -
augassign: ('+=' | '-=' | '*=' | '/=' | '//=' | '%=' ); -
flow_stmt: break_stmt | continue_stmt | return_stmt; -
break_stmt: 'break'; -
continue_stmt: 'continue'; -
return_stmt: 'return' (testlist)?; -
compound_stmt: if_stmt | while_stmt | funcdef ; -
if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ('else' ':' suite)?; -
while_stmt: 'while' test ':' suite; -
suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT; -
test: or_test ; -
or_test: and_test ('or' and_test)*; -
and_test: not_test ('and' not_test)*; -
not_test: 'not' not_test | comparison; -
comparison: arith_expr (comp_op arith_expr)*; -
comp_op: '<'|'>'|'=='|'>='|'<=' | '!='; -
arith_expr: term (addorsub_op term)*; -
addorsub_op: '+'|'-'; -
term: factor (muldivmod_op factor)*; -
muldivmod_op: '*'|'/'|'//'|'%'; -
factor: ('+'|'-') factor | atom_expr; -
atom_expr: atom trailer?; -
trailer: '(' (arglist)? ')' ; -
atom: (NAME | NUMBER | STRING+| 'None' | 'True' | 'False' | ('(' test ')')); -
testlist: test (',' test)* (',')?; -
arglist: argument (',' argument)* (',')?; -
argument: ( test | test '=' test );