スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

boost::spirit:構文解析、入力式の実行

Scilabで作成したマルチボディダイナミクス(MBD)プログラムを
C++版に書き換えようと思っていますが大きな難題があります。
exec関数、Matlabでいうeval関数の代替案を考えなくてはなりません。

これが超厄介な問題なんですね。
どうすべきかいろいろググッていると
「構文解析」とやらが必須であることが分かりました。
概要を理解したところで手っ取り早くプログラムに組み込むには
boost::spiritを利用するといいことまで辿り着きました。

「変態的」称されるboost::spirit。
私でもそのすごさはすぐに実感できました。
boost::spirit自体が1つの言語級の能力を持っていると思います。

以下のサンプルコードを見ながら何とか概要を理解。

boost::spiritっちゃえ!
boost ライブラリを使ってみる
●C++編(標準ライブラリ) 第5章 stack

stackの意味も知らなかったので理解に3日かかりました。
まだ何となくのさわり程度の理解ですが
一応、boost::spiritっちゃえ!のサンプルコードに手を加えて
四則演算に加えてsin関数、累乗演算子「^」の組み込みに成功しました。

さらに応用していけば目的である
「自作関数を含む文字列を読み込ませて実行して数値を得る」
が達成できそうです。
多くの人がこれを目的として構文解析に挑むと思われますが
その明確なサンプルまでは提示されていないようです。
他力本願ばかりではだめということですね。

これができればそこそこ汎用性のあるMBDソフトができそうです。

スポンサーサイト

コメントの投稿

非公開コメント

カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
プロフィール

uglab

Author:uglab
ソフト開発会社

【Twitter】
フォローお願いします

【You tube動画一覧】
チャンネル登録お願いします


最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
スポンサードリンク
    【スポンサードリンク】

リンク
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。