public static BinaryFileSchema ParseBfs(BinaryFileSchema schema, string source, IBfsErrorHandler errorHandler)
{
gotError = false;
handler = errorHandler;
BinaryFileSchemaParser.BinaryFileSchemaParser parser = new BinaryFileSchemaParser.BinaryFileSchemaParser();
parser.Construct(source, new StreamErrorHandler(errorHandler) );
bool matches = false;
try
{
matches = parser.bfschema();
}
catch (PegException ex)
{
errorHandler.HandleMessage(ex.Message);
}
if (!matches)
{
ReportMessage("Schema didn't parse.");
return null;
}
AstConvert converter = new AstConvert(schema,source);
schema = converter.GetBFSTree(parser.GetRoot());
schema = CheckBfs(schema,errorHandler);
return schema;
}