Mercurial > public > mercurial-scm > hg
comparison mercurial/revset.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 | be29d26e2949 |
comparison
equal
deleted
inserted
replaced
25814:dc1a49264628 | 25815:e71e5629e006 |
---|---|
113 if parent in reachable: | 113 if parent in reachable: |
114 reached(rev) | 114 reached(rev) |
115 return baseset(sorted(reachable)) | 115 return baseset(sorted(reachable)) |
116 | 116 |
117 elements = { | 117 elements = { |
118 # token-type: binding-strength, prefix, infix, suffix | 118 # token-type: binding-strength, primary, prefix, infix, suffix |
119 "(": (21, ("group", 1, ")"), ("func", 1, ")"), None), | 119 "(": (21, None, ("group", 1, ")"), ("func", 1, ")"), None), |
120 "##": (20, None, ("_concat", 20), None), | 120 "##": (20, None, None, ("_concat", 20), None), |
121 "~": (18, None, ("ancestor", 18), None), | 121 "~": (18, None, None, ("ancestor", 18), None), |
122 "^": (18, None, ("parent", 18), ("parentpost", 18)), | 122 "^": (18, None, None, ("parent", 18), ("parentpost", 18)), |
123 "-": (5, ("negate", 19), ("minus", 5), None), | 123 "-": (5, None, ("negate", 19), ("minus", 5), None), |
124 "::": (17, ("dagrangepre", 17), ("dagrange", 17), | 124 "::": (17, None, ("dagrangepre", 17), ("dagrange", 17), |
125 ("dagrangepost", 17)), | 125 ("dagrangepost", 17)), |
126 "..": (17, ("dagrangepre", 17), ("dagrange", 17), | 126 "..": (17, None, ("dagrangepre", 17), ("dagrange", 17), |
127 ("dagrangepost", 17)), | 127 ("dagrangepost", 17)), |
128 ":": (15, ("rangepre", 15), ("range", 15), ("rangepost", 15)), | 128 ":": (15, None, ("rangepre", 15), ("range", 15), ("rangepost", 15)), |
129 "not": (10, ("not", 10), None, None), | 129 "not": (10, None, ("not", 10), None, None), |
130 "!": (10, ("not", 10), None, None), | 130 "!": (10, None, ("not", 10), None, None), |
131 "and": (5, None, ("and", 5), None), | 131 "and": (5, None, None, ("and", 5), None), |
132 "&": (5, None, ("and", 5), None), | 132 "&": (5, None, None, ("and", 5), None), |
133 "%": (5, None, ("only", 5), ("onlypost", 5)), | 133 "%": (5, None, None, ("only", 5), ("onlypost", 5)), |
134 "or": (4, None, ("or", 4), None), | 134 "or": (4, None, None, ("or", 4), None), |
135 "|": (4, None, ("or", 4), None), | 135 "|": (4, None, None, ("or", 4), None), |
136 "+": (4, None, ("or", 4), None), | 136 "+": (4, None, None, ("or", 4), None), |
137 "=": (3, None, ("keyvalue", 3), None), | 137 "=": (3, None, None, ("keyvalue", 3), None), |
138 ",": (2, None, ("list", 2), None), | 138 ",": (2, None, None, ("list", 2), None), |
139 ")": (0, None, None, None), | 139 ")": (0, None, None, None, None), |
140 "symbol": (0, ("symbol",), None, None), | 140 "symbol": (0, "symbol", None, None, None), |
141 "string": (0, ("string",), None, None), | 141 "string": (0, "string", None, None, None), |
142 "end": (0, None, None, None), | 142 "end": (0, None, None, None, None), |
143 } | 143 } |
144 | 144 |
145 keywords = set(['and', 'or', 'not']) | 145 keywords = set(['and', 'or', 'not']) |
146 | 146 |
147 # default set of valid characters for the initial letter of symbols | 147 # default set of valid characters for the initial letter of symbols |