# -*- Mode: Python -*-

import sys
import Parsing

T = Parsing.Token
NT = Parsing.Nonterm

class t_DEDENT (T):
    "%token DEDENT [p1]"

class t_and (T):
    "%token and [p1]"

class t_elif (T):
    "%token elif [p1]"

class t_semicolon (T):
    "%token semicolon [p1]"

class t_is (T):
    "%token is [p1]"

class t_pass (T):
    "%token pass [p1]"

class t_NUMBER (T):
    "%token NUMBER [p1]"

class t_comma (T):
    "%token comma [p1]"

class t_in (T):
    "%token in [p1]"

class t_if (T):
    "%token if [p1]"

class t_NEWLINE (T):
    "%token NEWLINE [p1]"

class t_percent (T):
    "%token percent [p1]"

class t_slash (T):
    "%token slash [p1]"

class t_print (T):
    "%token print [p1]"

class t_slashslash (T):
    "%token slashslash [p1]"

class t_STRING (T):
    "%token STRING [p1]"

class t_equals (T):
    "%token equals [p1]"

class t_else (T):
    "%token else [p1]"

class t_not (T):
    "%token not [p1]"

class t_splat (T):
    "%token splat [p1]"

class t_COMP_OP (T):
    "%token COMP_OP [p1]"

class t_INDENT (T):
    "%token INDENT [p1]"

class t_NAME (T):
    "%token NAME [p1]"

class t_or (T):
    "%token or [p1]"

class t_while (T):
    "%token while [p1]"

class t_plus (T):
    "%token plus [p1]"

class t_colon (T):
    "%token colon [p1]"

class t_minus (T):
    "%token minus [p1]"

class p1 (Parsing.Precedence):
    "%right p1"
class atom_o_2_c_0_s1 (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce STRING atom_o_2_c_0_s1 [p1]"
    def r_1 (self, *args):
        "%reduce STRING [p1]"
class print_stmt_c_1_q_c_2_q (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce comma [p1]"
    def r_1 (self, *args):
        "%reduce  [p1]"
class comp_op (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce COMP_OP [p1]"
    def r_1 (self, *args):
        "%reduce in [p1]"
    def r_2 (self, *args):
        "%reduce not in [p1]"
    def r_3 (self, *args):
        "%reduce is [p1]"
    def r_4 (self, *args):
        "%reduce is not [p1]"
class compound_stmt (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce if_stmt [p1]"
    def r_1 (self, *args):
        "%reduce while_stmt [p1]"
class not_test (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce not not_test [p1]"
    def r_1 (self, *args):
        "%reduce comparison [p1]"
class atom (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce NAME [p1]"
    def r_1 (self, *args):
        "%reduce NUMBER [p1]"
    def r_2 (self, *args):
        "%reduce atom_o_2_c_0_s1 [p1]"
class expr_c_1_s1 (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce expr_c_1_s_c_0_o term expr_c_1_s1 [p1]"
    def r_1 (self, *args):
        "%reduce  [p1]"
class small_stmt (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce expr_stmt [p1]"
    def r_1 (self, *args):
        "%reduce print_stmt [p1]"
    def r_2 (self, *args):
        "%reduce pass_stmt [p1]"
class term_c_1_s_c_0_o (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce splat [p1]"
    def r_1 (self, *args):
        "%reduce slash [p1]"
    def r_2 (self, *args):
        "%reduce percent [p1]"
    def r_3 (self, *args):
        "%reduce slashslash [p1]"
class testlist_c_2_q (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce comma [p1]"
    def r_1 (self, *args):
        "%reduce  [p1]"
class print_stmt (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce print print_stmt_c_1_q [p1]"
class test (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce and_test test_c_1_s1 [p1]"
class while_stmt_c_4_q (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce else colon suite [p1]"
    def r_1 (self, *args):
        "%reduce  [p1]"
class suite (NT):
    "%start"
    def r_0 (self, *args):
        "%reduce simple_stmt [p1]"
    def r_1 (self, *args):
        "%reduce NEWLINE INDENT suite_o_1_c_2_s1 DEDENT [p1]"
class stmt (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce simple_stmt [p1]"
    def r_1 (self, *args):
        "%reduce compound_stmt [p1]"
class simple_stmt (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce small_stmt simple_stmt_c_1_s1 simple_stmt_c_2_q NEWLINE [p1]"
class testlist (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce test testlist_c_1_s1 testlist_c_2_q [p1]"
class simple_stmt_c_1_s1 (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce semicolon small_stmt simple_stmt_c_1_s1 [p1]"
    def r_1 (self, *args):
        "%reduce  [p1]"
class simple_stmt_c_2_q (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce semicolon [p1]"
    def r_1 (self, *args):
        "%reduce  [p1]"
class print_stmt_c_1_q_c_1_s1 (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce comma test print_stmt_c_1_q_c_1_s1 [p1]"
    def r_1 (self, *args):
        "%reduce  [p1]"
class comparison_c_1_s1 (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce comp_op expr comparison_c_1_s1 [p1]"
    def r_1 (self, *args):
        "%reduce  [p1]"
class and_test (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce not_test and_test_c_1_s1 [p1]"
class and_test_c_1_s1 (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce and not_test and_test_c_1_s1 [p1]"
    def r_1 (self, *args):
        "%reduce  [p1]"
class expr_stmt (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce testlist expr_stmt_c_1_s1 [p1]"
class if_stmt (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce if test colon suite if_stmt_c_4_s1 if_stmt_c_5_q [p1]"
class comparison (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce expr comparison_c_1_s1 [p1]"
class term (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce atom term_c_1_s1 [p1]"
class pass_stmt (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce pass [p1]"
class expr (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce term expr_c_1_s1 [p1]"
class expr_stmt_c_1_s1 (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce equals testlist expr_stmt_c_1_s1 [p1]"
    def r_1 (self, *args):
        "%reduce  [p1]"
class if_stmt_c_4_s1 (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce elif test colon suite if_stmt_c_4_s1 [p1]"
    def r_1 (self, *args):
        "%reduce  [p1]"
class while_stmt (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce while test colon suite while_stmt_c_4_q [p1]"
class testlist_c_1_s1 (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce comma test testlist_c_1_s1 [p1]"
    def r_1 (self, *args):
        "%reduce  [p1]"
class suite_o_1_c_2_s1 (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce stmt suite_o_1_c_2_s1 [p1]"
    def r_1 (self, *args):
        "%reduce stmt [p1]"
class if_stmt_c_5_q (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce else colon suite [p1]"
    def r_1 (self, *args):
        "%reduce  [p1]"
class print_stmt_c_1_q (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce test print_stmt_c_1_q_c_1_s1 print_stmt_c_1_q_c_2_q [p1]"
    def r_1 (self, *args):
        "%reduce  [p1]"
class expr_c_1_s_c_0_o (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce plus [p1]"
    def r_1 (self, *args):
        "%reduce minus [p1]"
class term_c_1_s1 (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce term_c_1_s_c_0_o atom term_c_1_s1 [p1]"
    def r_1 (self, *args):
        "%reduce  [p1]"
class test_c_1_s1 (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce or and_test test_c_1_s1 [p1]"
    def r_1 (self, *args):
        "%reduce  [p1]"


spec = Parsing.Spec (sys.modules[__name__], skinny=False, logFile="t0.log", verbose=True)