System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术语言编译,尤其涉及一种针对st语言生成语法树的方法、装置、计算设备及计算机可读存储介质。
技术介绍
1、iec61131-3标准中使用正则表达式来描述plc结构化文本语言(st语言),正则表达式是对字符串进行操作的一种逻辑公式,使用事先定义好的字符以及这些字符的组合,组成一系列规则字符串,使用这类规则字符串来对文本进行过滤操作,可以使用正则表达式来匹配特定的字符串,基于正则表达式的特性,可以使用正则表达式来描述编程语言的句法规则。
2、iec61131-3中使用正则表达式对st语言语法进行描述,根据正则表达式描述的语法来实现编译器的语法分析器有较大的困难,正则表达式语法中*、+符号表示该字符串可以在该句型中出现多次、至少出现一次,这与编译器中ll、lr分析法对字符串明确出现次数的要求相悖,且在从直观语义上看,正则表达式描述的语法较难直接理解其表达的语义。因此需要一种针对st语言语法重新描述,以实现精简语句、语义更明确的描述,生成简洁直观的语法树的目的的方案。
技术实现思路
1、鉴于现有技术的以上问题,本申请提供一种针对st语言生成语法树的方案,其能够使用ebnf重新描述st语言语法,生成一种简洁直观的语法树。
2、为达到上述目的,本申请第一方面提供一种针对st语言生成语法树的方法,包括:
3、获取st文件和配置文件,所述配置文件中包括转换规则,所述转换规则为st语言的正则式描述转换为预设语法描述的规则;
4、根据所述配置文件
5、对所述范式描述文件进行语法分析,生成语法树。
6、本实施方式中,通过对st语言语法正则表达式进行预设语法描述规则的转换,实现精简语句、语义更明确的描述,达到精简语法树的目的。另外,基于本实施方式提供的精简的语法树,可以便于编译器开发者直接开发对应语法的词法语法分析器。
7、作为第一方面的一种可能的实现方式,将所述st文件中的正则式描述转换为预设语法描述,得到范式描述文件,,包括:
8、对st文件中的匹配字符进行处理,包括:
9、确定st文件中的正则式中的限定符和非限定符;
10、将所述非限定符转换为预设语法描述的易读终结符;
11、将所述限定符转换为预设语法描述的语句,得到范式描述文件。
12、本实施方式中,通过对st文件中的匹配字符进行处理,将st文件中的正则式中的限定符和非限定符转换为预设语法描述,实现精简语句、语义更明确的描述,可以起到匹配、描述和辅助语法分析的作用;易读终结符的定义和使用可以将st文件中的正则式中的非限定符转换为人类可读的语法,可以准确地描述和解析语言的语法规则,实现有效的语法分析和解析过程,更利于生成语法树。
13、作为第一方面的一种可能的实现方式,对st文件中的匹配字符进行处理,包括:
14、确定st文件中的正则式中的元字符和非元字符;
15、将所述非元字符转换为预设语法描述中预设的易读终结符;
16、将所述元字符转换为预设语法描述的语句。
17、本实施方式中,通过将st文件中的正则式中的元字符和非元字符转换为预设的语法描述,能够将正则表达式中元字符指定匹配模式中的特定字符或字符类的描述方式,转换为语义更加明确的语法描述。
18、作为第一方面的一种可能的实现方式,将st文件中的正则式描述转换为ebnf语法描述,还包括:
19、将st文件中的正则式中的连续限定符替换为预设语法描述的单个限定符;
20、将st文件中的正则式中的相邻的元字符和限定符替换为预设语法描述的单个限定符。
21、本实施方式中,通过将正则表达式转换为预设语法描述的单个限定符,可以提高代码的简洁性、可读性、一致性和可扩展性,帮助开发者更好地理解和维护正则表达式的语法规则。
22、作为第一方面的一种可能的实现方式,将st文件中的正则式描述转换为预设语法描述,还包括:
23、将st文件中的正则式转换为预设语法描述的非终结符和所述非终结符对应的产生式;且,
24、使用所述非终结符描述所述产生式。
25、本实施方式中,通过将st文件中的正则式转换为预定义的非终结符对应的产生式,能够使得语句句义更加清楚;并且,通过递归句法,使用所述预定义的非终结符描述所述产生式,可以简化st文件中重复嵌套的语句,能够使得语句更加简洁。
26、本申请第二方面提供一种针对st语言生成语法树的装置,包括:
27、获取模块,用于获取st文件和配置文件,获取st文件和配置文件,所述配置文件中包括转换规则,所述转换规则为st语言的正则式描述转换为预设语法描述的规则;
28、转换模块,用于根据所述配置文件中的转换规则,将所述st文件中的正则式描述转换为预设语法描述,得到范式描述文件,所述预设语法为用元语法符号表示形式化语法;
29、语法树生成模块,用于对所述范式描述文件进行语法分析,生成语法树。
30、作为第二方面的一种可能的实现方式,所述转换模块,还包括:
31、扫描单元,用于扫描并确定st文件中的正则式中的限定符和非限定符及元字符和非元字符;
32、替换单元,用于对st文件中的匹配字符进行处理,包括:将所述非限定符转换为预设语法描述的终结符;将所述限定符转换为预设语法描述语句;以及,
33、将所述非元字符转换为预设语法描述的终结符;将所述元字符转换为预设语法描述的语句。
34、作为第二方面的一种可能的实现方式,所述替换单元,还用于将st文件中的正则式中的连续限定符替换为预设语法描述的单个限定符;以及,
35、将st文件中的正则式中的相邻的元字符和限定符替换为预设语法描述的单个限定符。
36、本申请第三方面提供一种计算设备,包括:
37、处理器,以及
38、存储器,其上存储有程序指令,所述程序指令当被所述处理器执行时使得所述处理器执行如上所述的针对st语言生成语法树的方法。
39、本申请第四方面提供其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机执行如上所述的针对st语言生成语法树的方法。
40、本专利技术的这些和其它方面在以下(多个)实施例的描述中会更加简明易懂。
本文档来自技高网...【技术保护点】
1.一种针对ST语言生成语法树的方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,将所述ST文件中的正则式描述转换为预设语法描述,得到范式描述文件,包括:
3.根据权利要求2所述的方法,其特征在于,对ST文件中的匹配字符进行处理,包括:
4.根据权利要求1所述的方法,其特征在于,将ST文件中的正则式描述转换为EBNF语法描述,还包括:
5.根据权利要求1至4任一项所述的方法,其特征在于,将ST文件中的正则式描述转换为预设语法描述,还包括:
6.一种针对ST语言生成语法树的装置,其特征在于,包括:
7.根据权利要求6所述的装置,其特征在于,所述转换模块,还包括:
8.根据权利要求6所述的装置,其特征在于,所述替换单元,还用于将ST文件中的正则式替换为所述预设语法描述的非终结符和所述非终结符对应的产生式;且,使用所述非终结符描述所述产生式。
9.一种计算设备,其特征在于,包括:
10.一种计算机可读存储介质,其特征在于,其上存储有程序指令,所述程序指令当被计算
...【技术特征摘要】
1.一种针对st语言生成语法树的方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,将所述st文件中的正则式描述转换为预设语法描述,得到范式描述文件,包括:
3.根据权利要求2所述的方法,其特征在于,对st文件中的匹配字符进行处理,包括:
4.根据权利要求1所述的方法,其特征在于,将st文件中的正则式描述转换为ebnf语法描述,还包括:
5.根据权利要求1至4任一项所述的方法,其特征在于,将st文件中的正则式描述转换为预设语法描述,还包括:
6.一种针对st...
【专利技术属性】
技术研发人员:韦政执,
申请(专利权)人:北京东土科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。