首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种面向SIMSCRIPT语言的抽象语法树构建方法和装置_中国科学院软件研究所_202310980317.5 

申请/专利权人:中国科学院软件研究所

申请日:2023-08-04

公开(公告)日:2024-04-30

公开(公告)号:CN117193781B

主分类号:G06F8/41

分类号:G06F8/41;G06F40/289;G06F40/284

优先权:

专利状态码:有效-授权

法律状态:2024.04.30#授权;2023.12.26#实质审查的生效;2023.12.08#公开

摘要:本发明涉及一种面向SIMSCRIPT语言的抽象语法树构建方法和装置。该方法包括:对SIMSCRIPT语言的9种语法规则进行抽象和构建;对三类SIMSCRIPT代码文件进行扫描和分词;基于分词结果构建叶子节点,基于语法规则构建叶子节点的逻辑关系,生成抽象语法树。本发明提供的技术方案以面向仿真领域的SIMSCRIPT语言为基础,以抽象语法树的形式来展现SIMSCRIPT语言的语法规则,为建模人员和编程人员之间提供了桥梁,为实现对SIMSCRIPT研发的仿真系统做静态语法检查、空指针异常检查、代码风格检查、格式化、代码高亮、以及代码错误提示、自动补全等工作提供了技术基础。

主权项:1.一种面向SIMSCRIPT语言的抽象语法树构建方法,其特征在于,包括以下步骤:对SIMSCRIPT语言的语法规则进行抽象和构建;对SIMSCRIPT代码文件进行扫描和分词;基于分词结果构建叶子节点,基于语法规则构建叶子节点的逻辑关系,生成抽象语法树;所述对SIMSCRIPT语言的语法规则进行抽象和构建,是对SIMSCRIPT语言中注释、变量、基础数据类型、复合数据类型、指针、运算符、控制语句、函数、输入输出流共9种语法规则进行构建;所述9种语法规则中,运算符语法规则包括赋值语句语法规则和表达式计算语法规则,其中:赋值语句的语法规则为:LETVARIABLE=EXPRESSION;ADD语句的语法规则为:ADDEXPRESSIONTOVARIABLE;SUBTARCT语句的语法规则为:SUBTARCTEXPRESSIONFROMVARIABLE;表达式计算的语法规则为:VARIABLE+|-|*||**VARIABLE;其中VARIABLE代表变量,EXPRESSION代表表达式;所述9种语法规则中,控制语句的语法规则包括:分支结构语句语法规则:IF-ALWAYS:‘IF’EXPRSTATEMENT*‘ALWAYS’;IF-ELSE-ALWAYS:‘IF’EXPRSTATEMENT*‘ELSE’STATEMENT*‘ALWAYS’;其中EXPR代表IF语句判断条件的逻辑表达式,STATEMENT代表任意SIMSCRIPT语句;循环结构语句语法规则:FOR-DO-LOOP:‘FOR’ID‘=’EXPR‘TO’EXPR‘DO’STATEMENT*‘LOOP’;UNTIL-DO-LOOP:‘UNTIL’EXPR‘DO’STATEMENT*‘LOOP’;WHILE-DO-LOOP:‘WHILE’EXPR‘DO’STATEMENT*‘LOOP’;其中ID代表变量名称,EXPR代表数值计算表达式,STATEMENT代表任意SIMSCRIPT语句,FOR-DO-LOOP语句的控制条件以ID‘=’EXPR‘TO’EXPR规则来表示,UNTIL-DO-LOOP语句和while语句的控制条件以EXPR来表示;所述对SIMSCRIPT代码文件进行扫描和分词,是对声明文件、主程序文件和例程文件共三类文件进行扫描和分词;采用以下步骤生成抽象语法树:加载三类文件的分词结果;重新扫描三类文件,对文件中的代码做分块处理,基于SIMSCRIPT语法规则对各个代码块中包含的分词做语法分析;如果代码块中包含表达式语句,创建EXPR作为该代码块的节点,并对该代码块中包含的表达式继续做语法分析;如果代码块中包含赋值或控制语句,创建STATEMENT作为该代码块的节点,并对该代码块中包含的赋值或控制语句继续做语法分析;如果代码块不包含以上两种语句,直接以代码块中的分词结果创建节点;按照分词在代码中的出现顺序,将同一层的节点从左到右排列。

全文数据:

权利要求:

百度查询: 中国科学院软件研究所 一种面向SIMSCRIPT语言的抽象语法树构建方法和装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。