Mercurial > hg
comparison mercurial/parser.py @ 14701:4b93bd041772 stable
parsers: fix localization markup of parser errors
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Tue, 21 Jun 2011 00:17:52 +0200 |
parents | e798e430c5e5 |
children | 8ac8db8dc346 |
comparison
equal
deleted
inserted
replaced
14700:848a6658069e | 14701:4b93bd041772 |
---|---|
14 # elements is a mapping of types to binding strength, prefix and infix actions | 14 # elements is a mapping of types to binding strength, prefix and infix actions |
15 # an action is a tree node name, a tree label, and an optional match | 15 # an action is a tree node name, a tree label, and an optional match |
16 # __call__(program) parses program into a labelled tree | 16 # __call__(program) parses program into a labelled tree |
17 | 17 |
18 import error | 18 import error |
19 from i18n import _ | |
19 | 20 |
20 class parser(object): | 21 class parser(object): |
21 def __init__(self, tokenizer, elements, methods=None): | 22 def __init__(self, tokenizer, elements, methods=None): |
22 self._tokenizer = tokenizer | 23 self._tokenizer = tokenizer |
23 self._elements = elements | 24 self._elements = elements |
32 pass | 33 pass |
33 return t | 34 return t |
34 def _match(self, m, pos): | 35 def _match(self, m, pos): |
35 'make sure the tokenizer matches an end condition' | 36 'make sure the tokenizer matches an end condition' |
36 if self.current[0] != m: | 37 if self.current[0] != m: |
37 raise error.ParseError("unexpected token: %s" % self.current[0], | 38 raise error.ParseError(_("unexpected token: %s") % self.current[0], |
38 self.current[2]) | 39 self.current[2]) |
39 self._advance() | 40 self._advance() |
40 def _parse(self, bind=0): | 41 def _parse(self, bind=0): |
41 token, value, pos = self._advance() | 42 token, value, pos = self._advance() |
42 # handle prefix rules on current token | 43 # handle prefix rules on current token |
43 prefix = self._elements[token][1] | 44 prefix = self._elements[token][1] |
44 if not prefix: | 45 if not prefix: |
45 raise error.ParseError("not a prefix: %s" % token, pos) | 46 raise error.ParseError(_("not a prefix: %s") % token, pos) |
46 if len(prefix) == 1: | 47 if len(prefix) == 1: |
47 expr = (prefix[0], value) | 48 expr = (prefix[0], value) |
48 else: | 49 else: |
49 if len(prefix) > 2 and prefix[2] == self.current[0]: | 50 if len(prefix) > 2 and prefix[2] == self.current[0]: |
50 self._match(prefix[2], pos) | 51 self._match(prefix[2], pos) |
62 suffix = e[3] | 63 suffix = e[3] |
63 expr = (suffix[0], expr) | 64 expr = (suffix[0], expr) |
64 else: | 65 else: |
65 # handle infix rules | 66 # handle infix rules |
66 if len(e) < 3 or not e[2]: | 67 if len(e) < 3 or not e[2]: |
67 raise error.ParseError("not an infix: %s" % token, pos) | 68 raise error.ParseError(_("not an infix: %s") % token, pos) |
68 infix = e[2] | 69 infix = e[2] |
69 if len(infix) == 3 and infix[2] == self.current[0]: | 70 if len(infix) == 3 and infix[2] == self.current[0]: |
70 self._match(infix[2], pos) | 71 self._match(infix[2], pos) |
71 expr = (infix[0], expr, (None)) | 72 expr = (infix[0], expr, (None)) |
72 else: | 73 else: |