CN116560667B - 一种基于预编译延迟执行的拆分调度系统及方法 - Google Patents
一种基于预编译延迟执行的拆分调度系统及方法 Download PDFInfo
- Publication number
- CN116560667B CN116560667B CN202310844166.0A CN202310844166A CN116560667B CN 116560667 B CN116560667 B CN 116560667B CN 202310844166 A CN202310844166 A CN 202310844166A CN 116560667 B CN116560667 B CN 116560667B
- Authority
- CN
- China
- Prior art keywords
- current
- line
- current line
- parameter
- function
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000000605 extraction Methods 0.000 claims abstract description 11
- 230000006870 function Effects 0.000 description 67
- 239000000725 suspension Substances 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 239000011800 void material Substances 0.000 description 4
- 238000012360 testing method Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本发明公开了一种基于预编译延迟执行的拆分调度系统及方法,包括引用依赖图单元、当前行引用提取单元、逻辑拆分单元,根据引用关系和对象在预编译阶段生成引用依赖图,根据引用依赖图通过参数依赖分析获取token,得到当前行引用对象和引用参数对象,根据得到当前行引用对象和引用参数对象进行逻辑拆分,本发明能够在不影响原先执行语义的前提下对函数进行编译、拆分和重新生成,解决了业务逻辑在函数执行过程中需要长时间等待无法使用线程挂起等方案的问题。
Description
技术领域
本发明涉及一种将函数内部任意位置需要延迟执行的函数拆分成多个函数调度执行的编译系统及方法,属于程序语言编译技术领域。
背景技术
qLang是图形化低代码专属语言,作为java的分叉语言,基于自主实现的qLang编译器将用户的图形化配置编译成目标二进制。
qLang增强编译指的是在最终编译生成目标二进制前进行的预编译过程,该过程是基于特定IR Node的多次编译增强与优化,是一种对源代码的编译加强。
IR Node在编译器设计中,即中间表示节点,是构成中间表示的基本元素。中间表示是编译器在源代码和目标代码之间使用的一种内部表示方法,用于进行代码优化和目标代码生成。
作用域是编程语言中的重要特性,在编程语言中定义了变量、函数和对象的可见性和生命周期。作用域规定了在代码的哪个部分可以访问某个特定的标识符。
xxl-job是一款开源的分布式任务调度平台,能够实现任务的动态添加、修改、删除、暂停、恢复等操作,支持多种任务类型,自定义任务执行器,可视化的任务管理界面,以及任务执行日志查询等功能。
线程挂起是指操作系统暂停某个线程的执行,通常是为了让其他线程有机会运行,或者主动的进入挂起等待状态。挂起的线程不会消耗CPU时间,但它的状态(如寄存器值、堆栈内容等)通常会保留在内存中,等待它再次被恢复时使用。
大量线程长时间挂起会导致内存被占用无法释放,同时基于操作系统的控制在进程被重启后无法恢复,在需要长时间挂起例如挂起一个月时无法使用操作系统的线程挂起逻辑。
发明内容
发明目的:为了解决业务逻辑在函数执行过程中需要长时间等待无法使用线程挂起等方案的问题,本发明提供一种基于预编译延迟执行的拆分调度系统及方法。
技术方案:为实现上述目的,本发明采用的技术方案为:
一种基于预编译延迟执行的拆分调度系统,包括引用依赖图单元、当前行引用提取单元、逻辑拆分单元,其中:
所述引用依赖图单元用于根据引用关系和对象在预编译阶段生成引用依赖图。
所述当前行引用提取单元用于根据引用依赖图通过参数依赖分析获取token,得到当前行引用对象和引用参数对象。
所述逻辑拆分单元用于根据得到当前行引用对象和引用参数对象进行逻辑拆分。
优选的:所述当前行引用提取单元根据引用依赖图通过delayExecute方法查找到对应方法引用对象MCR,根据方法引用对象MCR获取定义token的当前行依赖的当前行引用对象BSR,并向下查找出当前行后所有使用的引用参数对象refP。
优选的:所述逻辑拆分单元根据得到当前行引用对象和引用参数对象进行逻辑拆分的方法:在单个函数内自下往上进行函数拆分,首先获取到当前函数内最后一个未处理的token位置所在当前行引用对象BSR,递归当前行引用对象BSR对应下一行引用next所持有的引用参数对象refP,获取到所有下文引用的参数,将参数和对应参数类型作为新函数的入参生成新函数,并替换原先行。
优选的:所述逻辑拆分单元替换原先行时,生成return语句中断该行执行,将参数值和方法名传递给任意可持久化的时间调度器。当前token不在分支等代码块中时,即当前行引用对象BSR对应的上级代码块引用parent为null时,将该行下文对应的当前编译函数qlang语法编译中间层IRNode整体移动到新函数中。当token在if等代码块中,将该行当前代码块中下文对应IRNode整体移动到新函数中,并将代码块外下文IRNode复制一份到新函数中。
一种基于预编译延迟执行的拆分调度方法,采用上述基于预编译延迟执行的拆分调度系统,包括以下步骤:
步骤1,根据引用关系和对象在预编译阶段生成引用依赖图。
步骤2,根据引用依赖图通过参数依赖分析获取token,得到当前行引用对象和引用参数对象。
步骤3,根据得到当前行引用对象和引用参数对象进行逻辑拆分,通过对逻辑拆分后的代码编译,只需要在代码中加入指定token就可实现在函数内部任意位置暂停并保留上下文信息在长时间之后重新恢复执行。
优选的:步骤2中根据引用依赖图通过delayExecute方法查找到对应方法引用对象MCR,根据方法引用对象MCR获取定义token的当前行依赖的当前行引用对象BSR,并向下查找出当前行后所有使用的引用参数对象refP。
优选的:步骤3中根据得到当前行引用对象和引用参数对象进行逻辑拆分的方法:在单个函数内自下往上进行函数拆分,首先获取到当前函数内最后一个未处理的token位置所在当前行引用对象BSR,递归当前行引用对象BSR对应下一行引用next所持有的引用参数对象refP,获取到所有下文引用的参数,将参数和对应参数类型作为新函数的入参生成新函数,并替换原先行。
优选的:替换原先行方法:生成return语句中断该行执行,将参数值和方法名传递给任意可持久化的时间调度器。当前token不在分支等代码块中时,即当前行引用对象BSR对应的上级代码块引用parent为null时,将该行下文对应的当前编译函数qlang语法编译中间层IRNode整体移动到新函数中。当token在if等代码块中,将该行当前代码块中下文对应IRNode整体移动到新函数中,并将代码块外下文IRNode复制一份到新函数中。
优选的:新函数的函数名使用随机数生成。
优选的:将参数值和方法名传递给任意可持久化的时间调度器通过xxl-job实现。
本发明相比现有技术,具有以下有益效果:
本发明通过在预编译阶段对函数内特定token位置的上下文引用关系进行分析,在不影响原先执行语义的前提下对函数进行编译、拆分、重新生成,解决了业务逻辑在函数执行过程中需要长时间等待无法使用线程挂起等方案的问题。
附图说明
图1为本发明实施例的依赖引用关系。
图2为本发明实施例生成的依赖引用关系图。
实施方式
下面结合附图和具体实施例,进一步阐明本发明,应理解这些实例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
一种基于预编译延迟执行的拆分调度系统,包括引用依赖图单元、当前行引用提取单元、逻辑拆分单元,其中:
所述引用依赖图单元用于根据引用关系和对象在预编译阶段生成引用依赖图。
所述当前行引用提取单元用于根据引用依赖图通过参数依赖分析获取token,得到当前行引用对象和引用参数对象。
所述当前行引用提取单元根据引用依赖图通过delayExecute方法查找到对应方法引用对象MCR,根据方法引用对象MCR获取定义token的当前行依赖的当前行引用对象BSR,并向下查找出当前行后所有使用的引用参数对象refP。
所述逻辑拆分单元用于根据得到当前行引用对象和引用参数对象进行逻辑拆分。
所述逻辑拆分单元根据得到当前行引用对象和引用参数对象进行逻辑拆分的方法:在单个函数内自下往上进行函数拆分,首先获取到当前函数内最后一个未处理的token位置所在当前行引用对象BSR,递归当前行引用对象BSR对应下一行引用next所持有的引用参数对象refP,获取到所有下文引用的参数,将参数和对应参数类型作为新函数的入参生成新函数,并替换原先行。替换原先行时,生成return语句中断该行执行,将参数值和方法名传递给任意可持久化的时间调度器。当前token不在分支等代码块中时,即当前行引用对象BSR对应的上级代码块引用parent为null时,将该行下文对应的当前编译函数qlang语法编译中间层IRNode整体移动到新函数中。当token在if等代码块中,将该行当前代码块中下文对应IRNode整体移动到新函数中,并将代码块外下文IRNode复制一份到新函数中。
一种基于预编译延迟执行的拆分调度方法,采用上述基于预编译延迟执行的拆分调度系统。为了更好的说明本发明的拆分调度方法,下面结合一段具体的示例代码:
public void test(){
int a=2; //第一行
int b=3; //第二行
if(a<3){ //第三行
QDelayRegister delay_1 = new QDelayRegister(); //第四行
qyRuleService.delayExecute(delay_1); //第五行
System.out.println(a); //第六行
}
int c=4; //第七行
int d=5; //第八行
QDelayRegister delay_2 = new QDelayRegister(); //第九行
qyRuleService.delayExecute(delay_2); //第十行
System.out.println(a+c); //第十一行
}
步骤1,根据引用关系和对象在预编译阶段生成引用依赖图。
如图1所示的依赖引用关系,BSR即BlockStatementReference代表一行或者一个父级代码块中的引用关系对象,refP即refPrimary代表当前行或代码块引用的参数对象,MCR即MethodCallReference记录了当前行BSR对象和方法描述对象。
根据上文示例代码生成逻辑如下:
解析第一行int a=2;并生成BSR0(第一行引用对象),将a参数定义加入到当前方法作用域M1中,并将当前作用域M1当前处理行currentBlockStatementReference指向BSR0,同时在BSR0中记录当前作用域所有代码行IRNode(当前编译函数qlang语法编译中间层)的引用和对应行下标0。
解析第二行int b=3;并生成BSR1(第二行引用对象),将b参数定义加入到当前方法作用域M1中,并将当前作用域M1中当前处理行与BSR0(第一行引用对象)的next(下一行引用)指向BSR1,在BSR1中记录当前作用域M1所有代码行IRNode(当前编译函数qlang语法编译中间层)的引用和对应行下标。
解析第三行if(a<3){}并生成BSR2(第三行代码块引用对象),将a的参数引用对象refP0加入到BSR2中,并将当前作用域M1中当前处理行与BSR1(第二行引用对象)的next(下一行引用)指向BSR2,在BSR2中记录当前作用域M1所有代码行IRNode(当前编译函数qlang语法编译中间层)的引用和对应行下标,生成子级作用域B1指向父级作用域M1。
解析第四行QDelayRegister delay_1 = new QDelayRegister();并生成BSR2_0(第四行代码引用对象),将delay_1的参数定义加入到当前方法作用域B1中,并将BSR2_0的parent(上级代码块引用)指向当前作用域B1的父级作用域M1对应的当前处理行BSR2(第三行代码块引用对象),同时将当前作用域B1的当前处理行指向BSR2_0,在BSR2_0中记录当前作用域B1所有代码行IRNodee(当前编译函数qlang语法编译中间层)的引用和对应行下标。
解析第五行qyRuleService.delayExecute(delay_1);生成BSR2_1(第五行代码引用对象),同时将当前作用域B1的当前处理行指向BSR2_1,将BSR2_0(第四行代码引用对象)的next(下一行引用)指向BSR2_1,并将BSR2_1的parent(上级代码块引用)指向当前作用域B1的父级作用域M1对应的当前处理行BSR2(第三行代码块引用对象)。生成对应的方法引用对象MCR0(方法引用对象1),使MCR0持有BSR2_1的引用,生成delay1对应的refP0(参数引用对象1),使得BSR2_1持有refP0的引用。后面行按照此逻辑依次生成,最终生成引用依赖图附图2所示。
步骤2,根据引用依赖图通过参数依赖分析获取token,得到当前行引用对象和引用参数对象。
根据特定的方法调用token,本实施例采用delayExecute方法查找到对应MCR(方法引用对象),根据MCR获取到定义token的当前行依赖BSR(当前行引用对象),并向下查找出当前行后所有使用的参数refP(引用参数对象)。
步骤3,根据得到当前行引用对象和引用参数对象进行逻辑拆分,通过对逻辑拆分后的代码编译,只需要在代码中加入指定token就可实现在函数内部任意位置暂停并保留上下文信息在长时间之后重新恢复执行。
在单个函数内自下往上进行函数拆分,首先获取到当前函数内最后一个未处理的token位置所在BSR(当前行引用对象),递归当前BSR对应next(下一行引用)所持有的refP(引用参数对象)获取到所有下文引用的参数,将参数和对应参数类型作为新函数的入参生成新函数,函数名使用随机数生成,并替换原先行。
替换原先行方法,生成return语句中断该行执行,将参数值和方法名传递给任意可持久化的时间调度器,这里是通过xxl-job实现。当前token不在分支等代码块中时,即BSR(当前行引用对象)对应parent(上级代码块引用)为null时,将该行下文对应IRNode(当前编译函数qlang语法编译中间层)整体移动到新函数中。当token在if等代码块中,将该行当前代码块中下文对应IRNode整体移动到新函数中,并将代码块外下文IRNode复制一份到新函数中。按照此逻辑依次拆分,最终将实例函数拆分成如下所示的三个函数。
public class TestA
{
public com.qpaas.qlang_development_kit.rule_engine.service.QYRuleService qyRuleService=new QYRuleService("APICeShiQiYe");
//原始test函数被拆分后结果
public void test()
{
int a=2;
int b=3;
if(a < 3)
{
QDelayRegister delay_1=new QDelayRegister();
//自下往上拆分,将原先qyRuleService.delayExecute(delay_1);行以下所有内容提取到新函数rule3351014454590439424
//原始逻辑函数拆分交由调度器延迟执行新函数rule3351014454590439424
return qyRuleService.delayMethodCall(delay_1,this,"rule3351014454590439424",qyRuleService.getTraceId(),a);
}
int c=4;
int d=5;
QDelayRegister delay_2=new QDelayRegister();
//自下往上拆分,将原先qyRuleService.delayExecute(delay_2);行以下所有内容提取到新函数rule3351014454573662208
//原始逻辑函数拆分交由调度器延迟执行新函数rule3351014454573662208
return qyRuleService.delayMethodCall(delay_2,this,"rule3351014454573662208",qyRuleService.getTraceId(),a,c);
}
//delay_2识别后拆分出函数,达到指定时间后异步回调
public void rule3351014454573662208(Stringtrace3351014454573662208,int a,int c)
{
//编译期自动添加的异步执行追踪序列
qyRuleService.setTraceId(trace3351014454573662208);
System.out.println(a + c);
}
//delay_1识别后拆分出函数,达到指定时间后异步回调
public void rule3351014454590439424(Stringtrace3351014454590439424,int a)
{
//编译期自动添加的异步执行追踪序列
qyRuleService.setTraceId(trace3351014454590439424);
//delay_1下方执行逻辑提取
System.out.println(a);
int c=4;
int d=5;
QDelayRegister delay_2=new QDelayRegister();
return qyRuleService.delayMethodCall(delay_2,this,"rule3351014454573662208",qyRuleService.getTraceId(),a,c);
}
}
通过该编译逻辑,用户只需要在代码中加入指定token就可以简单的实现在函数内部任意位置暂停并保留上下文信息在长时间之后重新恢复执行。
本实施例通过在预编译阶段对函数内特定token位置的上下文引用关系进行分析,在不影响原先执行语义的前提下对函数进行编译、拆分、重新生成。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (7)
1.一种基于预编译延迟执行的拆分调度系统,其特征在于,包括引用依赖图单元、当前行引用提取单元、逻辑拆分单元,其中:
所述引用依赖图单元用于根据引用关系和对象在预编译阶段生成引用依赖图;
所述当前行引用提取单元用于根据引用依赖图通过参数依赖分析获取token,得到当前行引用对象和引用参数对象;
所述逻辑拆分单元用于根据得到当前行引用对象和引用参数对象进行逻辑拆分;
所述逻辑拆分单元根据得到当前行引用对象和引用参数对象进行逻辑拆分的方法:在单个函数内自下往上进行函数拆分,首先获取到当前函数内最后一个未处理的token位置所在当前行引用对象BSR,递归当前行引用对象BSR对应下一行引用next所持有的引用参数对象refP,获取到所有下文引用的参数,将参数和对应参数类型作为新函数的入参生成新函数,并替换原先行。
2.根据权利要求1所述基于预编译延迟执行的拆分调度系统,其特征在于:所述当前行引用提取单元根据引用依赖图通过delayExecute方法查找到对应方法引用对象MCR,根据方法引用对象MCR获取定义token的当前行依赖的当前行引用对象BSR,并向下查找出当前行后所有使用的引用参数对象refP。
3.根据权利要求2所述基于预编译延迟执行的拆分调度系统,其特征在于:所述逻辑拆分单元替换原先行时,生成return语句中断该行执行,将参数值和方法名传递给任意可持久化的时间调度器;当前token不在分支代码块中时,即当前行引用对象BSR对应的上级代码块引用parent为null时,将该行下文对应的当前编译函数qlang语法编译中间层IRNode整体移动到新函数中;当token在if代码块中,将该行当前代码块中下文对应IRNode整体移动到新函数中,并将代码块外下文IRNode复制一份到新函数中。
4.一种基于预编译延迟执行的拆分调度方法,其特征在于,采用根据权利要求1所述基于预编译延迟执行的拆分调度系统,包括以下步骤:
步骤1,根据引用关系和对象在预编译阶段生成引用依赖图;
步骤2,根据引用依赖图通过参数依赖分析获取token,得到当前行引用对象和引用参数对象;
步骤3,根据得到当前行引用对象和引用参数对象进行逻辑拆分,通过对逻辑拆分后的代码编译,只需要在代码中加入指定token就可实现在函数内部任意位置暂停并保留上下文信息在长时间之后重新恢复执行。
5.根据权利要求4所述基于预编译延迟执行的拆分调度方法,其特征在于:步骤2中根据引用依赖图通过delayExecute方法查找到对应方法引用对象MCR,根据方法引用对象MCR获取定义token的当前行依赖的当前行引用对象BSR,并向下查找出当前行后所有使用的引用参数对象refP。
6.根据权利要求5所述基于预编译延迟执行的拆分调度方法,其特征在于:替换原先行方法:生成return语句中断该行执行,将参数值和方法名传递给任意可持久化的时间调度器;当前token不在分支代码块中时,即当前行引用对象BSR对应的上级代码块引用parent为null时,将该行下文对应的当前编译函数qlang语法编译中间层IRNode整体移动到新函数中;当token在if代码块中,将该行当前代码块中下文对应IRNode整体移动到新函数中,并将代码块外下文IRNode复制一份到新函数中。
7.根据权利要求6所述基于预编译延迟执行的拆分调度方法,其特征在于:新函数的函数名使用随机数生成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310844166.0A CN116560667B (zh) | 2023-07-11 | 2023-07-11 | 一种基于预编译延迟执行的拆分调度系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310844166.0A CN116560667B (zh) | 2023-07-11 | 2023-07-11 | 一种基于预编译延迟执行的拆分调度系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116560667A CN116560667A (zh) | 2023-08-08 |
CN116560667B true CN116560667B (zh) | 2023-10-13 |
Family
ID=87493286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310844166.0A Active CN116560667B (zh) | 2023-07-11 | 2023-07-11 | 一种基于预编译延迟执行的拆分调度系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116560667B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981812A (zh) * | 2011-09-07 | 2013-03-20 | 深圳市金蝶中间件有限公司 | 网页脚本语言的执行方法及装置 |
WO2019105565A1 (en) * | 2017-12-01 | 2019-06-06 | Huawei Technologies Co., Ltd. | Systems for compiling and executing code within one or more virtual memory pages |
CN114003868A (zh) * | 2021-11-04 | 2022-02-01 | 中国科学院计算技术研究所 | 一种处理软件代码的方法和电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9619215B2 (en) * | 2014-11-26 | 2017-04-11 | Sap Se | Pre-compiler |
-
2023
- 2023-07-11 CN CN202310844166.0A patent/CN116560667B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981812A (zh) * | 2011-09-07 | 2013-03-20 | 深圳市金蝶中间件有限公司 | 网页脚本语言的执行方法及装置 |
WO2019105565A1 (en) * | 2017-12-01 | 2019-06-06 | Huawei Technologies Co., Ltd. | Systems for compiling and executing code within one or more virtual memory pages |
CN114003868A (zh) * | 2021-11-04 | 2022-02-01 | 中国科学院计算技术研究所 | 一种处理软件代码的方法和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116560667A (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110187885B (zh) | 一种量子程序编译的中间代码生成方法及装置 | |
US7962904B2 (en) | Dynamic parser | |
CN111309757B (zh) | 一种HBase的SQL解释器和优化方法 | |
Wagner et al. | Incremental analysis of real programming languages | |
CN111813796B (zh) | 基于Hive数据仓库的数据列级血缘处理系统及方法 | |
US20090313600A1 (en) | Concurrent code generation | |
US9170787B2 (en) | Componentization of compiler functionality | |
JPH08202545A (ja) | ターゲット言語コードを生成するためのオブジェクト指向システム及びその方法 | |
Spies et al. | Transfinite Iris: resolving an existential dilemma of step-indexed separation logic | |
US20090328016A1 (en) | Generalized expression trees | |
WO2008097816A2 (en) | Direct access of language metadata | |
US11487522B1 (en) | Training and/or using neural network model to generate target source code from lower-level representation | |
JP2018510445A (ja) | プログラム性能を向上させる領域特化システムおよび方法 | |
CN115809063B (zh) | 一种存储过程编译方法、系统、电子设备和存储介质 | |
US8914782B2 (en) | Optimization of declarative queries | |
CN114064114A (zh) | 一种动态库生成方法及装置 | |
CN112948419A (zh) | 查询语句处理方法及装置 | |
CN116560667B (zh) | 一种基于预编译延迟执行的拆分调度系统及方法 | |
CN112114817A (zh) | 基于cobol语言的数据字典字段信息获取方法及装置 | |
JP5600301B2 (ja) | システム表現およびハンドリング技術 | |
Nethravathi et al. | Improved Parallel Scanner for the Concurrent Execution of Lexical Analysis Tasks on Multi-Core Systems | |
CN110018816B (zh) | 一种基于c/c++编译系统的虚拟机控制系统及其控制方法 | |
JP2000347875A (ja) | ファイル移植技術 | |
CN111752967A (zh) | 基于sql的数据处理方法、装置、电子设备和存储介质 | |
EP1785848A1 (en) | Method and apparatus for semantic checking of program code |
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 |