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
210
Goのパーサ作ってvscode拡張作ってみた!
「めぐろLT#5」にて発表
https://meguro-lt.connpass.com/event/288483/
ほりしょー
July 31, 2023
Tweet
Share
More Decks by ほりしょー
See All by ほりしょー
開発プロセスを継続的に改善する仕組み作り ~ 強いスクラムをいかに維持するか ~
h0r15h0
0
120
ドメインイベント増えすぎ問題
h0r15h0
2
850
LLM(Copilot)を最大限活用するための取り組みとその副産物
h0r15h0
1
200
現実世界の事象から学ぶSOLID原則
h0r15h0
30
22k
集団意思決定の落とし穴と誰も望まない技術的負債
h0r15h0
1
5.2k
デザインパターンを学んだら世界が広がった話
h0r15h0
2
410
Other Decks in Technology
See All in Technology
20年以上続く PHP 大規模プロダクトを Kubernetes へ ── クラウド基盤刷新プロジェクトの4年間
oogfranz
PRO
0
310
スケールアップ企業でQA組織が機能し続けるための組織設計と仕組み〜ボトムアップとトップダウンを両輪としたアプローチ〜
tarappo
4
370
20260320_JaSST26_Tokyo_登壇資料.pdf
mura_shin
0
120
データマネジメント戦略Night - 4社のリアルを語る会
ktatsuya
1
250
Phase12_総括_自走化
overflowinc
0
1.5k
JEDAI認定プログラム JEDAI Order 2026 受賞者一覧 / JEDAI Order 2026 Winners
databricksjapan
0
340
AI時代のIssue駆動開発のススメ
moongift
PRO
0
240
20260323_データ分析基盤でGeminiを使う話
1210yuichi0
0
180
「コントロールの三分法」で考える「コト」への向き合い方 / phperkaigi2026
blue_goheimochi
0
160
【PHPerKaigi2026】OpenTelemetry SDKを使ってPHPでAPMを自作する
fendo181
1
290
大規模ECサイトのあるバッチのパフォーマンスを改善するために僕たちのチームがしてきたこと
panda_program
1
390
私がよく使うMCPサーバー3選と社内で安全に活用する方法
kintotechdev
0
110
Featured
See All Featured
The Curious Case for Waylosing
cassininazir
0
280
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
420
KATA
mclloyd
PRO
35
15k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
320
The Limits of Empathy - UXLibs8
cassininazir
1
270
Google's AI Overviews - The New Search
badams
0
950
Paper Plane (Part 1)
katiecoart
PRO
0
5.9k
WENDY [Excerpt]
tessaabrams
9
37k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
Statistics for Hackers
jakevdp
799
230k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
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