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の字句解析を覗いてみる
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
mm-masahiro
September 27, 2025
Programming
170
0
Share
Goの字句解析を覗いてみる
mm-masahiro
September 27, 2025
Other Decks in Programming
See All in Programming
レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜
panda_program
0
690
PHP 7.4でもOpenTelemetryゼロコード計装がしたい! / PHPerKaigi 2026
arthur1
1
560
SkillがSkillを生む:QA観点出しを自動化した
sontixyou
6
3.3k
夢の無限スパゲッティ製造機 -実装篇- #phpstudy
o0h
PRO
0
200
「速くなった気がする」をデータで疑う
senleaf24
0
160
Codex CLIのSubagentsによる並列API実装 / Parallel API Implementation with Codex CLI Subagents
takatty
2
890
煩雑なSkills管理をSoC(関心の分離)により解決する――関心を分離し、プロンプトを部品として育てるためのOSSを作った話 / Solving Complex Skills Management Through SoC (Separation of Concerns)
nrslib
4
860
PDI: Como Alavancar Sua Carreira e Seu Negócio
marcelgsantos
0
120
2026-03-27 #terminalnight 変数展開とコマンド展開でターミナル作業をスマートにする方法
masasuzu
0
320
「効かない!」依存性注入(DI)を活用したAPI Platformのエラーハンドリング奮闘記
mkmk884
0
320
How Swift's Type System Guides AI Agents
koher
0
220
CursorとClaudeCodeとCodexとOpenCodeを実際に比較してみた
terisuke
1
400
Featured
See All Featured
WENDY [Excerpt]
tessaabrams
9
37k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
810
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
510
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
340
Fireside Chat
paigeccino
42
3.9k
What's in a price? How to price your products and services
michaelherold
247
13k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
The SEO Collaboration Effect
kristinabergwall1
0
420
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
310
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Transcript
Goの字句解析を覗いてみる 2025/9/27 株式会社Voicy 森永 雅大
© Voicy, Inc. func hoge(foo …string) { ~~~ } コンパイル通ると思いますか?
func hoge(foo…string) { ~~~ } 空白なし ① ②
© Voicy, Inc. The Go Programming Language Specification go.dev/ref/spec
© Voicy, Inc. 字句解析とは?
© Voicy, Inc. 字句解析とは? • 文字の並びを解析して、ある言語にとって意味のある最小単位(トーク ン)に分割する仕組み ◦ 字句解析によって、文がトークンに分割される ex.)
var myName = "masahiro"
© Voicy, Inc. 字句解析とは? • 文字の並びを解析して、ある言語にとって意味のある最小単位(トーク ン)に分割する仕組み ◦ 字句解析によって、文がトークンに分割される ex.)
var myName = "masahiro" → var / myName / = / "masahiro"
© Voicy, Inc. Goの字句解析の仕様
© Voicy, Inc. 4つのトークンの種類 • Identifiers • Keywords • Operators
and punctuation • Literals Goの字句解析の仕様
© Voicy, Inc. Identifiers • 変数や関数名などの名前を表すトークン • 1つ以上の文字や数字から成る • 最初の1文字目(character)は、文字(letter)でないといけない
◦ _ は使える ex. 4種類のトークン func voicy() { voicy := "音声配信プラットフォーム " type hiringRole struct { engineer bool } エンジニアが発信しているチャンネル := "https://voicy.jp/channel/1305" }
© Voicy, Inc. Identifiers • 変数や関数名などの名前を表すトークン • 1つ以上の文字や数字から成る • 最初の1文字目(character)は、文字(letter)でないといけない
ex. 4種類のトークン func voicy() { voicy := "音声配信プラットフォーム " type hiringRole struct { engineer bool } エンジニアが発信しているチャンネル := "https://voicy.jp/channel/1305" }
© Voicy, Inc. 空白の扱い • 空白は通常は無視されるが、空白がないと複数あるべきトークンが、別の1つのトー クンとして扱われてしまう場合にはトークンの区切りとして扱われる 空白の扱い var x
= 1 var x=1
© Voicy, Inc. 最長一致のルール 最長一致のルール • 意味のある単位として取れる限り最長の文字列をトークンとして扱う a + 10
a++
© Voicy, Inc. コンパイル通ると思いますか? func hoge(foo …string) { ~~~ }
func hoge(foo…string) { ~~~ } 空白なし ① ②
© Voicy, Inc. コンパイル通ると思いますか? func hoge(foo …string) { ~~~ }
func hoge(foo…string) { ~~~ } 空白なし ① ②
© Voicy, Inc. func hoge(foo…string) {} コンパイル通ると思いますか? 空白あっても なくてもOK!!
音声×テクノロジーでワクワクする社会をつくる