feat(wpcarro/simple-select): support tokenizer for query language
Support a tokenizer for a query language that looks like: ``` -fname:/W.*m/ lname:"Von Carroll" ``` Parser otw... Change-Id: I2badf14a41313ca2f75dec20adbcf9031b22ab83 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5338 Reviewed-by: wpcarro <wpcarro@gmail.com> Autosubmit: wpcarro <wpcarro@gmail.com> Tested-by: BuildkiteCI
This commit is contained in:
parent
7770ccf0e3
commit
88a3051ae5
2 changed files with 88 additions and 5 deletions
|
|
@ -2,15 +2,15 @@
|
|||
# scanner/lexer needs are peek and advance; other functions (e.g. match) are
|
||||
# nice-to-haves.
|
||||
class Scanner(object):
|
||||
def __init__(self, source):
|
||||
def __init__(self, chars):
|
||||
self.i = 0
|
||||
self.source = source
|
||||
self.chars = chars
|
||||
|
||||
def exhausted(self):
|
||||
return self.i >= len(self.source)
|
||||
return self.i >= len(self.chars)
|
||||
|
||||
def peek(self, n=0):
|
||||
return self.source[self.i + n] if self.i + n < len(self.source) else '\0'
|
||||
return self.chars[self.i + n] if self.i in range(0, len(self.chars)) else '\0'
|
||||
|
||||
def advance(self):
|
||||
result = self.peek()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue