日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

编译原理----词法分析程序----python语言版

發(fā)布時(shí)間:2025/3/15 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编译原理----词法分析程序----python语言版 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
對(duì)python的應(yīng)用還是不熟練,很多實(shí)用的方法沒(méi)掌握,下面的程序本來(lái)是用C寫(xiě)的,為了練習(xí)一下python,又用python改寫(xiě)的,很粗糙,有bug,不過(guò)能運(yùn)行出結(jié)果,嘿嘿,以后學(xué)好了python再來(lái)優(yōu)化吧
#?-*-?coding:?cp936?-*-
Keyword?=?("begin","end","if","while","var","procedure","else","for","do","int","read","write")
Yunsuanfu?=?('+','-','*','/','<','>','%','=')
Fenjiefu?=?(',',';','(',')','{','}',':')
Kongbai?=?('?','\t','\n')
Number?=?('0','1','2','3','4','5','6','7','8','9')

test="var?a=10;\nvar?b,c;\nprocedure?p;?\n\tbegin\n\t\tc=a+b\n\tend\n"
print?test
length=len(test)

for?i?in?range(length):
????if?test[i]?in?Kongbai:
????????continue
????if?test[i]?in?Fenjiefu:
????????print?"分界符\t",test[i]
????????continue
????if?test[i]?in?Yunsuanfu:
????????print?"運(yùn)算符\t",test[i]
????????continue
????if?test[i-1]?in?Number:
????????continue
????if?test[i]?in?Number:
????????print?"數(shù)字\t",
????????while?test[i]?in?Number:
????????????print?test[i],
????????????i+=1
????????print?''
????if?test[i-1]?in?Number?or?(test[i-1]>='a'?and?test[i-1]<='z'):
????????continue
????j=0
????temp?=?""
????while?True:
????????if?test[i]?in?Kongbai?or?test[i]?in?Yunsuanfu?or?test[i]?in?Fenjiefu:
????????????break
????????else:
????????????j+=1
????????i+=1
????temp?=?test[i-j:i]????
????if?temp?in?Keyword:
????????print?"關(guān)鍵字\t",temp
????else:
????????print?"標(biāo)識(shí)符\t",temp

2012年3月21日 22:43:52改寫(xiě)的代碼:

?1?#?-*-?coding:?cp936?-*-
?2?Keyword?=?("begin","end","if","while","var","procedure","else","for","do","int","read","write")
?3?Yunsuanfu?=?('+','-','*','/','<','>','%','=')
?4?Fenjiefu?=?(',',';','(',')','{','}',':')
?5?Kongbai?=?('?','\t','\n')
?6?
?7?test="var?a=10;\nvar?b,c;\nprocedure?p;?\n\tbegin\n\t\tc=a+b\n\tend\n"
?8?print?test
?9?length=len(test)
10?i=-1
11?while?i?<?length:
12?????i+=1
13?????if?test[i]?in?Kongbai:
14?????????continue
15?????if?test[i]?in?Fenjiefu:
16?????????print?"分界符\t",test[i]
17?????????continue
18?????if?test[i]?in?Yunsuanfu:
19?????????print?"運(yùn)算符\t",test[i]
20?????????continue
21?????if?test[i].isdigit():
22?????????print?"數(shù)字\t",
23?????????while?test[i].isdigit():
24?????????????print?test[i],
25?????????????i+=1
26?????????print?''
27?????????i-=1
28?????????continue
29?????j=0
30?????temp?=?""
31?????while?True:
32?????????if?test[i]?in?Kongbai?or?test[i]?in?Yunsuanfu?or?test[i]?in?Fenjiefu:
33?????????????break
34?????????else:
35?????????????j+=1
36?????????i+=1
37?????temp?=?test[i-j:i]????
38?????if?temp?in?Keyword:
39?????????print?"關(guān)鍵字\t",temp
40?????else:
41?????????print?"標(biāo)識(shí)符\t",temp

42?????i-=1?

?


博主ma6174對(duì)本博客文章(除轉(zhuǎn)載的)享有版權(quán),未經(jīng)許可不得用于商業(yè)用途。轉(zhuǎn)載請(qǐng)注明出處http://www.cnblogs.com/ma6174/

對(duì)文章有啥看法或建議,可以評(píng)論或發(fā)電子郵件到ma6174@163.com


本文轉(zhuǎn)自ma6174博客園博客,原文鏈接:http://www.cnblogs.com/ma6174/archive/2012/03/20/2407383.html,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者

總結(jié)

以上是生活随笔為你收集整理的编译原理----词法分析程序----python语言版的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。