Data Flow Source Code Analyzer Developer at , Objective-C → Swi Source Code Converter Active Contributor on GitHub: Tech Article Writer at and other blogs Positive Technologies Swi ify KvanTTT habr.com 2
a single character that is contained within the brackets. [^ ] - Matches a single character that is not contained within the brackets. ? - Optional symbol * - Zero or more occurrences. ab*c matches ac, abc, abbc + - One or more occurrences. | - Or. gray|grey can match gray or grey. 5
Graph Graph a a 1,0 1 a 0,0 2 b b 0,0 b 0,1 a + 42 42 c c b * 17 17 if (cond) a = 1; // a - def else a = 2; // a - def b = a + 42; // b - def (2), a - use (2) c = b; // b – use, c - def c = b * 17; // b – def, c – use 22
Data Flow DSL = Parse Tree DSL + Additional Syntax Flow operator: a ← b Flow variable: a: <[regex]> Type identifier: <[[fully.qualified.name]]> Flow negation: <~> a k = b; c = k + 42; a = c 26
Overrides resolving Add(int x, int y) => x + y; Add(string x, string y) => string.Concat(x, y); ... Add(x, 2); // Static resolving succeeded: first method. Add(x, y); // Static resolving failed. if (cond) x = new A(); else x = new B(); Console.WriteLine(x.ToString()); // x ∈ A ∪ B 33