[发明专利]用于线性广义LL识别和上下文感知解析的方法和系统有效
申请号: | 201580037492.4 | 申请日: | 2015-07-10 |
公开(公告)号: | CN106663094B | 公开(公告)日: | 2020-03-27 |
发明(设计)人: | 洛林·G·克雷默三世 | 申请(专利权)人: | 洛林·G·克雷默三世 |
主分类号: | G06F40/211 | 分类号: | G06F40/211 |
代理公司: | 北京天昊联合知识产权代理有限公司 11112 | 代理人: | 顾丽波;井杰 |
地址: | 美国加利*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 线性 广义 ll 识别 上下文 感知 解析 方法 系统 | ||
1.一种计算机实现的文法分析方法,其生成用于运行时识别的代码,以产生在随后的解析期间给定的句子要遵循的方向的列表或多个列表的图形表示,所述方法包括步骤:
解析文法以创建抽象语法树(AST)表示;
构造用于分析的表示文法的所有特征的图形,所述特征包括递归、交替、备选项的分组和循环;
处理所述图形中的每个决策点,用以生成中间表示,所述决策点是具有多个输出边的顶点;
生成识别函数的代码,所述识别函数返回在运行时解析决策中使用的方向列表;并且
修补每个决策点标记以引用或内联每个决策点的顶层识别代码。
2.根据权利要求1所述的计算机实现的方法,其中,所述方法还包含:文法的图形表示与用于生成解析器的所述文法的抽象语法树或其它内部表示的同步化。
3.根据权利要求1所述的计算机实现的方法,其中,所述文法特征被表示为包含所述图形中的特殊标记类型的节点、或包含在源文法中表示终结符的文法特定标记类型的节点,所述包含所述图形中的特殊标记类型的节点包括:用于表示用于递归管理的堆栈操纵的POP_CONTEXT或PUSH_CONTEXT节点中的任何一个,其中,POP_CONTEXT是决策节点;用于表示备选项的分组的BLOCK或EOB节点中的任何一个,其中所述节点是也存在于所述抽象语法树中的决策点;也存在于抽象语法树中的用于实现上下文感知识别和解析的语义谓词的SEMPRED节点。
4.根据权利要求1所述的计算机实现的方法,其中,决策点分析包括步骤:
初始化方法的中间表示或内联代码;
构建从所述决策点处开始的备选路径的列表;
生成用于单例的代码并且从所述列表中移除终止的路径;
将路径列表添加至工作队列;
处理所述路径列表,以生成运行时识别代码并生成所述工作队列中的其他条目;以及
处理所述工作队列中的路径列表,直到所述工作队列清空为止。
5.根据权利要求4所述的计算机实现的方法,其中,处理所述路径列表包括步骤:
从工作队列获得路径列表;
逐步处理所述工作列表,其中,每一步包括对特殊标记类型和/或文法特定标记类型的处理;
随着节点被处理,在所述路径列表中从当前节点推进至下一个节点;
当创建了新的路径列表且将其添加至所述工作队列,或者由其先前遇到的等同物替代时,终止路径列表处理,以及
将初始路径列表值保存在列表处理表中。
6.根据权利要求4所述的计算机实现的方法,其中,处理所述路径列表还包括步骤:
检查所述路径列表是否具有PUSH_CONTEXT节点;以及
推进PUSH_CONTEXT节点,将索引值添加至路径本地堆栈。
7.根据权利要求4所述的计算机实现的方法,其中,处理所述路径列表还包括步骤:
检查所述路径列表是否具有POP_CONTEXT节点;以及
复制所述路径列表,并且在所述路径列表包括POP_CONTEXT节点时执行POP_CONTEXT处理。
8.根据权利要求4所述的计算机实现的方法,其中,处理所述路径列表还包括步骤:
检查所述路径列表是否具有多个标记类型和/或决策点;以及
将决策点精化以创建新的路径列表,并且在表示了多个文法特定标记类型时拆分该路径列表。
9.根据权利要求4所述的计算机实现的方法,其中,处理所述路径列表还包括步骤:
检查表示运行时、上下文感知识别和解析的语义谓词的SEMPRED标记;以及
处理所述路径列表以生成用于运行时面向SEMPRED的运行时决策的代码。
10.根据权利要求4所述的计算机实现的方法,其中,处理所述路径列表还包括步骤:
检查所有标记类型是否匹配;以及
生成每种标记类型的匹配代码。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于洛林·G·克雷默三世,未经洛林·G·克雷默三世许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201580037492.4/1.html,转载请声明来源钻瓜专利网。