131 "&": (5, None, ("and", 5)), |
131 "&": (5, None, ("and", 5)), |
132 "%": (5, None, ("only", 5), ("onlypost", 5)), |
132 "%": (5, None, ("only", 5), ("onlypost", 5)), |
133 "or": (4, None, ("or", 4)), |
133 "or": (4, None, ("or", 4)), |
134 "|": (4, None, ("or", 4)), |
134 "|": (4, None, ("or", 4)), |
135 "+": (4, None, ("or", 4)), |
135 "+": (4, None, ("or", 4)), |
|
136 "=": (3, None, ("keyvalue", 3)), |
136 ",": (2, None, ("list", 2)), |
137 ",": (2, None, ("list", 2)), |
137 ")": (0, None, None), |
138 ")": (0, None, None), |
138 "symbol": (0, ("symbol",), None), |
139 "symbol": (0, ("symbol",), None), |
139 "string": (0, ("string",), None), |
140 "string": (0, ("string",), None), |
140 "end": (0, None, None), |
141 "end": (0, None, None), |
188 yield ('..', None, pos) |
189 yield ('..', None, pos) |
189 pos += 1 # skip ahead |
190 pos += 1 # skip ahead |
190 elif c == '#' and program[pos:pos + 2] == '##': # look ahead carefully |
191 elif c == '#' and program[pos:pos + 2] == '##': # look ahead carefully |
191 yield ('##', None, pos) |
192 yield ('##', None, pos) |
192 pos += 1 # skip ahead |
193 pos += 1 # skip ahead |
193 elif c in "():,-|&+!~^%": # handle simple operators |
194 elif c in "():=,-|&+!~^%": # handle simple operators |
194 yield (c, None, pos) |
195 yield (c, None, pos) |
195 elif (c in '"\'' or c == 'r' and |
196 elif (c in '"\'' or c == 'r' and |
196 program[pos:pos + 2] in ("r'", 'r"')): # handle quoted strings |
197 program[pos:pos + 2] in ("r'", 'r"')): # handle quoted strings |
197 if c == 'r': |
198 if c == 'r': |
198 pos += 1 |
199 pos += 1 |
385 def notset(repo, subset, x): |
386 def notset(repo, subset, x): |
386 return subset - getset(repo, subset, x) |
387 return subset - getset(repo, subset, x) |
387 |
388 |
388 def listset(repo, subset, a, b): |
389 def listset(repo, subset, a, b): |
389 raise error.ParseError(_("can't use a list in this context")) |
390 raise error.ParseError(_("can't use a list in this context")) |
|
391 |
|
392 def keyvaluepair(repo, subset, k, v): |
|
393 raise error.ParseError(_("can't use a key-value pair in this context")) |
390 |
394 |
391 def func(repo, subset, a, b): |
395 def func(repo, subset, a, b): |
392 if a[0] == 'symbol' and a[1] in symbols: |
396 if a[0] == 'symbol' and a[1] in symbols: |
393 return symbols[a[1]](repo, subset, b) |
397 return symbols[a[1]](repo, subset, b) |
394 |
398 |