[发明专利]用于处理程序代码中的变量的引用的方法和系统有效
申请号: | 201911369988.8 | 申请日: | 2019-12-26 |
公开(公告)号: | CN111158663B | 公开(公告)日: | 2021-07-02 |
发明(设计)人: | 丛明舒;瞿中明;曲嘉宝;曾凯;唐来朋;何毅良 | 申请(专利权)人: | 深圳逻辑汇科技有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/34;G06F8/41 |
代理公司: | 中国贸促会专利商标事务所有限公司 11038 | 代理人: | 吴信刚 |
地址: | 518000 广东省深圳市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 处理 程序代码 中的 变量 引用 方法 系统 | ||
本公开涉及用于处理程序代码中的变量的引用的方法和系统。提供的方法包括:顺序地接收用户输入中包含的字符流,该字符流是程序代码的一部分;从所接收的字符流中识别第一变量符号并且存储与第一变量符号相关的信息,其中第一变量符号表示第一变量;把第一变量符号与从程序代码中先前识别的至少一个变量符号进行匹配以确定所述至少一个变量符号中是否存在表示第一变量的第二变量符号;响应于确定存在至少一个第二变量符号,根据与第一变量符号相关的操作以及与所述一个或多个第二变量符号相关的操作,确定第一变量符号是否涉及未定义引用;以及响应于确定第一变量符号涉及未定义引用,向用户提供可视辅助来处理该未定义引用。
技术领域
本发明一般地涉及处理计算机编程领域,具体地说,涉及处理编程语言代码中的未声明、未定义、或未初始化的变量的引用的方法和系统。
背景技术
计算机程序一般都涉及对变量的处理。在一些编程语言中,变量是对应于计算机的一块内存空间的占位符;在面向对象的编程语言中,变量也可以表现为作为某个类的实例的对象。编程语言中对变量的操作例如可以包括声明(declare)、定义(define)、初始化(initialize)、赋值(assignment)、访问(access)、析构(destruct)等。通常这些对于变量的操作之间遵从严格的依赖关系。例如,无法访问一个未被初始化的变量,也无法析构一个未被定义的变量。为了便于说明,在本申请中将对于同一个变量的存在依赖关系的两个变量操作之中,被依赖的操作简称为对该变量的“定义”,而依赖于“定义”的变量操作称为对该变量的“引用”。也就是说,本发明中的“定义”并不限于狭义的定义(define)操作,而是可以包括“引用”操作可能依赖的各种操作。例如,对于C语言程序中的一个变量的引用操作“赋值”而言,其所依赖的“定义”操作除了包括狭义的“定义”操作以外还包括“声明”操作。
由于这种依赖关系的存在,大部分编程语言都要求在进行变量定义的代码和进行变量引用的代码之间遵从严格的位置顺序或输入顺序。这种顺序关系对于C++等编译型语言而言,要求对变量进行定义的代码在源文件中的位置在对变量进行引用的代码之前;而对于Python等解释型语言而言,要求对变量进行定义的代码在输入顺序上需要比对变量进行引用的代码先输入。在现有技术中,如果违反了上述位置顺序或输入顺序,则编译或解释执行时会报告错误。
然而,对于某些领域特定编程语言而言,这种严格的顺序要求可能会给编程人员造成困难。例如在本申请的申请人深圳逻辑汇科技有限公司提出的用以构建电子表格模型的领域特定语言“SMALL”中,可以通过输入代码来构建电子表格的行,并指定不同的行之间的计算关系。此时,最直观且有利的是按照这些行在电子表格中的位置顺序来输入与这些行对应的代码,但这种代码输入顺序无法保证对一个行(变量)进行定义的代码出现在对这个行进行引用(例如,该变量作为等式的右值)的代码之前。在现实应用中,还经常出现SMALL语言中出现在等式右边的变量尚没有全部被定义就需要解析SMALL语言的情形。
发明内容
根据本公开的一个实施例,提供了一种用于处理程序代码中的变量的引用的方法。该方法包括顺序地接收用户输入中包含的字符流。所述字符流是所述程序代码的一部分。该方法还包括从所接收的字符流中识别第一变量符号并且存储与第一变量符号相关的信息。第一变量符号表示第一变量。该方法还包括把第一变量符号与从所述程序代码中先前识别的至少一个变量符号进行匹配以确定所述至少一个变量符号中是否存在表示第一变量的第二变量符号。该方法还包括响应于确定存在至少一个第二变量符号,根据与第一变量符号相关的操作以及与所述一个或多个第二变量符号相关的操作,确定第一变量符号是否涉及未定义引用。该方法还包括响应于确定第一变量符号涉及未定义引用,向用户提供可视辅助来处理该未定义引用。
根据本公开的另一个实施例,提供了一种计算机系统。该计算机系统包括一个或多个处理器和耦接到所述一个或多个处理器的存储器。所述存储器存储有计算机指令,所述计算机指令当由所述一个或多个处理器执行时使所述一个或多个处理器执行上述的方法的操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳逻辑汇科技有限公司,未经深圳逻辑汇科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911369988.8/2.html,转载请声明来源钻瓜专利网。