Pythonが動く仕組み
の概要
yotchang4s
2017/09/08
お前誰よ
❖ yotchang4s (よっちゃん)
➢ 澁谷 典明 (Yoshiaki Shibutani)
❖ Python歴
➢ 4ヵ月くらいの初心者
❖ 所属
➢ 無職いぇーい
Pythonが動くざっくりとした仕組み(概念)
1. ソースコードを字句解析して字句のストリームを作る
2. 字句のストリームから構文解析をして抽象構文木(AST)を作る
3. 抽象構文木をevalする(単純なインタプリタ)
(CPythonだとバイトコードを生成してVMで動かす)
今回は特に字句解析の一部について話します。
動かしてみる(デモ)
if 1 == 1:
print("hello")
動かした結果
字句解析器から構文解析器へのストリーム
字句解析器
(Lexer)
if 1 == 1 : <NEWLINE>
<INDENT> print ( "hello" <DEDENT> <NEWLINE>
構文解析器
(Parser)
if 1 == 1:
print("hello")
)
ポイントは論理的な字句である<INDENT>と<DEDENT>。
Pythonでは字句解析でインデントの始まりと終わりを作る。
構文解析からASTの作成
構文解析とASTについては以下を参照。詳細は時間の関係で割愛。
❖ Grammar
➢ 10. 完全な文法仕様 (https://docs.python.org/ja/3/reference/grammar.html)
❖ AST
➢ 32.2.2. 抽象文法 (Abstract Grammar)
(https://docs.python.org/ja/3.6/library/ast.html#abstract-grammar)
ASTから実行
時間の関係で…
何故調べた?
必要だったから。それは…
実は
最初のデモは自作のPython処理系、
cafebabepyで動いています。
裏タイトル
cafebabepyの紹介
cafebabepyとは
cafebabepyはJVM上で動くPython処理系で2017年5月から作り続けています。
2017年9月現在class定義とselfを束縛した関数の
メソッド呼び出しができたところ。デスクリプタ辛い…
残念ながらプロポーザルが落ちてしまったので本日はここまで!
詳しい話が聞きたい奇特な方は直接お声がけ下さい。
cafebabepy (https://github.com/yotchang4s/cafebabepy)

Pythonが動く仕組み(の概要)