Example #1
0
        /**
         * Parse in the “file” context defined in the language specification.
         */
        public System.Type ParseFile(ErrorCollector collector, CompilationUnit unit, string type_name)
        {
            file result;
            var  position = new ParserPosition(this, collector);

            if (file.ParseRule_Base(ref position, out result) && position.Finished)
            {
                if (result.Analyse(collector))
                {
                    return(unit.CreateRootGenerator(result, type_name, generator => result.Generate(generator, generator.Return)));
                }
            }
            else
            {
                collector.ReportParseError(FileName, Index, Row, Column, Message);
            }
            return(null);
        }
Example #2
0
        public XmlDocument DocumentFile(ErrorCollector collector, string lib_name, string github)
        {
            file result;
            var  position = new ParserPosition(this, collector);

            if (file.ParseRule_Base(ref position, out result) && position.Finished)
            {
                if (result.Analyse(collector))
                {
                    var api = ApiGenerator.Create(lib_name, github);
                    result.GenerateApi(api, true);
                    return(api.Document);
                }
            }
            else
            {
                collector.ReportParseError(FileName, Index, Row, Column, Message);
            }
            return(null);
        }
Example #3
0
        /**
         * Parse in the “repl” context defined in the language specification.
         */
        public System.Type ParseRepl(ErrorCollector collector, CompilationUnit unit, string type_name)
        {
            repl result;
            var  position = new ParserPosition(this, collector);

            if (repl.ParseRule_Base(ref position, out result) && position.Finished)
            {
                if (result.Analyse(collector))
                {
                    return(unit.CreateReplGenerator(result, type_name,
                                                    (generator, root, current, update_current, escape_value, print_value) =>
                                                    result.Generate(generator, root, current, update_current, escape_value, print_value,
                                                                    generator.Return)));
                }
            }
            else
            {
                collector.ReportParseError(FileName, Index, Row, Column, Message);
            }
            return(null);
        }
Example #4
0
 internal void NameConstraint(string name)
 {
     error_collector.ReportParseError(Parser.FileName, Index, Row, Column, "The name " + name + " is already in use in this context.");
 }