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); }
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()); } } }
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); }
public void Run_this_before_each_test() { visitor = new CSharpVisitor(); }