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

回答編集履歴

2

追記2

2022/08/01 14:15

投稿

kazuma-s
kazuma-s

スコア8222

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

追記

2022/07/21 13:31

投稿

kazuma-s
kazuma-s

スコア8222

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 になります。