Beispiel #1
0
def ExpressionHelper(toks, space=Whitespace):
    toks = [toks[0]] + [(t | _next_) for t in toks]
    for i in range(1, len(toks)):
        toks[i] %= dict(next=toks[i - 1], this=toks[i], top=toks[-1])
    if space:
        for i, tok in enumerate(toks):
            if not isinstance(tok, Oper):
                toks[i] = Tokens._pad(_sp_, tok)
    toks[-1] %= {_sp_: space}
    return toks[-1]
Beispiel #2
0
def ExpressionHelper(toks, space=Whitespace):
    toks = [toks[0]] + [(t|_next_) for t in toks]
    for i in range(1, len(toks)):
        toks[i] %= dict(next=toks[i-1], this=toks[i], top=toks[-1])
    if space:
        for i, tok in enumerate(toks):
            if not isinstance(tok, Oper):
                toks[i] = Tokens._pad(_sp_, tok)
    toks[-1] %= {_sp_: space}
    return toks[-1]
Beispiel #3
0
def oper(symbol, operation=None, ops=BINARY, pos=CENTER):
    if isinstance(symbol, basestring):
        symtok = Omit(Raw(symbol))
    else: symtok = symbol
    if ops == BINARY:
        if pos == LEFT:
            tok = Oper([symtok, _next_, _this_])
        elif pos == CENTER:
            tok = Oper([_next_, symtok, _this_])
        elif pos == RIGHT:
            tok = Oper([_next_, _this_, symtok])
    elif ops == UNARY:
        if pos in (LEFT, CENTER):
            tok = Oper([symtok, _next_])
        elif pos == RIGHT:
            tok = Oper([_next_, symtok])
    tok = Tokens._pad(_sp_, tok)
    if operation: tok.callback = _funcmap(operation)
    tok.name = '<Oper %s>' % symbol
    return tok
Beispiel #4
0
def oper(symbol, operation=None, ops=BINARY, pos=CENTER):
    if isinstance(symbol, basestring):
        symtok = Omit(Raw(symbol))
    else:
        symtok = symbol
    if ops == BINARY:
        if pos == LEFT:
            tok = Oper([symtok, _next_, _this_])
        elif pos == CENTER:
            tok = Oper([_next_, symtok, _this_])
        elif pos == RIGHT:
            tok = Oper([_next_, _this_, symtok])
    elif ops == UNARY:
        if pos in (LEFT, CENTER):
            tok = Oper([symtok, _next_])
        elif pos == RIGHT:
            tok = Oper([_next_, symtok])
    tok = Tokens._pad(_sp_, tok)
    if operation: tok.callback = _funcmap(operation)
    tok.name = '<Oper %s>' % symbol
    return tok