Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Goのパーサ作ってvscode拡張作ってみた!
Search
ほりしょー
July 31, 2023
Technology
0
65
Goのパーサ作ってvscode拡張作ってみた!
「めぐろLT#5」にて発表
https://meguro-lt.connpass.com/event/288483/
ほりしょー
July 31, 2023
Tweet
Share
More Decks by ほりしょー
See All by ほりしょー
現実世界の事象から学ぶSOLID原則
h0r15h0
27
16k
集団意思決定の落とし穴と誰も望まない技術的負債
h0r15h0
0
4.3k
デザインパターンを学んだら世界が広がった話
h0r15h0
1
170
Other Decks in Technology
See All in Technology
開発生産性をむしろ向上させる セキュリティパートナーの作り方 / Dev Productivity Con 2024
flatt_security
0
360
AWS IAMのアンチパターン/AWSが考える最低権限実現へのアプローチ概略(JAWS-UG朝会#59資料改修20分版)
htan
0
330
Azure AI ことはじめ
tsubakimoto_s
0
130
Git 研修 Basic【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
310
さらに高品質・高速化を目指すAI時代のテスト設計支援と、めざす先 / AI Test Lab vol.1
shift_evolve
0
190
ペパボのオブザーバビリティ研修2024 説明資料
kesompochy
0
1.1k
エンジニア向け会社紹介資料
caddi_eng
14
220k
MySQLのロックの種類とその競合
yoku0825
6
1.6k
公共領域から学ぶ クラウド移行についてエンジニアが意識していること
kawakawa2222
0
140
技術負債による事業の失敗はなぜ起こるのか / Why do business failures due to technical debt occur?
i35_267
0
190
地理情報とAPIのトレンド
nagix
0
160
コンテナ・K8s研修 - 前半 コンテナ基礎・ハンズオン【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
170
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
346
19k
Creatively Recalculating Your Daily Design Routine
revolveconf
214
11k
A Philosophy of Restraint
colly
200
16k
Robots, Beer and Maslow
schacon
PRO
157
8.1k
4 Signs Your Business is Dying
shpigford
178
21k
Building Better People: How to give real-time feedback that sticks.
wjessup
357
18k
A Tale of Four Properties
chriscoyier
155
22k
StorybookのUI Testing Handbookを読んだ
zakiyama
15
4.9k
Six Lessons from altMBA
skipperchong
24
3.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
18
1.2k
Web Components: a chance to create the future
zenorocha
307
41k
Statistics for Hackers
jakevdp
792
220k
Transcript
ほりしょー Go のパーサを作って VSCode 拡張作ってみた!
ほりしょー(堀崎祥) ラクスル23 新卒入社 ハコベル所属 サーバーサイドエンジニア Go / Ruby / DDD
自己紹介
なに作ったの?
Go Getter Setter Go のstruct からGetter, Setter を自動生成 してくれるVSCode 拡張
VSCode Marketplace GitHub
なぜ作ったのか? 既存拡張では 自動入力できない 構文が存在 生成コードの テンプレートを 用意したい Go の言語仕様を おさらいしたい
1 2 3
なぜ作ったのか? 入力フォーマット を自由に設定 したい 既存拡張では 自動入力できない 構文が存在 Go の言語仕様を おさらいしたい
1 2 今日は ← → の話 3 独自パーサ 言語仕様
パーサ VSCode 拡張 独自パーサの話 既存拡張は正規表現ベース → 複雑な型(複数行に及ぶ型, struct とか) が存在すると解析できない。
ならば、言語仕様に則った パーサを作ってしまおう パーサジェネレータの Flex, Bison(ts-jison) を使用して パーサを作成 (ts-jison) Flex, Bison パーサ生成
パーサジェネレータ 元はGCC に使用 Ruby, Go などにも使用されていた パーサを作成するためのプログラム 細かい処理を気にせず 構文規則を記述しパーサを作成可能 Flex(
字句解析), Bison( 構文解析) 頑張って構文規則を書いてくのみ! BNF 記法
言語仕様は? Go では言語仕様が公開されている The Go Programming Language Specification EBNF 記法で記述されているため
Bison に移行しやすい。 言語仕様は薄いので頑張って読む!
なぜ作ったのか? 入力フォーマット を自由に設定 したい 既存拡張では 自動入力できない 構文が存在 Go の言語仕様を おさらいしたい
1 2 3 独自パーサ 言語仕様 今日は ← → の話 (VSCode 拡張の話はしません🙇) 構文規則を頑張って書く Go のSpec を漁る
ぜひ使ってみ てください〜 Go Getter Setter VSCode Marketplace GitHub