writing Source Insight configuration file to parse customer language

本文简单描述怎么用source insight提供的模板(我也不知道怎么称呼)写自己的语言解析脚本(就叫脚本吧)

以arm 的汇编语言为例。

1)添加语言

Options->Preferences->Languages, click Add button

输入语言名字,如arm_asm。可以看到Language中有了arm_asm这一项。

2)基本配置介绍

选中arm_asm,点击Properties,弹出一个窗口,有4个标签。其中Info基本不用管;Options暂时也不用动;Comments and Ranges是用来描述注释格式的,支持单行和多行注释。arm_asm中用单行注释就可以了;Custom Parsing是重点,在这里用SI支持的正则表示式匹配出函数、变量等的特征。

3)添加Keywords

一些简单的指令高亮就可以在这里实现了。一个简单的方法是先导出(旁边有个Export按键)一种你熟悉的语言的Keywords文件,然后模仿这个格式进行修改,然后在导入(旁边的Import按键)

4)Properties的简单使用

arm_asm中值用到单行的注释,这个很容易实现:指定分号为开注释开始的标识就可以了。你可能会担心会不会有错误的解析,应该说SI基本都能正确解析。然后是Csutom Parsing的使用。这个要用到SI支持的正则表达式,SI的帮助文档上有对这个语法进行说明。这个正则表达式应该是比较简单的那种,看看例子基本就能使用了;另外它只支持单行特征的提取,所以arm汇编的宏特征不能完整的提取出来。不知道是我理解不到位还是真的有这个局限,希望有高手能给解答。下面是arm汇编特征提取的两个例子:

^\([a-zA-Z0-9_|\$]*\)\w*$

符合上述特征的是lable

^\w+AREA\w+|\([\$a-zA-Z0-9_]*\)|\w*

这个area我识别成了function

^\w+AREA\w+\([\$a-zA-Z0-9_]*\)\w*

这个也是area特征的function,有一点小的区别。一个正则匹配不完,我就用了两个。

5)使用自己添加的语言解析脚本

一些必要的特征匹配做完后,可以导出为CLF文件,我叫这个为脚本。其他同学可以导入这个CLF文件来解析语言。导入的步骤就不说了,Properties界面里有个Improt选项。

这个不说了,要上班了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值