[发明专利]交换机专用语言转换为C语言的方法有效
申请号: | 201110184838.7 | 申请日: | 2011-07-01 |
公开(公告)号: | CN102222004A | 公开(公告)日: | 2011-10-19 |
发明(设计)人: | 林居京;陈益林;林团;林铿;伍琰华;吴坤雄;陈浚 | 申请(专利权)人: | 福建富士通信息软件有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 福州市鼓楼区京华专利事务所(普通合伙) 35212 | 代理人: | 宋连梅 |
地址: | 350000 福建*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 交换机 专用 语言 转换 方法 | ||
1.一种交换机专用语言转换为C语言的方法,其特征在于:所述方法提供预处理模块、符号表单元、变换处理模块、注释预处理模块以及注释处理模块,所述预处理模块包括LEX词法分析器和YACC分析程序生成器;所述变换处理模块包括LEX词法分析器和YACC分析程序生成器;所述注释预处理模块包含有LEX词法分析器,其具体步骤如下:
步骤10、将交换机专用语言源代码导入所述预处理模块和注释预处理模块进行处理,所述预处理模块的LEX词法分析器和YACC分析程序生成器对交换机专用语言源代码进行语法、语义分析,分析生产全局符号表和语法树格式的语句,并将全局符号表保存于所述符号表单元;所述注释预处理模块的LEX词法分析器提取所述交换机专用语言源代码的注释内容,并记录行号与注释内容的对应关系;
步骤20、所述变换处理模块将所述语法树格式的语句通过LEX词法分析器和YACC分析程序生成器进行词法、语法分析,且根据所述符号表单元中的全局符号表和C语言的书写规则来生成带行号的C语言代码,同时记录交换机语言源代码和C语言代码之间的行号对应关系,生成一个行号字典;
步骤30、所述注释处理模块将所述注释内容和生产的C语言代码根据所述行号字典和所述行号对应关系进行合并,即将注释内容插入对应行的C语言代码尾部,并除去C语言代码前的行号生成最终的C语言代码。
2.根据权利要求1所述的交换机专用语言转换为C语言的方法,其特征在于:所述步骤20中将所述语法树格式的语句通过LEX词法分析器和YACC分析程序生成器进行词法、语法分析,当语法树格式的语句中有多层嵌套函数时,要对多层嵌套函数进行展开转换处理,其具体为:先将局部变量、形参变量和上层函数的结构体指针,封装并定义成一个结构体类型;当多层嵌套函数中存在局部变量或者形参变量,则在每层函数开始处定义一个所述结构体类型的结构体变量,并对结构体中的成员变量进行赋值;在调用下层函数的地方,增加一个实参即本层函数的结构体变量的地址;最后将每层函数进行展开转换。
3.根据权利要求2所述的交换机专用语言转换为C语言的方法,其特征在于:所述当每层函数展开时会遇到函数符号名重名的问题,其通过以下步骤解决:
步骤20、遇到全局符号不进行重命名;
步骤21、第一次遇到的local符号不能与全局符合重名,且不能与之后遇到的local符号重名;即local符号名字第一次出现时名字保持不变,之后遇到的local符号分别加入后缀_1,_2,..._n;
步骤22、local符号中,对于SYN/PROC类型的符号,需要加入static存储类型。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于福建富士通信息软件有限公司,未经福建富士通信息软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110184838.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种安全小刀
- 下一篇:带有LED灯的裁纸弯刀