Submit Search
Upload
新・ReVIEWパーサについて
•
2 likes
•
8,060 views
masayoshi takahashi
Follow
ReVIEW開発者カンファレンスで使用した発表資料です。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 23
Download now
Download to read offline
Recommended
インフラエンジニアとして普段心がけていること
インフラエンジニアとして普段心がけていること
Shohei Koyama
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
ShogoOkazaki
Getting start with knockout.js
Getting start with knockout.js
Akio Ishida
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソース
Takafumi ONAKA
WebStormでできること
WebStormでできること
kamiyam .
IDEALIZE YOU
IDEALIZE YOU
佑介 九岡
20200809 jcdug lt
20200809 jcdug lt
ひかり 影中
Recommended
インフラエンジニアとして普段心がけていること
インフラエンジニアとして普段心がけていること
Shohei Koyama
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
ShogoOkazaki
Getting start with knockout.js
Getting start with knockout.js
Akio Ishida
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソース
Takafumi ONAKA
WebStormでできること
WebStormでできること
kamiyam .
IDEALIZE YOU
IDEALIZE YOU
佑介 九岡
20200809 jcdug lt
20200809 jcdug lt
ひかり 影中
Nespのコード生成
Nespのコード生成
Kouji Matsui
SaCSS vol.56 こんなに素敵なBrackets!
SaCSS vol.56 こんなに素敵なBrackets!
Atsushi Handa
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc.
TypeScript x Bot Framework
TypeScript x Bot Framework
Kazumi IWANAGA
cocos2d ☓ OpenOffice
cocos2d ☓ OpenOffice
Kazunori Nanji
Blazor WebAssembly と Windows Forms でのロジック共有例
Blazor WebAssembly と Windows Forms でのロジック共有例
Koichi Ota
サブドメイン前提のチーム機能開発で踏んだ OAuthの罠の話 in express
サブドメイン前提のチーム機能開発で踏んだ OAuthの罠の話 in express
Takahiro YAMAGUCHI
Type scriptmemo
Type scriptmemo
ytanno
React+fluxを導入した話
React+fluxを導入した話
Yuki Ishikawa
Riot.jsと仲良くなるための僕的tips
Riot.jsと仲良くなるための僕的tips
Keisuke Imai
Riotでサーバレスにした話
Riotでサーバレスにした話
Hiroyuki Hara
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
Masahiro Wakame
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
Kouji Matsui
Microservices Architecture の利点と欠点
Microservices Architecture の利点と欠点
ota42y
ソフトウェア開発が好きだ
ソフトウェア開発が好きだ
Koichi Ota
恐怖!シェルショッカー1号男
恐怖!シェルショッカー1号男
Tomoyuki Matsuura
おっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶ
dcubeio
RSpecしぐさ
RSpecしぐさ
Takafumi ONAKA
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
Masahiro Wakame
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
Ryo Mitoma
公開から4年間使ってきたbaserCMSをそろそろ本気でdisってみる(OSC2014福岡)
公開から4年間使ってきたbaserCMSをそろそろ本気でdisってみる(OSC2014福岡)
Garyuten
JavaScriptトレンド総括(2014)
JavaScriptトレンド総括(2014)
VOYAGE GROUP
More Related Content
What's hot
Nespのコード生成
Nespのコード生成
Kouji Matsui
SaCSS vol.56 こんなに素敵なBrackets!
SaCSS vol.56 こんなに素敵なBrackets!
Atsushi Handa
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc.
TypeScript x Bot Framework
TypeScript x Bot Framework
Kazumi IWANAGA
cocos2d ☓ OpenOffice
cocos2d ☓ OpenOffice
Kazunori Nanji
Blazor WebAssembly と Windows Forms でのロジック共有例
Blazor WebAssembly と Windows Forms でのロジック共有例
Koichi Ota
サブドメイン前提のチーム機能開発で踏んだ OAuthの罠の話 in express
サブドメイン前提のチーム機能開発で踏んだ OAuthの罠の話 in express
Takahiro YAMAGUCHI
Type scriptmemo
Type scriptmemo
ytanno
React+fluxを導入した話
React+fluxを導入した話
Yuki Ishikawa
Riot.jsと仲良くなるための僕的tips
Riot.jsと仲良くなるための僕的tips
Keisuke Imai
Riotでサーバレスにした話
Riotでサーバレスにした話
Hiroyuki Hara
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
Masahiro Wakame
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
Kouji Matsui
Microservices Architecture の利点と欠点
Microservices Architecture の利点と欠点
ota42y
ソフトウェア開発が好きだ
ソフトウェア開発が好きだ
Koichi Ota
恐怖!シェルショッカー1号男
恐怖!シェルショッカー1号男
Tomoyuki Matsuura
おっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶ
dcubeio
RSpecしぐさ
RSpecしぐさ
Takafumi ONAKA
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
Masahiro Wakame
What's hot
(19)
Nespのコード生成
Nespのコード生成
SaCSS vol.56 こんなに素敵なBrackets!
SaCSS vol.56 こんなに素敵なBrackets!
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
TypeScript x Bot Framework
TypeScript x Bot Framework
cocos2d ☓ OpenOffice
cocos2d ☓ OpenOffice
Blazor WebAssembly と Windows Forms でのロジック共有例
Blazor WebAssembly と Windows Forms でのロジック共有例
サブドメイン前提のチーム機能開発で踏んだ OAuthの罠の話 in express
サブドメイン前提のチーム機能開発で踏んだ OAuthの罠の話 in express
Type scriptmemo
Type scriptmemo
React+fluxを導入した話
React+fluxを導入した話
Riot.jsと仲良くなるための僕的tips
Riot.jsと仲良くなるための僕的tips
Riotでサーバレスにした話
Riotでサーバレスにした話
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
Microservices Architecture の利点と欠点
Microservices Architecture の利点と欠点
ソフトウェア開発が好きだ
ソフトウェア開発が好きだ
恐怖!シェルショッカー1号男
恐怖!シェルショッカー1号男
おっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶ
RSpecしぐさ
RSpecしぐさ
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
Similar to 新・ReVIEWパーサについて
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
Ryo Mitoma
公開から4年間使ってきたbaserCMSをそろそろ本気でdisってみる(OSC2014福岡)
公開から4年間使ってきたbaserCMSをそろそろ本気でdisってみる(OSC2014福岡)
Garyuten
JavaScriptトレンド総括(2014)
JavaScriptトレンド総括(2014)
VOYAGE GROUP
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
Kentaro Matsui
コンパイラ指向ReVIEW
コンパイラ指向ReVIEW
Masahiro Wakame
Ember コミュニティとわたし
Ember コミュニティとわたし
Ryunosuke SATO
デザインパターンを用いたリファクタリング
デザインパターンを用いたリファクタリング
kei takakuda
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
Katsuhiro Miura
gitその2 rebaseとrebase -iを理解してgit-flowをやりやすくする
gitその2 rebaseとrebase -iを理解してgit-flowをやりやすくする
Study Group by SciencePark Corp.
hbstudy 74 Site Reliability Engineering
hbstudy 74 Site Reliability Engineering
Ryuji Tamagawa
20190621_RDBMSのVIEWを使ってRailsのデータアクセスをいい感じにする【銀座Rails#10】
20190621_RDBMSのVIEWを使ってRailsのデータアクセスをいい感じにする【銀座Rails#10】
Masato Mori
aozorahack hackathon #1
aozorahack hackathon #1
masayoshi takahashi
Webサイトのようには作れない!Webアプリ設計の考え方
Webサイトのようには作れない!Webアプリ設計の考え方
girigiribauer
MF GeeksNight pplogの話
MF GeeksNight pplogの話
Naoto Koshikawa
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
Koichi ITO
dots. 7/7 DSWBハンズオン資料
dots. 7/7 DSWBハンズオン資料
s. kaijima
What i learned from translation of the sre ryuji tamagawa
What i learned from translation of the sre ryuji tamagawa
Rakuten Group, Inc.
heroku devcenter読書会 #1 by sendagaya.rb
heroku devcenter読書会 #1 by sendagaya.rb
Naoto Koshikawa
Works of site reliability engineer
Works of site reliability engineer
Shohei Kobayashi
2015 07-04-ruby rails
2015 07-04-ruby rails
Hiroshi Oyamada
Similar to 新・ReVIEWパーサについて
(20)
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
公開から4年間使ってきたbaserCMSをそろそろ本気でdisってみる(OSC2014福岡)
公開から4年間使ってきたbaserCMSをそろそろ本気でdisってみる(OSC2014福岡)
JavaScriptトレンド総括(2014)
JavaScriptトレンド総括(2014)
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
コンパイラ指向ReVIEW
コンパイラ指向ReVIEW
Ember コミュニティとわたし
Ember コミュニティとわたし
デザインパターンを用いたリファクタリング
デザインパターンを用いたリファクタリング
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
gitその2 rebaseとrebase -iを理解してgit-flowをやりやすくする
gitその2 rebaseとrebase -iを理解してgit-flowをやりやすくする
hbstudy 74 Site Reliability Engineering
hbstudy 74 Site Reliability Engineering
20190621_RDBMSのVIEWを使ってRailsのデータアクセスをいい感じにする【銀座Rails#10】
20190621_RDBMSのVIEWを使ってRailsのデータアクセスをいい感じにする【銀座Rails#10】
aozorahack hackathon #1
aozorahack hackathon #1
Webサイトのようには作れない!Webアプリ設計の考え方
Webサイトのようには作れない!Webアプリ設計の考え方
MF GeeksNight pplogの話
MF GeeksNight pplogの話
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
dots. 7/7 DSWBハンズオン資料
dots. 7/7 DSWBハンズオン資料
What i learned from translation of the sre ryuji tamagawa
What i learned from translation of the sre ryuji tamagawa
heroku devcenter読書会 #1 by sendagaya.rb
heroku devcenter読書会 #1 by sendagaya.rb
Works of site reliability engineer
Works of site reliability engineer
2015 07-04-ruby rails
2015 07-04-ruby rails
More from masayoshi takahashi
osc2019tokyospring
osc2019tokyospring
masayoshi takahashi
Ruby25: Rubyの1/4世紀
Ruby25: Rubyの1/4世紀
masayoshi takahashi
Code for 選挙とWikidata
Code for 選挙とWikidata
masayoshi takahashi
青空文庫と式年遷宮アーキテクチャ: 青空文庫200周年に向けて
青空文庫と式年遷宮アーキテクチャ: 青空文庫200周年に向けて
masayoshi takahashi
青空文庫テキストフォーマットについて (aozorahack)
青空文庫テキストフォーマットについて (aozorahack)
masayoshi takahashi
Aozorahack20161106
Aozorahack20161106
masayoshi takahashi
TdX#01 RubyKaigiの作り方
TdX#01 RubyKaigiの作り方
masayoshi takahashi
aozorahackと青空文庫の現状とこれから (OSC 2016 Tokyo/Spring)
aozorahackと青空文庫の現状とこれから (OSC 2016 Tokyo/Spring)
masayoshi takahashi
オープンソースとプラットフォームとお金
オープンソースとプラットフォームとお金
masayoshi takahashi
Webと電子書籍の話
Webと電子書籍の話
masayoshi takahashi
Re:VIEW新パーサ現状確認(2015年2月版)
Re:VIEW新パーサ現状確認(2015年2月版)
masayoshi takahashi
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
How To Become A Rubyist
How To Become A Rubyist
masayoshi takahashi
Markdownもはじめよう
Markdownもはじめよう
masayoshi takahashi
電子出版はどこを 目指すのか・技術書編
電子出版はどこを 目指すのか・技術書編
masayoshi takahashi
The History of Ruby; 20th Anniversary Ed.
The History of Ruby; 20th Anniversary Ed.
masayoshi takahashi
lldecade2012
lldecade2012
masayoshi takahashi
mruby for embedded systems
mruby for embedded systems
masayoshi takahashi
mrubyのすすめ
mrubyのすすめ
masayoshi takahashi
「執筆のためのエレベータピッチ」のテンプレート
「執筆のためのエレベータピッチ」のテンプレート
masayoshi takahashi
More from masayoshi takahashi
(20)
osc2019tokyospring
osc2019tokyospring
Ruby25: Rubyの1/4世紀
Ruby25: Rubyの1/4世紀
Code for 選挙とWikidata
Code for 選挙とWikidata
青空文庫と式年遷宮アーキテクチャ: 青空文庫200周年に向けて
青空文庫と式年遷宮アーキテクチャ: 青空文庫200周年に向けて
青空文庫テキストフォーマットについて (aozorahack)
青空文庫テキストフォーマットについて (aozorahack)
Aozorahack20161106
Aozorahack20161106
TdX#01 RubyKaigiの作り方
TdX#01 RubyKaigiの作り方
aozorahackと青空文庫の現状とこれから (OSC 2016 Tokyo/Spring)
aozorahackと青空文庫の現状とこれから (OSC 2016 Tokyo/Spring)
オープンソースとプラットフォームとお金
オープンソースとプラットフォームとお金
Webと電子書籍の話
Webと電子書籍の話
Re:VIEW新パーサ現状確認(2015年2月版)
Re:VIEW新パーサ現状確認(2015年2月版)
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
How To Become A Rubyist
How To Become A Rubyist
Markdownもはじめよう
Markdownもはじめよう
電子出版はどこを 目指すのか・技術書編
電子出版はどこを 目指すのか・技術書編
The History of Ruby; 20th Anniversary Ed.
The History of Ruby; 20th Anniversary Ed.
lldecade2012
lldecade2012
mruby for embedded systems
mruby for embedded systems
mrubyのすすめ
mrubyのすすめ
「執筆のためのエレベータピッチ」のテンプレート
「執筆のためのエレベータピッチ」のテンプレート
Recently uploaded
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Recently uploaded
(9)
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
新・ReVIEWパーサについて
1.
新 ReVIEWパーサ ・ について ReVIEW開発者カンファレンス 2014/03/08 株式会社達人出版会 高橋征義
2.
自己紹介 • 高橋征義 (@takahashim),
ReVIEWコミッタ • 古参Rubyist (1997年くらいから) • ∼2010年 Web制作会社のプログラマ • @kdmsnrの同僚 • 2010年∼ 電子書籍の制作と販売 (今日はこの話じゃなくて、実装の話)
3.
本日のあらすじ • パーサを書き換え中 • いろいろスッキリした(はず) •
わりと動いている(はず) • そもそもの仕様を決めないとダメ • すごく内部実装の技術的な話ですみません…
4.
本発表の話題 • パーサ (Parser)
5.
パーサとは • 構文解析をするひと • どこがブロックで、どこがインラインで…と いうのを解析する •
ReVIEWではReVIEW::Compiler • lib/review/compiler.rb • …だけではなく、実はBuilderの中でも構文解析 しているのが問題だったり
6.
== foo XXXYYY ZZZ //list[foo1][foo2]{ AAA@<b>{BBB}CCC DDD@<raw>{EEE{FFF}GGG} IIIJJJ //} @<ruby>{KKK,LLL} MMMNNN
7.
== foo Headline XXXYYY Paragraph ZZZ //list[foo1][foo2]{ BlockElement AAA@<b>{BBB}CCC DDD@<raw>{EEE{FFF}GGG} IIIJJJ //} @<ruby>{KKK,LLL} Paragraph LLLMMM
8.
== foo XXXYYY ZZZ //list[foo1][foo2]{ AAA@<b>{BBB}CCC DDD@<raw>{EEE{FFF}GGG} IIIJJJ //} @<ruby>{KKK,LLL} LLLMMM
9.
※細かい要素に分割するだけ →各要素をどう扱うかは パーサではなくBuilderが 担当する == foo XXXYYY ZZZ //list[foo1][foo2]{ AAA@<b>{BBB}CCC DDD@<raw>{EEE{FFF}GGG} IIIJJJ //} @<ruby>{KKK,LLL} LLLMMM
10.
なぜ新パーサなのか • 現状のパーサがいろいろつらい • 拡張しづらい •
「ブロックのネストをさせたい」etc • 修正しづらい • Builder/インラインごとにエンバグetc • パーサから仕様がリバースできない • (他に仕様があればいいんですが…) • ReVIEW.jsみたいなのを作るにもつらそうな予感
11.
つらい点 R::Compiler <div class="emlist-code"> + //emlist{ R::Builder <pre
class="emlist">def foo(a) def foo(a) if a>1 ☆escape if a>1 bar(a) bar(a) end end end</pre> end </div> //}
12.
つらい点 ☆インラインを入れたい→escapeした文字列の連結 //emlist{ def foo(a) if @<b>{a>1} bar(a) end end //} <div
class="emlist-code"> <pre class="emlist">def foo(a) if <b>a>1</b> bar(a) end end</pre> </div>
13.
つらい点 ☆ソースハイライトもしたい→unescape?? //emlist{ def foo(a) if a>1 bar(a) end end //} <div
class="emlist-code"> <pre class="emlist">def foo(a) if a>1 bar(a) end end</pre> </div> ???
14.
現パーサの問題点 • 正規表現で頑張っている • パーサがReVIEW::Compilerと ReVIEW::BuilderとReVIEW::*Builderに分割さ れている •
各Builderでの解析方法が統一されていない (ような気がする)
15.
新パーサの方針 • 基本的には書き直し • ad
hocな書き方をせず、ちゃんとパーサを実 装する(既存パーサライブラリor自作パーサ) • ネストは実現できるようにしたい • APIはあまり非互換にしない(変えすぎるとい ろいろつらい) • ReVIEW文法の再定義(明確化)も狙いたい
16.
新パーサの現状 • kpegブランチで開発中(Github Issues
#235) • それなりに動くが、完璧ではない
17.
新パーサの特徴 • パーサジェネレータ(PEG)を使って書き直し • 実装としてはkpegを採用 •
Ruby 1.8∼2.1まで対応(してるといいな…) • 外部gemへの依存なしで動く • 現状はUTF-8のみだが、それ以外の文字コード にも対応可能かも • 現状のAPIに合わせている(kpegとしては不自 然かもしれないが、互換性は高いはず)
18.
新パーサの実装 • lib/review/review.kpegで定義 • 生成されたパーサはlib/review/compiler.rb になる(現状と同名のファイル) •
いったんAST(抽象構文木)を作成したあと、 それを元に各nodeに対する処理を呼び出す • 処理内容は現状同様*Builderに書かれている • *BuilderのAPIは一部非互換(inline_*)
19.
== foo XXXYYY ZZZ //list[foo1][foo2]{ AAA@<b>{BBB}CCC DDD@<raw>{EEE{FFF}GGG} IIIJJJ //} @<ruby>{KKK,LLL} LLLMMM
20.
root Headline level 2 Paragraph Text Text Paragraph Text Text InlineElement foo XXXYYY ZZZ name contents LLLMMM ruby Text KKK BlockElement ☆escapeは ツリーを作った 後で行える name list args foo1 contents Text LLL foo2 SinglelineContent SinglelineContent Text InlineElement Text Text AAA BBB CCC DDD SinglelineContent Raw EEE{FFF}GGG Text IIIJJJ
21.
新パーサの課題 • パーサより文法が決まっていないのが課題 • 複雑なケースに対する処理がこれで正しいのか どうかよく分からない •
//list[t1][@<b>{}] • highlightingとかの制御方法・具体的なルール • インライン+ハイライトは死ぬ • ReVIEWドキュメントの互換性は完璧ではない (むしろ非互換にしたい) • ReVIEW.jsとのマージ
22.
リリーススケジュール • 未定 • 今日の流れ次第で •
2.0で? • 1.xにはしない方が良さそう(互換性の問題 もあるし)
23.
まとめ • パーサを書き換え中 • いろいろスッキリした(はず) •
わりと動いている(はず) • そもそもの仕様を決めないとダメ • 良い機会なので整理したい
Download now