用于线性广义LL识别和上下文感知解析的方法和系统技术方案

技术编号:25223198 阅读:19 留言:0更新日期:2020-08-11 23:12
一种计算机系统和一种文法分析的方法,用以生成用于运行时识别的代码,以产生在随后的解析期间给定语句要遵循的方向的列表或多个列表的图形表示。所述计算机系统实施所述方法以:解析文法以创建中间表示;构造表示文法的所有特征的用于分析的图形,所述特征包括递归、交替、备选项的分组、和循环;处理所述图形中的每个决策点,用以生成所述中间表示;生成返回在运行时解析决策中使用的方向的列表的识别函数的代码;并且修补每个决策点标记以引用或内联每个决策点的顶层识别代码。

【技术实现步骤摘要】
用于线性广义LL识别和上下文感知解析的方法和系统本申请是基于申请日为2015年7月10日、申请号为2015800374924、专利技术创造名称为“用于线性广义LL识别和上下文感知解析的方法和系统”的中国专利申请的分案申请。相关申请的交叉引用本申请要求于2015年7月10日提交的美国申请No.14/796,782和于2014年7月11日提交的美国临时申请No.62/023771的优先权,其以引用方式并入全文。
如本文所示和所述的本专利技术的实施例涉及根据形式文法的规则的形式语言中的符号串的解析。具体地,实施例提供了在不存在歧义的情况下具有O(n)性能的改进的通用LL(从左至右,最左侧推导)解析处理。
技术介绍
解析(parsing)(也称为语法分析)是对可以是字符串或类似格式的一组符号进行分析的处理,其中,“字符串(string)”是项目(在此情况下为符号)的序列,其中序列是有限的且符号是从被称为字母表的一组可能的符号中选择的。解析处理可应用于自然语言、计算机语言和包括DNA序列的类似系统。解析处理应用特定于被处理的语言的形式文法的一组规则。解析处理是计算机实现的处理,并且在计算机科学领域并且更具体地在计算语言学领域中所理解的意义上使用该术语。在计算语言学中,解析处理还被理解为用于指代通过计算机处理器和程序对自然语言或计算机语言中的句子或其它单词串进行形式分析得到其组成部分,并得出显示每个组成部分与每另一个组成部分之间的语法关系的解析树。该解析树还可以包含关于被处理的句子或单词串的语义信息和其它相关信息。在计算机科学中的一些应用中,解析处理用于计算机语言的分析,并且涉及对输入的代码进行语法分析得到其组成部分,以有助于起到将以一种计算机语言编写的代码转换为可执行形式(即,计算机处理器能够执行的计算机语言)的功能的编译器和/或解释器的后续功能。
技术实现思路
一种计算机系统和一种文法分析的方法,用以生成用于运行时识别的代码,以产生在随后的解析期间给定语句要遵循的方向(direction)的列表或多个列表的图形表示。所述计算机系统实施所述方法以:解析文法以创建中间表示;构造表示文法的所有特征的用于分析的图形,所述特征包括递归、交替(alternation)、备选项的分组、和循环;处理所述图形中的每个决策点,用以生成所述中间表示;生成返回运行时解析决策中使用的方向列表的识别函数的代码;并且修补每个决策点标记(token)以引用或内联每个决策点的顶层识别代码。附图说明在附图的图中通过示例而非限制的方式示出了本专利技术的实施例,其中相同的附图标记指示类似的元件。应当注意,在本公开中对本专利技术的“一”或“一个”实施例的引用不一定是指相同的实施例,并且它们意味着至少一个。图1是代码的图形表示的一个实施例的流程图。图2是代码的图形表示的一个实施例的流程图。图3A至图3D是根据图1的递归子图的推导的一个实施例的示图。图4是用于代码生成的处理的流程图。图5是决策点分析处理的一个实施例的流程图。图6是决策点分析列表处理的一个实施例的流程图。图7、图8和图9示出了运行时分析处理的最简单的版本(使用受限制的GOTO模型)。图7是总体框架的流程图。图8是添加到方向列表的处理的流程图。图9是构造方向图的处理的流程图。图10是解析系统的一个实施例的示图。图11是编译器和链接器系统的一个实施例的示图。图12是实施解析处理的计算机系统的一个实施例的示图。具体实施方式在下面的描述中,阐述了许多具体细节。然而,应当理解,本专利技术的实施例可在没有这些具体细节的情况下实践。在其它情况下,未详细示出公知的电路、结构和技术,以免模糊对本说明书的理解。然而,本领域中技术人员将理解,本专利技术可在没有这些具体细节的情况下实践。本领域普通技术人员利用所包括的描述将无需过多的实验就能够实现适当的功能。将参照附图中所示示例性实施例来描述附图中的流程图中所描述的操作。然而,应当理解,流程图中所描述的操作可以由除了参照附图所讨论的本专利技术的实施例之外的实施例来执行,并且参照附图中的示图所讨论的实施例可以执行与参照附图的流程图所讨论的那些操作不同的操作。可以使用在一个或多个电子装置(例如,终端站、网络元件等)上存储和执行的代码和数据来实现附图中所示的技术。这样的电子装置使用非暂时性机器可读或计算机可读介质(比如,非暂时性机器可读或计算机可读存储介质(例如,磁盘、光盘、随机存取存储器、只读存储器、闪速存储器和相变存储器)和暂时性计算机可读传输介质(例如,电、光、声或其它形式的传播信号(诸如载波、红外信号、数字信号)))来对代码和数据进行存储和通信(内部通信和/或经由网络与其它电子装置的通信)。此外,这种电子装置通常包括耦接至一个或多个其它部件的一个或多个处理器的组,比如,一个或多个存储装置、用户输入/输出装置(例如,键盘、触摸屏和/或显示器)和网络连接。本文中所使用的“组”是指任何正整数个项目。所述一组处理器与其它部件的耦接通常通过一个或多个总线和网桥(也称为总线控制器)来实现。存储装置表示一个或多个非暂时性机器可读或计算机可读存储介质以及非暂时性机器可读或计算机可读通信介质。因此,给定的电子装置的存储装置通常存储用于在该电子装置的一个或多个处理器的组上执行的代码和/或数据。当然,本专利技术的实施例的一个或多个部分可以使用软件、固件和/或硬件的不同组合来实现。如本文所使用的网络元件(例如,路由器、交换机、网桥等)是包括硬件和软件的一件网络化装备,其通信地将网络上的其它装备(例如,其它网络元件、终端站等)相互连接。一些网络元件是为多个网络功能(例如,路由、桥接、交换、二层聚合、会话边界控制、多点广播和/或订户管理)提供支持和/或为多个应用服务(例如,数据、语音和视频)提供支持的“多服务网络元件”。综述现有技术中的通用解析方法具有O(n3)性能。本文中的实施例描述了一种用于在没有歧义(即,对于给定的“字符”序列存在多个备选解释,在自然语言中这些被称为“双关语”)的情况下具有O(n)性能的解析处理的方法及系统。根据本文所描述的原理和技术创建的解析器通过以下步骤运行:首先,执行识别阶段,其生成用于对决策点进行导航的方向序列;随后或与识别阶段穿插地执行解析阶段,该阶段遵循所述方向,同时执行可能由实施解析处理的编译器、DNA序列分析器或类似部件为解决可以由有限状态自动机处理的问题所使用的所有动作。为了生成实施该处理的识别器和解析器,以两种备选形式表示文法:具有将表示待匹配的标记类型的顶点连接的有向边的图形、以及抽象语法树(AST)。该图形用于识别决策点(具有多个输出边的顶点),并被处理以生成识别器代码。AST表示用于生成包括对识别器例程的调用的解析代码。通常,根据用产生式(production)来描述的文法来生成AST表示,接下来,根据该AST形式逐产生式地导出用于构造图形的元素,然后构造该图形。在图形构造期间,AST形式变得复杂本文档来自技高网
...

【技术保护点】
1.一种计算机实现的解析方法,其中,解析处理依次匹配来自输入流的标记,直到到达具有多个标记的后续备选项序列的决策点,所述方法包括:/n在响应于决策值列表为空而调用识别函数以重新填充决策值列表之后,从决策值列表中获取下一个值以确定遵循多个备选项序列中的哪个序列,其中识别函数确定输入流中的标记位置,然后依次匹配标记,直到仅剩下一条备选路径;/n响应于遇到二次决策点而调用特定于决策点的函数,或者将返回函数指针推到指针堆栈上,然后goto至该决策点的代码;/n确定输入流是否穷尽;/n响应于决策值列表中剩余单个备选路径,构建决策值的列表或多列表;以及/n选择一个列表继续所述解析处理。/n

【技术特征摘要】
20140711 US 62/023,7711.一种计算机实现的解析方法,其中,解析处理依次匹配来自输入流的标记,直到到达具有多个标记的后续备选项序列的决策点,所述方法包括:
在响应于决策值列表为空而调用识别函数以重新填充决策值列表之后,从决策值列表中获取下一个值以确定遵循多个备选项序列中的哪个序列,其中识别函数确定输入流中的标记位置,然后依次匹配标记,直到仅剩下一条备选路径;
响应于遇到二次决策点而调用特定于决策点的函数,或者将返回函数指针推到指针堆栈上,然后goto至该决策点的代码;
确定输入流是否穷尽;
响应于决策值列表中剩余单个备选路径,构建决策值的列表或多列表;以及
选择一个列表继续所述解析处理。


2.根据权利要求1所述的计算机实现的解析方法,还包括文法分析,以构建所述解析处理,所述方法还包括步骤:
解析文法以创建中间表示,该中间表示将用于解析代码生成;
构造表示文法的所有特征的用于分析中间表示的图形,所述特征包括递归、交替、备选项的分组、和循环;
处理所述图形中的每个决策点,以生成用于生成识别码的中间表示;
生成识别函数的代码,所述识别函数将返回在解析器运行时的方向列表;
修补中间表示中的每个决策点以引用该决策点的识别代码;以及
根据中间表示生成解析代码。


3.根据权利要求1所述的计算机实现的解析方法,其中,输入流已穷尽或遇到了返回调用,则调用退出处理。


4.根据权利要求3所述的计算机实现的解析方法,其中,调用具有索引或节点列表的退出处理。


5.根据权利要求4所述的计算机实现的解析方法,其中,退出处理包括:
如果节点列表没有穷尽,则从节点列表中获取下一个条目以获得节点和索引;
基于索引选择动作;以及
如果要附加方向,则添加方向列表索引节点条目,链接到索引处的当前节点。


6.根据权利要求5所述的计算机实现的解析方法,其中,如果节点是第一节点并设置了节点值,则创建索引。


7.根据权利要求4所述的计算机实现的解析方法,其中退出处理包括:在不附加方向的情况下,将索引或节点添加至返回列表。


8.一种非暂时性机器可读介质,其中存储有一组指令,当通过计算机系统执行所述指令时,使得所述计算机系统执行用于解析方法的一组操作,其中,解析处理依次匹配来自输入流的标记,直到到达具有多个标记的后续备选项序列的决策点,所述操作包括:
在响应于决策值列表为空而调用识别函数以重新填充决策值列表之后,从决策值列表中获取下一个值以确定遵循多个备选项序列中的哪个序列,其中识别函数确定输入流中的标记位置,然后依次匹配标记,直到仅剩下一条备选路径;
响应于遇到二次决策点而调用特定于决策点的函数,或者将返回函数指针推到指针堆栈上,然后goto至该决策点的代码;
确定输入流是否穷尽;
响应于决策值列表中剩余单个备选路径,构建决策值的列表或多列表;以及
选择一个列表继续所述解析处理。


9.根据权利要求8所述的非暂时性机器可读介质,其中还存储有使得所述计算机系统执行包括文法分析的操作以构建解析处理的指令,所述操作还包括:
解析文法以创建中间表示,该中间表...

【专利技术属性】
技术研发人员:洛林·G·克雷默三世
申请(专利权)人:洛林·G·克雷默三世
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1