Tag: tokenizer

  • Python 底層運作 02 – PyTokenizer_Get 分析

    當 Python 在讀入程式碼的時候, 第一步就是對程式碼 lexing,將程式碼拆解成 token,標記出每個元素的分類為何。 以下面的程式碼為例: bar = 12345 我們透過 tokenize module 來分析,會變成: $ ./python -m tokenize tests.py 0,0-0,0: ENCODING ‘utf-8’ 1,0-1,3: NAME ‘foo’ 1,4-1,5: OP ‘=’ 1,6-1,11: NUMBER ‘12345’ 1,11-1,12: NEWLINE ‘\n’ 2,0-2,1: NL ‘\n’ 3,0-3,1: NL ‘\n’ 4,0-4,0: ENDMARKER ” 我們可以看到 foo 被標記為 NAME,= 標記為 OP (operator),12345 則被標記為 NUMBER。 在 CPython 中,負責將程式碼標記成 token 的程式碼是 PyTokenizer_Get ,位於 Parser/tokenizer.c。PyTokenizer_Get…