[发明专利]一种基于flex与bison语法分析的多输出编译方法及系统在审
申请号: | 202211646172.7 | 申请日: | 2022-12-21 |
公开(公告)号: | CN116257245A | 公开(公告)日: | 2023-06-13 |
发明(设计)人: | 钟世平;周秋芳;张立飞;钟心田;黄旭 | 申请(专利权)人: | 浙江中控技术股份有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 上海汉声知识产权代理有限公司 31236 | 代理人: | 卫素丹;胡晶 |
地址: | 310053 浙*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 flex bison 语法分析 输出 编译 方法 系统 | ||
1.一种基于flex与bison语法分析的多输出编译方法,其特征在于,包括以下步骤:
S1:建立词法分析文件和语法分析文件,并利用flex将所述词法分析文件生成词法分析器的源程序文件,利用bison将所述语法分析文件生成语法分析器的源程序文件;
S2:采用所述词法分析器分析ST语言的词法,并基于分析出的所述词法采用所述语法分析器分析所述ST语言的语法,生成语法树;
S3:编写指定语言的语法转译配置文件;
S4:遍历所述语法树,依据所述语法转译配置文件生成对所述ST语言的转译文件。
2.根据权利要求1所述的基于flex与bison语法分析的多输出编译方法,其特征在于,在步骤S1中,所述词法分析文件,具体为:
根据IEC61131-3标准,依次定义所述ST语言中的包括关键字、分界符、数据类型在内的可识别字符串为记号值。
3.根据权利要求2所述的基于flex与bison语法分析的多输出编译方法,其特征在于,在步骤S1中,所述语法分析文件,具体为:
定义接收由所述词法分析器返回的所述记号值,依次接收所述ST语言中的所述关键字、所述分界符、所述数据类型;
依次按照定义标识符表达式关系、语句语法描述、基于所述标识符表达式关系和所述语法语句描述依赖语句的嵌套层级生成结构化的数据的步骤定义所述语法分析文件;
其中,在基于所述标识符表达式关系和所述语法语句描述依赖语句的嵌套层级生成结构化的数据中,将标识符定义为一个类,所述标识符的内容作为对象,将不同的表达式定义为不同的类,所述标识符作为成员,将不同的所述语句语法定义为一个类,所述表达式与所述标识符作为成员,根据所述语句语法的嵌套层级使用指针指向目标保存。
4.根据权利要求3所述的基于flex与bison语法分析的多输出编译方法,其特征在于,在步骤S2中,还包括:
对所述语法树进行包括声明与定义、标识符类型、控制流、唯一性在内语法错误的检查。
5.根据权利要求4所述的基于flex与bison语法分析的多输出编译方法,其特征在于,对所述语法树进行包括声明与定义、标识符类型、控制流、唯一性在内语法错误的检查,具体为:
所述声明与定义检查,具体包括:
建立所述语法树的符号表,用于存放字符串形式的所述标识符,以及所述标识符对应的数据类型;
逐层遍历所述语法树,若遇到所述标识符的定义语句,将所述标识符存入所述符号表再向下层遍历,下层遍历结束后,在所述符号表中删除所述标识符;
若遇到包含所述标识符的非定义语句,判断所述标识符是否在所述符号表中,当不在所述符号表中时,则所述标识符未定义;
所述标识符类型检查,具体包括:
计算所述语法树的每一个叶子节点的返回类型,依据IEC61131-3的类型标准判断所述表达式中所述标识符的类型与所述符号表中保存的类型是否兼容;
所述控制流检查,具体包括:
检查退出语句EXIT或跳出语句BREAK的叶子节点以上是否允许退出或跳出;
所述唯一性检查,具体包括:
检查多分支语句CASE中的整形变量是否重复。
6.根据权利要求4所述的基于flex与bison语法分析的多输出编译方法,其特征在于,在步骤S3中,编写指定语言的所述语法转译配置文件,具体为:
获取所述语句语法描述中的语法类型标识;
将所述语法类型标识下方的语句依据所述指定语言的编码要求转换为所述指定语言的编码格式的语句语法,生成所述指定语言的所述语法转译配置文件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江中控技术股份有限公司,未经浙江中控技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211646172.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:立体护围卫生巾
- 下一篇:源代码检测方法、装置、计算机设备和存储介质