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))); }
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)); }
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; }