0
関数実装についてアドバイスください。
ここで質問するような内容じゃないのかもしれませんが、意味解析などでJavaコードを使っていることもあってここでさせてください。
プログラミング言語を作ろうとしていて、今関数部分を作っているところです。
今プロトタイプ宣言なしのC言語のように呼び出し元より上で宣言しておけば呼び出せるようにはなりました。
ですが、Javaのようにどこで宣言していても呼び出せるようにしたいと思っています。
現状は、構文解析と意味解析のところで定義済み関数の呼び出しのコードがあったらその関数の定義を渡すような形にしているのですが、この方法では定義済みでないと呼び出せません。
そこで、定義済みでない関数の呼び出しに対してとりあえず定義しておいて、実際に定義されたときに置き換えるような形にしようかとも思ったのですが、その方法にするにしてもどのように書けばいいかわかりません。
説明が下手かもですが、もう少し詳しく書いてみます。
自作言語のプログラムの実行は、Hashtableの関数定義群にある{始まり}関数から始まることになっています。
そのHashtableには関数名とその定義を対で記憶しています。
関数の定義はProgramNodeクラスでできていて、zikkouメソッドで実行させています。
他にも命令の種類ごとにクラスを作っていて、それぞれzikkouメソッドを作っています。
ProgramNodeクラスには関数の中身の該当するクラスのオブジェクトを順にVectorに記憶しています。
実行時に呼び出しの部分は、呼び出し先のProgramNodeクラスのオブジェクトになっています。
Javaのメソッドのような関数を実装するための方法につて、アドバイスでもいいのでなにかあれば教えてください。