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

質問編集履歴

2

誤字の修正

2021/07/21 08:30

投稿

Rauto
Rauto

スコア2

title CHANGED
File without changes
body CHANGED
@@ -30,8 +30,6 @@
30
30
  digit [0-9]
31
31
  white [\n\t ]
32
32
  %%
33
- dowhile { return DOWHILE; }
34
- while { return WHILE; }
35
33
  if { return IF; }
36
34
  read { return READ; }
37
35
  print { return PRINT; }
@@ -58,8 +56,6 @@
58
56
  stat : var '=' expr ';' { $$ = node(T_ASSIGN, $1, $3); }
59
57
  | READ var ';' { $$ = node(T_READ, $2, 0); }
60
58
  |PRINT expr ';' { $$ = node(T_PRINT, $2, 0); }
61
- |WHILE '(' log ')' stat { $$ = node(T_WHILE, $3, $5); }
62
- |DOWHILE '(' log ')' stat { $$ = node(T_DOWHILE, $3, $5); }
63
59
  |IF '(' log ')' stat { $$ = node(T_IF, $3, $5); }
64
60
  | '{' stlist '}' { $$ = $2; }
65
61
  ;
@@ -114,11 +110,9 @@
114
110
  #define T_REM 9
115
111
  #define T_NUM 10
116
112
  #define T_VAR 11
117
- #define T_WHILE 12
118
113
  #define T_IF 13
119
114
  #define T_LT 14
120
115
  #define T_GT 15
121
- #define T_DOWHILE 16
122
116
  #define T_AND 17 /*ANDを追加*/
123
117
 
124
118
  int lookup(char*);
@@ -282,24 +276,9 @@
282
276
  emittree(ntab[i].right);
283
277
  printf(".L%d:\n", l);
284
278
  break;
285
- case T_WHILE: l = labelno; labelno+=2;
286
- printf(".L%d:\n", l);
287
- emittree(ntab[i].left);
288
- printf(".L%d\n", l+1);
289
- emittree(ntab[i].right);
290
- printf(" jmp .L%d\n", l);
291
- printf(".L%d:\n", l+1);
292
- break;
293
- case T_DOWHILE:l = labelno; labelno+=2;
294
- printf(".L%d:\n", l);
295
- emittree(ntab[i].right);
296
- emittree(ntab[i].left);
297
- printf(".L%d\n", l+1);
298
- printf(" jmp .L%d\n", l);
299
- printf(".L%d:\n", l+1);
300
- break;
301
279
 
302
280
 
281
+
303
282
  default: printf("NotImplemented: %d\n", ntab[i].type);
304
283
  break;
305
284
 

1

タグの追加

2021/07/21 08:30

投稿

Rauto
Rauto

スコア2

title CHANGED
@@ -1,1 +1,1 @@
1
- 自作コンパイラの論理積の実現
1
+ 自作コンパイラの論理積の実現で構文エラーが出る
body CHANGED
File without changes