visualstudioでPL0コンパイラを編集しています。pl'0で新しくswich文を使用できるようにしようと思いコンパイラ編集しています。現在は下記のようにプログラムを変更したのですが、値が一致している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:
token = nextToken();
expression(); /式のコンパイル/
a = genCodeR();
backP2 = nextCode();
token = checkGet(token, Case );
token = nextToken();
expression();
b = genCodeR();
if (a == b) {
token = nextToken();
statement();
}
else {
token = nextToken();
genCodeV(jmp, backP2);
}
if (token.kind == Ret) {
statement();
return;
}
else {
token = nextToken();
}
実行するpl'0ファイル
function multiply(x,y)
var a,b,c;
begin
a:=x; b:=y; c:=0;
switch a+1
case 1; c:=a+b;
case 2; c:=a-b;
return c;
end;
const m=1,n=2;
var x,y;
begin
x:=m; y:=n;
writeln; write multiply(x,y); writeln
end.
現在のエラー状況
回答1件
あなたの回答
tips
プレビュー