constructor(_config = defaultConfig) {
        this._config = _config;
        // lifetime note: `_scanner` lives as long as the parser does, i.e., is not reset between calls to `parse`
        this._scanner = new Scanner();
        // lifetime note: `_tokens`, `_current`, and `_parsingErrors` must be reset between calls to `parse`
        this._tokens = [];
        this._current = 0; // invariant: 0 <= this._current < this._tokens.length ; any incrementation of this value must first call `_isAtEnd`
        this._parsingErrors = [];
        this._flagsGYRe = /g|y/g;
    }
A parser for context key expressions.

Example:
```ts
const parser = new Parser();
const expr = parser.parse('foo == "bar" && baz == true');

if (expr === undefined) {
	// there were lexing or parsing errors
	// process lexing errors with `parser.lexingErrors`
 // process parsing errors with `parser.parsingErrors`
} else {
	// expr is a valid expression
}
```