狠狠撸

狠狠撸Share a Scribd company logo
Re:VIEW
新パーサ現状確認
2015/02/13?第2回パーサ勉強会
株式会社達人出版会/一般社団法人日本Rubyの会
高橋征義 @takahashim
Re:VIEW 2.0(仮)
?ブロックとインラインの入れ子を許したい
Re:VIEW 2.0(仮)
?PEGで実装: kpegを利用
ざっくりの構造
Doc = Block*
Block = ( 見出し / ブロック要素 / 箇条書き / 段落)
段落 = 段落行+
段落行 = 行要素 改行
ブロック要素 = ブロックコンテンツ+
ブロックコンテンツ = (行要素/ブロック要素/箇条書き/B段落)
B段落 = B段落行+
B段落行 = ! //} 行要素 改行
ざっくりの構造
ブロックその1
ブロックその2
ブロックその3
ブロックそのN
?ドキュメントはブロックの集合
……
ざっくりの構造
見出し
パラグラフ(段落)
箇条書き
パラグラフ(段落)
? ブロックは見出し/段落/箇条書き/ブロック要素 (コメントは
??省略)
……
ざっくりの構造
? パラグラフはパラグラフ行、パラグラフ行は行要素+改行
パラグラフ
行要素
行要素
行要素
改行
改行
改行
……
パラグラフ行
ざっくりの構造
? 行要素はインラインの集合、インラインはインライン要素
と非インライン要素(テキスト)のどちらか
行要素
……
インライン
非イン
ライン要素
インライン
要素
インライン
要素
非イン
ライン要素
非イン
ライン要素
※インライン要素は強調、ルビ、参照など
ブロック要素の検討
?入れ子を許すもの
??例:引用、メモ(囲み)など
?入れ子を許さないもの
??例:ソースコード、表、数式など
結局2種類用意することになりそう
ブロック要素の検討
?入れ子を許すもの
?→ブロック要素「しか」許さない
??ただのテキストは「パラグラフ」になる
?入れ子を許さないもの
?→単なるテキスト行(行要素)の集まり
??
これから
?箇条書きが怪しいのでもうちょっと調べる
?引数の仕様を追加する(名前付き引数対応)
?微妙な仕様について
?エスケープどうするか問題
?エラーぽい文字列をどこまで許容するか
?異常入力時のデバッグ
?経験的には落ちたり止まったりする

More Related Content

搁别:痴滨贰奥新パーサ现状确认(2015年2月版)