mercurial/parser.py
changeset 25817 42ac9d1d1572
parent 25816 43a8a87fc175
child 25818 455190fb4e51
equal deleted inserted replaced
25816:43a8a87fc175 25817:42ac9d1d1572
    58         else:
    58         else:
    59             raise error.ParseError(_("not a prefix: %s") % token, pos)
    59             raise error.ParseError(_("not a prefix: %s") % token, pos)
    60         # gather tokens until we meet a lower binding strength
    60         # gather tokens until we meet a lower binding strength
    61         while bind < self._elements[self.current[0]][0]:
    61         while bind < self._elements[self.current[0]][0]:
    62             token, value, pos = self._advance()
    62             token, value, pos = self._advance()
       
    63             # handle infix rules, take as suffix if unambiguous
    63             infix, suffix = self._elements[token][3:]
    64             infix, suffix = self._elements[token][3:]
    64             # check for suffix - next token isn't a valid prefix
       
    65             if suffix and not self._hasnewterm():
    65             if suffix and not self._hasnewterm():
    66                 expr = (suffix[0], expr)
    66                 expr = (suffix[0], expr)
       
    67             elif infix:
       
    68                 expr = (infix[0], expr, self._parseoperand(*infix[1:]))
    67             else:
    69             else:
    68                 # handle infix rules
    70                 raise error.ParseError(_("not an infix: %s") % token, pos)
    69                 if not infix:
       
    70                     raise error.ParseError(_("not an infix: %s") % token, pos)
       
    71                 expr = (infix[0], expr, self._parseoperand(*infix[1:]))
       
    72         return expr
    71         return expr
    73     def parse(self, tokeniter):
    72     def parse(self, tokeniter):
    74         'generate a parse tree from tokens'
    73         'generate a parse tree from tokens'
    75         self._iter = tokeniter
    74         self._iter = tokeniter
    76         self._advance()
    75         self._advance()