タグ

c++11とc++に関するmanabouのブックマーク (3)

  • PEGとC++11で作る言語処理系 - Qiita

    PEGとC++11で作る言語処理系 言語処理系の作成と聞くと、難易度が高いと感じるかもしれません。しかしパーサージェネレータなどのツールを活用することによって,その敷居はぐっと低くなります。 この分野では、BNFからパーサーを生成するYaccが有名です。最近では PEG(Parser Expression Grammar)も知られるようになってきました。PEGの特徴の一つは,構文ルールだけでなく字句ルールも同時に定義できることです。現在、主要なプログラミング言語のほとんどにPEGパーサージェネレータが存在します。中には抽象構文木(AST)まで生成してくれるものもあります。 こうしたツールの助けを活用すると,言語処理系の作成はかなり容易になります。PEGで文法を定義し,ASTを実行する評価器を実装すれば,あとはPEGライブラリの助けを借りて言語処理系を完成させることができます。 今回は拙作の

    PEGとC++11で作る言語処理系 - Qiita
  • C++のムーブと完全転送を知る - Fixstars Tech Blog /proc/cpuinfo

    社内勉強会、今期(と言ってももうあと1ヶ月もないですが)は、数理最適化勉強会と、Effective Modern C++輪読会をしています。この記事は、後者のEffective Modern C++輪読会で、『Effective Modern C++』5章の一部を輪読した時の資料を流用したものです。 C++11と言えば、昔のC++(03)から色々あって多くの機能が追加されとても便利になったバージョンです。さらに、C++14は11では間に合わなかった・忘れていた色々な便利なものを補填したもので、Effective Modern C++輪読会は、『Effective Modern C++』を教科書にしながらこのC++11/14について学ぶ会になっています。 時は既に2016年、gccもclangもMSVC++も概ねC++14が使えるようになっており、もはやC++14が使えないコンパイラにはC+

    C++のムーブと完全転送を知る - Fixstars Tech Blog /proc/cpuinfo
  • C++11のスレッド、アフィニティ、ハイパースレッディング | POSTD

    背景と導入 何十年もの間、CやC++の標準規格は、マルチスレッディングや並行処理を「その標準の範囲を超えたもの」として扱ってきました。標準規格の目的である”抽象機械”の力が及ばない、”対象依存”という影の世界においてです。メーリングリストやニュースグループの質問には並行処理に関するものが山ほど寄せられましたが、それらにすぐに突き返された回答は「C++はスレッドには関知しません」という何とも冷淡なものでした。この件によって当時のことを思い出す人々は、今後も絶えないでしょう。 しかしC++11の登場で、そんな状況に終止符が打たれたのです。C++標準化委員会は、時代の流れに乗らないと、この先C言語が取り残されてしまうと悟ったのでしょう。彼らはスレッドや同期メカニズム、アトミック操作、メモリモデルなどの存在に、ようやく気付いたわけです。そして標準規格として、C++コンパイラやライブラリのベンダーに

    C++11のスレッド、アフィニティ、ハイパースレッディング | POSTD
  • 1