Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
masayoshi takahashi
8,062 views
新・ReVIEWパーサについて
ReVIEW開発者カンファレンスで使用した発表資料です。
Technology
◦
Read more
2
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 23
2
/ 23
3
/ 23
4
/ 23
5
/ 23
6
/ 23
7
/ 23
8
/ 23
9
/ 23
10
/ 23
11
/ 23
12
/ 23
13
/ 23
14
/ 23
15
/ 23
16
/ 23
17
/ 23
18
/ 23
19
/ 23
20
/ 23
21
/ 23
22
/ 23
23
/ 23
More Related Content
PDF
インフラエンジニアとして普段心がけていること
by
Shohei Koyama
PDF
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
by
ShogoOkazaki
PDF
Getting start with knockout.js
by
Akio Ishida
PDF
WebStormでできること
by
kamiyam .
PDF
IDEALIZE YOU
by
佑介 九岡
PPTX
20200809 jcdug lt
by
ひかり 影中
PDF
Nespのコード生成
by
Kouji Matsui
PDF
SaCSS vol.56 こんなに素敵なBrackets!
by
Atsushi Handa
インフラエンジニアとして普段心がけていること
by
Shohei Koyama
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
by
ShogoOkazaki
Getting start with knockout.js
by
Akio Ishida
WebStormでできること
by
kamiyam .
IDEALIZE YOU
by
佑介 九岡
20200809 jcdug lt
by
ひかり 影中
Nespのコード生成
by
Kouji Matsui
SaCSS vol.56 こんなに素敵なBrackets!
by
Atsushi Handa
What's hot
PPTX
今さら聞けない人のためのDevOps超入門
by
VirtualTech Japan Inc.
PDF
TypeScript x Bot Framework
by
Kazumi OHIRA
KEY
cocos2d ☓ OpenOffice
by
Kazunori Nanji
PPTX
Blazor WebAssembly と Windows Forms でのロジック共有例
by
Koichi Ota
PDF
サブドメイン前提のチーム機能開発で踏んだ OAuthの罠の話 in express
by
Takahiro YAMAGUCHI
PPTX
Type scriptmemo
by
ytanno
PDF
React+fluxを導入した話
by
Yuki Ishikawa
PDF
Riot.jsと仲良くなるための僕的tips
by
Keisuke Imai
PDF
Riotでサーバレスにした話
by
Hiroyuki Hara
PDF
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
by
Masahiro Wakame
PDF
パターンでわかる! .NET Coreの非同期処理
by
Kouji Matsui
PPTX
Microservices Architecture の利点と欠点
by
ota42y
PPTX
ソフトウェア開発が好きだ
by
Koichi Ota
PDF
恐怖!シェルショッカー1号男
by
Tomoyuki Matsuura
PPTX
おっさんES6/ES2015,React.jsを学ぶ
by
dcubeio
PDF
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
by
Masahiro Wakame
今さら聞けない人のためのDevOps超入門
by
VirtualTech Japan Inc.
TypeScript x Bot Framework
by
Kazumi OHIRA
cocos2d ☓ OpenOffice
by
Kazunori Nanji
Blazor WebAssembly と Windows Forms でのロジック共有例
by
Koichi Ota
サブドメイン前提のチーム機能開発で踏んだ OAuthの罠の話 in express
by
Takahiro YAMAGUCHI
Type scriptmemo
by
ytanno
React+fluxを導入した話
by
Yuki Ishikawa
Riot.jsと仲良くなるための僕的tips
by
Keisuke Imai
Riotでサーバレスにした話
by
Hiroyuki Hara
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
by
Masahiro Wakame
パターンでわかる! .NET Coreの非同期処理
by
Kouji Matsui
Microservices Architecture の利点と欠点
by
ota42y
ソフトウェア開発が好きだ
by
Koichi Ota
恐怖!シェルショッカー1号男
by
Tomoyuki Matsuura
おっさんES6/ES2015,React.jsを学ぶ
by
dcubeio
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
by
Masahiro Wakame
More from masayoshi takahashi
PDF
osc2019tokyospring
by
masayoshi takahashi
PDF
Ruby25: Rubyの1/4世紀
by
masayoshi takahashi
PDF
Code for 選挙とWikidata
by
masayoshi takahashi
PDF
青空文庫と式年遷宮アーキテクチャ: 青空文庫200周年に向けて
by
masayoshi takahashi
PDF
青空文庫テキストフォーマットについて (aozorahack)
by
masayoshi takahashi
PPTX
Aozorahack20161106
by
masayoshi takahashi
PDF
aozorahack hackathon #1
by
masayoshi takahashi
PDF
TdX#01 RubyKaigiの作り方
by
masayoshi takahashi
PDF
aozorahackと青空文庫の現状とこれから (OSC 2016 Tokyo/Spring)
by
masayoshi takahashi
PDF
オープンソースとプラットフォームとお金
by
masayoshi takahashi
PDF
Webと電子書籍の話
by
masayoshi takahashi
PDF
Re:VIEW新パーサ現状確認(2015年2月版)
by
masayoshi takahashi
PDF
何となく勉強した気分になれるパーサ入門
by
masayoshi takahashi
PDF
How To Become A Rubyist
by
masayoshi takahashi
PDF
Markdownもはじめよう
by
masayoshi takahashi
PDF
電子出版はどこを 目指すのか・技術書編
by
masayoshi takahashi
PDF
The History of Ruby; 20th Anniversary Ed.
by
masayoshi takahashi
PDF
lldecade2012
by
masayoshi takahashi
PDF
mruby for embedded systems
by
masayoshi takahashi
PDF
mrubyのすすめ
by
masayoshi takahashi
osc2019tokyospring
by
masayoshi takahashi
Ruby25: Rubyの1/4世紀
by
masayoshi takahashi
Code for 選挙とWikidata
by
masayoshi takahashi
青空文庫と式年遷宮アーキテクチャ: 青空文庫200周年に向けて
by
masayoshi takahashi
青空文庫テキストフォーマットについて (aozorahack)
by
masayoshi takahashi
Aozorahack20161106
by
masayoshi takahashi
aozorahack hackathon #1
by
masayoshi takahashi
TdX#01 RubyKaigiの作り方
by
masayoshi takahashi
aozorahackと青空文庫の現状とこれから (OSC 2016 Tokyo/Spring)
by
masayoshi takahashi
オープンソースとプラットフォームとお金
by
masayoshi takahashi
Webと電子書籍の話
by
masayoshi takahashi
Re:VIEW新パーサ現状確認(2015年2月版)
by
masayoshi takahashi
何となく勉強した気分になれるパーサ入門
by
masayoshi takahashi
How To Become A Rubyist
by
masayoshi takahashi
Markdownもはじめよう
by
masayoshi takahashi
電子出版はどこを 目指すのか・技術書編
by
masayoshi takahashi
The History of Ruby; 20th Anniversary Ed.
by
masayoshi takahashi
lldecade2012
by
masayoshi takahashi
mruby for embedded systems
by
masayoshi takahashi
mrubyのすすめ
by
masayoshi takahashi
Recently uploaded
PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
PDF
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard
by
akipii ogaoga
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
PDF
PMBOK 7th Edition Project Management Process Scrum
by
akipii ogaoga
PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
PDF
PMBOK 7th Edition_Project Management Process_WF Type Development
by
akipii ogaoga
PDF
PMBOK 7th Edition_Project Management Context Diagram
by
akipii ogaoga
PDF
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
by
Yuto Matsuda
PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard
by
akipii ogaoga
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
PMBOK 7th Edition Project Management Process Scrum
by
akipii ogaoga
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
PMBOK 7th Edition_Project Management Process_WF Type Development
by
akipii ogaoga
PMBOK 7th Edition_Project Management Context Diagram
by
akipii ogaoga
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
by
Yuto Matsuda
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
新・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