More Related Content
PPTX
PDF
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」 PDF
PDF
PlaySQLAlchemy: SQLAlchemy入門 PDF
PPTX
世界一わかりやすいClean Architecture PDF
What's hot
PPTX
PPTX
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx PPT
PDF
ODP
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える PPTX
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PPTX
PPTX
PDF
PDF
PDF
PPTX
Viewers also liked
PDF
PPT
ANTLR-ANother Tool for Language Recognition PDF
Markup Template Engine introduced Groovy 2.3 PDF
Shibuya JVM Groovy 20150418 PDF
New features of Groovy 2.0 and 2.1 PDF
Groovy Shell Scripting 2015 PDF
Indy(Invokedynamic) and Bytecode DSL and Brainf*ck PDF
Read Groovy Compile process(Groovy Benkyoukai 2013) PDF
Groovy Bootcamp 2015 by JGGUG PDF
Use JWT access-token on Grails REST API PDF
enterprise grails challenge, 2013 Summer PDF
More from masayoshi takahashi
PDF
PDF
PDF
PDF
青空文庫と式年遷宮アーキテクチャ: 青空文庫200周年に向けて PDF
青空文庫テキストフォーマットについて (aozorahack) PPTX
PDF
PDF
PDF
aozorahackと青空文庫の現状とこれから (OSC 2016 Tokyo/Spring) PDF
PDF
PDF
Re:VIEW新パーサ現状確認(2015年2月版) PDF
PDF
PDF
PDF
PDF
The History of Ruby; 20th Anniversary Ed. PDF
PDF
mruby for embedded systems PDF
何となく勉強した気分になれるパーサ入門
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
MicroMark文法
start = doc
doc= block+
block = headline / blankline / paragraph
headline = "#"+ " " textline
paragraph = textline+ blankline
textline = !headline inline+ "n"
inline = char
char = [^n]
blankline = "n"
- 18.
MicroMark文法
開始 = 文書
文書= ブロック+
ブロック = 見出し / 改行 / パラグラフ
見出し = "#"+ " " テキスト行
パラグラフ = テキスト行+ 改行
テキスト行 = !見出し インライン+ "n"
インライン = 文字
文字 = [^n]
改行 = "n"
- 19.
- 20.
MicroMark for PEG.js
start= doc
doc = block:block+ { return "<body>"+block.join("")+"</body>"; }
block = headline / blankline / paragraph
headline = prefix:"#"+ " " textline:textline
{ return "<h" + prefix.length + ">" + textline + "</h" + prefix.length+">"; }
paragraph = textline:textline+ blankline { return "<p>" + textline.join("") +"</p>"; }
textline = !headline inline:inline+ "n" { return inline.join(""); }
inline = char
char = ch:[^n] { return ch; }
blankline = "n" { return ""; }
https://gist.github.com/takahashim/150faec504955ef7b0f7
これをhttp://pegjs.org/onlineの
左側に貼れば試せます。
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
文脈自由文法
•CFG, context freegrammar
•普通のBNFで表現できる文法
•BNFはCFGの記法の一つ、らしい
•プログラミング言語、マークアップ言語とかは
だいたいコレ(+α)
•+αがあると文脈依存文法の範囲になる
•-αのことも多い
- 30.
CFGの例
start = exp
exp= primary + exp
¦ primary - exp
¦ primary
primary = integer
¦ ( exp )
integer = [0-9]+
start = exp
exp = exp + exp
¦ exp - exp
¦ ( exp )
¦ primary
primary = integer
integer = [0-9]+
PEGやLLで
使える文法
PEGやLLでは
使えない文法
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
PEGの例
start = exp
exp= primary + exp
/ primary - exp
/ primary ←これが先頭に来るとNG
primary = integer
/ ( exp )
integer = [0-9]+
- 41.
- 42.
- 43.