Exemplo n.º 1
0
def parse_segment(expr):
    """
        Segments occur between the slashes...
    """
    mtch = matchSegment.search(expr)
    if not (mtch):
        return (None, expr)
    tok = mtch.group()
    siz = len(tok)
    if "/" == tok:
        return (trav_seg(), expr)
    elif "." == tok:
        if len(expr) > 1 and "." == expr[1]:
            seg = parent_seg()
            siz = 2
        else:
            seg = self_seg()
    elif "*" == tok:
        seg = wild_seg()
    elif '"' == tok or "'" == tok:
        (cur, siz) = unquote(expr)
        seg = match_seg(cur)
    else:
        seg = match_seg(tok)
    return (seg, expr[siz:])
Exemplo n.º 2
0
def parse_term(expr):
    mtch = matchTerm.search(expr)
    if not(mtch): return (None,expr)
    tok = mtch.group(); siz = len(tok)
    if '/' == tok or '.' == tok:
        return parse(expr)
    if '(' == tok:
        (term,expr) = parse_predicate(expr)
        assert ')' == expr[0]
        return (term,expr[1:])
    elif '"' == tok or "'" == tok:
        (val,siz) = unquote(expr)
    else:
        val = tok; siz = len(tok)
    return (scalar(val),expr[siz:])
Exemplo n.º 3
0
def parse_term(expr):
    mtch = matchTerm.search(expr)
    if not (mtch): return (None, expr)
    tok = mtch.group()
    siz = len(tok)
    if '/' == tok or '.' == tok:
        return parse(expr)
    if '(' == tok:
        (term, expr) = parse_predicate(expr)
        assert ')' == expr[0]
        return (term, expr[1:])
    elif '"' == tok or "'" == tok:
        (val, siz) = unquote(expr)
    else:
        val = tok
        siz = len(tok)
    return (scalar(val), expr[siz:])
Exemplo n.º 4
0
def parse_segment(expr):
    """
        Segments occur between the slashes...
    """
    mtch = matchSegment.search(expr)
    if not (mtch): return (None, expr)
    tok = mtch.group()
    siz = len(tok)
    if '/' == tok: return (trav_seg(), expr)
    elif '.' == tok:
        if len(expr) > 1 and '.' == expr[1]:
            seg = parent_seg()
            siz = 2
        else:
            seg = self_seg()
    elif '*' == tok:
        seg = wild_seg()
    elif '"' == tok or "'" == tok:
        (cur, siz) = unquote(expr)
        seg = match_seg(cur)
    else:
        seg = match_seg(tok)
    return (seg, expr[siz:])