#! /usr/bin/env python

"""Non-terminal symbols of Python grammar (from "graminit.h")."""

#  This file is automatically generated; please don't muck it up!
#
#  To update the symbols in this file, 'cd' to the top directory of
#  the python source tree after building the interpreter and run:
#
#    python Lib/symbol.py

#--start constants--
single_input = 256
file_input = 257
eval_input = 258
decorator = 259
decorators = 260
funcdef = 261
parameters = 262
varargslist = 263
fpdef = 264
fplist = 265
stmt = 266
simple_stmt = 267
small_stmt = 268
expr_stmt = 269
augassign = 270
print_stmt = 271
del_stmt = 272
pass_stmt = 273
flow_stmt = 274
break_stmt = 275
continue_stmt = 276
return_stmt = 277
yield_stmt = 278
raise_stmt = 279
import_stmt = 280
import_name = 281
import_from = 282
import_as_name = 283
dotted_as_name = 284
import_as_names = 285
dotted_as_names = 286
dotted_name = 287
global_stmt = 288
exec_stmt = 289
assert_stmt = 290
compound_stmt = 291
if_stmt = 292
while_stmt = 293
for_stmt = 294
try_stmt = 295
except_clause = 296
suite = 297
test = 298
and_test = 299
not_test = 300
comparison = 301
comp_op = 302
expr = 303
xor_expr = 304
and_expr = 305
shift_expr = 306
arith_expr = 307
term = 308
factor = 309
power = 310
atom = 311
listmaker = 312
testlist_gexp = 313
lambdef = 314
trailer = 315
subscriptlist = 316
subscript = 317
sliceop = 318
exprlist = 319
testlist = 320
testlist_safe = 321
dictmaker = 322
classdef = 323
arglist = 324
argument = 325
list_iter = 326
list_for = 327
list_if = 328
gen_iter = 329
gen_for = 330
gen_if = 331
testlist1 = 332
encoding_decl = 333
yield_expr = 334
#--end constants--

sym_name = {}
for _name, _value in globals().items():
    if type(_value) is type(0):
        sym_name[_value] = _name


def main():
    import sys
    import token
    if len(sys.argv) == 1:
        sys.argv = sys.argv + ["Include/graminit.h", "Lib/symbol.py"]
    token.main()

if __name__ == "__main__":
    main()
