resolve method
Implementation
void resolve(List<ProductionRule> rules) {
_errors.clear();
for (var rule in rules) {
final expression = rule.expression;
expression.accept(this);
}
if (_errors.isNotEmpty) {
final sink = StringBuffer();
for (final error in _errors) {
final parent = error.parent;
final child = error.child;
final cause = error.cause;
final effect = error.effect;
sink.writeln('Expression errors:');
sink.write('Rule: ');
sink.writeln(parent.rule!.name);
if (child == null) {
sink.write('Expression: ');
} else {
sink.write('Parent: ');
}
sink.writeln(parent);
if (child != null) {
sink.write('Child: ');
sink.writeln(child);
}
sink.write('Cause: ');
sink.writeln(cause);
sink.write('Effect: ');
sink.writeln(effect);
throw FormatException(sink.toString());
}
}
}