visualstudioでPL0コンパイラを編集しています。if文にelseを追加しましたが、if文の真偽に関わらずelse文が実行されてしまいました。if文が真の時はcase elseは実行されないなどの区別はどうすればよいのでしょうか?
出典 : 田中育男氏のホームページ > コンパイラ > PL0'コンパイラのソースリスト
http://www.k.hosei.ac.jp/~nakata/oCompiler/PL0compiler/prog_proc1.html
http://www.k.hosei.ac.jp/~nakata/oCompiler/PL0compiler/compile.c
case If: //if文のコンパイル
token = nextToken();
condition(); //条件式のコンパイル
token = checkGet(token, Then);
backP = genCodeV(jpc, 0); //jpc命令
statement(); //文のコンパイル
backPatch(backP); //上のjpc命令にバックパッチ
return;
case Else:
token = nextToken();
statement(); //文のコンパイル
return;
回答2件
あなたの回答
tips
プレビュー