第九部分開始了對語言特性的支援,根據語言定義bnf:pr
ogra
m→co
mpou
nd_s
tate
ment
dot co
mpou
nd_s
tate
ment
→beg
inst
atem
ent_
list
end st
atem
ent_
list
→sta
teme
nt|s
tate
ment
semi
stat
emen
t_li
stst
atem
ent→
comp
ound
_sta
teme
nt|a
ssig
nmen
t_st
atem
ent|
empt
y as
sign
ment
_sta
teme
nt→v
aria
blea
ssig
nexp
r va
riab
le→i
d em
pty→
expr→t
erm(
(plu
s|mi
nus)
term
)∗te
rm→f
acto
r((m
ul|d
iv)f
acto
r)∗ fa
ctor
→plu
sfac
tor|
minu
sfac
tor|
inte
ger|
lpar
enex
prrp
aren
|var
iabl
e
1. 關鍵字的大小寫敏感問題
在讀取id的時候,根據id的大寫字串去關鍵字中搜尋,如果有則返回大寫關鍵字,也就是說不管程式中的關鍵字是大寫還是小寫,內部始終是用的大寫的方式。
token = reserved_keywords.get(result.upper(), token(id, result))
2. 把』/』轉換成關鍵字divreserved_keywords =
#if self.current_char == '/':
# self.advance()
# return token(div, '/')
3. 修改直譯器,使得支援下劃線開始的名字命名def
_id(self):
...while self.current_char is
notnone
and (self.current_char.isalnum() or self.current_char == '_'):
...defget_next_token
(self):
...if self.current_char.isalpha() or self.current_char == '_':
return self._id()
...
擴充套件和嵌入python直譯器 摘要
python是一種解釋型,物件導向的程式語言。本文描述如何使用c或c 編寫新模組來擴充套件python直譯器。擴充套件模組能夠定義新的函式也可以定義新的物件型別及其方法。本文也描述了如何將python直譯器作為一種擴充套件語言嵌入到另乙個應用程式中。最後,本文演示了如何編譯和連線擴充套件模組,使擴充...
python直譯器配置 Python直譯器的配置
1 準備工作 安裝好pycharm2017版本 電腦上安裝好python直譯器 2 本地直譯器配置 配置本地直譯器的步驟相對簡潔直觀 1 單擊工具欄中的設定按鈕。2 在settings preferences對話方塊中選中 project interpreter頁面,在project interpr...
《擴充套件和嵌入python直譯器》1 9 構造任意值
1.9 構造任意值 py buildvalue 函式和pyarg parsetuple 相同,宣告如下 pyobject py buildvalue char format,py buildvalue 函式和pyarg parsetuple 函式類似,識別一系列格式化單元,但引數 作為輸入引數,而不...