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