コード例 #1
0
ファイル: util.py プロジェクト: 00zhengfu00/viewfinder
 def __init__(self, table, raw=False):
   self._table = table
   self._raw = raw
   self._updates = dict()
   token_char = p(one_of, letters + digits + '.-_')
   self._token = as_string(p(many, token_char))
   self._phrase = p(choice, quoted, self._token)
   self._expr_parser = p(many, p(choice, p(one_of, ','), self._ParsePhrase))
コード例 #2
0
 def __init__(self, table, raw=False):
     self._table = table
     self._raw = raw
     self._updates = dict()
     token_char = p(one_of, letters + digits + '.-_')
     self._token = as_string(p(many, token_char))
     self._phrase = p(choice, quoted, self._token)
     self._expr_parser = p(many, p(choice, p(one_of, ','),
                                   self._ParsePhrase))
コード例 #3
0
ファイル: query_parser.py プロジェクト: zorro0799/viewfinder
  def __init__(self, schema, parse_phrase_func=None):
    self._schema = schema

    if not parse_phrase_func:
      parse_phrase_func = self._ParsePhrase

    self._op_classes = {'|': Union, '-': Difference,
                        '&': Intersection, '+': PositionalIntersection}
    self._operator = p(lexeme, p(one_of, u''.join(self._op_classes.keys())))
    token_char = p(one_of, letters + digits + ':_')
    self._token = as_string(p(many1, token_char))
    self._phrase = p(choice, quoted, self._token)
    self._param_parser = p(choice, self._ParseParam, quoted, self._token)
    self._term_parser = p(choice, self._ParseParenthetical, parse_phrase_func)
    self._expr_parser = p(choice, self._ParseOp, self._term_parser)
コード例 #4
0
        else:
            self.right = right
            return self

    def __repr__(self):
        return "%s(%r, %r, %r)" % (self.__class__.__name__, self.left, 
                                                            self.op, 
                                                            self.right)
        
    def evaluate(self):
        return operator_functions[self.op](self.left.evaluate(), 
                                           self.right.evaluate())


# parser
digits = partial(lexeme, as_string(partial(many1, partial(one_of, digit_chars))))
operator = partial(lexeme, partial(one_of, operators))
    
@tri
def bin_op():
    left = term()
    op = operator()
    commit()
    right = expression()
    whitespace()
    
    n = BinaryNode(left, op)
    return n.merge(right) 
    
@tri
def parenthetical():
コード例 #5
0
            return right
        else:
            self.right = right
            return self

    def __repr__(self):
        return "%s(%r, %r, %r)" % (self.__class__.__name__, self.left, self.op,
                                   self.right)

    def evaluate(self):
        return operator_functions[self.op](self.left.evaluate(),
                                           self.right.evaluate())


# parser
digits = partial(lexeme, as_string(partial(many1, partial(one_of,
                                                          digit_chars))))
operator = partial(lexeme, partial(one_of, operators))


@tri
def bin_op():
    left = term()
    op = operator()
    commit()
    right = expression()
    whitespace()

    n = BinaryNode(left, op)
    return n.merge(right)