右上➚

プログラミングに関するメモをのこしていきます

Boost

C++ で result 型を作る

Haskell や Rust など多くの強力な型システムを持つプログラミング言語は、Either とか Result といった「失敗するかもしれない」計算の値を示す型を持っています。 現在の C++ の標準ライブラリにはこのような型はありませんので、それを自作してみようとい…

C++テンプレートイディオム CRTP

C++テンプレートの有名なイディオムとして、CRTPというものがあります。 今回はそれについて。 複雑な部分特殊化みたいな話もないですし、メリットもわかりやすい良いイディオムだと思うので、ちょっとまとめておきます。 (Control キーのことをよく CTRL と…

C++ でパーサコンビネータを書きました

C++ で構文解析といえば,Boost.Spirit や yacc系などが有名ですが,どうにも使うの辛かったので作りました. 2016/05/01 追記 いろいろ更新しました.肯定先読み以外はプリミティブも実装し終わっているかと思います. ドキュメントはまだ無いのですが,す…

Boost.Spirit.X3 で簡易電卓を実装 1

agtn.hatenablog.com agtn.hatenablog.com 引き続き,Boost.Spirit.X3 です. 今回は,前回までの知識をつかって,簡易電卓を実装してみます. 仕様 今回定義する電卓は, + - * / の 4 つの演算と単項の - をサポートします. また,整数型のみを扱うものと…

Boost.Spirit.X3 の練習 2

Boost.Spirit.X3 の練習1 - プログラミングのメモ帳➚に引き続き,Boost.Spirit.X3 のお勉強メモです. セマンティックアクション 構文解析にはセマンティックアクションというのがつきものです. yacc や parsec など有名な構文解析のためのツール/ライブラ…

Boost.Spirit.X3 の練習1

Boost.Spirit.X3 の練習1 Boost.Spirit.X3 という C++ のための パーサコンビネータライブラリを使ってみています. Boost.Spirit というと, C++ の黒魔術の塊みたいなイメージがあります. ちなみに Boost.Spirit.Qi が安定版のパーサコンビネータライブラ…