由于最近要用ISaGRAF来写结构化文本语言的程序,而ISaGRAF写代码的界面和记事本差不多,只能换其它的文本编辑器了。
先试了PSPad,自定义了语法高亮,由于要按Ctrl+J才能自动补全,而notepad++可以敲字母的时候直接自动补全就显示出来了,方便些,于是又试了下notepad++的自定义语言格式。就自定义的语法高亮来说,PSPad比notepad++好用。
先说PSPad的自定义语法高亮:
安装目录下的Syntax文件夹下的*.ini就是语言的配置文件。
“设置 - 自定义语法高亮”,由于是要新建一个,所以在弹出的“打开”对话框中选“取消”,(如果是要修改之前的,则选中之前的ini文件选“打开”)。
点击保存后ISaGRAF.ini保存在了Syntax文件夹下,上图右侧1对应的是[KeyWords],2 -[ReservedWords],3 -[KeyWords2],4 -[KeyWords3],内容如下:
;PSPad user HighLighter definition file[Settings]Name=ISaGRAFHTMLGroup=0Vectors=0Label=1FileType=.stfCommentString=ANSIComment=1IndentChar=UnIndentChar=TabWidth=0SingleQuote=1EscString=0EscChar=\KeyWordChars=_CodeExplorer=ftUnknownDocComment=[KeyWords]BY=CASE=DO=ELSE=ELSIF=END_CASE=END_FOR=END_IF=END_REPEAT=END_WHILE=EXIT=FOR=IF=OF=REPEAT=RETURN=THEN=TO=UNTIL=WHILE=[ReservedWords][KeyWords2]ABS=ACOS=AND=AND_MASK=ANY_TO_BOOL=ANY_TO_DINT=ANY_TO_REAL=ANY_TO_SINT=ANY_TO_STRING=ANY_TO_TIME=ASCII=ASIN=ATAN=CHAT=COS=DELETE=EXPT=FIND=INSERT=LEFT=LIMIT=LOG=MAX=MID=MIN=MLEN=MOD=MOD=MUX4=MUX8=NOT=NOT_MASK=ODD=OFFSET=OR=OR_MASK=POW=RAND=REPLACE=RIGHT=ROL=ROR=SEL=SHL=SHR=SIN=SQRT=TAN=TRUNC=XOR=XOR_MASK=[KeyWords3]CAN_IIRegID=CAN_IIRX=CAN_IITX=CAN_II_Init=Eth_udp_rx=Eth_udp_tx=RS232Init=RS232Read=RS232Write=RS422Init=RS422Read=RS422Write=
然后“设置 - 语法高亮”,先在1处选中一个<not assigned>,然后在2处选中ISaGRAF,然后1处的<not assigned>就变为ISaGRAF了,选中ISaGRAF前面的框框,切换到“颜色”就可以配置颜色了。
notepad++自定义语言格式:
选择“语言 - 自定义语言 - 自定义语言格式”,点“新建”输入个名称“ISaGRAF”后定确定。“层次设置与默认格式”没动。
“关键字列表”中输入关键字,“样式”中可设置颜色,这样每组可设置不同的颜色,若不选前缀模式,则只有前后都有空格时才被认为是关键字,比方说“if(”后面紧跟了个括号,是不能被识别是关键字的,但如果选了前缀模式,则比方说“if(hello)”整个都会被认为是关键字,有点不智能哈。
“注释与数字”,按下面这样设置,单行注释有效,多行注释时不能被识别。但去掉“单行注释样式”中的(*和*),只保留“区块注释样式”中的,则单行、多行注释都能被识别。前缀1和后缀2是一对(/xin04/p/12397641.html这文章里有说明)。
“数字与运算符”,“运算符1”与“运算符2(需要分隔符)”的区别,比方说a=b,若=放在“运算符1”中,则可被识别为等号;若放在“运算符2(需要分隔符)”中则不能被识别,需要=前后有空格才能被识别。对于一些函数,比方说ANY_TO_DINT,由于后面跟着(,因此若放在“关键字列表”中,则不能被识别,因此干脆放在了“运算符1”中,这样就算后面紧跟括号也能被识别。
还有种办法是,比方说ANY_TO_DINT放在“关键字列表”中,在“数字与运算符”的“运算符1样式”中的开始填“(”、结尾填“)”,此时ANY_TO_DINT后就算紧跟“(”也能被识别,但如果嵌套了括号,如“( ( ) )”,则括号中的关键字就又有不能被识别的了。因此对于前后不是空格的关键字、函数等都放在了“运算符1”中。
在“语言”下选中“ISaGRAF”就可以按刚刚的设置来语法高亮了。
设置好后,可导出为xml文件,在其他地方导入后,若“语言”下没有“ISaGRAF”,则关闭notepad++再重新打开后应该就有了。