トークン ラボ
Python があなたのコードを最小の部品「トークン」に切り分ける様子を、実物どおりに見せます。 「やさしい」で直感を、「くわしい」で本物の字句解析器の出力を。
🔍 トークン列— 実際の tokenize 出力(0 トークン)
(コードを入力してください)
👆 トークンをタップすると、種類・位置・意味がわかります。
いろ と 種類の凡例
NAME
識別子・キーワード(全部 NAME)
識別子・キーワード(全部 NAME)
NUMBER
数値リテラル
数値リテラル
STRING
文字列リテラル
文字列リテラル
OP
演算子・区切り(exact型つき)
演算子・区切り(exact型つき)
( ) [ ] { }
OP の中の括弧(LPAR等)
OP の中の括弧(LPAR等)
COMMENT
コメント
コメント
NEWLINE / NL
論理行末 / 意味なし改行
論理行末 / 意味なし改行
INDENT / DEDENT
字下げの増減(構造)
字下げの増減(構造)
ENDMARKER
入力の終端
入力の終端
💡 「()」の ひみつ
print
🍬🎁➡️👉
なまえを ゆびさすだけ
「これ!」と いってるだけ。まだ うごかない。
print()
🍬🎁➡️✨
ボタンを おした!
「いま やって!」で、なかみが うごく。
🔑 なまえ=「どれ?」/ ()=「いま やって!」の あいず。
だから、わたす ものが なくても、「やって!」の () は つけるんだ。
だから、わたす ものが なくても、「やって!」の () は つけるんだ。
🙂コードを かえると、ここに ヒントが でます。
厳密には: 字句解析器(tokenizer)が見ているのは
同じ理由で、
NAME 'print' ・ OP '(' (LPAR) ・ OP ')' (RPAR) という並びだけです。これを 「関数呼び出し」= Call(func=Name('print'), args=[]) と解釈するのは、 次の段階の構文解析器(parser)の仕事。同じ理由で、
if や for も字句解析の時点ではただの NAME トークンで、キーワードかどうかは後の段階で判定されます。🌳 構文木(AST)
(コードを入力してください)
⚙️ バイトコード
(コードを入力してください)
🧮 スタックマシン
(コードを入力してください)