Python編程實現對CodeSys中ST代碼的自動排版(一)

來源:互聯網
上載者:User

經常使用CodeSys編程,不免要去看別人的代碼。

有的代碼中根本沒有代碼縮排的概念,而有的代碼縮排的太多,而又沒有規律,看著頭暈。

給檢查BUG帶來了很大的麻煩。

 

網上類似的代碼格式化軟體很多,不乏精品,可是沒找到支援CodeSys中ST語言的。(有知道的朋友告訴我一聲啊!)

正在學習Python,所以自己試著寫了一個程式,實現代碼的自動排版。

這個代碼僅僅實現了IF、ELSE、ELSIF、END_IF的縮排。後續正在研究中...

 

代碼的實現很簡單,方法也比較笨...

第一步:使用string模組中的strip函數,刪除每一行的行首和行尾的空格

第二步:計算哪行代碼中出現了IF、ELSE、ELSIF、END_IF等關鍵字,根據關鍵字的不同進行不同的縮排。

只是一個想法,後續版本待晚上回家繼續研究.... O(∩_∩)O~

 

 

 1 #coding:gb2312
2  import string
3 text = open("test1.txt",'r')
4 text1 = text.readline()
5 lst1 = []
6  #---------------------------------
7 #刪除行首和行末的空格
8  while (text1 != ''):
9 #print text1
10   lst1.append(string.strip(text1))
11 text1 = text.readline()
12
13 indent = 0
14  for i in lst1:
15 if i[:3] == 'IF ':
16 i = ' '*indent + i
17 indent += 2
18 elif (i[:5] == 'ELSE ')or (i[:5] == 'ELSE') :
19 indent -= 2
20 i = ' '*indent + i
21 indent += 2
22 elif (i[:7] =='END_IF ') or (i[:7] =='END_IF'):
23 indent -= 2
24 i = ' '*indent + i
25 else:
26 i = ' '*indent + i
27 print i

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.