parsePrefix method
Implementation
ParseResult parsePrefix(String input, { TypeChecker? typeChecker}) {
final result = parser.expression.parse(input);
if (result is Success<Expression>) {
var complete = result.position == result.buffer.length;
// check types
var valid = true;
var message = "";
if (typeChecker != null) {
var expr = result.value;
var context = ClassTypeCheckerContext();
try {
expr.accept(typeChecker, context);
valid = context.validPrefix();
if (!valid)
message = "unknown property ${context.unknown[0].property}";
complete = context.unknown.isEmpty;
}
catch(e) {
valid = false;
message = e.toString();
}
}
// done
if (valid)
return ParseResult.success(result.value, complete: complete);
else
return ParseResult.failure(message, result.position);
}
return ParseResult.failure(result.message, result.position);
}