comparison mercurial/parser.py @ 20778:7c4778bc29f0

parser: allow passing a lookup function to a tokenizer This will allow us to dynamically handle hyphenated symbols in revsets.
author Matt Mackall <mpm@selenic.com>
date Tue, 18 Mar 2014 17:17:23 -0500
parents 8ac8db8dc346
children d647f97f88dd
comparison
equal deleted inserted replaced
20777:77318d3c3b24 20778:7c4778bc29f0
73 else: 73 else:
74 expr = (infix[0], expr, self._parse(infix[1])) 74 expr = (infix[0], expr, self._parse(infix[1]))
75 if len(infix) == 3: 75 if len(infix) == 3:
76 self._match(infix[2], pos) 76 self._match(infix[2], pos)
77 return expr 77 return expr
78 def parse(self, message): 78 def parse(self, message, lookup=None):
79 'generate a parse tree from a message' 79 'generate a parse tree from a message'
80 self._iter = self._tokenizer(message) 80 if lookup:
81 self._iter = self._tokenizer(message, lookup)
82 else:
83 self._iter = self._tokenizer(message)
81 self._advance() 84 self._advance()
82 res = self._parse() 85 res = self._parse()
83 token, value, pos = self.current 86 token, value, pos = self.current
84 return res, pos 87 return res, pos
85 def eval(self, tree): 88 def eval(self, tree):