Exemple #1
0
        private static void DumpUst(bool isIndentedUst, bool isIncludeTextSpansInUst, WorkflowResult workflowResult)
        {
            var serializer = new JsonUstNodeSerializer(typeof(UstNode), typeof(PatternVarDef))
            {
                Indented         = isIndentedUst,
                IncludeTextSpans = isIncludeTextSpansInUst
            };

            Console.Write(serializer.Serialize(workflowResult.Usts.Select(ust => ust.Root)));
        }
Exemple #2
0
        public void JsonSerialize_PatternWithVar_JsonEqualsToDsl()
        {
            var pwdVar = new PatternVarDef {
                Id = "pwd", Values = new List <Expression>()
                {
                    new PatternIdToken("password")
                }
            };
            var patternNode = new PatternNode
            {
                Vars = new List <PatternVarDef>()
                {
                    pwdVar
                },
                Node = new PatternStatements(
                    new ExpressionStatement
                {
                    Expression = new AssignmentExpression
                    {
                        Left  = new PatternVarRef(pwdVar),
                        Right = new PatternExpression()
                    }
                },
                    new PatternMultipleStatements(),
                    new ExpressionStatement
                {
                    Expression = new InvocationExpression
                    {
                        Target    = new PatternExpression(),
                        Arguments = new PatternExpressions(
                            new PatternMultipleExpressions(),
                            new PatternVarRef(pwdVar),
                            new PatternMultipleExpressions())
                    }
                }
                    )
            };

            var jsonSerializer = new JsonUstNodeSerializer(typeof(UstNode), typeof(PatternVarDef));

            jsonSerializer.Indented         = true;
            jsonSerializer.IncludeTextSpans = false;

            string  json         = jsonSerializer.Serialize(patternNode);
            UstNode nodeFromJson = jsonSerializer.Deserialize(json, LanguageExt.AllPatternLanguages);

            var dslSeializer = new DslProcessor()
            {
                PatternExpressionInsideStatement = false
            };
            var nodeFromDsl = dslSeializer.Deserialize("<[@pwd:password]> = #; ... #(#*, <[@pwd]>, #*);", LanguageExt.AllPatternLanguages);

            Assert.IsTrue(nodeFromJson.Equals(patternNode));
            Assert.IsTrue(nodeFromJson.Equals(nodeFromDsl));
        }
Exemple #3
0
        public Workflow(ISourceCodeRepository sourceCodeRepository, LanguageFlags languages,
                        IPatternsRepository patternsRepository = null, Stage stage = Stage.Match)
            : base(stage)
        {
            SourceCodeRepository = sourceCodeRepository;
            PatternsRepository   = patternsRepository ?? new DefaultPatternRepository();
            ParserConverterSets  = ParserConverterBuilder.GetParserConverterSets(languages);
            UstPatternMatcher    = new BruteForcePatternMatcher();
            IUstNodeSerializer jsonNodeSerializer = new JsonUstNodeSerializer(typeof(UstNode), typeof(PatternVarDef));
            IUstNodeSerializer dslNodeSerializer  = new DslProcessor();

            PatternConverter = new PatternConverter(new IUstNodeSerializer[] { jsonNodeSerializer, dslNodeSerializer });
            Stage            = stage;
            ThreadCount      = 1;
        }