PSPad自定义语法高亮,notepad++自定义语言格式

由于最近要用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=ISaGRAF
HTMLGroup=0
Vectors=0
Label=1
FileType=.stf
CommentString=
ANSIComment=1
IndentChar=
UnIndentChar=
TabWidth=0
SingleQuote=1
EscString=0
EscChar=\
KeyWordChars=_
CodeExplorer=ftUnknown
DocComment=
[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是一对(https://www.cnblogs.com/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++再重新打开后应该就有了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值