Exemplo n.º 1
0
def p_halfcblock(p):
    '''halfcblock : Lcurly
                    | halfcblock pvar
                    | halfcblock dot
                    | halfcblock dvar
                    | halfcblock spaces
                    | halfcblock identifier
                    | halfcblock newline
                    | halfcblock cblock
                    | halfcblock pblock
                    | halfcblock colon
                    | halfcblock string
                    | halfcblock num
                    | halfcblock eq
                    | halfcblock lt
                    | halfcblock gt
                    | halfcblock not
                    | halfcblock tab
                    | halfcblock misc 
                    | halfcblock comma
                    | halfcblock fcall
    '''
    p[0] = Node('halfc','')
    if len(p)>2:
        p[0].args=p[1].args
        n=p[2]
        if isinstance(p[2],str):
            x= p[2]
            if x=='\n':
                x='newline'
            n=Node("token")
            n.str = x
        p[0].args.append(n)
    else:
        p[0].args= []
Exemplo n.º 2
0
def p_fDef(p):
    """fDef : DEF NAME defTuple ARROW EXCLAMATION NAME block"""
    p[0] = Node("Fdef")
    p[0].func = p[2]
    p[0].args = p[3]
    p[0].rettype = p[6]
    p[0].body = p[7]
Exemplo n.º 3
0
def p_fcall(p):
    '''fcall : unary_expr tuple
                | fcall tuple
    '''
    p[0] = Node('FCALL')
    p[0].func = p[1]
    p[0].args = p[2].elems
Exemplo n.º 4
0
def p_arrayAccess1(p):
    """arrayAccess :  load LBRACKET expr RBRACKET
                        | load LBRACKET range RBRACKET
    """
    p[0] = Node("ArrayAccess")
    p[0].var = p[1]
    p[0].var.ctl = "store"
    p[0].args = p[3]
Exemplo n.º 5
0
def p_fdef(p):
    '''fdef : DEF IDENTIFIER tuple block
    '''

    p[0] = Node('FuncDef')
    p[0].name = p[2].value
    p[0].args = Node('Arguments')
    p[0].args.args = p[3].elems
    p[0].body = p[4].body
Exemplo n.º 6
0
def p_arrayAccess2(p):
    """arrayAccess :  load LBRACKET RBRACKET"""
    p[0] = Node("ArrayAccess")
    p[0].var = p[1]
    p[0].var.ctl = "store"
    p[0].args = []
Exemplo n.º 7
0
def p_fCall2(p):
    """fCall : load LPAREN expr RPAREN
    """
    p[0] = Node("Fcall")
    p[0].func = p[1]
    p[0].args = [p[3]]
Exemplo n.º 8
0
def p_fCall1(p):
    """fCall : load LPAREN exprList RPAREN
    """
    p[0] = Node("Fcall")
    p[0].func = p[1]
    p[0].args = p[3]
Exemplo n.º 9
0
def p_fptr(p):
    '''fptr : tuple ARROW IDENTIFIER
    '''
    p[0] = Node('FPTR')
    p[0].args = p[1].elems
    p[0].func = p[3]