javacc インタープリターを作成する方法、特に以前に生成された AST ツリーからシンボル テーブルを作成する方法について、かなり混乱しています。
このASTから、このようなもの:
> Program
> Id
> Id
> Id
> VarDecl
> Type
> Id
> Stl
> Id
> NewInt
> IntLit
> Sta
> Id
> IntLit
> ParseArgs
> Id
> IntLit
> Sta
> Id
> IntLit
> ParseArgs
> Id
> IntLit
(…)
このテーブルへ
=== Symbol table ===
Name Type Init Values
---- ---- ---- ------
args args[] true 2 12 8
x int[] true 2 4 0
たとえば、この入力で
class gcd {
public static void main(String[] args) {
int[] x;
x = new int[2];
x[0] = Integer.parseInt(args[0]);
x[1] = Integer.parseInt(args[1]);
if (x[0] == 0)
System.out.println(x[1]);
else
while (x[1] > 0) {
if (x[0] > x[1])
x[0] = x[0] - x[1];
else
x[1] = x[1] - x[0];
}
System.out.println(x[0]);
}
}
私が今持っているものは、ASTを作成するだけです。
私の大きな問題は、ツリー上のタイプを 1 つずつ定義して比較する方法です。
理論を含め、どんな助けも素晴らしいでしょう。
ありがとう。