语法分析组合子

✍ dations ◷ 2025-12-03 02:43:10 #语法分析组合子

在计算机编程中 语法分析组合子 是一个 高阶函数 ,它接受几个的语法分析器作为输入,并返回一个新的语法分析函器作为其输出。 在这个上下文中, 语法分析器 是一个函数,它接受字符串作为输入,返回的一些结构作为输出,通常为 分析树 或一组索引表示在字符串中成功停止分析的位置。 分析器组合子使用 递归下降分析 战略,提倡模块式建造和测试。 这种分析技术是所谓的 组合分析。

使用组合子构建的分析器易于构造、可读、模块化、结构良好且易于维护它们被广泛地用于 领域特定语言(如数据库的自然语言接口)的编译器和处理器的原型设计中,在这些语言中,复杂多样的语义操作与语法处理紧密集成。1989年,Richard Frost和John Launchbury演示了使用语法分析组合子构造的自然语言解释器。Graham Hutton在1992年也使用了高阶函数进行基本解析。S.D. Swierstra在2001年还展示了解析器组合器的实用方面。在2008年,Frost、Hafiz和Callaghan用Haskell中描述了一组语法分析组合子,它们解决了长期存在的通用左递归的问题,它也是一个完整的,只需要多项式时间、空间的自顶向下解析工具。

在任何一种编程语言,拥有 头等函数,分析器组合子可以用基本的分析器构造用于更复杂的规则的分析程序。 例如,上下文无关文法 (CFG)的产生式可能有一个或多个备选推导方案,每个备选方案可以由一系列的 非终结符 和/或 终结符,或者推导方案可以由一个单一的非终结符或终结符端或空串组成。如果一个简单的分析程序适用于这些推导方案,语法分析组合子可以用来组合这些分析器,返回一个新的分析器,这可以识别出的任何推导方案。

在支持 运算符重载 的语言中,一个语法分析组合子可以使用 中缀 操作符形式,用于将不同的分析器胶合成一个完整的规则。语法分析组合子使得分析程序能以一个嵌入式的风格编写,这使得程序结构上类似于正则文法的规则。 因此,实现方式可以被认作为可执行的规格并有所有的相关优点。 (值得注意的是:可读性)

为了保持讨论比较简单,我们只讨论语法分析组合子作为 的情况。 如果输入串的长 #input ,其成员通过一个索引 j,一个 是一个语法分析器,它返回一组索引,表示分析器在位置 j成功地识别出了一个序列的标记。一个空的结果表明在索引 j识别器没有识别到任何序列的开始。

注意可能有多个不同的方法来分析一个字符串,同时在相同的索引处结束:这表明一个 二义性文法 。简单的识别器不承认这些二义性;每个可能的结束索引在结果集中只出现一次。 对于更完整的结果集合,必须返回一个更复杂的对象,例如 分析树。

下面的定义的两个基本的识别器 pq,我们可以界定两个主要的语法分析组合子,用于选择和顺序:

考虑一个有高度二义性的 上下文无关文法, s ::= 'x' s s|ε. 使用上面定义的组合子,我们可以模块化的定义可执行的符号,这种语法在一个现代化的函数式语言(例如 Haskell)作为 s = term 'x' <*> s <*> s <+> empty。当识别器 s 在一个输入序列 xxxxx 的位置 1上被应用,根据上述定义,它将返回的结果集合 {5,4,3,2}.


相关

  • 反硝化反应脱硝反应(英语:denitrification,亦称为脱硝作用、脱氮作用)是指细菌将硝酸盐(NO3−)中的氮(N)通过一系列中间产物(NO2−、NO、N2O)还原为氮气分子(N2)的生物化学过程。参与这一过程的细
  • 西巴布亚共和国西巴布亚共和国是西巴布亚地区曾经存在的一个未受国际普遍承认的国家。自荷属东印度停止存在、印度尼西亚独立之后,荷兰获得荷属东印度统治的新几内亚部分——荷属新几内亚,计
  • 尤卡坦半岛尤卡坦半岛(西班牙语:Península de Yucatán),位于中美洲北部、墨西哥东南部的半岛,墨西哥湾和加勒比海之间,将加勒比海从墨西哥湾中分离出。东靠加勒比海,西临墨西哥湾、坎佩切湾
  • 中国人民解放军长沙工程兵学院中国人民解放军长沙工程兵学院,是解放军工程兵一所初级指挥院校。1999年并入国防科技大学。1978年7月在长沙组建中国人民解放军工程兵学校。1986年6月更名中国人民解放军长沙
  • 竹内悌三竹内悌三(1908年11月6日-1946年4月12日),日本足球运动员,前日本国家足球队成员。从1930年到1936年,他共为日本国家足球队出场4次。
  • 体验设计体验设计(Experience design,简称XD)是一套在设计产品、工艺、服务、活动、全通路行销及环境设计等领域中,专注于使用者体验及文化性的解决方案。作为一个新兴的学门,体验设计融
  • 李崧李崧可以指:
  • 丁国成丁国成(1939年-),笔名国成、成平、丁巴、彭宁宁、陈群等,男,黑龙江肇东人,中国文学编审。评论家,中华诗词学会副会长,中国作家协会名誉委员。
  • 亚洲星光大道5《亚洲星光大道 5跳舞吧》(英文:Asian Millionstar 5)为亚洲电视制作的亚洲星光大道系列第五届赛事,也是第二次以舞蹈为主题的比赛,第五届比赛于2012年4月8日至5月初期间全球公开招募,节目由2012年6月17日起,逢星期日晚上8时半至10时于本港台播放。 本届参赛者可以个人或组合形式参赛。节目由张启乐主持,常任评审为陈宝辕、EO2 成员彭怀安、张立基、李蕙敏等。本届冠军为舒宇,亚军为李轩龙&赵珊珊,季军为Diamondfreak。继首四届《亚洲星光大道》赛事后,第五届的《亚洲星光大道》
  • 漏洞利用漏洞利用(英语:Exploit,本意为“利用”)是计算机安全术语,指的是利用程序中的某些漏洞,来得到计算机的控制权(使自己编写的代码越过具有漏洞的程序的限制,从而获得运行权限)。在英语中,本词也是名词,表示为了利用漏洞而编写的攻击程序,即漏洞利用程序。经常还可以看到名为ExploitMe的程序。这样的程序是故意编写的具有安全漏洞的程序,通常是为了练习写Exploit程序。有多种对漏洞进行分类的方法。 最常见的是漏洞利用如何与易受攻击的软件进行通信。远程利用在网络上工作,并在没有事先访问易受攻击的系统的情况