コンマ区切り値のリストにセマンティック値を与えようとしています。実際、私は bison のリダクション ルールを次のように定義しました。
commasv : exp
| commasv "," exp
ここでexp
、数値、変数、関数ポインター、またはそれぞれの構文とセマンティック ルールを備えた commasv トークンです。の型exp
は double なので、 の型は double でcommasv
なければなりません。
問題は、関数呼び出しなどでリストを使用するためにリストを保存したいということです。例えば
h = create_object()
compute_list(h,1,cos(3.14159))
特定のcompute_list
関数の期待される結果が得られます。
基本の bison ファイルとして、 bison マニュアルの mfcalc の例を使用し、関数を flex を使用してyylex
生成された別のものに置き換えました。今では次のようなことができます
pi = 3.14159
sin(pi)
ln(exp(5))
flex を使用した関数の修正版をyylex
使用しますが、関数呼び出し、リストの作成などでコンマ区切りの値を使用したいと考えています。
回答ありがとうございます。