lexer function
Primary lexing function for this library
Implementation
Parser<FhirPathParser> lexer() {
final lexerFunctions = undefined();
final lexerParentheses = undefined();
/// The order of lexing is important, and if/when updated, needs
/// to be taken into account in order for petiteparser to find
/// patterns in the correct order
final tokenizer = simpleLexer |
lexerFunctions |
lexerParentheses |
wordOperationLexer |
wsLexer |
symbolOperationLexer |
specialLexer |
literalLexer;
/// Calls the operatorValues function to check if any arguments need
/// to be passed to the current Parser
lexerFunctions.set((functionLexer & tokenizer.star() & char(')')).map((val) {
return val[0].copyWith(operatorValues(val[1] as List));
}));
/// Calls the operatorValues function to check if any arguments need
/// to be passed to the current ParenthesesParser
lexerParentheses.set((char('(') & tokenizer.star() & char(')'))
.map((value) => ParenthesesParser(operatorValues(value[1] as List))));
/// Complete the lexing and again, passes to operatorValues
return tokenizer.plus().end().map((value) => operatorValues(value));
}