Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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;
            }
        }