- ics-tools - Emacs calendar diary 形式と iCalendar 形式のファイルのためのツール群
- 以前、iCalendar 形式のファイルのためのツール群(id:18)を著したが、加えて、Emacs calendar diary 形式から iCalendar 形式へ変換またはその逆変換する以下のツール群を追加した。 * ##ecd2ics## * ##ics2ecd## [[[ ##ecd2ics## - Emacs calendar diary 形式から iCalendar 形式のファイルを生成する。 ]]] 例えば、同梱されているデバッグ用の ##examples/emacs-calendar-di
- ID=28, cdate=2013/10/31 23:48, mdate=2013/11/01 17:54, owner=taiji, tags=iCalendar, C++, boost, Emacs calendar diary
- Boost Spirit Karma による printf 互換の浮動小数点出力、符号付き整数出力
- [[[ Boost Karma 事始め ]]] Boost Spirit のパーサ Qi に対応するジェネレータ Karma を使うと、以下のように型安全な ##printf## 風の出力が簡単に行える。 #include <iostream> #include <cmath> #include <boost/spirit/include/karma.hpp> namespace karma = boost::spirit::karma; int main() { long double v[] = { s
- ID=27, cdate=2013/06/04 23:50, mdate=2013/06/06 09:58, owner=taiji, tags=C++, Boost, Spirit Karma, C99 printf
- Boost Spirit V2+Universal Tree における POSIX shell スクリプトパーサの例
- 以前の Boost Spirit V2+Universal Tree における計算機の例(id:24) では一行毎の構文解析であったが、複数行に渡る構文解析の例として、シェルスクリプト構文解析を段階的に実装してみよう。但し、先の Boost Spirit V2+Universal Tree における bash スクリプトパーサの例(id:25) では ##pre-skipping## を前提としたが、ここでは明示的に ##skipping## を指定しつつ、今度は POSIX shell の BNF を最終
- ID=26, cdate=2013/05/14 13:22, mdate=2013/05/14 13:22, owner=taiji, tags=C++, Boost, Spirit, Spirit V2, Spirit utree, AST, shell, ksh
- Boost Spirit V2+Universal Tree における bash スクリプトパーサの例
- 先の Boost Spirit V2+Universal Tree における計算機の例(id:24) では一行毎の構文解析であったが、複数行に渡る構文解析の例として、シェルスクリプト構文解析を段階的に実装してみよう。ここでは bash の BNF を最終的に目指した例を示していく。 [[[ Spirit V2+Universal Tree の基本形 ]]] 複数行に対応した Spirit V2+Universal Tree の基本形は以下のようになる。 #include <iostream> #includ
- ID=25, cdate=2013/05/13 20:00, mdate=2013/05/13 20:00, owner=taiji, tags=C++, Boost, Spirit, Spirit V2, Spirit utree, AST, shell, bash
- Boost Spirit V2+Universal Tree における計算機の例
- Boost Spirit のサンプルにはいくつもの計算機の例があるが、四則演算以外をサポートした簡潔な好例がなく、ここで実装例を紹介する価値はありそうである。 本稿では Spirit V2+Universal Tree での例を紹介していく。 [[[ Spirit V2+Universal Tree の基本形 ]]] Spirit V2+Universal Tree の基本形は以下のようになる。 #include <iostream> #include <string> //#define BOOST_SP
- ID=24, cdate=2013/04/04 12:54, mdate=2013/04/04 12:54, owner=taiji, tags=C++, Boost, Spirit, Spirit V2, Spirit utree, AST
- Boost Spirit V2 における計算機の例
- Boost Spirit のサンプルにはいくつもの計算機の例があるが、四則演算以外をサポートした簡潔な好例がなく、ここで実装例を紹介する価値はありそうである。 本稿では Spirit V2 での例を紹介していく。 [[[ Spirit V2 の基本形 ]]] Spirit V2 の基本形は以下のようになる。 #include <iostream> #include <string> //#define BOOST_SPIRIT_DEBUG #include <boost/spirit/include/qi.
- ID=23, cdate=2013/04/04 12:52, mdate=2013/04/04 12:52, owner=taiji, tags=C++, Boost, Spirit, Spirit V2, Boost Phoenix, Boost Variant, AST
- Boost Spirit Classic における計算機の例
- Boost Spirit のサンプルにはいくつもの計算機の例があるが、四則演算以外をサポートした簡潔な好例がなく、ここで実装例を紹介する価値はありそうである。 手始めに復習を兼ねて Spirit Classic での例を紹介していく。 [[[ Spirit Classic の基本形 ]]] Spirit Classic の基本形は以下のようになる。 #include <iostream> #include <string> #include <boost/spirit/include/classic.hpp
- ID=22, cdate=2013/04/04 12:50, mdate=2013/04/04 12:50, owner=taiji, tags=C++, Boost, Spirit, Spirit Classic, セマンティックアクション
- C++ functional, Boost Bind and Boost Phoenix
- Boost Phoenix(http://www.boost.org/doc/libs/1_53_0/libs/phoenix/doc/html/) はとても便利ですが、もしその使用が許されない場面で標準の functional で代替する場合の対応表を演算子の優先順位で書いてみました。 ##演算子## | Name | ##functional## | ##例## | ##Boost Phoenixでの例## | | | | ##.## | ドット(Element selection by referen
- ID=21, cdate=2013/02/26 15:36, mdate=2013/02/27 13:21, owner=taiji, tags=C++, functional, Boost Bind, Boost Phoenix, operator
- Boost Spirit V2 の演算子
- 以前、Boost の Spirit (Classic) について(id:6)書きましたが、新しい Boost Spirit V2 で使用されている演算子を優先順位でまとめてみました。 ##Spirit V2## | Name | __EBNF__ | ##SpiritのAttribute## | Description | | | | ##&a## | And Predicate | __なし__ | ##unused_type,A## | aにマッチする。 | | | | ##-a## | Optiona
- ID=20, cdate=2013/02/20 20:12, mdate=2013/02/20 20:13, owner=taiji, tags=C++,Spirit V2,operator,EBNF
- Tokyo Promenade meets MathJax
- Tokyo Promenade に MathJax(http://www.mathjax.org/) を組み込んでみた。 この記事はその実験です。オイラーの公式を(ちょっと変えて)以下に記してみる。 \[e^{\imath \vartheta} = \cos(\vartheta) + \imath\sin(\vartheta)\] おお!出来た!Javascript オフのときは TeX コマンドそのまま出力されるのもよいですね。 ##promenade.tmpl## に ##</head>## 行が一箇所
- ID=19, cdate=2013/02/17 14:32, mdate=2013/02/17 14:34, owner=taiji, tags=CMS, TeX, MathML