/// <summary> /// /// </summary> public CryslResult CryslToCSharpBuilder() { /*string[] cryslFilePath = { Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.Parent.Parent.FullName, @".//CryslParser//CryslObjectBuilder//CryslFiles//AES.crysl" }; * string text = System.IO.File.ReadAllText(Path.Combine(cryslFilePath));*/ string text = System.IO.File.ReadAllText("D:\\Master Thesis\\CodeSharpenerCryptoAnalysis\\CryslParser\\CryslObjectBuilder\\CryslFiles\\AES.crysl"); ICharStream stream = CharStreams.fromstring(text); CryslResult cryslResult = new CryslResult(); CryslGrammarLexer lexer = new CryslGrammarLexer(stream); CommonTokenStream tokens = new CommonTokenStream(lexer); CryslGrammarParser parser = new CryslGrammarParser(tokens); VerboseErrorListener errorListener = new VerboseErrorListener(); parser.RemoveErrorListeners(); parser.AddErrorListener(errorListener); parser.BuildParseTree = true; IParseTree tree = parser.cryslsection(); if (errorListener.errorMessageModel.ErrorMessage == null) { ICryslGrammarVisitor <object> visitor = serviceProvider.GetService <ICryslGrammarVisitor <object> >(); CryslJsonModel result = (CryslJsonModel)visitor.Visit(tree); cryslResult.CryslModel = result; IValidator objectValidator = serviceProvider.GetService <IValidator>(); ValidationResult validationResult = objectValidator.Validate(result); if (!validationResult.IsValid) { cryslResult.ValidationErrors = validationResult.Errors; cryslResult.IsValid = validationResult.IsValid; } else { cryslResult.IsValid = true; } } else { cryslResult.SyntaxErrors = errorListener.errorMessageModel; cryslResult.IsValid = false; } return(cryslResult); }
public override void Initialize(AnalysisContext context) { var services = new ServiceCollection(); services.AddTransient <ICommonUtilities, CommonUtilities>(); services.AddTransient <IEventSectionAnalyzer, EventsSectionAnalyzer>(); services.AddTransient <IConstraintsSectionAnalyzer, ConstraintsSectionAnalyzer>(); services.AddTransient <IOrderSectionAnalyzer, OrderSectionAnalyzer>(); services.AddTransient <ICryslObjectBuilder, CryslObjectBuilder>(); serviceProvider = services.BuildServiceProvider(); ICryslObjectBuilder cSharpObjectBuilder = serviceProvider.GetService <ICryslObjectBuilder>(); CryslResult cryslCompilationModel = cSharpObjectBuilder.CryslToCSharpBuilder(); if (cryslCompilationModel.IsValid) { InitializeContext(context, cryslCompilationModel.CryslModel); } else { return; } }