人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Wikiの記法やはてな記法のような独自記法を字句解析/構文解析を利用して実装したいと思っていますが、字句解析/構文解析についてよく分かってないので、それらについて参考になるサイト、または書籍等を教えてください。

また、実際に字句解析/構文解析を利用して実装されたテキストパーサ等があったら教えてください。

あと使用できる言語はPerlとJavascriptで、独自記法のパーサはPerlで実装しようと思ってます。

●質問者: にゃるら
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:JavaScript Perl Wiki はてな記法 サイト
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● sadajo
●5ポイント

http://ja.wikipedia.org/wiki/%E5%AD%97%E5%8F%A5%E8%A7%A3%E6%9E%9...

http://ja.wikipedia.org/wiki/%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%9...

◎質問者からの返答

紹介されたWikipediaのページ見てみましたが字句解析/構文解析のさわりだけで、踏み込んだ内容までは無かったですね。


2 ● いわどん
●30ポイント

C言語で字句解析・構文解析を行う際に使われるツールにyaccとlexがあります。それらに関する書籍やウェブページが参考になるかもしれません。

また、id:jkondoさんのText::Hatenaがまさにはてな記法の構文解析を行い、その結果を元にHTMLを生成しており、かつPerlで記述されていますので、参考になると思います。

◎質問者からの返答

やっぱり字句解析/構文解析するとなるとlex/yaccあたりについて調べることになるんですね。

あとText::Hatenaはソース読んだ事はあるんですが、字句解析はやってなくて、テキストを一行ずつ読んで処理する、という感じでした。


3 ● dev_zer0
●35ポイント ベストアンサー

簡単に言うと

字句解析:文字列をトークン単位に区切ること

構文解析:区切られたトークンの並びからその文法を解釈すること

昔は字句解析はlex、構文解析はyaccで行っていました

http://www.amazon.co.jp/lex-yacc%E3%83%97%E3%83%AD%E3%82%B0%E3%8...


実際に字句解析/構文解析を利用して実装されたテキストパーサは多分ほとんどのプログラムで行われているはずです

全てのコンパイラ、スクリプト、SQL、XML、HTML、LaTeX

ちょっと考えただけでこれだけあります。


ちなみにperlでの構文解析器です

http://www-06.ibm.com/jp/developerworks/linux/000728/j_perl-pars...


ま、単純なものであれば

if ($文字列 =~ /パターン/) {

なんか処理

}

を連ねていけばいいと思いますが、エスケープ処理やコメントがあったりするととたんに面倒になります

◎質問者からの返答

> ちなみにperlでの構文解析器です

のリンク先で紹介されているParse::RecDescentは使ったことがあるんですが、なかなかうまくいかなかったです。

字句解析/構文解析の概念は分かってきたのですが、具体的にどうやっていけばいいかがよく分からないんですよね。

なんか良い書物は無いでしょうか?


4 ● しおり
●15ポイント

字句解析/構文解析の概念は分かってきたのですが、具体的にどうやっていけばいいかがよく分からないんですよね。

なんか良い書物は無いでしょうか?

dev_zer0さんが紹介されている書籍に詳しく書かれているのですが、今では手に入り難いようですので(私は捨ててしまった(^^;)、「Amazon.co.jp: Rubyを256倍使うための本 無道編: 本: 青木 峰郎」はいかがでしょうか?

Raccの解説書ですが、構文解析についてわかり易く書かれているので参考になると思います。

◎質問者からの返答

参考にしてみます。


5 ● しおり
●15ポイント

実際に字句解析/構文解析を利用して実装されたテキストパーサ等があったら教えてください。

PerlでもJavascriptでもなくRuby(Racc)での実装ですが、簡単なのを一つ。

RD working draft 日本語版
http://raa.ruby-lang.org/gonzui/markup/rdtool/doc/rd-draft.rd.ja
ソース
http://raa.ruby-lang.org/gonzui/markup/rdtool/lib/rd/rdblockpars...
◎質問者からの返答

おお、色々見てみます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ