ハロー、
Lex/Yacc プログラミングのヘルプが必要です。多くのステートメントの入力に対する構文解析用のコンパイラを作成しました。今、私は特別な問題を抱えています。
入力の場合、コンパイラは正しい出力を提供します。どのステートメントが使用されているか、定数演算子または jmp インストラクターがどのラベルに使用されているか、今度はそう書く必要があります。if ステートメントが来たら、最初のコマンド (else の前) if の割り当てが yes の場合は、最後までジャンプする必要があります。else の後のコマンドは必要ないため、この jmp の後に 2 番目のコマンドを発行する必要があります。例で示しますが、私の言いたいことがわかるかもしれません。
入力アドレス 出力
if(x==0) 10 if(x==0)
Wait 5 20 WAIT 5
else 30 JMP 50
Wait 1 40 WAIT 1
end 50 END
そのようです。私にはアイデアがあります。おそらく、次のような特別なifステートメントでそれを行うことができます
IF exp jmp_stmt_end stmt_seq END
入力に if ステートメントが指定されている場合、コンパイラーはステートメントの終わりを認識し、私のコンパイラーの jmp_stmt のように ( http://bitbucket.org/matrix/changed-tinyからファイルをダウンロードする必要があります)、ジャンプするだけである必要があります。最後まで。私の問題を理解していただければ幸いです。ありがとうございます。