parse method
Implementation
dynamic parse(String? preInput, String? preStartRule) {
input = preInput ?? '';
startRule = preStartRule;
final parseFunctions = {
'fragment': _parseFragment,
'range': _parseRange,
'path': _parsePath,
'local_path': _parseLocalPath,
'indexStep': _parseIndexStep,
'indirectionStep': _parseIndirectionStep,
'terminus': _parseTerminus,
'idAssertion': _parseIdAssertion,
'textLocationAssertion': _parseTextLocationAssertion,
'parameter': _parseParameter,
'csv': _parseCsv,
'valueNoSpace': _parseValueNoSpace,
'value': _parseValue,
'escapedSpecialChars': _parseEscapedSpecialChars,
'number': _parseNumber,
'integer': _parseInteger,
'space': _parseSpace,
'circumflex': _parseCircumflex,
'doubleQuote': _parseDoubleQuote,
'squareBracket': _parseSquareBracket,
'parentheses': _parseParentheses,
'comma': _parseComma,
'semicolon': _parseSemicolon,
'equal': _parseEqual,
'character': _parseCharacter
};
if (startRule != null) {
if (parseFunctions[startRule!] == null) {
throw Exception('Invalid rule name: ${quote(startRule!)}.');
}
} else {
startRule = 'fragment';
}
final result = parseFunctions[startRule!]!();
if (result == null || pos != input.length) {
final offset = max(pos, rightmostFailuresPos);
final found = offset < input.length ? input[offset] : null;
final errorPosition = _computeErrorPosition();
throw CfiSyntaxException(
_cleanupExpected(rightmostFailuresExpected),
found,
offset,
errorPosition.line,
errorPosition.column,
);
}
return result;
}