CN117667046A - 命令解析方法、装置、电子设备、存储介质及程序产品 - Google Patents
命令解析方法、装置、电子设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN117667046A CN117667046A CN202410130859.8A CN202410130859A CN117667046A CN 117667046 A CN117667046 A CN 117667046A CN 202410130859 A CN202410130859 A CN 202410130859A CN 117667046 A CN117667046 A CN 117667046A
- Authority
- CN
- China
- Prior art keywords
- parameter
- option
- current
- parameters
- type
- 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
- 238000004458 analytical method Methods 0.000 title claims abstract description 35
- 238000003860 storage Methods 0.000 title claims abstract description 16
- 238000000034 method Methods 0.000 claims abstract description 77
- 230000004044 response Effects 0.000 claims abstract description 55
- 238000013515 script Methods 0.000 claims description 50
- 230000006870 function Effects 0.000 claims description 25
- 238000013461 design Methods 0.000 claims description 17
- 230000002159 abnormal effect Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 8
- 238000011161 development Methods 0.000 abstract description 5
- 238000012360 testing method Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 13
- 238000012432 intermediate storage Methods 0.000 description 9
- JLYXXMFPNIAWKQ-UHFFFAOYSA-N γ Benzene hexachloride Chemical compound ClC1C(Cl)C(Cl)C(Cl)C(Cl)C1Cl JLYXXMFPNIAWKQ-UHFFFAOYSA-N 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- 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
- Stored Programmes (AREA)
Abstract
本申请属于计算机技术领域,并且提出了命令解析方法、装置、电子设备、存储介质及程序产品,该命令解析方法包括:接收目标命令;按照参数序列中的各参数的顺序,通过以下方式对参数进行解析:根据当前参数的标识位字符,将与标识位字符对应的参数类型确定为当前参数的参数类型;根据当前参数的参数类型,对当前参数的值进行解析,并且确定下一个待解析的参数,其中,响应于当前参数的参数类型为选项类型,根据预设选项值规则,确定与当前参数对应的选项值以及下一个待解析的参数。本申请解决了由于缺少自定义选项的解析方案导致软件开发效率低的问题,可以自动解析参数,无需花费额外的时间对自定义选项进行分析,提高软件设计开发的效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种命令解析方法、装置、电子设备、存储介质及程序产品。
背景技术
工具命令语言(Tool Command Language,Tcl)是一种解释执行的脚本语言(Scripting Language),被诸如电子设计自动化(Electronic Design Automation,EDA)软件等工具广泛兼容。包含Tcl解释器的简单shell(Simple shell containing Tclinterpreter,Tclsh)是一个shell类应用程序,能够从它的标准输入或指定文件中读取Tcl命令并对其求值(evaluate),例如可以作为EDA工具的shell使用。
在采用Tcl语言进行软件开发测试过程中,通常需要编写大量脚本,后续通过相应命令来调用执行这些脚本,以自动化实现预期的功能。脚本编写人员在面对不同的功能需求时,往往需要为相关脚本自定义一些有针对性的选项,以满足各种功能需求。
然而,对于Tcl语言环境而言,还没有针对自定义选项的解析方案,这对脚本编写人员来说是很不友好的,可能需要花费大量时间在一些非主要功能的代码模块上,这无疑是降低了工具开发测试的整体效率。
发明内容
本申请提供一种命令解析方法、装置、电子设备、存储介质及程序产品,以至少解决相关技术中缺少对自定义选项的解析方案导致降低软件开发效率的问题。本申请的技术方案如下:
根据本申请的第一方面,提供一种命令解析方法,所述命令解析方法应用于工具命令语言环境,其中,所述命令解析方法包括:接收待解析的目标命令,其中,所述目标命令中包括用于执行所述工具命令语言环境中的目标脚本的参数序列,参数序列包括至少一个参数;以及,按照所述参数序列中的各参数的顺序,通过以下方式对参数进行解析:根据当前参数的标识位字符,将与标识位字符对应的参数类型确定为当前参数的参数类型,其中,所述参数类型包括选项类型;以及,根据当前参数的参数类型,对当前参数的值进行解析,并且确定下一个待解析的参数,其中,响应于当前参数的参数类型为所述选项类型,根据预设选项值规则,确定与当前参数对应的选项值以及所述下一个待解析的参数,其中,所述预设选项值规则表征与所述选项类型下的各选项对应的选项值特征。
根据本申请的第二方面,提供一种命令解析装置,所述命令解析装置应用于工具命令语言环境,其中,所述命令解析装置包括:接收单元,被配置为接收待解析的目标命令,其中,所述目标命令中包括用于执行所述工具命令语言环境中的目标脚本的参数序列,参数序列包括至少一个参数;以及,解析单元,被配置为按照所述参数序列中的各参数的顺序,通过以下方式对参数进行解析:根据当前参数的标识位字符,将与标识位字符对应的参数类型确定为当前参数的参数类型,其中,所述参数类型包括选项类型;以及,根据当前参数的参数类型,对当前参数的值进行解析,并且确定下一个待解析的参数,其中,响应于当前参数的参数类型为所述选项类型,根据预设选项值规则,确定与当前参数对应的选项值以及所述下一个待解析的参数,其中,所述预设选项值规则表征与所述选项类型下的各选项对应的选项值特征。
根据本申请的第三方面,提供一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器,其中,所述处理器可执行指令在被所述处理器运行时,促使所述处理器执行根据本申请所述的命令解析方法。
根据本申请的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行根据本申请所述的命令解析方法。
本申请提供的技术方案至少带来以下有益效果:
在本申请的技术方案中,可以接收包含参数序列的目标命令,并且可以根据参数的标识位字符,确定参数的参数类型,并根据参数类型对参数进行解析,其中,在参数类型为选项类型的情况下,可以根据对应的选项值规则解析出与该参数对应的选项值,以完成参数的解析,如此,即使是在面对自定义选项的情况下,也可以通过该命令解析方法进行自动化的参数解析,而无需人员花费额外的时间对这样的自定义选项进行分析和确认,从而可以提高软件设计开发的整体效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理,并不构成对本申请的不当限定。
图1是根据本申请的示例性实施例示出的命令解析方法的示意性流程图。
图2是根据本申请的示例性实施例示出的命令解析方法中对参数进行解析的步骤的示意性流程图。
图3是根据本申请的示例性实施例示出的命令解析方法中确定当前参数的选项值以及下一个待解析的参数的步骤的示意性流程图。
图4是根据本申请的示例性实施例示出的命令解析方法中确定当前参数的选项值是否正常的步骤的示意性流程图。
图5是根据本申请的示例性实施例示出的命令解析方法中比较下一个待解析的参数的位数与参数数量的步骤的示意性流程图。
图6是根据本申请的示例性实施例示出的命令解析方法的一示例的示意性流程图。
图7是根据本申请的示例性实施例示出的命令解析装置的框图。
图8是根据本申请的示例性实施例示出的电子设备的框图。
具体实施方式
为了使本领域技术人员更好地理解本申请的技术方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本申请的说明书及附图中的各步骤不局限于所描述的特定顺序或先后次序。应该理解这样使用的步骤在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与本申请的一些方面相一致的装置和方法的例子。
如前所述,在采用Tcl语言进行软件开发测试过程中,脚本编写人员在面对不同的功能需求时,往往需要为相关脚本自定义一些有针对性的参数,以满足各种功能需求。然而,对于Tcl语言而言,还没有针对自定义参数的解析方案。
以采用Tcl语言实现的EDA软件为例,EDA是指利用计算机辅助设计(ComputerAided Design,CAD)软件,来完成超大规模集成电路(Very Large Scale IntegrationCircuit,VLSI)芯片的功能设计、综合、验证、物理设计(例如包括布局、布线、版图、设计规则检查等)等流程的设计方式。集成电路设计人员需要使用EDA工具设计几十万到数十亿晶体管的复杂集成电路,以减少设计偏差、提高流片成功率及节省流片费用。然而,由于在相关技术中,还没有针对自定义参数的解析函数,这对Tcl脚本编写人员来说是很不友好的,可能需要花费大量时间在一些非主要功能的代码模块上,这无疑是降低了EDA工具开发测试的整体效率。
鉴于上述问题,本申请的示例性实施例提出一种命令解析方法、命令解析装置、电子设备、计算机可读存储介质及计算机程序产品,其能够解决或至少缓解上述问题。
在本申请的示例性实施例的第一方面,提供一种命令解析方法,下面将参照图1至图6进行详细描述。
根据本申请的示例性实施例的命令解析方法可以应用于集成电路电子设计自动化软件的命令解析场景,例如,用户终端上可以加载有工具命令语言环境。
用户终端可以接收待解析的目标命令,其中,目标命令中可以包括用于执行命令的参数序列,参数序列可以包括至少一个参数。用户终端可以按照参数序列中的各参数的顺序,通过以下方式对参数进行解析:根据当前参数的标识位字符,将与标识位字符对应的参数类型确定为当前参数的参数类型,其中,参数类型包括选项类型;以及,根据当前参数的参数类型,对当前参数的值进行解析,并且确定下一个待解析的参数,其中,响应于当前参数的参数类型为选项类型,根据预设选项值规则,确定与当前参数对应的选项值以及下一个待解析的参数,其中,预设选项值规则表征与选项类型下的各选项对应的选项值特征。
根据本申请的示例性实施例的命令解析方法,可以对目标命令中的参数序列中的各参数进行解析,并且可以根据参数的标识位字符,确定参数类型,从而可以根据参数类型,对参数的值进行解析并且确定下一个待解析的参数,在参数类型为选项类型的情况下,可以根据预设选项值规则,确定对应的选项值以及下一个待解析的参数,如此,即使是在面对自定义选项的情况下,也可以通过该命令解析方法进行自动化的参数解析,而无需人员花费额外的时间对这样的自定义选项进行分析和确认,从而可以提高集成电路电子设计开发的整体效率。
上述用户终端可以是诸如平板电脑、笔记本电脑、数字助理、可穿戴设备等,然而,上面命令解析方法的实施场景仅是一示例场景,根据本申请的示例性实施例的命令解析方法还可以应用于其他应用场景,例如也可以是用户在用户终端(例如,手机、台式电脑、平板电脑等)通过网络向服务器生成命令解析请求,并且可以将待解析的目标命令发送至服务器,服务器可以通过执行根据本申请的示例性实施例的命令解析方法来完成命令解析,这里,服务器可以是独立服务器,也可以是服务器集群,还可以是云计算平台或虚拟化中心。
需要说明的是,尽管在本申请的实施例中以EDA软件为例进行了描述,但是本申请的实施例不限于应用于EDA软件,也可以应用于在Tcl语言环境中实现的其他软件或程序。
下面将参照图1描述根据本申请的示例性实施例的一种命令解析方法的具体步骤。该命令解析方法可以应用于工具命令语言环境。
如图1所示,该命令解析方法可以包括以下步骤:
在步骤S110,可以接收待解析的目标命令。
这里,目标命令可以为自定义的命令,其中可以包括用于执行工具命令语言环境中的目标脚本的参数序列,参数序列可以包括至少一个参数。例如,用户可以根据实际的目标脚本的运行需求在终端输入目标命令,以供目标脚本调用。这里,目标脚本可以是Tcl语言环境中实现的任意脚本,本申请对其不作特别限制。
例如,EDA软件的开发与测试工作可以直接在诸如Linux系统的终端(terminal)工具上进行,相关人员可以在终端输入目标命令来调用tclsh处理目标Tcl脚本。在调用tclsh的目标命令中,通常还会指定一些参数,用于传递至目标Tcl脚本中的相应变量,以便于脚本的执行。
作为示例,除了上述参数序列外,目标命令还可以至少包括脚本路径。
以Linux系统的命令行为例,目标命令可以为:“$ ./test.tcl v1asd -c asda -av2jsdj -h -d asnd v3askdb -b -e lklsn”。在该示例中,目录可以以正斜杠“/”结尾,单点“.”可以表示当前所在的目录,这里,正斜杠与单点的组合符号“./”本身不是命令,其允许shell应用程序直接从终端运行可执行文件,而无需再双击图形文件管理器中的文件。此外,“test.tcl”可以表示目标Tcl脚本的文件名称,因此,“./test.tcl”相当于指示了目标Tcl脚本的文件路径,而参数序列“v1asd -c asda -a v2jsdj -h -d asnd v3askdb -b -elklsn”则可以用于给目标Tcl脚本中的相应变量进行赋值,其中,“v1asd”、“-c”、“asda”、“-a”、“v2jsdj”、“-h”、“-d”、“asnd”、“v3askdb”、“-b”、“-e”以及“lklsn”为该参数序列中包括的参数。
尽管上面以Tcl脚本为例对目标命令进行了示例说明,但是其不限于此,也可以根据实际采用的命令语言的规则,生成目标命令。
在步骤S120,可以按照参数序列中的各参数的顺序,对参数进行解析。
以参数序列“v1asd -c asda -a v2jsdj -h -d asnd v3askdb -b -e lklsn”为例,可以按照参数在参数序列中的顺序对各参数(即“v1asd”、“-c”、“asda”、“-a”、“v2jsdj”、“-h”、“-d”、“asnd”、“v3askdb”、“-b”、“-e”以及“lklsn”)进行解析。
作为示例,在该步骤S120中,在对参数序列中的每个参数进行解析后,可以将解析出的参数存储在中间存储位置中,该中间存储位置例如可以通过字典、文本、表格等来实现。
具体来说,可以将在目标命令中解析得到的参数依次放入该中间存储位置,在对整个参数序列解析完成后,可以将该中间存储位置中暂存的参数返回给在目标命令中指定的目标路径,例如目标Tcl脚本,以使得目标Tcl脚本可以根据返回的参数实现相应功能。
在该步骤S120中,针对每个参数,如图2所示,可以通过以下方式对参数进行解析:
在步骤S210,可以根据当前参数的标识位字符,将与标识位字符对应的参数类型确定为当前参数的参数类型。
对于任一当前解析的参数,可以通过识别其标识位字符,确定该参数的参数类型。这里,参数类型可以包括选项类型,但是不限于此,例如其还可以包括但不限于常量类型等。
标识位字符可以用于提示该参数的参数类型。作为示例,可以预先针对各参数类型指定标识位字符规则,标识位字符规则可以用于规定参数中任意一位或多位字符为标识位以及在标识位的字符所对应的参数类型。
以上述参数序列“v1asd -c asda -a v2jsdj -h -d asnd v3askdb -b -elklsn”为例,可以以参数的首位为标识位,若参数的标识位字符为预设字符“-”,则可以认为该参数的参数类型为选项类型;若参数的标识位字符不为预设字符“-”,则可以认为该参数的参数类型不为选项类型,例如为常量类型。
在该示例中,对于上述序列中的参数“v1asd”,由于其首位字符(即标识位字符)不为预设字符“-”,则可以确定该参数“v1asd”的参数类型不为选项类型;对于上述序列中的参数“-c”,由于其首位字符(即标识位字符)为预设字符“-”,则可以确定该参数“-c”的参数类型为选项类型。
尽管这里以参数的首位为标识位、预设字符为“-”为例进行了示例说明,但是本申请的实施例不限于此,标识位以及与各参数类型对应的预设字符可以是自定义的,例如也可以将参数的末位、前两位、后两位等作为标识位,预设字符也可以是诸如“+”、“;”等其他符号,并且预设字符可以为一个或多个,例如,可以如上所述,为选项类型预设对应的字符,在参数的标识位不是该字符的情况下,则可以确认为其他类型;也可以为每个参数类型分别预设对应的字符,例如字符“-”对应于选项类型,字符“+”对应于常量类型等。
在步骤S220,可以根据当前参数的参数类型,对当前参数的值进行解析,并且确定下一个待解析的参数。
由于不同的参数类型可以具有不同的类型特征,因此在确定当前参数的参数类型的情况下,可以根据该类型下的规则对当前参数进行解析,并且可以判断参数序列中下一个需要解析的参数,从而可以更快速地完成参数序列的解析。
如上所述,参数类型可以包括选项类型,在该步骤S220中,响应于当前参数的参数类型为选项类型,可以根据预设选项值规则,确定与当前参数对应的选项值以及下一个待解析的参数。
这里,预设选项值规则可以表征与选项类型下的各选项对应的选项值特征。具体来说,可以预设有一种或多种自定义的选项,每种选项具有对应的选项值特征,这里,选项值特征例如可以包括:选项的含义、选项是否具有选项值、选项具有固定的预设选项值(例如,真(True)、假(False))、选项值的数量(例如一个选项值、两个选项值等)。例如,可以预先定义选项“h”,其表示“help”并且可以具有固定的选项值“True”,因此,在输入目标命令的参数序列时,无需输入选项“h”的选项值,相应地,也无需从参数序列中提取或解析其选项值;还可以预先定义选项“c”,其需要一个选项值,因此,在输入目标命令的参数序列时,需要在该选项后给出一个对应的选项值,相应地,在解析该选项时,需要从参数序列中提取或解析与其对应的选项值。
作为示例,在预设选项值规则包括选项是否需要选项值的情况下,如图3所示,可以通过以下方式确定与当前参数对应的选项值以及下一个待解析的参数:
在步骤S310,可以根据预设选项值规则,确定当前参数是否需要选项值。
在预设选项值规则包括选项是否需要选项值的情况下,在该步骤中,可以先确认当前参数是否需要选项值,以根据其是否需要选项值,判断是否需要进一步从参数序列中提取与当前参数对应的选项值。
在步骤S320,可以响应于当前参数需要选项值,根据当前参数所需要的选项值的数量,从参数序列中确定当前参数的选项值以及下一个待解析的参数。
在该步骤中,在预设选项值规则表示当前参数需要选项值的情况下,可以从参数序列中确定当前参数的选项值,并且可以确定下一个待解析的参数。
具体来说,在参数序列中的参数可以包括作为选项的参数以及作为选项值的参数,以上述参数序列“v1asd -c asda -a v2jsdj -h -d asnd v3askdb -b -e lklsn”为例,若参数“-c”的参数类型为选项类型,且预设选项值规则中规定该选项“-c”需要选项值,则在参数序列中在该参数“-c”后面的参数可能为其选项值,即参数“asda”为选项“-c”的选项值。
作为示例,选项值的数量可以为一个或多个,这里,在当前参数所需要的选项值的数量为目标数量的情况下,在该步骤S320中,可以将参数序列中在当前参数后的目标数量个参数确定为当前参数的选项值,并且将参数序列中在当前参数后间隔目标数量个参数的参数作为下一个待解析的参数。
具体来说,在确定当前参数所需要的选项值数量的情况下,可以从参数序列中提取在当前参数后的所需数量个参数,作为当前参数的选项值,而在这些选项值后的下一个参数则可以作为下一个待解析的参数。
以参数序列“v1asd -c asda -a v2jsdj -h -d asnd v3askdb -b -e lklsn”为例,若当前参数“-c”所需要的选项值的目标数量为1,则下一个待解析的参数可以为与当前参数“-c”间隔1个参数的参数,即参数“-a”。
在步骤S330,可以响应于当前参数不需要选项值,将默认值确定为当前参数的选项值,将当前参数的下一个参数作为下一个待解析的参数。
具体来说,可以为不需要选项值的选项预先确定对应的默认值作为该选项的选项值,在确定当前参数为不需要选项值的选项参数的情况下,可以将对应的默认值作为选项值,而无需从参数序列中确定选项值,并且可以将当前参数的下一个参数作为下一个待解析的参数。
以上述参数序列“v1asd -c asda -a v2jsdj -h -d asnd v3askdb -b -elklsn”为例,在确定参数“-h”无需选项值的情况下,可以将默认值“True”作为参数“h”的选项值,并且将参数序列中在参数“-h”后面的参数“-d”作为下一个待解析的参数。
基于上述方式,可以根据参数类型为选项类型的参数的选项值特征,确定选项值并且可以确定下一个待解析的参数,从而实现对自定义命令中选项和选项值的自动化解析。
此外,根据本申请的示例性实施例,在当前参数所需要的选项值的数量为目标数量的情况下,响应于当前参数需要选项值,如图4所示,命令解析方法还可以包括以下步骤:
在步骤S410,可以根据目标数量,确定在参数序列中当前参数的选项值是否正常。
这里,当前参数的选项值正常可以是指在参数序列中存在与目标数量对应的选项值,当前参数的选项值不正常可以是指在参数序列中不存在与目标数量对应的选项值。
具体来说,在当前参数需要选项值的情况下,可以预先规定每种选项所需的选项值的目标数量,例如某选项的选项值应为2个、某另一选项的选项值应为1个等。若参数序列中在当前参数后的可作为选项值的参数的数量大于或等于目标数量,则可以认为是正常的;若参数序列中在当前参数后的可作为选项值的参数的数量小于目标数量,则可以认为是不正常的或者说异常的。
作为示例,可以通过以下方式确定在参数序列中当前参数的选项值不正常:在参数序列中,在当前参数之后的参数的数量小于所述目标数量;或者,在参数序列中,在当前参数之后的目标数量个参数中的任意一个或多个参数的标识位字符所对应的参数类型为选项类型。
以参数序列“v1asd -c asda -a v2jsdj -h -d asnd v3askdb -b -e lklsn”为例,若当前参数“-c”所需要的选项值的目标数量为2,则可以看出,在上述参数序列中,在参数“-c”后的可作为选项值的参数仅有1个,即“asda”,而参数“-a”由于其标识位字符为预设字符“-”,因此会被识别为选项,而不会作为参数“-c”的选项值,因此,在此情况下,会判定在参数序列中当前参数的选项值异常。此外,若当前参数“-e”所需要的选项值的目标数量为2,则可以看出,在上述参数序列中,在参数“-e”后的参数仅有1个,小于目标数量,因此会判定在参数序列中当前参数的选项值异常。
在步骤S420,可以响应于在参数序列中当前参数的选项值正常,执行从参数序列中确定当前参数的选项值以及下一个待解析的参数的步骤。
在当前参数的选项值正常的情况下,可以执行上面描述的从参数序列中确定当前参数的选项值以及下一个待解析的参数的步骤,例如步骤S320。
在步骤S430,可以响应于在参数序列中当前参数的选项值不正常,对目标命令进行报错。
在当前参数的选项值异常的情况下,表示当前用户输入的目标命令中的参数序列可能有误,需要报错,以提示用户进行检查或修正。
通过上述方式,可以对选项值是否正常进行判断,从而在用户输入的参数序列有误的情况下,能够及时报错。
需要说明的是,尽管上面描述了可以对参数的选项值是否正常进行判断,但是本申请的实施例不限于此,也可以不执行上述判断,而是直接执行上面描述的从参数序列中确定当前参数的选项值以及下一个待解析的参数的步骤(如步骤S320),例如在上述参数序列中,在当前参数“-c”所需要的选项值的目标数量为2的情况下,可以将当前参数“-c”后面的2个参数“asda”和“-a”均作为参数“-c”的选项值,上述判断是否正常的过程,可以在执行该命令解析方法后人为进行判定,或者在一些情况下,也可以不判断选项值是否正常。
此外,如上所述,参数类型还可以包括常量类型,在该示例中,上述步骤S220还可以包括:响应于当前参数的参数类型为常量类型,将当前参数确定为常量的值,并且将在参数序列中当前参数的下一个参数作为下一个待解析的参数。
作为示例,可以预先给定目标脚本中作为常量的一个或多个变量,在对参数序列进行解析时,可以按照解析到的常量参数的顺序,对目标脚本中的这些变量进行赋值。这些变量例如可以存储在诸如字典的中间存储位置中,在参数解析的过程中,可以利用解析到的常量参数依次对这些变量进行赋值。
仍以参数序列“v1asd -c asda -a v2jsdj -h -d asnd v3askdb -b -e lklsn”为例,字典中可以存储有作为常量的变量“v1”、“v2”和“v3”,在确定当前参数“v1asd”的参数类型为常量类型的情况下,可以将该参数作为所提取的常量的值,例如可以将字典中的第一个变量“v1”的值确定为“v1asd”。此外,由于常量参数本身即可表征某个常量的赋值信息,无需与其他参数结合,因此可以直接将在当前参数后的参数确定为下一个待解析的参数。依次类推,可以对字典中的第二个变量“v2”赋值为“v2jsdj”,可以对字典中的第三个变量“v3”赋值为“v3askdb”。通过这种方式,可以实现对自定义的常量的自动化解析。
尽管上面描述了在诸如字典的中间存储位置中预先存储一个或多个变量的示例,但是本申请的实施例不限于此,也可以不预先存储这些变量,而在解析到常量参数时,直接存储这些常量的值,在目标脚本运行时可以依次调用这些值。
此外,根据本申请的实施例,还可以对常量类型的参数进行计数,从而可以判断当前输入的参数序列中的常量参数的数量是否超出预设限制。
在一示例中,命令解析方法还可以包括:响应于当前参数的参数类型为常量类型,将参数序列中常量参数的数量的赋值加1;响应于完成对参数序列中所有参数的解析,确定常量参数的数量;响应于常量参数的数量大于预设数量,对目标命令进行报错,其中,预设数量基于目标命令确定。
例如,预设数量可以根据目标命令所针对的目标脚本来确定,例如某目标脚本仅需要2个常量,则该预设数量可以为2。
以参数序列“v1asd -c asda -a v2jsdj -h -d asnd v3askdb -b -e lklsn”为例,假设预设数量为2,在确定参数“v1asd”属于常量类型时,可以对参数序列中所包括的常量参数的计数加1,即为1个;在确定参数“v2jsdj”属于常量类型时,可以对参数序列中所包括的常量参数的计数加1,即为2个,依次类推,还可以确定参数“v3askdb”和“lklsn”属于常量类型,最终在对整个参数序列解析完成后,可以得到对常量参数的总计数为4,其大于上述预设数量,可以对目标命令进行报错。
通过上述方式,可以对参数序列中常量的总数量进行计数,从而在常量的总数量超出预设限制的情况下,可以进行报错,提示用户对目标命令进行检查或修正。
需要说明的是,尽管这里描述了可以对参数序列中的常量数量进行计数以判断常量数量是否超出预设限制,但是本申请的实施例不限于此,也可以省略上述步骤,而是在对整个参数序列进行解析完成后,由用户来判断是否超出预设限制,并进行相应的处理。
在另一示例中,命令解析方法还可以包括:响应于当前参数的参数类型为常量类型,将参数序列中常量参数的数量的赋值加1;响应于常量参数的当前数量小于或等于预设数量,执行将当前参数确定为常量的值的步骤,其中,预设数量基于目标命令确定;响应于常量参数的当前数量大于预设数量,对目标命令进行报错。
具体来说,在对参数序列中的参数进行解析的过程中,每次识别到常量参数,可以对常量参数的计数加1,并且可以比较常量参数的当前数量和上述预设数量,若当前数量小于或等于预设数量,则认为当前识别到的常量参数的数量未超出预设限制,可以正常执行常量解析的步骤;若大于预设数量,则认为当前识别到的常量参数的数量超出预设限制,可以停止解析,及时进行报错。
以参数序列“v1asd -c asda -a v2jsdj -h -d asnd v3askdb -b -e lklsn”为例,假设预设数量为2,在确定参数“v1asd”属于常量类型时,可以对参数序列中所包括的常量参数的计数加1,即为1个;在确定参数“v2jsdj”属于常量类型时,可以对参数序列中所包括的常量参数的计数加1,即为2个;在确定参数“v3askdb”属于常量类型时,可以对参数序列中所包括的常量参数的计数加1,即为3个,此时,常量参数的数量已大于上述预设数量,可以对目标命令进行报错,而不会再继续执行对参数解析的过程。
通过上述方式,可以对参数序列中的常量数量进行计数,从而在常量数量超出预设限制的情况下,可以及时进行报错,提示用户对目标命令进行检查或修正,而无需在对整个参数序列进行解析完成后才发现该问题,有利于辅助用户修正自定义的参数序列,提高命令解析效率。
此外,根据本申请的示例性实施例,在参数类型包括常量类型的情况下,还可以通过以下方式对参数进行解析:响应于当前参数为预设字符串,将参数序列中在当前参数之后的所有参数的参数类型强制确定为常量类型。
这里,预设字符串可以根据实际需要而设定,例如可以是但不限于字符串“--”。以参数序列“v1asd -c asda -- v2jsdj -h -d asnd v3askdb -b -e lklsn”为例,在解析到参数“--”时,可以将该参数序列中在该参数后的所有参数的参数类型强制确定为常量类型,即“v2jsdj”、“-h”、“-d”、“asnd”、“v3askdb”、“-b”、“-e”以及“lklsn”的参数类型均为常量类型。如此,可以根据实际需要,通过预先设置特殊的字符串在参数序列中插入提示符(例如上述字符串“--”),以对后续所有参数的参数类型进行约束,从而可以简化解析的过程,提高解析效率。
此外,根据本申请的示例性实施例,如图5所示,命令解析方法还可以包括:
在步骤S510,可以确定参数序列中的参数数量以及下一个待解析的参数在参数序列中的位数。
这里,参数序列中的参数数量可以是指参数序列所包含的参数的总个数,参数在参数序列中的位数可以是指参数在参数序列中处于第几个参数。
在该步骤中,作为示例,可以通过以下方式确定下一个待解析的参数的位数:响应于当前参数的参数类型为常量类型,将当前参数的位数加1,得到下一个待解析的参数的位数;响应于当前参数的参数类型为选项类型,根据当前参数是否需要选项值,确定下一个待解析的参数的位数。
具体来说,在当前参数为常量的情况下,可以对其下一位参数继续进行解析;在当前参数为选项、其所需要的选项值为目标数量的情况下,可以将在参数序列中在当前参数后间隔目标数量个参数的参数作为下一个待解析的参数。
这里,可以根据当前参数是否需要选项值,确定下一个待解析的参数的位数,其中,可以响应于当前参数需要选项值,将当前参数的位数加m,得到下一个待解析的参数的位数,其中,m等于当前参数所需要的选项值的数量加1;响应于当前参数不需要选项值,将当前参数的位数加1,得到下一个待解析的参数的位数,其中,在首次对参数进行解析时,当前参数的位数为1。
例如,若某选项无需选项值,则可以将其下一位参数作为下一个待解析的参数;若某选项的选项值为2个,则可以将这2个选项值加入诸如字典的中间存储位置,并且将解析位数加3(即2+1)进行下一轮解析,以此类推。
通过上述方式,可以区分不同的参数类型,从参数序列中提取常量、选项及相应的选项值,从而自动化地对各参数进行顺序解析。
在步骤S520,可以响应于下一个待解析的参数的位数小于或等于参数数量,对下一个待解析的参数进行解析。
在步骤S530,可以响应于下一个待解析的参数的位数大于参数数量,退出对目标命令的解析。
在确定下一个待解析的参数的位数和预设的参数数量的情况下,可以比较当前所确定的下一个待解析的参数的位数与该参数数量的关系,若其未超过该参数数量,则可以继续执行解析;若其超过该参数数量,则可以认为参数序列中的参数已经全部解析完毕,无需继续执行解析,可以结束流程并返回中间存储位置,完成解析过程。
此外,根据本申请的示例性实施例的命令解析方法可以被封装为自定义解析函数,自定义解析函数可以被注册到集成电路电子设计自动化软件中,并且响应于用户的调用指令在集成电路电子设计自动化软件中执行。
具体来说,用户可以根据实际需要将用于实现上述方法的自定义解析函数注册到集成电路电子设计自动化软件中,例如可以通过Tcl语言来实现,并且可以预先定义执行上述方法所需的预设内容(例如上述预设选项值规则、预设数量等)。在用户定义完成自定义解析函数后,可以执行注册自定义解析函数的过程,以在后续输入目标命令时,可以通过调用该自定义解析函数对目标命令进行解析,从而允许用户输入自定义的参数序列,提高集成电路电子设计过程中的灵活性和便利性。
下面将以Tcl脚本为例对利用执行上述方法的自定义解析函数进行目标命令解析的示例过程进行描述。
首先,可以注册自定义解析函数,用户可以预先将用于解析参数的整个实现流程编辑为自定义解析函数,后续在编写Tcl脚本时可直接调用该自定义解析函数。
例如,该自定义解析函数的代码文件名称可以命名为“optParse.tcl”,文件路径可以为当前路径,函数代码可以如下:
“proc optParse {argv defValList defKeyList defKeyValDict} {
set dArg [dict create]
set i 0
set n 0
while { ${i}<=[expr [llength ${argv}] - 1]} {
set flag_arg [lindex ${argv} ${i}]
if { [string index ${flag_arg} 0] !="-"} {
if { ${n}>= [llength ${defValList}] } {
puts"there is a overmuch argument: ${flag_arg}"
__USAGE__
exit 0
}
dict append dArg"[lindex $defValList} ${n}]""${flag_arg}"
incr_n
incr_i
} elseif { [string index ${flag_arg} 0] =="."} {
if { [lsearch ${defKeyList} ${flag_arg}]>= 0&&[lsearch [dict keys ${defkeyValDict}] ${flag_arg}]== -1 } {
dict append dArg"${flag_arg}""True"
incr i
} elseif { [lsearch ${defKeyList} ${flag_arg}] == -1&&[lsearch [dictkeys ${defKeyValDict}] ${flag_arg}]>= 0 } {if { [lindex ${argv} [expr ${i} +1 ]] ==""| | [string index [lindex ${argv} [expr ${i} + 1 ]]0]=="-"} {puts"there is not value for the argument: ${flag_arg}"
__USAGE__
exit 0
}
dict append dArg"${flag_arg}""[lindex ${argv} [expr ${i}+ l ]]"
incr i 2
} else {
puts"the error input argument, please check it: ${flag_arg}"
exit 0
}
}
}
return ${dArg}
}”。
由上述函数代码可知,在进入解析流程前,可以预先定义一个空字典“dArg”作为中间存储位置,并且可以将解析过的参数个数“i”(相当于上述当前参数的位数)以及解析确认为常量的个数“n”(相当于上述常量参数的计数)均置为0,然后可以通过while循环语句进入解析流程。
在上述函数代码中,参数序列“argv”中传递有待解析的参数,“llength”用于获取指定列表中的元素个数,“[llength ${argv}]”即相当于上述参数范围。同理,列表“defValList”中定义有预期的常量,“[llength ${defValList}]”相当于上述预期的常量参数个数,即常量参数的预设数量。
然后,可以编写目标Tcl脚本,示例的脚本文件名称可以为“test.tcl”,文件路径可以为当前路径,脚本代码可以如下:
“#!/usr/bin/tclsh
source optParse.tcl
proc __USAGE__ {} {
puts “USAGE: ====”
}
set defValList {vl v2 v3]
set defKeyList {-h -a -b]
set defKeyValDict {-c<o_c>-d<o_d>-e<o_e>}
foreach var ${defKeyList} {
set ${var} “False”
}
set dArg [dict create]
set dArg [optParse ${argv} ${defValList} ${defKeyList} ${defKeyValDict}]
foreach key [dict keys ${dArg}] {
set ${key} [dict get ${dArg} ${key}]
}
puts “
vl == $(v1}
v2 == ${v2}
v3 == ${v3}
help==${-h}
o_a== ${-a}
o_b== ${-b}
o_c== ${-c}
o_d== ${-d}
o_e== ${-e}””。
在上述脚本代码中,第一行“#!/usr/bin/tclsh”给定了tclsh被安装在缺省的位置“/usr/bin/”,如果tclsh被安装在其他地方,则也可以相应地修改该行来进行路径匹配;第二行“source optParse.tcl”表示调用当前路径下的自定义解析函数,若“optParse.tcl”文件存放在其他位置,则也可以另外指定相应的路径。“proc __USAGE__”之后的部分是目标Tcl脚本的功能实现部分,用户可以根据实际需求有针对性地编写该部分代码。
基于上述目标Tcl脚本代码,可以给目标Tcl脚本赋可执行权限并执行脚本,例如可以输入以下命令:
“$ chmod u+x test.tcl
$ ./test.tcl v1asd -c asda -a v2jsdj -h -d asnd v3askdb -b -e lklsn”。
这里,Linux系统的文件调用权限可以分为三级:文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。在Linux命令行中,chmod(change mode)命令是控制用户对文件的权限的命令,该命令中的“u”表示该文件的拥有者,“+”表示增加权限,“x”表示设置为可执行权限。
用户可以在终端上输入上述第一条命令“chmod u+x test.tcl”,以给当前路径下的目标Tcl脚本赋予可执行权限,然后可以输入上述第二条命令“./test.tcl vlasd -casda -a v2jsdj -h -d asnd v3askdb -b -e lklsn”(即目标命令)来调用tclsh处理目标Tcl脚本。
在执行上述目标命令时,目标命令中指定的参数(即“vlasd -c asda -a v2jsdj-h -d asnd v3askdb -b -e lklsn”)在经过自定义解析函数按顺序解析后,可以传递至目标Tcl脚本的相应变量(即v1、v2、v3、-h、-a、-b、-c、-d、-e),可通过“$”的方式去调用对应变量的值,例如,${v1}、${v2}、${v3}、${-h}、${-a}、${-b}、${-c}、${-d}、${-e},根据上述示例的目标Tcl脚本的功能实现,可查看打印结果如下:
“$ ./test.tcl v1asd -c asda -a v2jsdj -h -d asnd v3askdb -b -e lklsn
v1 == v1asd
v2 == v2jsdj
v3 == v3askdb
help == True
o_a == True
o_b == True
o_c == asda
o_d == asnd
o_e == lklsn”。
图6示出了根据本申请的示例性实施例的命令解析方法的一示例。如图6所示,在步骤S601,可以判断待解析的参数的位数是否小于或等于预设的参数数量,若大于该参数数量,则在步骤S602,可以认为解析完成,这里,可以使用字典作为中间存储位置,在参数解析完成后,可以将存储在字典中的解析结果返回给目标Tcl脚本,以供该目标Tcl脚本使用,并且结束解析流程;若小于或等于该参数数量,在步骤S603,可以判断待解析的参数是否以标识位字符开头,例如是否以“-”开头。
若待解析的参数以标识位字符开头,则在步骤S604,可以确定当前参数为选项;若待解析的参数未以标识位字符开头,则在步骤S605,可以确定当前参数为常量。
在确定当前参数为选项的情况下,在步骤S606,可以判断该选项是否需要选项值。若不需要选项值,则在步骤S607,可以直接将该参数加入字典,待解析的参数的位数可以为当前参数的位数加1;若需要选项值,则在步骤S608,可以判断选项值是否正常。
若选项值正常,则在步骤S609,可以将该选项值加入字典,待解析的参数的位数可以为当前参数的位数加目标数量,这里,目标数量为选项值的数量。若选项值不正常,则在步骤S610,可以报错,退出流程。
在确定当前参数为常量的情况下,在步骤S611,可以对当前所解析的参数序列中的常量个数的计数加1。在步骤S612,可以判断当前的常量个数是否小于或等于预设的常量数量,这里,预设的常量数量可以为对参数序列中的常量个数的限制。
若当前的常量个数大于预设的常量数量,则在步骤S610,可以报错,退出流程;若当前的常量个数小于或等于预设的常量数量,则在步骤S613,可以将该常量加入字典,待解析的参数的位数可以为当前参数的位数加1。
根据本申请的示例性实施例的命令解析方法,能够正确解析Tcl脚本的参数类型,并赋值给相应的变量,大大提高了Tcl脚本参数解析的效率,为自定义选项提供便利,减少了相关人员在非主要功能的代码模块上的时间花费,为编写Tcl脚本自定义选项提供底层支持,有利于加速诸如EDA工具等采用Tcl语言的软件开发及测试的整体进度。
在本申请的示例性实施例的第二方面,提供一种命令解析装置,命令解析装置应用于工具命令语言环境,其中,如图7所示,命令解析装置包括接收单元100和解析单元200。
接收单元100被配置为接收待解析的目标命令,其中,目标命令中包括用于执行命令的参数序列,参数序列包括至少一个参数。
解析单元200被配置为按照参数序列中的各参数的顺序,通过以下方式对参数进行解析:根据当前参数的标识位字符,将与标识位字符对应的参数类型确定为当前参数的参数类型,其中,参数类型包括选项类型;以及,根据当前参数的参数类型,对当前参数的值进行解析,并且确定下一个待解析的参数,其中,响应于当前参数的参数类型为选项类型,根据预设选项值规则,确定与当前参数对应的选项值以及下一个待解析的参数,其中,预设选项值规则表征与选项类型下的各选项对应的选项值特征。
作为示例,预设选项值规则包括选项是否需要选项值,其中,解析单元200还被配置为:根据预设选项值规则,确定当前参数是否需要选项值;响应于当前参数需要选项值,根据当前参数所需要的选项值的数量,从参数序列中确定当前参数的选项值以及下一个待解析的参数;响应于当前参数不需要选项值,将默认值确定为当前参数的选项值,将当前参数的下一个参数作为下一个待解析的参数。
作为示例,当前参数所需要的选项值的数量为目标数量,其中,解析单元200还被配置为:将参数序列中在当前参数后的目标数量个参数确定为当前参数的选项值,并且将参数序列中在当前参数后间隔目标数量个参数的参数作为下一个待解析的参数。
作为示例,当前参数所需要的选项值的数量为目标数量,其中,命令解析装置还包括选项值检查单元,响应于当前参数需要选项值,选项值检查单元被配置为:根据目标数量,确定在参数序列中当前参数的选项值是否正常,其中,当前参数的选项值正常是指在参数序列中存在与目标数量对应的选项值,当前参数的选项值不正常是指在参数序列中不存在与目标数量对应的选项值;响应于在参数序列中当前参数的选项值正常,使解析单元200执行从参数序列中确定当前参数的选项值以及下一个待解析的参数的步骤;响应于在参数序列中当前参数的选项值不正常,对目标命令进行报错。
作为示例,选项值检查单元被配置为通过以下方式确定在参数序列中当前参数的选项值不正常:在参数序列中,在当前参数之后的参数的数量小于目标数量;或者,在参数序列中,在当前参数之后的目标数量个参数中的任意一个或多个参数的标识位字符所对应的参数类型为选项类型。
作为示例,参数类型还包括常量类型,其中,解析单元200还被配置为:响应于当前参数的参数类型为常量类型,将当前参数确定为常量的值,并且将在参数序列中当前参数的下一个参数作为下一个待解析的参数。
作为示例,解析单元200还被配置为:响应于当前参数的参数类型为常量类型,将参数序列中常量参数的数量的赋值加1;响应于完成对参数序列中所有参数的解析,确定常量参数的数量;响应于常量参数的数量大于预设数量,对目标命令进行报错,其中,预设数量基于目标命令确定。
作为示例,解析单元200还被配置为:响应于当前参数的参数类型为常量类型,将参数序列中常量参数的数量的赋值加1;响应于常量参数的当前数量小于或等于预设数量,执行将当前参数确定为常量的值的步骤,其中,预设数量基于目标命令确定;响应于常量参数的当前数量大于预设数量,对目标命令进行报错。
作为示例,参数类型还包括常量类型,其中,解析单元200被配置为还通过以下方式对参数进行解析:响应于当前参数为预设字符串,将参数序列中在当前参数之后的所有参数的参数类型强制确定为常量类型。
作为示例,解析单元200还被配置为:确定参数序列中的参数数量以及下一个待解析的参数在参数序列中的位数;响应于下一个待解析的参数的位数小于或等于参数数量,对下一个待解析的参数进行解析;响应于下一个待解析的参数的位数大于参数数量,退出对目标命令的解析。
作为示例,解析单元200还被配置为通过以下方式确定下一个待解析的参数的位数:响应于当前参数的参数类型为常量类型,将当前参数的位数加1,得到下一个待解析的参数的位数;响应于当前参数的参数类型为选项类型,根据当前参数是否需要选项值,确定下一个待解析的参数的位数,其中,解析单元200还被配置为:响应于当前参数需要选项值,将当前参数的位数加m,得到下一个待解析的参数的位数,其中,m等于当前参数所需要的选项值的数量加1;响应于当前参数不需要选项值,将当前参数的位数加1,得到下一个待解析的参数的位数,其中,在首次对参数进行解析时,当前参数的位数为1。
作为示例,命令解析方法被封装为自定义解析函数,自定义解析函数被注册到集成电路电子设计自动化软件中,并且响应于用户的调用指令在集成电路电子设计自动化软件中执行。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图8是根据一示例性实施例示出的一种电子设备的框图。如图8所示,电子设备10包括处理器101和用于存储处理器可执行指令的存储器102。这里,处理器可执行指令在被处理器运行时,促使处理器执行如上述示例性实施例所述的命令解析方法。
作为示例,电子设备10并非必须是单个的设备,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。电子设备10还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的服务器。
在电子设备10中,处理器101可包括中央处理器(CPU)、图形处理器(GPU)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限制,处理器101还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。
处理器101可运行存储在存储器102中的指令或代码,其中,存储器102还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,网络接口装置可采用任何已知的传输协议。
存储器102可与处理器101集成为一体,例如,将RAM或闪存布置在集成电路微处理器等之内。此外,存储器102可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储器102和处理器101可在操作上进行耦合,或者可例如通过I/O端口、网络连接等互相通信,使得处理器101能够读取存储在存储器102中的文件。
此外,电子设备10还可以包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。电子设备10的所有组件可经由总线和/或网络而彼此连接。
在示例性实施例中,还可提供一种计算机可读存储介质,当计算机可读存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如上述示例性实施例所述的命令解析方法。计算机可读存储介质例如可以是包括指令的存储器,可选地,计算机可读存储介质可以是:只读存储器(ROM)、随机存取存储器(RAM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡、安全数字(SD)卡或极速数字(XD)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
在示例性实施例中,还可提供一种计算机程序产品,该计算机程序产品包括计算机指令,计算机指令被处理器执行时实现如上述示例性实施例所述的命令解析方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求指出。
此外,还需要说明的是,尽管上面参照具体附图描述了各步骤的若干示例,但是应理解的是,本申请的实施方式不限于示例中给出的组合,不同附图中出现的步骤可以相结合,在此不作出穷举。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由权利要求来限制。
Claims (16)
1. 一种命令解析方法,其特征在于,所述命令解析方法应用于工具命令语言环境,其中,所述命令解析方法包括:
接收待解析的目标命令,其中,所述目标命令中包括用于执行所述工具命令语言环境中的目标脚本的参数序列,参数序列包括至少一个参数;以及
按照所述参数序列中的各参数的顺序,通过以下方式对参数进行解析:
根据当前参数的标识位字符,将与标识位字符对应的参数类型确定为当前参数的参数类型,其中,所述参数类型包括选项类型;以及
根据当前参数的参数类型,对当前参数的值进行解析,并且确定下一个待解析的参数,
其中,响应于当前参数的参数类型为所述选项类型,根据预设选项值规则,确定与当前参数对应的选项值以及所述下一个待解析的参数,其中,所述预设选项值规则表征与所述选项类型下的各选项对应的选项值特征。
2.根据权利要求1所述的命令解析方法,其特征在于,所述预设选项值规则包括选项是否需要选项值,其中,所述根据预设选项值规则,确定与当前参数对应的选项值以及所述下一个待解析的参数,包括:
根据所述预设选项值规则,确定当前参数是否需要选项值;
响应于当前参数需要选项值,根据当前参数所需要的选项值的数量,从所述参数序列中确定当前参数的选项值以及所述下一个待解析的参数;
响应于当前参数不需要选项值,将默认值确定为当前参数的选项值,将当前参数的下一个参数作为所述下一个待解析的参数。
3.根据权利要求2所述的命令解析方法,其特征在于,当前参数所需要的选项值的数量为目标数量,其中,所述根据当前参数所需要的选项值的数量,从所述参数序列中确定当前参数的选项值以及所述下一个待解析的参数,包括:
将所述参数序列中在当前参数后的所述目标数量个参数确定为当前参数的选项值,并且将所述参数序列中在当前参数后间隔所述目标数量个参数的参数作为所述下一个待解析的参数。
4.根据权利要求2所述的命令解析方法,其特征在于,当前参数所需要的选项值的数量为目标数量,其中,响应于当前参数需要选项值,所述命令解析方法还包括:
根据所述目标数量,确定在所述参数序列中当前参数的选项值是否正常,其中,当前参数的选项值正常是指在所述参数序列中存在与所述目标数量对应的选项值,当前参数的选项值不正常是指在所述参数序列中不存在与所述目标数量对应的选项值;
响应于在所述参数序列中当前参数的选项值正常,执行所述从所述参数序列中确定当前参数的选项值以及所述下一个待解析的参数的步骤;
响应于在所述参数序列中当前参数的选项值不正常,对所述目标命令进行报错。
5.根据权利要求4所述的命令解析方法,其特征在于,通过以下方式确定在所述参数序列中当前参数的选项值不正常:
在所述参数序列中,在当前参数之后的参数的数量小于所述目标数量;或者,
在所述参数序列中,在当前参数之后的所述目标数量个参数中的任意一个或多个参数的标识位字符所对应的参数类型为选项类型。
6.根据权利要求1所述的命令解析方法,其特征在于,所述参数类型还包括常量类型,其中,所述根据当前参数的参数类型,对当前参数的值进行解析,并且确定下一个待解析的参数,包括:
响应于当前参数的参数类型为所述常量类型,将当前参数确定为常量的值,并且将在所述参数序列中当前参数的下一个参数作为所述下一个待解析的参数。
7.根据权利要求6所述的命令解析方法,其特征在于,所述命令解析方法还包括:
响应于当前参数的参数类型为所述常量类型,将所述参数序列中常量参数的数量的赋值加1;
响应于完成对所述参数序列中所有参数的解析,确定所述常量参数的数量;
响应于所述常量参数的数量大于预设数量,对所述目标命令进行报错,其中,所述预设数量基于所述目标命令确定。
8.根据权利要求6所述的命令解析方法,其特征在于,所述命令解析方法还包括:
响应于当前参数的参数类型为所述常量类型,将所述参数序列中常量参数的数量的赋值加1;
响应于所述常量参数的当前数量小于或等于预设数量,执行所述将当前参数确定为常量的值的步骤,其中,所述预设数量基于所述目标命令确定;
响应于所述常量参数的当前数量大于所述预设数量,对所述目标命令进行报错。
9.根据权利要求1所述的命令解析方法,其特征在于,所述参数类型还包括常量类型,其中,还通过以下方式对参数进行解析:
响应于当前参数为预设字符串,将所述参数序列中在当前参数之后的所有参数的参数类型强制确定为常量类型。
10.根据权利要求1所述的命令解析方法,其特征在于,所述命令解析方法还包括:
确定所述参数序列中的参数数量以及所述下一个待解析的参数在所述参数序列中的位数;
响应于所述下一个待解析的参数的位数小于或等于所述参数数量,对所述下一个待解析的参数进行解析;
响应于所述下一个待解析的参数的位数大于所述参数数量,退出对所述目标命令的解析。
11.根据权利要求10所述的命令解析方法,其特征在于,通过以下方式确定所述下一个待解析的参数的位数:
响应于当前参数的参数类型为常量类型,将当前参数的位数加1,得到所述下一个待解析的参数的位数;
响应于当前参数的参数类型为所述选项类型,根据当前参数是否需要选项值,确定所述下一个待解析的参数的位数,
其中,所述根据当前参数是否需要选项值,确定所述下一个待解析的参数的位数,包括:
响应于当前参数需要选项值,将当前参数的位数加m,得到所述下一个待解析的参数的位数,其中,所述m等于当前参数所需要的选项值的数量加1;
响应于当前参数不需要选项值,将当前参数的位数加1,得到所述下一个待解析的参数的位数,
其中,在首次对参数进行解析时,当前参数的位数为1。
12.根据权利要求1所述的命令解析方法,其特征在于,所述命令解析方法被封装为自定义解析函数,所述自定义解析函数被注册到集成电路电子设计自动化软件中,并且响应于用户的调用指令在所述集成电路电子设计自动化软件中执行。
13. 一种命令解析装置,其特征在于,所述命令解析装置应用于工具命令语言环境,其中,所述命令解析装置包括:
接收单元,被配置为接收待解析的目标命令,其中,所述目标命令中包括用于执行所述工具命令语言环境中的目标脚本的参数序列,参数序列包括至少一个参数;以及
解析单元,被配置为按照所述参数序列中的各参数的顺序,通过以下方式对参数进行解析:
根据当前参数的标识位字符,将与标识位字符对应的参数类型确定为当前参数的参数类型,其中,所述参数类型包括选项类型;以及
根据当前参数的参数类型,对当前参数的值进行解析,并且确定下一个待解析的参数,
其中,响应于当前参数的参数类型为所述选项类型,根据预设选项值规则,确定与当前参数对应的选项值以及所述下一个待解析的参数,其中,所述预设选项值规则表征与所述选项类型下的各选项对应的选项值特征。
14.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器,
其中,所述处理器可执行指令在被所述处理器运行时,促使所述处理器执行根据权利要求1至12中任一项所述的命令解析方法。
15.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行根据权利要求1至12中任一项所述的命令解析方法。
16.一种计算机程序产品,包括计算机指令,其特征在于,所述计算机指令被处理器执行时实现根据权利要求1至12中任一项所述的命令解析方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410130859.8A CN117667046B (zh) | 2024-01-31 | 2024-01-31 | 命令解析方法、装置、电子设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410130859.8A CN117667046B (zh) | 2024-01-31 | 2024-01-31 | 命令解析方法、装置、电子设备、存储介质及程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117667046A true CN117667046A (zh) | 2024-03-08 |
CN117667046B CN117667046B (zh) | 2024-04-12 |
Family
ID=90079242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410130859.8A Active CN117667046B (zh) | 2024-01-31 | 2024-01-31 | 命令解析方法、装置、电子设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117667046B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140008993A1 (en) * | 2012-07-06 | 2014-01-09 | DvineWave Inc. | Methodology for pocket-forming |
CN106293697A (zh) * | 2016-07-22 | 2017-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种实现virsh命令的方法及装置 |
CN111581271A (zh) * | 2020-04-28 | 2020-08-25 | 平安国际智慧城市科技股份有限公司 | 接口参数确定方法、装置、计算机设备和存储介质 |
CN113126955A (zh) * | 2019-12-30 | 2021-07-16 | 深圳市华胜软件技术有限公司 | 一种随机数据生成方法、装置、智能终端及存储介质 |
CN113190232A (zh) * | 2021-04-13 | 2021-07-30 | 浙江吉利控股集团有限公司 | 一种数据解析方法、装置及存储介质 |
US20220342797A1 (en) * | 2021-04-21 | 2022-10-27 | EMC IP Holding Company LLC | Analyzing user api usage from recorded api macros for software product improvement |
CN115665020A (zh) * | 2022-11-10 | 2023-01-31 | 广州市易鸿智能装备有限公司 | 通信解析方法、装置、设备和存储介质 |
CN116521538A (zh) * | 2023-04-24 | 2023-08-01 | 苏州浪潮智能科技有限公司 | 命令行界面自动测试方法、装置、电子设备及存储介质 |
CN117076727A (zh) * | 2023-08-18 | 2023-11-17 | 平安银行股份有限公司 | 一种查询语句解析方法、装置、设备和存储介质 |
-
2024
- 2024-01-31 CN CN202410130859.8A patent/CN117667046B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140008993A1 (en) * | 2012-07-06 | 2014-01-09 | DvineWave Inc. | Methodology for pocket-forming |
CN106293697A (zh) * | 2016-07-22 | 2017-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种实现virsh命令的方法及装置 |
CN113126955A (zh) * | 2019-12-30 | 2021-07-16 | 深圳市华胜软件技术有限公司 | 一种随机数据生成方法、装置、智能终端及存储介质 |
CN111581271A (zh) * | 2020-04-28 | 2020-08-25 | 平安国际智慧城市科技股份有限公司 | 接口参数确定方法、装置、计算机设备和存储介质 |
CN113190232A (zh) * | 2021-04-13 | 2021-07-30 | 浙江吉利控股集团有限公司 | 一种数据解析方法、装置及存储介质 |
US20220342797A1 (en) * | 2021-04-21 | 2022-10-27 | EMC IP Holding Company LLC | Analyzing user api usage from recorded api macros for software product improvement |
CN115665020A (zh) * | 2022-11-10 | 2023-01-31 | 广州市易鸿智能装备有限公司 | 通信解析方法、装置、设备和存储介质 |
CN116521538A (zh) * | 2023-04-24 | 2023-08-01 | 苏州浪潮智能科技有限公司 | 命令行界面自动测试方法、装置、电子设备及存储介质 |
CN117076727A (zh) * | 2023-08-18 | 2023-11-17 | 平安银行股份有限公司 | 一种查询语句解析方法、装置、设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
A. HEAD 等: ""Tutorons: Generating context-relevant, on-demand explanations and demonstrations of online code", 《2015 IEEE SYMPOSIUM ON VISUAL LANGUAGES AND HUMAN-CENTRIC COMPUTING (VL/HCC)》, 17 December 2015 (2015-12-17), pages 3 - 12 * |
刘徐鹏飞 等: "基于命令流方法实现ANSYS系统参数化建模", 《机械设计与制造工程》, vol. 46, no. 04, 4 July 2017 (2017-07-04), pages 51 - 53 * |
Also Published As
Publication number | Publication date |
---|---|
CN117667046B (zh) | 2024-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10613971B1 (en) | Autonomous testing of web-based applications | |
US8600916B2 (en) | Office system content prediction based on regular expression pattern analysis | |
US10345922B2 (en) | Office system prediction configuration sharing | |
US20120054231A1 (en) | Quick Font Match | |
CN107092535B (zh) | 用于测试接口的数据存储的方法及设备 | |
WO2020259141A1 (zh) | 一种文件处理方法、装置及计算机设备 | |
CN113760729A (zh) | 一种代码检测方法和装置 | |
US6763360B2 (en) | Automated language and interface independent software testing tool | |
CN110688111A (zh) | 业务流程的配置方法、装置、服务器和存储介质 | |
CN115599386A (zh) | 代码生成方法、装置、设备及存储介质 | |
CN114116505A (zh) | 代码测试方法及装置 | |
CN113836014A (zh) | 一种接口测试方法、装置、电子设备和存储介质 | |
CN117667046B (zh) | 命令解析方法、装置、电子设备、存储介质及程序产品 | |
CN110888641B (zh) | 一种脚本自动生成方法、装置、服务器及存储介质 | |
US11443011B2 (en) | Page objects library | |
CN115470152A (zh) | 测试代码生成方法、测试代码生成装置以及存储介质 | |
CN115758973A (zh) | 芯片寄存器设计文件的生成方法及装置、设备、存储介质 | |
CN115544950A (zh) | 约束文件的导入方法、装置、设备及存储介质 | |
CN113901025A (zh) | 数据库管理方法、装置、设备和存储介质 | |
US9305117B2 (en) | String generation tool | |
US20210200833A1 (en) | Health diagnostics and analytics for object repositories | |
CN113238940A (zh) | 一种接口测试结果的比对方法、装置、设备和存储介质 | |
CN112130838A (zh) | 交易数据处理方法及装置 | |
CN116467975B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN116775030B (zh) | 一种安全基线的创建方法和装置 |
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 |