Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ほりしょー Go のパーサを作って VSCode 拡張作ってみた!
Slide 2
Slide 2 text
ほりしょー(堀崎祥) ラクスル23 新卒入社 ハコベル所属 サーバーサイドエンジニア Go / Ruby / DDD 自己紹介
Slide 3
Slide 3 text
なに作ったの?
Slide 4
Slide 4 text
Go Getter Setter Go のstruct からGetter, Setter を自動生成 してくれるVSCode 拡張 VSCode Marketplace GitHub
Slide 5
Slide 5 text
なぜ作ったのか? 既存拡張では 自動入力できない 構文が存在 生成コードの テンプレートを 用意したい Go の言語仕様を おさらいしたい 1 2 3
Slide 6
Slide 6 text
なぜ作ったのか? 入力フォーマット を自由に設定 したい 既存拡張では 自動入力できない 構文が存在 Go の言語仕様を おさらいしたい 1 2 今日は ← → の話 3 独自パーサ 言語仕様
Slide 7
Slide 7 text
パーサ VSCode 拡張 独自パーサの話 既存拡張は正規表現ベース → 複雑な型(複数行に及ぶ型, struct とか) が存在すると解析できない。 ならば、言語仕様に則った パーサを作ってしまおう パーサジェネレータの Flex, Bison(ts-jison) を使用して パーサを作成 (ts-jison) Flex, Bison パーサ生成
Slide 8
Slide 8 text
パーサジェネレータ 元はGCC に使用 Ruby, Go などにも使用されていた パーサを作成するためのプログラム 細かい処理を気にせず 構文規則を記述しパーサを作成可能 Flex( 字句解析), Bison( 構文解析) 頑張って構文規則を書いてくのみ! BNF 記法
Slide 9
Slide 9 text
言語仕様は? Go では言語仕様が公開されている The Go Programming Language Specification EBNF 記法で記述されているため Bison に移行しやすい。 言語仕様は薄いので頑張って読む!
Slide 10
Slide 10 text
なぜ作ったのか? 入力フォーマット を自由に設定 したい 既存拡張では 自動入力できない 構文が存在 Go の言語仕様を おさらいしたい 1 2 3 独自パーサ 言語仕様 今日は ← → の話 (VSCode 拡張の話はしません🙇) 構文規則を頑張って書く Go のSpec を漁る
Slide 11
Slide 11 text
ぜひ使ってみ てください〜 Go Getter Setter VSCode Marketplace GitHub