diff -r b3004d273874 -r f0a77cb6316a mercurial/parser.py --- a/mercurial/parser.py Sun Jul 05 18:09:15 2015 +0900 +++ b/mercurial/parser.py Sun Jul 05 11:54:14 2015 +0900 @@ -29,6 +29,9 @@ t = self.current self.current = next(self._iter, None) return t + def _hasnewterm(self): + 'True if next token may start new term' + return bool(self._elements[self.current[0]][1]) def _match(self, m): 'make sure the tokenizer matches an end condition' if self.current[0] != m: @@ -59,7 +62,7 @@ token, value, pos = self._advance() infix, suffix = self._elements[token][2:] # check for suffix - next token isn't a valid prefix - if suffix and not self._elements[self.current[0]][1]: + if suffix and not self._hasnewterm(): expr = (suffix[0], expr) else: # handle infix rules