visualstudioでPL0コンパイラを編集しています。pl'0で新しくswich文を使用できるようにしようと思いコンパイラ編集したのですが、どのようにコードを書けば実装できるか見当がつきませんでした。特にswitchの後の式の値とcaseの後の値の比較の仕方がわかりません。わかる方いましたら教えていただきたいです。なおgetSourceファイルcファイル、headerファイルにはswitch,case共に記述してあります。
出典 : 田中育男氏のホームページ > コンパイラ > 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 switch: //switch文のコンパイル
token = nextToken();
expression(); //式のコンパイル
token = nextToken();
backP2 = nextCode(); //break文がない時の飛び先
token = checkGet(token, Case);
statment();
token = checkGet(token, Assign);
if(token.kind == Break){
backP = genCodeV(jpc,0);
}
else{
genCodeV(jmp,backP2);
}
実行するpl'0ファイル
function multiply(x,y)
var a,b,c;
begin
a:=x; b:=y; c:=0;
switch a+1
begin
case 1: c:=a+b; break;
case 2: c:=a-b; break;
end;
return c; end;
const m=1,n=2;
var x,y;
begin
x:=m y:=n;
writeln; write multiply(x,y); writeln
end;
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。