Python编程实现对CodeSys中ST代码的自动排版(一)-CODESYS资源下载区-酷德网 - CoDeSys软件教程下载,CoDeSys工控资讯门户 

酷德网

HSC6150发布~
查看: 151|回复: 1

Python编程实现对CodeSys中ST代码的自动排版(一)

[复制链接]
  • TA的每日心情
    擦汗
    2019-8-13 14:13
  • 签到天数: 32 天

    [LV.5]常住居民I

    发表于 2020-8-7 16:33:22 | 显示全部楼层 |阅读模式
    [size=13.3333px]经常使用CodeSys编程,不免要去看别人的代码。
    [size=13.3333px]有的代码中根本没有代码缩进的概念,而有的代码缩进的太多,而又没有规律,看着头晕。
    [size=13.3333px]给检查BUG带来了很大的麻烦。

    [size=13.3333px]网上类似的代码格式化软件很多,不乏精品,可是没找到支持CodeSys中ST语言的。(有知道的朋友告诉我一声啊!)
    [size=13.3333px]正在学习Python,所以自己试着写了一个程序,实现代码的自动排版。
    [size=13.3333px]这个代码仅仅实现了IF、ELSE、ELSIF、END_IF的缩进。后续正在研究中...

    [size=13.3333px]代码的实现很简单,方法也比较笨...
    [size=13.3333px]第一步:使用string模块中的strip函数,删除每一行的行首和行尾的空格
    [size=13.3333px]第二步:计算哪行代码中出现了IF、ELSE、ELSIF、END_IF等关键字,根据关键字的不同进行不同的缩进。
    [size=13.3333px]只是一个想法,后续版本待晚上回家继续研究.... O(∩_∩)O~
    [Python] 纯文本查看 复制代码
      #coding:gb2312
       import string
      text = open("test1.txt",'r')
      text1 = text.readline()
      lst1 = []
       #---------------------------------
      #删除行首和行末的空格
       while (text1 != ''):
        #print text1
        lst1.append(string.strip(text1))
       text1 = text.readline()
     
     indent = 0
      for i in lst1:
       if i[:3] == 'IF ':
         i = ' '*indent + i
         indent += 2
       elif (i[:5] == 'ELSE ')or (i[:5] == 'ELSE') :
         indent -= 2
         i = ' '*indent + i
         indent += 2
       elif (i[:7] =='END_IF ') or (i[:7] =='END_IF'):
         indent -= 2
         i = ' '*indent + i
       else:
         i = ' '*indent + i
       print i

    点评

    楼主你好,我也对Codesys编辑器不友好感到烦恼,我曾经做过一款自定义编辑器,Git开源项目Scintilla.可以实现语法自动缩进及高亮显示代码提示  发表于 2020-8-24 17:38
    打赏鼓励一下!
    +10
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

    本版积分规则

    
    顶部qrcode底部
    关注酷德网订阅号,获取更多资讯!

    QQ|小黑屋|手机版|Archiver|酷德论坛 ( 苏ICP备16065247号 )|网站地图

    GMT+8, 2020-11-24 11:01 , Processed in 0.214548 second(s), 55 queries .

    酷德网

    © 2001-2013 Hicodesys. 技术支持 by 酷德网

    快速回复 返回顶部 返回列表