comparison mercurial/templater.py @ 25815:e71e5629e006

parser: separate actions for primary expression and prefix operator This will allow us to define both a primary expression, ":", and a prefix operator, ":y". The ambiguity will be resolved by the next patch. Prefix actions in elements table are adjusted as follows: original prefix primary prefix ----------------- -------- ----------------- ("group", 1, ")") -> n/a ("group", 1, ")") ("negate", 19) -> n/a ("negate", 19) ("symbol",) -> "symbol" n/a
author Yuya Nishihara <yuya@tcha.org>
date Sun, 05 Jul 2015 12:02:13 +0900
parents 272ff3680bf3
children 7eb357b5f774 4ca98a389152
comparison
equal deleted inserted replaced
25814:dc1a49264628 25815:e71e5629e006
13 import minirst 13 import minirst
14 14
15 # template parsing 15 # template parsing
16 16
17 elements = { 17 elements = {
18 # token-type: binding-strength, prefix, infix, suffix 18 # token-type: binding-strength, primary, prefix, infix, suffix
19 "(": (20, ("group", 1, ")"), ("func", 1, ")"), None), 19 "(": (20, None, ("group", 1, ")"), ("func", 1, ")"), None),
20 ",": (2, None, ("list", 2), None), 20 ",": (2, None, None, ("list", 2), None),
21 "|": (5, None, ("|", 5), None), 21 "|": (5, None, None, ("|", 5), None),
22 "%": (6, None, ("%", 6), None), 22 "%": (6, None, None, ("%", 6), None),
23 ")": (0, None, None, None), 23 ")": (0, None, None, None, None),
24 "integer": (0, ("integer",), None, None), 24 "integer": (0, "integer", None, None, None),
25 "symbol": (0, ("symbol",), None, None), 25 "symbol": (0, "symbol", None, None, None),
26 "string": (0, ("string",), None, None), 26 "string": (0, "string", None, None, None),
27 "template": (0, ("template",), None, None), 27 "template": (0, "template", None, None, None),
28 "end": (0, None, None, None), 28 "end": (0, None, None, None, None),
29 } 29 }
30 30
31 def tokenize(program, start, end): 31 def tokenize(program, start, end):
32 pos = start 32 pos = start
33 while pos < end: 33 while pos < end: