構文解析の修正途中

expression 以下の構文を大幅に修正中。
大部分のサンプルが動作不能となる。
また、多くの構文は正常に動作しない状態。

動作が上手くいかない原因は、
メモリーの読み書きに関するアセンブラコードを上手く生成できていないから。
悩んでる設計ポイントは、「構文解析のどのタイミングで読み書きを確定すべきか?」という点。
しかしこれは結局、どんなに遅延させても根本的な解決にはならないような気がしている。
つまり、コンパイル時に確定できる情報は、読み書きに関しては、今思ってる程には多くは無いのかもしれない。
相当数の情報が、実行時に動的に読むこととなる。
が、値に関しては未知でも、そのタイミングに関しては確定なので、ここの場合分け・分類に頭が混乱してる。
たとえば:
    float *a, b[10][20];
    *a = *(a + b[1][2]);
ならば、各値を確定しても"問題が生じないタイミング"はどこか? また、型はどうなるのか?
各地点でのポインターの次元はどうなるのか?
そして各演算の結果はどの時点で確定しうるのか、その候補と、どの時点で未知なのか?
上記のポインターに限らず、関数呼び出しや配列アクセス等、他にもあらゆるコードで、
これらの正しい答えを得られるアルゴリズムはどう構築すれば良いのか?

この辺りが絡み合った問題の解を、延々とトライアンドエラーで考え続けてる状態。
問題が複雑すぎて頭のパーサーが追いつかない。