How token-driven parsing works
devToken-driven parsing provides more precise error messages (e.g., reporting an unexpected identifier instead of an unexpected character). It involves two distinct steps:
- Tokenization: Using a class derived from
Tokenizer<TKind>to split input into a list of tagged tokens (usually defined by anenum). - Parsing: Using a
TokenListParser<TKind>to consume the list of tokens.
This approach allows errors to be reported in terms of high-level tokens rather than individual characters.
var expression = "1 * (2 + 3)";
// 1. Tokenization
var tokenizer = new ArithmeticExpressionTokenizer();
var tokenList = tokenizer.Tokenize(expression);
// 2. Parsing
var parser = ArithmeticExpressionParser.Lambda;
var expressionTree = parser.Parse(tokenList);