Some years ago someone asked whether it would make sense to switch Python to a PEG parser. (Or a PEG grammar; I don’t recall exactly what was said by whom, or when.) I looked into it a bit and wasn’t sure what to think, so I dropped the subject. Recently I’ve learned more about PEG (Parsing Expression Grammars), and I now think it’s an interesting alternative to the home-grown parser generator tha
http://atnd.org/events/1593 のカンニングペーパーを貼ります。プレゼン資料: http://scratch.mit.edu/projects/propella/811272 自己紹介 こんにちは、山宮と言います。STEPS プロジェクトの紹介をします。 まず簡単に自己紹介をさせてください。2003 年に梅澤さん達と同時期に未踏事業で Smalltalk を作ったアランケイに会いまして、その関係で三年前から彼の研究所であるロサンゼルスのビューポインツに居ます。ビューポインツとは、アラン・ケイが率いるNPO の研究組織で、多くの Squeak 開発メンバーが参加しています。 概要 STEPS プロジェクトは 2007 年に NSF の支援を受けて始まった5 年間の研究プロジェクトです。今回 STEPS プロジェクトの内でも特にプログラミング好きの皆様が興味を持ちやすい
Find changesets by keywords (author, files, the commit message), revision number or hash, or revset expression.
If you’re flashing a BIOS for an MSI motherboard (mine is a B85M-E33) using the M-FLASH utility available from BIOS setup, make sure that the partition on your USB flash drive is set to type 6 (FAT16) using the ‘t’ command in fdisk. In my previous post I mentioned work on a new register allocator. Something that was missing from my Church-State project was error recovery. Most languages today use
vol.1と言いつつvol.2を執筆しないと定評の高いerukitiです。こんにちは。(全文検索やrxjsの続き書こうと思いつつ…) 今日はGolangとPEGを使って、言語処理系を作る話の第一弾として、pointlander/peg の解説をします。 PEG? PEGでぐぐると、胃ろうとかいうのがヒットしますがそれじゃなくて、Parsing Expression Grammar です。簡単に言うとlexとyaccを足したみたいなジャンルの処理系で、字句解析付きのコンパイラコンパイラとか言えばピンと来るかもしれません。RFCを読んでる人ならBNFとか身近だと思うんですが、まぁその手の言語ルールを形式化したものの一種ですね。僕には学術的説明をするほどの知識はないので、厳密な話を知りたい人はいろいろぐぐってみてください。 expression <- additive additive <- m
事の始まり 休日の暇つぶしに boost::spirit のサンプルソースを見ていてセマンティックアクションに 関数ポインタや boost::bind、関数オブジェクトを用いた方法が紹介されていたが、C++11 以降の lambda で代用できるのではという点から。 試行 Parser Semantic Actions #include<boost/spirit/include/qi.hpp> #include<string> #include<iostream> namespace qi = boost::spirit::qi; int main(){ using qi::int_; using qi::parse; { std::string str("{46}"); auto w = [](int x){std::cout << x << std::endl;}; parse( fi
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く