teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

コードの修正

2022/01/10 09:57

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -9,12 +9,13 @@
9
9
  token = nextToken(); // ★
10
10
  if (token == Else) { // ★
11
11
  backP2 = genCodeV(jmp, 0); // ★
12
- backPatch(backP); /* 上のjpc命令にバックパッチ */
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

コードの修正

2022/01/10 09:57

投稿

kazuma-s
kazuma-s

スコア8222

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
- backPatch(backP); /* 上のjpc命令にバックパッチ */
12
+ backPatch(backP); /* 上のjpc命令にバックパッチ */
10
- token = nextToken(); // ★
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
  このコードは適当に書いたもので実際には使えないと思います。