def p_numerical_expr(self, p):
        '''numerical_expr : expr PLUS expr
                          | expr MINUS expr
                          | expr TIMES expr
                          | expr DIV expr
                          | MINUS expr %prec UMINUS
                          | PLUS expr %prec UMINUS
                          | INTEGER
                          | DOUBLE'''
        if len(p) == 4:
            p[0] = (p[2], (p[1], p[3]))
        elif len(p) == 3:
            p[0] = (p[1], (p[2],))
        elif len(p) == 2:
            p[0] = ('number', p[1])
def p_numerical_expr ( self , p ) : if len ( p ) == 4 : p [ 0 ] = ( p [ 2 ] , ( p [ 1 ] , p [ 3 ] ) ) elif len ( p ) == 3 : p [ 0 ] = ( p [ 1 ] , ( p [ 2 ] , ) ) elif len ( p ) == 2 : p [ 0 ] = ( 'number' , p [ 1 ] )
numerical_expr : expr PLUS expr
                          | expr MINUS expr
                          | expr TIMES expr
                          | expr DIV expr
                          | MINUS expr %prec UMINUS
                          | PLUS expr %prec UMINUS
                          | INTEGER
                          | DOUBLE