python直譯器實現及其嵌入式應用 實現語法支援

2021-07-27 05:27:40 字數 1813 閱讀 5496

第九部分開始了對語言特性的支援,根據語言定義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. 把』/』轉換成關鍵字div
reserved_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 函式類似,識別一系列格式化單元,但引數 作為輸入引數,而不...