Beispiel #1
0
        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;
        }
Beispiel #2
0
        public static BinaryFileSchema CheckBfs(BinaryFileSchema schema, IBfsErrorHandler errorHandler)
        {
            handler = errorHandler;

            IPhase[] phases = new IPhase[] {
                new Environments(),
                new TypeLinking(),
                new Hierarchy(),
                new TypeChecking(),
                new DefiniteAssignment()
            };

            gotError = false;

            foreach (IPhase phase in phases)
            {
                phase.Check(schema);

                if (gotError && errorHandler != null)
                {
                    errorHandler.HandleMessage("Schema has errors. Compilation stopped.");
                    return null;
                }
            }

            return schema;
        }
 public StreamErrorHandler(IBfsErrorHandler errorhandler)
     : base(CultureInfo.InvariantCulture)
 {
     this.errorhandler = errorhandler;
 }
Beispiel #4
0
 public static BinaryFileSchema ParseBfs(string source, IBfsErrorHandler errorHandler)
 {
     return ParseBfs(new BinaryFileSchema(), source, errorHandler);
 }
Beispiel #5
0
 public BinaryFileSchema(string filename, IBfsErrorHandler errorHandler)
     : this()
 {
     StreamReader reader = new StreamReader(filename);
     BfsCompiler.ParseBfs(this,reader.ReadToEnd(), errorHandler);
 }