Mercurial > public > mercurial-scm > hg
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): |