您的位置:首页 > 其它

Source Insight使用之添加自定义语言

2011-02-14 11:30 176 查看
在右键中选择“Document Options...”选项。然后选择“Add Type...”给自定义语言的源文件起个名字。
如:“3850ASM Source File”。
然后再“File filter”文件过滤器栏中填入要过滤出来的文件类型。如填入:*.inc;*.a74,即其源文件包括:.inc文件和.a74文件。这个选项将影响“Add and Remove Project Files”选项,在添加文件时它将按照这个过滤选项来显示源文件。
最后在左下“Language:”中添加一个语言的名字。如:3850 ASM

下一步就是添加关键字了。
打开“Keyword List...”,然后“Add Word...”。在“Style”栏中选择关键字的样式,如“Control” ,“Keyword”,“Number”等等。简便一些的方法就是选中关键字,然后按上步骤操作。

第三步设置语言属性。
右键选择“Language Properties...”。
“Info”选项卡就不用填了。忽略。

“Option”选项卡上“General”部分全选。“Syntax”也都全选吧。后面那个框“Non-AlphaNum indentifier chars:”就不用动了。下面“Numbers”选择数字所用的格式,第一个“Detecet Numbers”选上,然后其它的按需要选吧。

“Comments and Ranges”,在这里添加注释和其它一些范围如字符串的范围定义,即那些部分是注释,那些部分是字符串等等。“Add...”,在“Type of Range”中非C语言好像只能选“Line”和“Mutileline”单行和多行。然后选择“Syntax Formating Style:”,注释有好几种选择,单行注释的话就选择“Comment Single Line”。下面填入“Range begins with”范围开始以。汇编语言的话一般用“;”为开始,那就填入“;”。右边第一个选项,是否允许嵌套,第二个跳过符号解析,第三个包括定界符。默认吧。说明:第三个包括定界符,定界符即把“Range begins with:”里的这个符号也解释为注释的一部分,这个将影响到它的正则表达式。“Escape sequence”,跳过序列,如转义符号“/”,这样就避免将“/;”解释为注释。

“Custom Parsing”自定义解析。这是最关键的一步。自己定义符号的解析规则。通过这里的设置来解析什么应该是全局变量,什么是函数,什么是标签等等。这里填不好,那么就无法发挥SourceInsight的真正功能。首先选择“Use regular expression for parsing”使用正则表达式进行解析。在3850的汇编语言中要解析出标签(Label)可以使用“/([a-zA-Z0-9_]+/):/w*$”。要解析出那些全局变量则可以使用“:/([A-Za-z0-9_]+/):/w+/.blkb/w+[0-9]+/w*$”和“:/([A-Za-z0-9_]+/)/w+=/w+[0-9]+,”。解析常数可以使用“/(#[A-Za-z0-9]+/)”、“^/w*/([a-zA-Z0-9_]+/)/w+=/w+/$[0-9a-f]+”、“/w*/([a-zA-Z0-9_]+/)/w+/.[equEQU]+”和“^/w*/([a-zA-Z0-9_]+/)/w+=/w+[0-7]+,”。
解释:
/([a-zA-Z0-9_]+/):/w*$ 匹配:
:RC_MAIN: ;这里是注释
RC_MAIN_000: ;这里是注释

:/([A-Za-z0-9_]+/):/w+/.blkb/w+[0-9]+/w*$ 匹配:
:B_KEYINF: .blkb 1 ;这里是注释

:/([A-Za-z0-9_]+/)/w+=/w+[0-9]+, 匹配:
:m_KECHEL = 0, ;这里是注释

/(#[A-Za-z0-9]+/) 匹配:
#13256

^/w*/([a-zA-Z0-9_]+/)/w+=/w+/$[0-9a-f]+ 匹配:
abcd = $1235A
abc = $1235B

/w*/([a-zA-Z0-9_]+/)/w+/.[equEQU]+ 匹配:
DefaultDataSet .EQU 0
use_customer_remote .equ 0
use_customer_remote .equ 1

^/w*/([a-zA-Z0-9_]+/)/w+=/w+[0-7]+, 匹配:
P2_0 = 0,
P2_0 = 0,
P2_0 = 0,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: