回答編集履歴
2
追記2
answer
CHANGED
@@ -9,4 +9,12 @@
|
|
9
9
|
```
|
10
10
|
**追記**
|
11
11
|
質問とは無関係ですが、質問の yacc ファイルだと
|
12
|
-
`print 2 - 3 * 4;` が -10 ではなく、-4 になります。
|
12
|
+
`print 2 - 3 * 4;` が -10 ではなく、-4 になります。
|
13
|
+
|
14
|
+
**追記2**
|
15
|
+
`printf(".Lprompt%d: .string \"%s> \"\n", ++k, stab[ntab[i].left].name);`
|
16
|
+
|
17
|
+
ntab[i].type が T_READ のとき、ntab[i].left には変数の番号が入っています。
|
18
|
+
変数の番号とは、stab[] に変数名を登録した時の番号です。
|
19
|
+
したがって、stab[ntab[i].left].name は変数名です。
|
20
|
+
printf は分かりますよね。
|
1
追記
answer
CHANGED
@@ -6,4 +6,7 @@
|
|
6
6
|
+ printf(".Lprompt%d: .string \"%s> \"\n", ++k, stab[ntab[i].left].name);
|
7
7
|
+ printf(" .text\n");
|
8
8
|
+ printf(" movq $.Lprompt%d,%%rdi\n", k);
|
9
|
-
```
|
9
|
+
```
|
10
|
+
**追記**
|
11
|
+
質問とは無関係ですが、質問の yacc ファイルだと
|
12
|
+
`print 2 - 3 * 4;` が -10 ではなく、-4 になります。
|