Exemple #1
0
        static public ParserNode Parse(string data, ParserType parserType, bool strict)
        {
            switch (parserType)
            {
            case ParserType.Balanced: return(BalancedVisitor.Parse(data, strict));

            case ParserType.Columns: return(ColumnsVisitor.Parse(data, strict));

            case ParserType.CSharp: return(CSharpVisitor.Parse(data, strict));

            case ParserType.CSV: return(CSVVisitor.Parse(data, strict));

            case ParserType.ExactColumns: return(ExactColumnsVisitor.Parse(data, strict));

            case ParserType.HTML: return(HTMLVisitor.Parse(data, strict));

            case ParserType.JSON: return(JSONVisitor.Parse(data, strict));

            case ParserType.SQL: return(SQLVisitor.Parse(data, strict));

            case ParserType.TSV: return(TSVVisitor.Parse(data, strict));

            case ParserType.XML: return(XMLVisitor.Parse(data, strict));

            default: throw new ArgumentException("Unable to parse this type");
            }
        }
        public CSharpObjectCollection AnalyzeFiles(IEnumerable <string> files)
        {
            var visitor = new CSharpVisitor();
            var coll    = new CSharpObjectCollection();

            // Pass 1 - add all classes and interfaces found in the files.
            visitor.HandleClass = c =>
            {
                var name = c.Identifier.ToString();
                coll.AddClass(name);
                log?.Invoke($"Class: {name}");
            };
            visitor.HandleInterface = i =>
            {
                var name = i.Identifier.ToString();
                coll.AddInterface(name);
                log?.Invoke($"Interface: {name}");
            };
            foreach (var file in files)
            {
                visitor.Visit(file);
            }

            // Pass 2 - handle extension and composition for all classes found in the files.
            visitor.HandleClass     = c => DetermineExtensionAndComposition(c, coll);
            visitor.HandleInterface = null;
            foreach (var file in files)
            {
                visitor.Visit(file);
            }

            return(coll);
        }
Exemple #3
0
    static void Parse(FileInfo file)
    {
        if (file.Exists)
        {
            lexer = new Lexer(new FileReader(file.FullName));
            p.Parse(lexer);
            CSharpVisitor v = new CSharpVisitor();
            v.Visit(p.compilationUnit, null);
            v.Cu.ErrorsDuringCompile = p.Errors.count > 0;
            if (v.Cu.ErrorsDuringCompile)
            {
                Console.WriteLine("errors in parsing " + file.FullName);
                errors++;
            }
            else
            {
                counter++;
            }

            foreach (ErrorInfo error in p.Errors.ErrorInformation)
            {
                Console.WriteLine(error.ToString());
            }
        }
    }
Exemple #4
0
        static internal string Uncomment(ParserType type, TextData data, Range range)
        {
            switch (type)
            {
            case ParserType.CSharp: return(CSharpVisitor.Uncomment(data, range));

            case ParserType.HTML:
            case ParserType.XML:
                return(HTMLVisitor.Uncomment(data, range));

            default: throw new Exception("Cannot comment this content type");
            }
        }
        // ========================================================================
        // Methods

        #region === Methods

        /// <summary>
        /// Applies the config.
        /// </summary>
        /// <param name="visitor">The visitor to configure.</param>
        public override void Apply(IVisitor visitor)
        {
            CSharp.CreateAttributes = CreateAttributes;
            CSharp.UseNamespaces    = UseNamespaces;
            CSharp.KnownNamespaces  = KnownNamespaces;

            CSharpVisitor csVisitor = visitor as CSharpVisitor;

            if (csVisitor != null)
            {
                csVisitor.NewLineAfterMember = newLineAfterMember;
                csVisitor.NewLineAfterType   = newLineAfterType;
                csVisitor.KnownNamespaces    = KnownNamespaces;
            }
        }
        public void BasicClass()
        {
            var code = @"

alias Name = String;

type Person =
    FirstName: Name;
    LastName: String;
    
";

            var generator = new ASTGenerator(code, "MyModule");

            Assert.Empty(generator.Errors);

            var csharpVisitor = new CSharpVisitor(generator);

            csharpVisitor.Start().ToList();
            var cscode = csharpVisitor.ToString();

            Assert.NotNull(cscode);
        }
Exemple #7
0
 public void Run_this_before_each_test()
 {
     visitor = new CSharpVisitor();
 }