TEST_STRING = ["eadeaa", "edeaebd", "edeaeaadabacae"]
class Tools():
'''
@:parameter point
Description : This is a point which holds the position being processed
@:parameter content
Description: It keeps the test string
@:parameter temp
Description: when an error occurs, using it to step back from last point position
'''
def __init__(self, content):
self.content = content
self.point = 0
self.temp = 0 # 用于指針退回
def parse_E(self):
print('E', end=" ")
if (
self.is_e() and
self.parse_B() and
self.is_a() and
self.parse_A()):
return True
else:
return False
def parse_A(self):
print('A', end=" ")
if self.is_a():
return True
if (
self.is_b() and
self.parse_A() and
self.is_c() and
self.parse_B()):
return True
else:
return False
def parse_B(self):
self.temp = self.point
print('B', end=" ")
if (
self.is_d() and
self.parse_E() and
self.is_e()
):
return True
self.point = self.temp
if (
self.is_a() and
self.parse_C()
):
return True
else:
return False
def parse_C(self):
print('C', end=" ")
if self.is_e():
return True
if (
self.is_d() and
self.parse_C()
):
return True
else:
return False
def is_a(self):
if self.content[self.point] == 'a':
self.point += 1
return True
else:
return False
def is_b(self):
if self.content[self.point] == 'b':
self.point += 1
return True
else:
return False
def is_c(self):
if self.content[self.point] == 'c':
self.point += 1
return True
else:
return False
def is_d(self):
if self.content[self.point] == 'd':
self.point += 1
return True
else:
return False
def is_e(self):
if self.content[self.point] == 'e':
self.point += 1
return True
else:
return False
def process(self):
if self.parse_E():
print("\nOK")
else:
print("\nError")
if __name__ == "__main__":
for content in TEST_STRING:
print("Test String: %s" % content)
Tools(content).process()
print('')
編譯原理:遞歸下降分析法
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門抵怎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奋救,“玉大人,你說我怎么就攤上這事反惕〕⑺遥” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵姿染,是天一觀的道長背亥。 經(jīng)常有香客問我,道長悬赏,這世上最難降的妖魔是什么隘梨? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮舷嗡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嵌莉。我一直安慰自己进萄,他們只是感情好,可當我...
- 文/花漫 我一把揭開白布锐峭。 她就那樣靜靜地躺著中鼠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沿癞。 梳的紋絲不亂的頭發(fā)上援雇,一...
- 文/蒼蘭香墨 我猛地睜開眼揖铜,長吁一口氣:“原來是場噩夢啊……” “哼茴丰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布钟病,位于F島的核電站,受9級特大地震影響刚梭,放射性物質(zhì)發(fā)生泄漏肠阱。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一朴读、第九天 我趴在偏房一處隱蔽的房頂上張望屹徘。 院中可真熱鬧,春花似錦衅金、人聲如沸噪伊。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽鉴吹。三九已至,卻和暖如春惩琉,著一層夾襖步出監(jiān)牢的瞬間豆励,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 遞歸解析器中每個非終結(jié)符A都有產(chǎn)生式A始赎。我們可以將解析器擴展為翻譯器和橙,如下所示: a)產(chǎn)生式A的參數(shù)是非終結(jié)點A的...
- 在公眾號看到了一句話乡翅,他教會了你什么是愛,他卻不愛你罪郊。突然想到另一句話蠕蚜,你也總會用自己去教會一個人什么是愛如何去愛...