1

私は C で単純な CLI を作成しました。この CLI は、2 つの数値を加算、減算、乗算して終了するという 4 つの基本命令を理解します。

プロンプトの後に次のようadd(4,5)に入力すると、完全に機能します。しかし、ユーザーが変数を定義して後で使用できるようにしたいと考えています。つまり、ユーザーが入力myvar = myobj(param_1,param_2)してからmymethod(myvar)、すべてがうまく機能します。

どうすればこれを入手できますか?

編集:

最後に、Troy Hanson によって C で書かれた uthash ライブラリを使用しました。http: //uthash.sourceforge.net/にあります。

ご回答ありがとうございます。

4

1 に答える 1

0

最初の部分は解析 (「入力の名前をどのように認識しますか?」) で、2 番目の部分は「変数を保存および管理する方法」です。

パースについて。パーサーが非常に単純な場合は、整数が認識されるはずの場所に追加のチェックを配置するだけです。そうでない場合は、変数ストアで名前で値を検索します (詳細は以下を参照)。入力を意味のある断片 (コンパイラ/インタプリタ用語では「語彙素」) に分割するために、いくつかの正規表現の使用が推奨されます。

収納について。名前でアイテムに簡単かつ迅速にアクセスでき、エントリの追加と削除をサポートする構造が必要です。これは、マップまたはハッシュテーブルによって適切に処理されます (C 標準ライブラリには標準的なマップ実装はありません。C++ の<map>/<unordered_map>で十分です)。少量の変数の場合は、配列またはリストのみをstruct variable { const char *name; vardata_t var; }使用できます (ルックアップはますます遅くなる可能性がありますが、これを強化するために二分探索を検討できます)。

于 2012-12-08T21:42:39.760 に答える