「パターンマッチングのための データフローグラフ抽出器の実装」 |
a = 100; b = 2; c = a + b; d = a * c; ...
if (c == 1) { b = b - 100; a1 = a1 + 1; } else if (c == 2) { b = b - 300; a2 = a2 + 1; } else ...
b
の役割は何か?
if (choice == 1) { money = money - 100; item1 = item1 + 1; } else if (choice == 2) { money = money - 300; item2 = item2 + 1; } else ...
money
: あらゆる商品と交換が可能。
if (x) { y = y - 1; } if (y == 0) { g(); } ...
y
の役割は何か?
if (hit) { life = life - 1; } if (life == 0) { gameover(); } ...
life
: 攻撃を受けるたびに減る。pow(x, y) { z = 1; while (0 < y) { z *= x; y -= 1; } return z; }
if (c == 1) { b = b - 10 a1 = a1 + } else if (c = ...
int a, b; a = a + 2; b = b - a; ...
if (x) { A; } else { B; }
while (x) { P; }
break/continue/return
の表現{ ... P; return x; ... }
try ... catch
の表現 (未完)try ... catch
: Monad として実現。
try { P; } catch (e) { Q; }
10000グラフ × 4117786グラフに対してマッチング:
一致ノード数 | 見つかったペアの数 |
---|---|
100個以上〜 | 65 |
50個以上〜 | 100 |
40個以上〜 | 437 |
30個以上〜 | 2,858 |
20個以上〜 | 20,211 |
10 | 131,320 |
9 | 237,161 |
8 | 528,531 |
7 | 897,196 |
Total | 2,113,970 |
case
文の連続しているものが多かった。