Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Goのパーサ作ってvscode拡張作ってみた!
Search
ほりしょー
July 31, 2023
Technology
0
180
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
800
LLM(Copilot)を最大限活用するための取り組みとその副産物
h0r15h0
1
180
現実世界の事象から学ぶSOLID原則
h0r15h0
29
21k
集団意思決定の落とし穴と誰も望まない技術的負債
h0r15h0
1
5.1k
デザインパターンを学んだら世界が広がった話
h0r15h0
2
380
Other Decks in Technology
See All in Technology
事業部のプロジェクト進行と開発チームの改善の “時間軸" のすり合わせ
konifar
9
3.2k
生成AI時代の自動E2Eテスト運用とPlaywright実践知_引持力哉
legalontechnologies
PRO
0
190
MS Ignite 2025で発表されたFoundry IQをRecap
satodayo
3
250
乗りこなせAI駆動開発の波
eltociear
1
600
[JAWS-UG 横浜支部 #91]DevOps Agent vs CloudWatch Investigations -比較と実践-
sh_fk2
1
220
「Managed Instances」と「durable functions」で広がるAWS Lambdaのユースケース
lamaglama39
0
170
AI/MLのマルチテナント基盤を支えるコンテナ技術
pfn
PRO
5
780
Playwright x GitHub Actionsで実現する「レビューしやすい」E2Eテストレポート
kinosuke01
0
190
形式手法特論:CEGAR を用いたモデル検査の状態空間削減 #kernelvm / Kernel VM Study Hokuriku Part 8
ytaka23
2
400
Claude Code はじめてガイド -1時間で学べるAI駆動開発の基本と実践-
oikon48
45
27k
Databricksによるエージェント構築
taka_aki
1
140
A Compass of Thought: Guiding the Future of Test Automation ( #jassttokai25 , #jassttokai )
teyamagu
PRO
1
230
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
95
14k
Designing for humans not robots
tammielis
254
26k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Building Adaptive Systems
keathley
44
2.9k
Being A Developer After 40
akosma
91
590k
Scaling GitHub
holman
464
140k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Statistics for Hackers
jakevdp
799
230k
The Language of Interfaces
destraynor
162
25k
Side Projects
sachag
455
43k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
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