回答編集履歴
2
コードの修正
answer
CHANGED
@@ -9,12 +9,13 @@
|
|
9
9
|
token = nextToken(); // ★
|
10
10
|
if (token == Else) { // ★
|
11
11
|
backP2 = genCodeV(jmp, 0); // ★
|
12
|
-
backPatch(backP);
|
12
|
+
backPatch(backP); // ★
|
13
13
|
token = nextToken(); // ★
|
14
14
|
statement(); // ★
|
15
|
+
backPatch(backP2); // ★
|
15
16
|
} // ★
|
16
17
|
else // ★
|
17
|
-
backPatch(backP);
|
18
|
+
backPatch(backP); /* 上のjpc命令にバックパッチ */
|
18
19
|
return;
|
19
20
|
```
|
20
21
|
このコードは適当に書いたもので実際には使えないと思います。
|
1
コードの修正
answer
CHANGED
@@ -6,12 +6,15 @@
|
|
6
6
|
token = checkGet(token, Then); /* "then"のはず */
|
7
7
|
backP = genCodeV(jpc, 0); /* jpc命令 */
|
8
8
|
statement(); /* 文のコンパイル */
|
9
|
+
token = nextToken(); // ★
|
10
|
+
if (token == Else) { // ★
|
11
|
+
backP2 = genCodeV(jmp, 0); // ★
|
9
|
-
|
12
|
+
backPatch(backP); /* 上のjpc命令にバックパッチ */
|
10
|
-
|
13
|
+
token = nextToken(); // ★
|
11
|
-
if (token == Else) { // ★
|
12
|
-
token = nextToken(); // ★
|
13
|
-
statement();
|
14
|
+
statement(); // ★
|
14
|
-
}
|
15
|
+
} // ★
|
16
|
+
else // ★
|
17
|
+
backPatch(backP); // ★
|
15
18
|
return;
|
16
19
|
```
|
17
20
|
このコードは適当に書いたもので実際には使えないと思います。
|