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
190
Goのパーサ作ってvscode拡張作ってみた!
「めぐろLT#5」にて発表
https://meguro-lt.connpass.com/event/288483/
ほりしょー
July 31, 2023
Tweet
Share
More Decks by ほりしょー
See All by ほりしょー
開発プロセスを継続的に改善する仕組み作り ~ 強いスクラムをいかに維持するか ~
h0r15h0
0
110
ドメインイベント増えすぎ問題
h0r15h0
2
830
LLM(Copilot)を最大限活用するための取り組みとその副産物
h0r15h0
1
190
現実世界の事象から学ぶSOLID原則
h0r15h0
29
21k
集団意思決定の落とし穴と誰も望まない技術的負債
h0r15h0
1
5.1k
デザインパターンを学んだら世界が広がった話
h0r15h0
2
390
Other Decks in Technology
See All in Technology
【Oracle Cloud ウェビナー】ランサムウェアが突く「侵入の隙」とバックアップの「死角」 ~ 過去の教訓に学ぶ — 侵入前提の防御とデータ保護 ~
oracle4engineer
PRO
0
140
製造業から学んだ「本質を守り現場に合わせるアジャイル実践」
kamitokusari
0
740
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
Qiita Bash アドカレ LT #1
okaru
0
190
AI に「学ばせ、調べさせ、作らせる」。Auth0 開発を加速させる7つの実践的アプローチ
scova0731
0
300
あの夜、私たちは「人間」に戻った。 ── 災害ユートピア、贈与、そしてアジャイルの再構築 / 20260108 Hiromitsu Akiba
shift_evolve
PRO
0
710
これまでのネットワーク運用を変えるかもしれないアプデをおさらい
hatahata021
3
200
RALGO : AIを組織に組み込む方法 -アルゴリズム中心組織設計- #RSGT2026 / RALGO: How to Integrate AI into an Organization – Algorithm-Centric Organizational Design
kyonmm
PRO
3
1.4k
Vivre en Bitcoin : le tutoriel que votre banquier ne veut pas que vous voyiez
rlifchitz
0
290
Kusakabe_面白いダッシュボードの表現方法
ykka
0
300
コミュニティが持つ「学びと成長の場」としての作用 / RSGT2026
ama_ch
2
330
2025年 山梨の技術コミュニティを振り返る
yuukis
0
160
Featured
See All Featured
[SF Ruby Conf 2025] Rails X
palkan
0
710
The Spectacular Lies of Maps
axbom
PRO
1
440
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
A Modern Web Designer's Workflow
chriscoyier
698
190k
WENDY [Excerpt]
tessaabrams
9
35k
Building an army of robots
kneath
306
46k
BBQ
matthewcrist
89
10k
HDC tutorial
michielstock
1
320
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
100
Leo the Paperboy
mayatellez
3
1.3k
Darren the Foodie - Storyboard
khoart
PRO
2
2.2k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
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