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:])
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:])
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:])
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:])