In addition to the simple search the project will start with, we also want an 'expert user' text based query builder that is driven by a parser and the autocomplete system provided by the middleware ( #4 ). While this will in practice be the UI for only the most advanced users, its a smaller work load to build and produces the same output, therefore we can start developing and refining the complex query systems sooner.
[ ] Re-entrant tokenizer. Tokens should supply their start and end position in the stream.
[ ] Re-entrant parser. Parse nodes should supply their start and end positions in the stream
[ ] Parser should fail gracefully and attempt to resume. Ignore as little of the users query as possible.
[ ] Autocomplete popovers.
[ ] Integrate with Middleware to supply autocomplete information, scoped where possible.
In addition to the simple search the project will start with, we also want an 'expert user' text based query builder that is driven by a parser and the autocomplete system provided by the middleware ( #4 ). While this will in practice be the UI for only the most advanced users, its a smaller work load to build and produces the same output, therefore we can start developing and refining the complex query systems sooner.
@brehaut recommends investigating a Top Down Operator Precedence based parsing scheme
https://brehaut.net/media/files/al/textbox-metrics/ may be a starting place for the autocomplete popover (its rough as guts though), and https://brehaut.net/media/files/search-proto/ may be a starting place for the parser and tokenizer. Note: Codemirror is just for the prototype, far too heavy weight for our needs.
Depends on #4, #6