数式パーサーのBisonファイルに取り組んでいます。今まではほとんど問題ありませんでしたが、暗黙の乗算で問題が発生しています。
ほら、のような表現をサポートしたい2x sin(4x) cos(4x)
です。のように解析する必要があります2 * x * sin(4 * x) * cos(4 * x)
。ここではそれほど悪いことはありませんが、次の一連のルールを検討してください。
expr
: /* snip */
| '-' expr { /* negate expression */ }
| expr '-' expr { /* subtract expressions */ }
| expr expr { /* multiply expressions */ }
その暗黙の乗算ルールがあると、減算ルールとのあいまいさが生じます。toの減算x - log(x)
またはbyの乗算ですか?log(x)
x
x
-log(x)
「減算しない限り乗算です」のような簡単な解決策を決める準備はできていますが、それをBisonに伝える方法がわかりません。