# -*- Mode: Python -*-

import sys
import Parsing

T = Parsing.Token
NT = Parsing.Nonterm

class t_rparen (T):
    "%token rparen [p1]"

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

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

class t_lbracket (T):
    "%token lbracket [p1]"

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

class t_lparen (T):
    "%token lparen [p1]"

class t_dot (T):
    "%token dot [p1]"

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

class p1 (Parsing.Precedence):
    "%right p1"
class predicate_c_4_q (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce trailer [p1]"
    def r_1 (self, *args):
        "%reduce  [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 STRING [p1]"
class predicate (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce NAME lparen predicate_c_2_q rparen predicate_c_4_q [p1]"
class list (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce expr list_c_1_s1 [p1]"
class list_c_1_s1 (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce list_c_1_s1 comma expr [p1]"
    def r_1 (self, *args):
        "%reduce  [p1]"
class trailer (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce lparen [p1]"
    def r_1 (self, *args):
        "%reduce lbracket [p1]"
    def r_2 (self, *args):
        "%reduce dot [p1]"
    def r_3 (self, *args):
        "%reduce NAME [p1]"
class predicate_c_2_q (NT):
    "%nonterm"
    def r_0 (self, *args):
        "%reduce list [p1]"
    def r_1 (self, *args):
        "%reduce  [p1]"
class expr (NT):
    "%start"
    def r_0 (self, *args):
        "%reduce predicate [p1]"
    def r_1 (self, *args):
        "%reduce atom [p1]"


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