Пример #1
0
 def sfactor(self):
     sphrase = self.sphrase()
     f = sphrase
     while self._peek('"-"', '"&"', '"<"', '">"', '"~"', '"\\""', 'WORD',
                      '"\\\\("', '"\\\\|"', 'END', '"\\\\]\\\\]"',
                      '"\\\\)"') not in [
                          '"\\\\|"', 'END', '"\\\\]\\\\]"', '"\\\\)"'
                      ]:
         _token_ = self._peek('"-"', '"&"', '"<"', '">"', '"~"', '"\\""',
                              'WORD', '"\\\\("')
         if _token_ == '"&"':
             sconjop = self.sconjop()
             sphrase = self.sphrase()
             f = Search.Conjunction(sconjop, f, sphrase)
         elif _token_ not in ['"-"', '"\\""', 'WORD', '"\\\\("']:
             snearop = self.snearop()
             op = snearop
             nearness = Search.Conjunction.DEFAULT_NEARNESS
             _token_ = self._peek('"\\\\["', '"\\""', 'WORD', '"\\\\("')
             if _token_ == '"\\\\["':
                 self._scan('"\\\\["')
                 INT = self._scan('INT')
                 self._scan('"\\\\]"')
                 nearness = int(INT)
             else:  # in ['"\\""', 'WORD', '"\\\\("']
                 pass
             sphrase = self.sphrase()
             f = Search.Conjunction(op, f, sphrase, nearness)
         else:  # in ['"-"', '"\\""', 'WORD', '"\\\\("']
             op = '&'
             _token_ = self._peek('"-"', '"\\""', 'WORD', '"\\\\("')
             if _token_ == '"-"':
                 self._scan('"-"')
                 op = '&!'
             else:  # in ['"\\""', 'WORD', '"\\\\("']
                 pass
             sphrase = self.sphrase()
             f = Search.Conjunction(op, f, sphrase)
     return f