CN113238759A - 一种类Python程序设计语言XD-M的解释系统及方法 - Google Patents
一种类Python程序设计语言XD-M的解释系统及方法 Download PDFInfo
- Publication number
- CN113238759A CN113238759A CN202110399134.5A CN202110399134A CN113238759A CN 113238759 A CN113238759 A CN 113238759A CN 202110399134 A CN202110399134 A CN 202110399134A CN 113238759 A CN113238759 A CN 113238759A
- Authority
- CN
- China
- Prior art keywords
- statement
- interface
- symbol
- language
- msvl
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/425—Lexical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明属于计算机程序设计语言及应用技术领域,公开了一种类Python程序设计语言XD‑M的解释系统及方法,所述类Python程序设计语言XD‑M的解释方法包括:对于XD‑M语言中的基本语句和源自建模仿真验证语言MSVL的语句,通过调用MSVL解释器底层接口的方法进行解释;对于具有XD‑M语言特性的语句,为语句建立等价的MSVL语法树,扩展底层接口,编写底层对该语句的解释方法。本发明使用XD‑M语言编写的XD‑M程序可以进行建模、仿真和验证,提高了XD‑M语言的正确性、可靠性和安全性,实现类Python的使用简单变量而无需类型声明的编程风格,提高XD‑M程序的灵活性;依托MinGW开发环境。
Description
技术领域
本发明属于计算机程序设计语言及应用技术领域,尤其涉及一种类Python程序设计语言XD-M的解释系统及方法。
背景技术
目前,软硬件系统的规模越来越大,由于一部分大型软硬件系统缺乏相关的设计和需求文档,理解和维护这些系统越来越困难,一些更新和排错操作很有可能带来潜在的漏洞,并导致严重的安全问题。形式化方法常用于提高软硬件系统的正确性、可靠性和安全性。
形式化验证基于数学方法对计算机软硬件系统进行规范与验证,具有严格、完备的特点,受到了广泛的关注,在软件系统开发过程中应用得越来越广泛。时序逻辑常被用于形式化验证,主要分为线性时间时序逻辑(Linear-time temporal logic)和分支时序逻辑(Branching-time temporal logic)两类。线性时序逻辑(LTL)属于第一类,计算树逻辑(CTL)属于第二类。CTL以树状图的形式来描述软硬件系统的状态转移过程,一个状态可能存在多个后继节点,通常较为复杂。LTL则以状态序列的形式来描述软硬件系统的运行过程,一个状态只有一个后继节点,简单明了。但是,CTL和LTL的表达能力不足,都不是完全正则的。区间时序逻辑(ITL)以LTL为基础做出了改进。投影时序逻辑(PTL)引入了投影操作符、过去时序操作符和无穷区间,其表达能力强于CTL和LTL,是完全正则的。时序逻辑程序设计语言是时序逻辑语言与程序设计语言的结合,基于CTL的语言包括Cactus,基于ITL的语言包括XYZ/E、THLP、Chronolog、Tempura和Tokio。建模仿真验证语言MSVL基于PTL,是自主研发的程序设计语言,与上述语言相比,MSVL具有自己的类型系统,可以编写实用、健全的程序,在验证并行系统方面具有优势。
MSVL具有极大的实用价值。使用MSVL可以验证程序的完全正则性质和上下文无关性质,现已用于验证C程序、Web服务、Petri网和并发系统。近年来,MSVL还被用于人工智能规划和验证大数据处理的可靠性。MSVL拥有丰富的工具链,包括MSVL解释器和编译器、V2M和C2M等。MSVL解释器和编译器用于执行用于执行使用MSVL编写的程序。MSVL编译器借助LLVM框架实现,它的执行速度相对于解释器要快一些,但是缺乏灵活性,对类型的要求十分严格。就MSVL解释器而言,其只能在Windows平台下使用,不能移植到其他平台,缺乏可移植性,并且缺乏可交互性。V2M和C2M转换器,分别将Verilog、VHDL代码和Xd-C代码转换为等价的MSVL代码,便可以对该程序进行仿真、建模和验证。与C/C++、Java和Python等通用程序设计语言相比,MSVL具有建模、仿真和验证功能,可以提高MSVL程序的正确性、可靠性和安全性。但是相较与Python,MSVL缺乏交互性,并且语法较为复杂。
通过上述分析,现有技术存在的问题及缺陷为:
(1)CTL和LTL的表达能力不足,都不是完全正则的。
(2)MSVL编译器借助LLVM框架实现,但是缺乏灵活性,对类型的要求十分严格;同时,相较与Python,MSVL缺乏交互性,并且语法较为复杂。
(3)就MSVL解释器而言,其只能在Windows平台下使用,不能移植到其他平台,缺乏可移植性,并且缺乏可交互性。
解决以上问题及缺陷的难度为:现阶段使用MSVL解释器和编译器对程序进行建模、仿真和验证,无论是解释器还是编译器,均使用类C语言的编程风格,使得语法规则均较为复杂,造成程序代码复杂冗长。此外,MSVL解释器以解释器架构实现,在一定程度上提高了程序的灵活性,但并未提供解释型语言普遍具备的交互性和可移植性,MSVL编译器使用LLVM框架提高了程序的执行速度,却降低了程序的灵活性。
解决以上问题及缺陷的意义为:本发明提供了一种程序设计语言XD-M,语法规则简单,从而提高程序的可读性,简化冗长的程序代码。以解释器架构实现XD-M,从而提高程序的灵活性、可移植性和交互性,使得用户可以在Windows和Linux平台运行XD-M程序,实时获取程序的执行结果,并灵活地对程序进行修改和排错。通过将XD-M语句转换为等价的MSVL语法树,实现了程序的建模、仿真和验证,从而提高程序的正确性、可靠性和安全性。
发明内容
针对现有技术存在的问题,本发明提供了一种类Python程序设计语言XD-M的解释系统及方法,旨在解决现有技术MSVL解释器和编译器中存在的语法复杂、缺乏可交互性、缺乏可移植性和缺乏灵活性的问题。
本发明是这样实现的,一种类Python程序设计语言XD-M的解释方法,所述类Python程序设计语言XD-M的解释方法包括:对于XD-M语言中的基本语句和源自建模仿真验证语言MSVL的语句,通过调用MSVL解释器底层接口的方法进行解释;对于具有XD-M语言特性的语句,为语句建立等价的MSVL语法树,扩展底层接口,编写底层对该语句的解释方法。
进一步,所述类Python程序设计语言XD-M的解释方法包括以下步骤:
步骤一,词法分析器从XD-M源程序识别匹配的字符序列模式;若匹配成功,则生成相应的记号,众多的记号构成记号流,若匹配失败则将错误报告给出错处理模块;
步骤二,语法分析器把记号组合成一条合法语句,并依次为每一条合法的语句创建语法树节点,所有节点按语法分析的先后顺序,通过指针连接,构建出一颗语法树;
步骤三,底层解释模块从语法树上获取每个节点对应的合法语句的信息,并调用合适的接口解释该语句。
本发明类Python程序设计语言XD-M的解释方法运行在所述类Python程序设计语言XD-M的解释系统上。步骤一至步骤三是所述类Python程序设计语言XD-M的解释系统的三大模块步骤的具体内容,为所述类Python程序设计语言XD-M的解释方法提供运行的基础。
进一步,步骤一中,所述字符序列包括XD-M语言中的关键字、字面量、标识符、运算符、间隔符以及注释符;其中,所述标识符被用作变量名、函数名和自定义类型名在内的所有对象的名称。
进一步,步骤二中,所述XD-M语言中的合法语句括具有XD-M语言特性的语句、基本语句和源自MSVL的语句。
进一步,步骤三中,所述接口StateReduction()用于解释一条XD-M语句,在XD-M语言解释器底层对接口StateReduction()进行了扩展,通过以下步骤解释一条语句statement:
(1)如果statement是赋值语句,如果左值是结构体成员变量,转到步骤(7);如果右值表达式是简单表达式,转到步骤(2);如果右值表达式是一维数组,转到步骤(3);如果右值表达式是二维数组,转到步骤(4);如果statement不是赋值语句,转到步骤(8);
(2)通过接口ValueReduction()计算右值表达式的返回值,生成右值符号;在符号表中查找与变量名同名的符号,如果未找到,在符号表中创建一个同名符号,是为左值符号,置其类型为右值符号的类型;检查右值符号与左值符号的类型是否相同,如果相同,直接调用接口AssignReduction()进行赋值,完成该语句的解释;如果不同,将左值符号的类型更新为右值符号的类型,然后调用接口AssignReduction()进行赋值,完成该语句的解释;释放右值符号;
(3)通过接口ValueReduction()计算右值表达式首个元素,生成临时符号;以临时符号的类型作为待声明数组的类型,调用底层接口__StatRedDeclarAssExp()将该语句按照声明语句来解释;释放临时符号;
(4)通过接口ValueReduction()计算右值表达式首个元素,生成临时符号;计算右值表达式所表示的数组的行数和列数;以临时符号的类型作为待声明数组的类型,以计算出的行列数作为其行列数,构建等效的MSVL二维数组声明语法树;调用底层接口__StatRedDeclarAssExp()解释该语法树;释放临时符号;
(5)展开数组乘法表达式为完整的一维数组表达式,转到步骤(3);
(6)展开数组乘法表达式为完整的二维数组表达式,转到步骤(4);
(7)在符号表中查找与结构体变量同名的符号;在结构体变量的成员符号表中查找与结构体成员变量同名的符号,是为左值符号;如果右值表达式是简单表达式,转到步骤(2);如果右值表达式是一维数组,转到步骤(3);如果右值表达式是二维数组,转到步骤(4);
(8)如果statement是结构体初始化语句,如果初始化一个结构体变量,转到步骤(2);如果初始化一个结构体数组,构建等效的MSVL结构体变量声明语法树;调用接口__StatRedStructDec()解释该语句;如果statement不是结构体初始化语句,转到步骤(9);
(9)如果statement是结构体定义语句,创建MSVL结构体定义语句语法树,结构体成员个数和名称不变,结构体成员名称的类型置为字符类型char,值置为'\0';调用接口__StatRedStructDec()解释该语句;如果statement不是结构体定义语句,转到步骤(10);
(10)如果statement是外部导入语句,获取导入文件的路径;将词法分析器文件句柄yyin指向该文件;调用Bison提供的接口yyparse(),启动词法分析器和语法分析器解析该文件;如果statement不是外部导入语句,转到步骤(11);
(11)如果statement是函数调用语句,如果是内置函数调用,在底层调用解释该内置函数的接口解释该语句;如果是自定义函数调用,调用接口__StatRedFuncCall()解释该语句;如果statement不是函数调用语句,转到步骤(12);
(12)如果statement是skip语句,在程序的下一状态调用接口__StatRedEmpty()解释该语句;如果statement不是skip语句,转到步骤(13);
(13)如果statement是顺序语句、合取语句、分支语句、循环语句、empty语句、skip语句、next语句、frame语句、await语句、or语句、always语句、parallel语句或projection语句,分别调用接口__StatRedChop()、__StatRedAnd()、__StatRedIf()、__StatRedFor()、__StatRedEmpty()、__StatRedSkip()、__StatRedNext()、__StatRedFrame()、__StatRedAwait()、__StatRedOr()、__StatRedAlways()、__StatRedParallel()或__StatRedPrj(),完成该语句的解释;
其中,所述符号和符号表是定义在MSVL解释器底层的数据结构,所述符号用于存储运行在程序中的变量和字面量的值、类型、所属结构体、局部符号表、指针指向的对象、数组维数和数组大小信息;三符号表用于存储所有的符号。
所述左值、右值、左值符号和右值符号,在程序设计语言中,对于一条赋值语句而言,赋值符号左部称为左值,赋值符号右部称为右值;左值与右值的区别还在于在内存中的布局和生命周期;左值的生命周期较右值持久,它的值可被更改,并在一段时间内保持该值,右值是临时值;所述符号表中与左值同名的符号是左值符号,使用接口ValueReduction()对右值进行计算返回的符号是右值符号。
所述简单表达式,是出现在赋值符号右部的,除了使用中括号“[]”以及使用“[]”和乘法符号“*”的组合用以表示数组的表达式以外的任何表达式。
进一步,所述类Python程序设计语言XD-M的解释方法,还包括:
(1)将MSVL解释器的底层接口和实现提取出来,移植到MinGW开发环境中,删去依赖于Windows平台的Win API调用,使用与Windows平台无关的代码进行等效的替换,作为XD-M语言解释器的底层解释模块;
(2)编写词法规则于文件M.l中,包括关键字和操作符的词法规则;
(3)通过Flex解析文件M.l,生成XD-M语言解释器的词法分析器;
(4)编写语法规则于文件M.y中,包括具有XD-M语言特性的语句、基本语句和源自MSVL的语句;
(5)通过Bison解析文件M.y,生成XD-M语言解释器的语法分析器。
其中,所述操作符包括算数运算、逻辑运算、关系运算、位运算和赋值运算的操作符;
所述具有XD-M语言特性的语句包括赋值语句、结构体定义语句、函数调用语句和外部导入语句;
所述基本语句和源自MSVL的语句包括顺序语句、合取语句、分支语句、循环语句、empty语句、skip语句、next语句、frame语句、await语句、or语句、always语句、parallel语句和projection语句;
所述具有XD-M语言特性的语句包括赋值语句、结构体定义语句、内置函数调用语句和外部导入语句。
进一步,所述类Python程序设计语言XD-M的解释方法,还包括:
(1)接收命令行参数,如果命令行参数是“-m”,调用接口Modeling()完成XD-M源程序的建模,否则,转到步骤(2);
(2)如果命令行参数是“-s”,调用接口Simulation()完成XD-M源程序的仿真,否则,转到步骤(3);
(3)如果命令行参数是“-v”,调用接口Verification()完成XD-M源程序的验证,否则,转到步骤(4);
(4)如果命令行参数是“-i”,调用接口SimulationOneLine()完成XD-M源程序的交互式仿真。
其中,所述接口SimulationOneLine()是扩展的底层接口,用于仿真一段XD-M源程序,在仿真过程中,需要调用接口StateReduction()实现每条XD-M语句的解释执行;
所述接口Modeling()、Simulation()和Verification()是MSVL解释器提供的的底层接口,分别用于提供建模、仿真和验证功能,在建模、仿真和验证过程需要调用接口StateReduction()实现每条XD-M语句的解释执行;
所述接口StateReduction()是MSVL解释器提供的的底层接口,用于解释每条XD-M语句。
本发明的另一目的在于提供一种应用所述的类Python程序设计语言XD-M的解释方法的类Python程序设计语言XD-M的解释系统,所述类Python程序设计语言XD-M的解释系统包括:输入处理模块、词法分析器、语法分析器、底层解释模块和出错处理模块。
输入处理模块,用于通过文件流的形式打开使用XD-M源程序,若打开文件失败,将错误报告给出错处理模块;否则,将词法分析器的文件句柄yyin指向该源程序;
词法分析器,用于通过编写词法规则文件M.l,包括关键字和符号的词法规则,使用Flex解析文件M.l生成词法分析器;
语法分析器,用于通过编写语法规则文件M.y,包括具有M语言特性的语句、基本语句和源自MSVL的语句,通过Bison解析文件M.y生成语法分析器;
底层解释模块,用于通过将MSVL解释器的底层接口和实现提取出来,移植到MinGW开发环境中,删去依赖于Windows平台的WinAPI调用,使用与Windows平台无关的代码进行等效的替换;
出错处理模块,用于将输入处理模块、词法分析器、语法分析器和后端解释模块报告的错误具体信息输出。
本发明的另一目的在于提供一种应用所述的类Python程序设计语言XD-M的解释系统的所述类Python程序设计语言XD-M的解释系统的交互式仿真方法,所述类Python程序设计语言XD-M的解释系统的交互式仿真方法,包括:
在XD-M源程序执行的过程中,将标准输入的内容暂存到一个临时文件中,将Flex提供的文件句柄yyin指向临时文件,通过Bison提供的接口yyparse()对该段程序进行词法分析和语法分析,生成语法树;通过循环调用接口StateReduction()并判断该段程序的子语句是否解释完成,完成该段程序的交互式仿真执行;
其中,在底层扩展接口ParseOneLine()和SimulationOneLine()中,所述接口ParseOneLine()解析一段标准输入中的XD-M源程序,所述接口SimulationOneLine()完成该段程序的交互式仿真执行。
本发明的另一目的在于提供一种信息数据处理终端,所述信息数据处理终端用于实现所述的类Python程序设计语言XD-M的解释系统。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明提供的类Python程序设计语言XD-M的解释方法,很好的解决了MSVL解释器和编译器中存在的语法复杂、缺乏可交互性、缺乏可移植性和缺乏灵活性的问题。本发明使用XD-M语言编写的XD-M程序可以进行建模、仿真和验证,提高了XD-M语言的正确性、可靠性、安全性;实现了类Python的使用简单变量而无需类型声明的编程风格,提高了XD-M程序的灵活性;依托MinGW开发环境,使得XD-M语言解释器可以方便地在Linux和Windows系统间移植,提高了XD-M语言的可移植性;使用自主研发的MSVL技术和开源工具,不依赖于单一平台,不惧怕国外的技术封锁。
与现有技术相比,本发明具有以下优势:
实例结果表明,采用本发明可以对程序进行建模、仿真和验证,并且具有较为简单的语法,实现了使用简单变量而无需类型声明的Python式编程风格;采用本发明可以对程序进行交互式仿真执行,提高了XD-M语言可交互性。
本发明的效果可以通过对比同类型的MSVL、Python和XD-M语句进一步说明,对比结果如表1所示。
表1给出了基于本发明中的XD-M语言语句,以及同类型的MSVL和Python语句。从表1中可见,基于本发明的XD-M语言无需类型声明即可使用变量,编程风格与Python相似,语法较MSVL简洁。
表1MSVL、Python和XD-M语言语句对比
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的类Python程序设计语言XD-M的解释方法流程图。
图2是本发明实施例提供的类Python程序设计语言XD-M的解释方法原理图。
图3是本发明实施例提供的已有的MSVL底层接口调用图。
图4是本发明实施例提供的XD-M语言解释器的使用流程图。
图5是本发明实施例提供的XD-M语言程序的建模结果示意图。
图6是本发明实施例提供XD-M语言程序的仿真结果示意图。
图7是本发明实施例提供XD-M语言程序的验证结果示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术存在的问题,本发明提供了一种类Python程序设计语言XD-M的解释系统及方法,下面结合附图和实施例对本发明作详细的描述。
如图1所示,本发明实施例提供的XD-M语言的解释方法包括以下步骤:
S101,词法分析器从XD-M源程序识别匹配的字符序列模式,若匹配成功,则生成相应的记号,众多的记号构成记号流,若匹配失败则将错误报告给出错处理模块;
S102,语法分析器把记号组合成一条合法语句,并依次为每一条合法的语句创建语法树节点,所有节点按语法分析的先后顺序,通过指针连接,构建出一颗语法树;
S103,底层解释模块从语法树上获取每个节点对应的合法语句的信息,并调用合适的接口解释该语句。
本发明实施例提供的类Python程序设计语言XD-M的解释方法原理图如图2所示。
本发明实施例提供的字符序列包括XD-M语言中的关键字、字面量、标识符、运算符、间隔符以及注释符。
本发明实施例提供的标识符一般被用作变量名、函数名和自定义类型名等所有对象的名称。
本发明实施例提供的XD-M语言中的合法语句括具有XD-M语言特性的语句、基本语句和源自MSVL的语句。
在步骤S103中,接口StateReduction()用于解释一条XD-M语句,图3说明了MSVL解释器提供的底层接口,在XD-M语言解释器底层对接口StateReduction()进行了扩展,通过以下步骤解释一条语句statement:
步骤一:如果statement是赋值语句,如果左值是结构体成员变量,转到步骤七。如果右值表达式是简单表达式,转到步骤二。如果右值表达式是一维数组,转到步骤三。如果右值表达式是二维数组,转到步骤四。如果statement不是赋值语句,转到步骤八;
步骤二:第一,通过接口ValueReduction()计算右值表达式的返回值,生成右值符号。第二,在符号表中查找与变量名同名的符号,如果未找到,在符号表中创建一个同名符号,是为左值符号,置其类型为右值符号的类型。第三,检查右值符号与左值符号的类型是否相同,如果相同,直接调用接口AssignReduction()进行赋值,完成该语句的解释。如果不同,将左值符号的类型更新为右值符号的类型,然后调用接口AssignReduction()进行赋值,完成该语句的解释。第四,释放右值符号;
步骤三:第一,通过接口ValueReduction()计算右值表达式首个元素,生成临时符号。第二,以临时符号的类型作为待声明数组的类型,调用底层接口__StatRedDeclarAssExp()将该语句按照声明语句来解释。第三,释放临时符号;
步骤四:第一,通过接口ValueReduction()计算右值表达式首个元素,生成临时符号。第二,计算右值表达式所表示的数组的行数和列数。第三,以临时符号的类型作为待声明数组的类型,以计算出的行列数作为其行列数,构建等效的MSVL二维数组声明语法树。第四,调用底层接口__StatRedDeclarAssExp()解释该语法树。第五,释放临时符号;
步骤五:第一,展开数组乘法表达式为完整的一维数组表达式。转到步骤三;
步骤六:第一,展开数组乘法表达式为完整的二维数组表达式。转到步骤四;
步骤七:第一,在符号表中查找与结构体变量同名的符号。第二,在结构体变量的成员符号表中查找与结构体成员变量同名的符号,是为左值符号。如果右值表达式是简单表达式,转到步骤二。如果右值表达式是一维数组,转到步骤三;如果右值表达式是二维数组,转到步骤四;
步骤八:如果statement是结构体初始化语句,如果初始化一个结构体变量,转到步骤二。如果初始化一个结构体数组,第一,构建等效的MSVL结构体变量声明语法树。第二,调用接口__StatRedStructDec()解释该语句。如果statement不是结构体初始化语句,转到步骤九;
步骤九:如果statement是结构体定义语句,第一,创建MSVL结构体定义语句语法树,结构体成员个数和名称不变,结构体成员名称的类型置为字符类型char,值置为'\0'。第二,调用接口__StatRedStructDec()解释该语句。如果statement不是结构体定义语句,转到步骤十;
步骤十:如果statement是外部导入语句,第一,获取导入文件的路径。第二,将词法分析器文件句柄yyin指向该文件。第三,调用Bison提供的接口yyparse(),启动词法分析器和语法分析器解析该文件。如果statement不是外部导入语句,转到步骤十一;
步骤十一:如果statement是函数调用语句,如果是内置函数调用,在底层调用解释该内置函数的接口解释该语句。如果是自定义函数调用,调用接口__StatRedFuncCall()解释该语句。如果statement不是函数调用语句,转到步骤十二;
步骤十二:如果statement是skip语句,在程序的下一状态调用接口__StatRedEmpty()解释该语句。如果statement不是skip语句,转到步骤十三;
步骤十三:如果statement是顺序语句、合取语句、分支语句、循环语句、empty语句、skip语句、next语句、frame语句、await语句、or语句、always语句、parallel语句或projection语句,分别调用接口__StatRedChop()、__StatRedAnd()、__StatRedIf()、__StatRedFor()、__StatRedEmpty()、__StatRedSkip()、__StatRedNext()、__StatRedFrame()、__StatRedAwait()、__StatRedOr()、__StatRedAlways()、__StatRedParallel()或__StatRedPrj(),完成该语句的解释。
所述符号和符号表是定义在MSVL解释器底层的数据结构,符号用于存储运行在程序中的变量和字面量的值、类型、所属结构体、局部符号表、指针指向的对象、数组维数和数组大小等信息。符号表用于存储所有的符号。
所述左值、右值、左值符号和右值符号,在程序设计语言中,对于一条赋值语句而言,赋值符号左部一般称为左值,赋值符号右部一般称为右值。左值与右值的区别不仅在于它的位置,还在于它在内存中的布局和生命周期。一般而言,左值的生命周期较右值持久,它的值可以被更改,并在一段时间内保持该值,右值一般是临时值。符号表中与左值同名的符号是左值符号,使用接口ValueReduction()对右值进行计算返回的符号是右值符号。
所述简单表达式,是出现在赋值符号右部的,除了使用中括号“[]”以及使用“[]”和乘法符号“*”的组合用以表示数组的表达式以外的任何表达式。
如图2所示,本发明实施例提供的XD-M语言的解释系统包括:输入处理模块、词法分析器、语法分析器、底层解释模块和出错处理模块。
所述输入处理模块通过文件流的形式打开使用XD-M源程序,若打开文件失败,将错误报告给出错处理模块;否则,将词法分析器的文件句柄yyin指向该源程序;
所述词法分析器通过编写词法规则文件M.l,包括关键字和符号的词法规则,使用Flex解析文件M.l生成词法分析器;
所述语法分析器通过编写语法规则文件M.y,包括具有XD-M语言特性的语句、基本语句和源自MSVL的语句,通过Bison解析文件M.y生成语法分析器;
所述底层解释模块通过将MSVL解释器的底层接口和实现提取出来,移植到MinGW(Minimalist GNU for Windows)开发环境中,删去依赖于Windows平台的WinAPI调用,使用与Windows平台无关的代码进行等效的替换;
所述出错处理模块将输入处理模块、词法分析器、语法分析器和后端解释模块报告的错误具体信息输出。
所述操作符包括算数运算、逻辑运算、关系运算、位运算和赋值运算的操作符;
所述具有XD-M语言特性的语句包括赋值语句、结构体定义语句、函数调用语句、外部导入语句;
所述基本语句和源自MSVL的语句包括顺序语句、合取语句、分支语句、循环语句、empty语句、skip语句、next语句、frame语句、await语句、or语句、always语句、parallel语句和projection语句。
如图4所示,本发明实施例提供的XD-M语言的解释系统包括以下步骤:
步骤一,接收命令行参数,如果命令行参数是“-m”,调用接口Modeling()完成XD-M源程序的建模,否则,转到步骤二;
步骤二,如果命令行参数是“-s”,调用接口Simulation()完成XD-M源程序的仿真,否则,转到步骤三;
步骤三,如果命令行参数是“-v”,调用接口Verification()完成XD-M源程序的验证,否则,转到步骤四;
步骤四,如果命令行参数是“-i”,调用接口SimulationOneLine()完成XD-M源程序的交互式仿真。
所述接口SimulationOneLine()是扩展的底层接口,用于仿真一段XD-M源程序,在仿真过程中,需要调用接口StateReduction()实现每条XD-M语句的解释执行;
所述接口Modeling()、Simulation()和Verification()是MSVL解释器提供的的底层接口,分别用于提供建模、仿真和验证功能,在建模、仿真和验证过程需要调用接口StateReduction()实现每条XD-M语句的解释执行;
所述接口StateReduction()是MSVL解释器提供的的底层接口,用于解释每条XD-M语句。
本发明实现了一种交互式仿真方法,在底层扩展接口ParseOneLine()和SimulationOneLine()。ParseOneLine()将标准输入的内容暂存到一个临时文件中,随后将Flex提供的文件句柄yyin指向临时文件,并通过Bison提供的接口yyparse()对该段程序进行词法分析和语法分析,生成语法树。接口SimulationOneLine()循环调用接口StateReduction()以及判断程序中子语句的解释情况,对临时文件即标准输入中的一段XD-M源程序进行解释,完成该段程序的交互式仿真执行。
本发明的使用方法如下:首先使用XD-M语言编写程序,以解四阶幻方程序为例,该程序用于求得满足四阶幻方的一组解,使得四阶幻方的任意一行、列和对角线的元素之和相等,本发明实施例提供的XD-M语言程序如下所示:
通过命令行输入指令“M.exe-m”对本发明实施例提供的XD-M语言程序进行建模,将输出解四阶幻方程序的模型,本发明实施例提供的XD-M语言程序的建模结果如图5所示。建模图形非常大,图5展示了建模图形的起始部分(a)分支部分(b)和终止部分(c)。
通过命令行输入指令“M.exe-s”,对本发明实施例提供的XD-M语言程序进行仿真,将输出满足四阶幻方要求的一组解,本发明实施例提供的XD-M语言程序的仿真结果如图6所示。仿真结果的任意一行、列及对角线的元素之和为34,符合四阶幻方的要求。
通过命令行输入指令“M.exe-v”对本发明实施例提供的XD-M语言程序进行验证,验证执行结果的任意一行、列和对角线的元素之和是否相等,本发明实施例提供的XD-M语言程序的验证性质及命题定义如下:
本发明实施例提供的XD-M语言程序的验证结果如图7所示。验证结果为“Valid”,说明执行结果的任意一行、列和对角线的元素之和相等,符合性质要求。
表2已通过的经典实例
程序 | MSVL代码行 | XD-M代码行 | 执行方式 | 执行时间(毫秒) |
平衡二叉树 | 173 | 105 | 仿真 | 1 |
四阶幻方 | 78 | 39 | 仿真 | 15 |
哲学家就餐问题 | 80 | 67 | 建模 | 530 |
青蛙跳河 | 151 | 93 | 仿真 | 1 |
摆渡者难题 | 155 | 150 | 仿真 | 1 |
dekker算法 | 46 | 36 | 建模 | 266 |
一种环形火车道模型系统 | 39 | 39 | 建模 | 93 |
IBM703业务流程模型 | 1141 | 1141 | 建模 | 62 |
表2展示了部分经典实例,这些实例使用XD-M语言进行编写,通过建模、或仿真方式执行程序,包括平衡二叉树、四阶幻方、哲学家就餐问题、青蛙跳河、摆渡者难题、dekker算法、一种环形火车道模型系统和IBM703业务流程模型。相比于使用MSVL实现的同类型程序,代码行数有所降低。通过这些实例的检验,说明了XD-M语言的可用性与实用性。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidState Disk(SSD))等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种类Python程序设计语言XD-M的解释方法,其特征在于,所述类Python程序设计语言XD-M的解释方法包括:对于XD-M语言中的基本语句和源自建模仿真验证语言MSVL的语句,通过调用MSVL解释器底层接口的方法进行解释;对于具有XD-M语言特性的语句,为语句建立等价的MSVL语法树,扩展底层接口,编写底层对该语句的解释方法。
2.如权利要求1所述的类Python程序设计语言XD-M的解释方法,其特征在于,所述类Python程序设计语言XD-M的解释方法包括以下步骤:
步骤一,词法分析器从XD-M源程序识别匹配的字符序列模式;若匹配成功,则生成相应的记号,众多的记号构成记号流,若匹配失败则将错误报告给出错处理模块;
步骤二,语法分析器把记号组合成一条合法语句,并依次为每一条合法的语句创建语法树节点,所有节点按语法分析的先后顺序,通过指针连接,构建出一颗语法树;
步骤三,底层解释模块从语法树上获取每个节点对应的合法语句的信息,并调用合适的接口解释该语句。
3.如权利要求2所述的类Python程序设计语言XD-M的解释方法,其特征在于,步骤一中,所述字符序列包括XD-M语言中的关键字、字面量、标识符、运算符、间隔符以及注释符;其中,所述标识符被用作变量名、函数名和自定义类型名在内的所有对象的名称。
4.如权利要求2所述的类Python程序设计语言XD-M的解释方法,其特征在于,步骤二中,所述XD-M语言中的合法语句括具有XD-M语言特性的语句、基本语句和源自MSVL的语句。
5.如权利要求2所述的类Python程序设计语言XD-M的解释方法,其特征在于,步骤三中,所述接口StateReduction()用于解释一条XD-M语句,在XD-M语言解释器底层对接口StateReduction()进行了扩展,通过以下步骤解释一条语句statement:
(1)如果statement是赋值语句,如果左值是结构体成员变量,转到步骤(7);如果右值表达式是简单表达式,转到步骤(2);如果右值表达式是一维数组,转到步骤(3);如果右值表达式是二维数组,转到步骤(4);如果statement不是赋值语句,转到步骤(8);
(2)通过接口ValueReduction()计算右值表达式的返回值,生成右值符号;在符号表中查找与变量名同名的符号,如果未找到,在符号表中创建一个同名符号,是为左值符号,置其类型为右值符号的类型;检查右值符号与左值符号的类型是否相同,如果相同,直接调用接口AssignReduction()进行赋值,完成该语句的解释;如果不同,将左值符号的类型更新为右值符号的类型,然后调用接口AssignReduction()进行赋值,完成该语句的解释;释放右值符号;
(3)通过接口ValueReduction()计算右值表达式首个元素,生成临时符号;以临时符号的类型作为待声明数组的类型,调用底层接口__StatRedDeclarAssExp()将该语句按照声明语句来解释;释放临时符号;
(4)通过接口ValueReduction()计算右值表达式首个元素,生成临时符号;计算右值表达式所表示的数组的行数和列数;以临时符号的类型作为待声明数组的类型,以计算出的行列数作为其行列数,构建等效的MSVL二维数组声明语法树;调用底层接口__StatRedDeclarAssExp()解释该语法树;释放临时符号;
(5)展开数组乘法表达式为完整的一维数组表达式,转到步骤(3);
(6)展开数组乘法表达式为完整的二维数组表达式,转到步骤(4);
(7)在符号表中查找与结构体变量同名的符号;在结构体变量的成员符号表中查找与结构体成员变量同名的符号,是为左值符号;如果右值表达式是简单表达式,转到步骤(2);如果右值表达式是一维数组,转到步骤(3);如果右值表达式是二维数组,转到步骤(4);
(8)如果statement是结构体初始化语句,如果初始化一个结构体变量,转到步骤(2);如果初始化一个结构体数组,构建等效的MSVL结构体变量声明语法树;调用接口__StatRedStructDec()解释该语句;如果statement不是结构体初始化语句,转到步骤(9);
(9)如果statement是结构体定义语句,创建MSVL结构体定义语句语法树,结构体成员个数和名称不变,结构体成员名称的类型置为字符类型char,值置为'\0';调用接口__StatRedStructDec()解释该语句;如果statement不是结构体定义语句,转到步骤(10);
(10)如果statement是外部导入语句,获取导入文件的路径;将词法分析器文件句柄yyin指向该文件;调用Bison提供的接口yyparse(),启动词法分析器和语法分析器解析该文件;如果statement不是外部导入语句,转到步骤(11);
(11)如果statement是函数调用语句,如果是内置函数调用,在底层调用解释该内置函数的接口解释该语句;如果是自定义函数调用,调用接口__StatRedFuncCall()解释该语句;如果statement不是函数调用语句,转到步骤(12);
(12)如果statement是skip语句,在程序的下一状态调用接口__StatRedEmpty()解释该语句;如果statement不是skip语句,转到步骤(13);
(13)如果statement是顺序语句、合取语句、分支语句、循环语句、empty语句、skip语句、next语句、frame语句、await语句、or语句、always语句、parallel语句或projection语句,分别调用接口__StatRedChop()、__StatRedAnd()、__StatRedIf()、__StatRedFor()、__StatRedEmpty()、__StatRedSkip()、__StatRedNext()、__StatRedFrame()、__StatRedAwait()、__StatRedOr()、__StatRedAlways()、__StatRedParallel()或__StatRedPrj(),完成该语句的解释;
其中,所述符号和符号表是定义在MSVL解释器底层的数据结构,所述符号用于存储运行在程序中的变量和字面量的值、类型、所属结构体、局部符号表、指针指向的对象、数组维数和数组大小信息;三符号表用于存储所有的符号;
所述左值、右值、左值符号和右值符号,在程序设计语言中,对于一条赋值语句而言,赋值符号左部称为左值,赋值符号右部称为右值;左值与右值的区别还在于在内存中的布局和生命周期;左值的生命周期较右值持久,它的值可被更改,并在一段时间内保持该值,右值是临时值;所述符号表中与左值同名的符号是左值符号,使用接口ValueReduction()对右值进行计算返回的符号是右值符号;
所述简单表达式,是出现在赋值符号右部的,除了使用中括号“[]”以及使用“[]”和乘法符号“*”的组合用以表示数组的表达式以外的任何表达式。
6.如权利要求1所述的类Python程序设计语言XD-M的解释方法,其特征在于,所述类Python程序设计语言XD-M的解释方法,还包括:
(1)将MSVL解释器的底层接口和实现提取出来,移植到MinGW开发环境中,删去依赖于Windows平台的Win API调用,使用与Windows平台无关的代码进行等效的替换,作为XD-M语言解释器的底层解释模块;
(2)编写词法规则于文件M.l中,包括关键字和操作符的词法规则;
(3)通过Flex解析文件M.l,生成XD-M语言解释器的词法分析器;
(4)编写语法规则于文件M.y中,包括具有XD-M语言特性的语句、基本语句和源自MSVL的语句;
(5)通过Bison解析文件M.y,生成XD-M语言解释器的语法分析器;
其中,所述操作符包括算数运算、逻辑运算、关系运算、位运算和赋值运算的操作符;
所述具有XD-M语言特性的语句包括赋值语句、结构体定义语句、函数调用语句和外部导入语句;
所述基本语句和源自MSVL的语句包括顺序语句、合取语句、分支语句、循环语句、empty语句、skip语句、next语句、frame语句、await语句、or语句、always语句、parallel语句和projection语句;
所述具有XD-M语言特性的语句包括赋值语句、结构体定义语句、内置函数调用语句和外部导入语句。
7.如权利要求1所述的类Python程序设计语言XD-M的解释方法,其特征在于,所述类Python程序设计语言XD-M的解释方法,还包括:
(1)接收命令行参数,如果命令行参数是“-m”,调用接口Modeling()完成XD-M源程序的建模,否则,转到步骤(2);
(2)如果命令行参数是“-s”,调用接口Simulation()完成XD-M源程序的仿真,否则,转到步骤(3);
(3)如果命令行参数是“-v”,调用接口Verification()完成XD-M源程序的验证,否则,转到步骤(4);
(4)如果命令行参数是“-i”,调用接口SimulationOneLine()完成XD-M源程序的交互式仿真;
其中,所述接口SimulationOneLine()是扩展的底层接口,用于仿真一段XD-M源程序,在仿真过程中,需要调用接口StateReduction()实现每条XD-M语句的解释执行;
所述接口Modeling()、Simulation()和Verification()是MSVL解释器提供的的底层接口,分别用于提供建模、仿真和验证功能,在建模、仿真和验证过程需要调用接口StateReduction()实现每条XD-M语句的解释执行;
所述接口StateReduction()是MSVL解释器提供的的底层接口,用于解释每条XD-M语句。
8.一种实施权利要求1~7任意一项所述的类Python程序设计语言XD-M的解释方法的类Python程序设计语言XD-M的解释系统,其特征在于,所述类Python程序设计语言XD-M的解释系统包括:输入处理模块、词法分析器、语法分析器、底层解释模块和出错处理模块;
输入处理模块,用于通过文件流的形式打开使用XD-M源程序,若打开文件失败,将错误报告给出错处理模块;否则,将词法分析器的文件句柄yyin指向该源程序;
词法分析器,用于通过编写词法规则文件M.l,包括关键字和符号的词法规则,使用Flex解析文件M.l生成词法分析器;
语法分析器,用于通过编写语法规则文件M.y,包括具有M语言特性的语句、基本语句和源自MSVL的语句,通过Bison解析文件M.y生成语法分析器;
底层解释模块,用于通过将MSVL解释器的底层接口和实现提取出来,移植到MinGW开发环境中,删去依赖于Windows平台的WinAPI调用,使用与Windows平台无关的代码进行等效的替换;
出错处理模块,用于将输入处理模块、词法分析器、语法分析器和后端解释模块报告的错误具体信息输出。
9.一种实施权利要求1~7任意一项所述的类Python程序设计语言XD-M的解释系统的所述类Python程序设计语言XD-M的解释系统的交互式仿真方法,其特征在于,所述类Python程序设计语言XD-M的解释系统的交互式仿真方法,包括:
在XD-M源程序执行的过程中,将标准输入的内容暂存到一个临时文件中,将Flex提供的文件句柄yyin指向临时文件,通过Bison提供的接口yyparse()对该段程序进行词法分析和语法分析,生成语法树;通过循环调用接口StateReduction()并判断该段程序的子语句是否解释完成,完成该段程序的交互式仿真执行;
其中,在底层扩展接口ParseOneLine()和SimulationOneLine()中,所述接口ParseOneLine()解析一段标准输入中的XD-M源程序,所述接口SimulationOneLine()完成该段程序的交互式仿真执行。
10.一种信息数据处理终端,所述信息数据处理终端用于实现如权利要求7所述的类Python程序设计语言XD-M的解释系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110399134.5A CN113238759B (zh) | 2021-04-14 | 2021-04-14 | 一种类Python程序设计语言XD-M的解释系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110399134.5A CN113238759B (zh) | 2021-04-14 | 2021-04-14 | 一种类Python程序设计语言XD-M的解释系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113238759A true CN113238759A (zh) | 2021-08-10 |
CN113238759B CN113238759B (zh) | 2023-02-03 |
Family
ID=77128152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110399134.5A Active CN113238759B (zh) | 2021-04-14 | 2021-04-14 | 一种类Python程序设计语言XD-M的解释系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113238759B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010011371A1 (en) * | 1998-09-29 | 2001-08-02 | Min-Mei Tang | Compilation of embedded language statements in a source code program |
US6978447B1 (en) * | 2001-02-28 | 2005-12-20 | Cisco Technology, Inc. | Method and system for efficiently interpreting a computer program |
US20070055966A1 (en) * | 2005-09-08 | 2007-03-08 | Lucent Technologies Inc. | Yet another transformation language (YATL) |
CN103150199A (zh) * | 2013-04-08 | 2013-06-12 | 西安电子科技大学 | 一种多类型msvl语言解释系统及多类型msvl语言解释方法 |
CN104503816A (zh) * | 2014-12-30 | 2015-04-08 | 西安电子科技大学 | 一种硬件语言vhdl到msvl的自动转换系统 |
CN104965750A (zh) * | 2015-06-05 | 2015-10-07 | 浪潮集团有限公司 | 基于Python语言的Rapidio切换器逻辑仿真验证平台及方法 |
CN106371887A (zh) * | 2016-11-08 | 2017-02-01 | 西安电子科技大学 | 一种msvl语言的编译系统及方法 |
CN109885902A (zh) * | 2019-01-29 | 2019-06-14 | 华南理工大学 | 一种基于Python语言的EDA开发平台及其使用方法 |
-
2021
- 2021-04-14 CN CN202110399134.5A patent/CN113238759B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010011371A1 (en) * | 1998-09-29 | 2001-08-02 | Min-Mei Tang | Compilation of embedded language statements in a source code program |
US6978447B1 (en) * | 2001-02-28 | 2005-12-20 | Cisco Technology, Inc. | Method and system for efficiently interpreting a computer program |
US20070055966A1 (en) * | 2005-09-08 | 2007-03-08 | Lucent Technologies Inc. | Yet another transformation language (YATL) |
CN103150199A (zh) * | 2013-04-08 | 2013-06-12 | 西安电子科技大学 | 一种多类型msvl语言解释系统及多类型msvl语言解释方法 |
CN104503816A (zh) * | 2014-12-30 | 2015-04-08 | 西安电子科技大学 | 一种硬件语言vhdl到msvl的自动转换系统 |
CN104965750A (zh) * | 2015-06-05 | 2015-10-07 | 浪潮集团有限公司 | 基于Python语言的Rapidio切换器逻辑仿真验证平台及方法 |
CN106371887A (zh) * | 2016-11-08 | 2017-02-01 | 西安电子科技大学 | 一种msvl语言的编译系统及方法 |
CN109885902A (zh) * | 2019-01-29 | 2019-06-14 | 华南理工大学 | 一种基于Python语言的EDA开发平台及其使用方法 |
Non-Patent Citations (2)
Title |
---|
PENG ZHANG等: ""Simulation of CTCS-3 protocol with temporal logic programming"", 《PROCEEDINGS OF THE 2013 IEEE 17TH INTERNATIONAL CONFERENCE ON COMPUTER SUPPORTED COOPERATIVE WORK IN DESIGN (CSCWD)》 * |
周子天等: ""基于Python的SCPI命令解释器的设计"", 《测控技术》 * |
Also Published As
Publication number | Publication date |
---|---|
CN113238759B (zh) | 2023-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112100054B (zh) | 一种面向数据管控的程序静态分析方法和系统 | |
CN110908640B (zh) | 实现业务功能的方法和脚本引擎 | |
Davis et al. | The reflective Milawa theorem prover is sound (down to the machine code that runs it) | |
Córdoba-Sánchez et al. | Ann: A domain-specific language for the effective design and validation of Java annotations | |
CN108563561B (zh) | 一种程序隐性约束提取方法及系统 | |
KR20010024576A (ko) | 기계 기술로부터의 명령군 구조의 시뮬레이터 및 어셈블러생성 방법 | |
Jiang et al. | Automatic building information model query generation | |
CN109857458B (zh) | 基于ANTLR的AltaRica 3.0的扁平化的转化方法 | |
CN111124422B (zh) | 一种基于抽象语法树的eos智能合约语言转换方法 | |
CN113238759B (zh) | 一种类Python程序设计语言XD-M的解释系统及方法 | |
Savic et al. | Use case specification at different levels of abstraction | |
CN116755669A (zh) | 一种基于dsl语言操作模型的低代码开发方法和工具 | |
CN116755667A (zh) | 一种低代码dsl语言开发方法及装置 | |
Fritzson et al. | Metamodelica–a symbolic-numeric modelica language and comparison to julia | |
Grigorev et al. | String-embedded language support in integrated development environment | |
CN110737431A (zh) | 软件开发方法、开发平台、终端设备及存储介质 | |
RU2515684C1 (ru) | Способ синтаксического анализа языка программирования с расширяемой грамматикой | |
Cruz et al. | Constructing program animations using a pattern based approach | |
Vajk et al. | Incremental OCL to C# code generation | |
CN117873559A (zh) | 一种基于大语言模型与静态分析工具的代码摘要生成方法 | |
Youn et al. | Bringing the WebAssembly Standard up to Speed with SpecTec | |
Rossmanith | Computing pre∗ for General Context Free Grammars | |
CN118034661A (zh) | 大语言模型智能任务应用系统 | |
Lago et al. | On Model-Checking Higher-Order Effectful Programs (Long Version) | |
Binh et al. | TTTEST: The tool support for testing interactive multimodal application |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |