|
「パターンマッチングのための データフローグラフ抽出器の実装」 |
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文の連続しているものが多かった。