文法と添付されたアクション コードが与えられた場合、各プロダクションがどのような型になる必要があるか (そして、その結果、呼び出し側のプロダクションがそれから取得する必要がある型) を推測するための標準的な解決策はありますか?
C# の構文のようなものを使用する OO プログラムとアクション コードを考えていvar
ます (ただし、C# 固有のものを探しているわけではありません)。
関数のオーバーロードと再帰文法がなければ、これは非常に簡単です。
この問題は、次のような場合に発生します。
Foo ::=
Bar Baz { return Fig(Bar, Baz); }
Foo Pit { return Pop(Foo, Pit); } // typeof(foo) = fn(typeof(Foo))