词缀语法
编辑词缀语法是一种形式语法;它被用来描述语言的语法,主要是计算机语言,使用的方法是基于自然语言的典型描述方式。词缀语法的语法规则是无语境语法的规则,只是在非终结语中的某些部分(词缀)被用作论据。如果同一个词缀在一条规则中出现多次,它的值必须一致,也就是说,它必须在所有地方都一样。在某些类型的词缀语法中,词缀值之间可能存在更复杂的关系。
词缀语法的例子
编辑给定的语法也描述了诸如以下的句子约翰喜欢孩子,孩子帮助父母这些句子是错误的:在英语中,主语和动词有一个语法上的数字,必须一致。一个词缀语法可以直接表达这一点。
词缀语法的类型
编辑在最简单的词缀语法类型中,词缀只能从有限的域中取值,而且词缀值只能通过约定来联系,就像例子中那样。以这种方式应用,词缀增加了语法的紧凑性,但没有增加表达能力。另一种方法是允许词缀以任意的字符串为值,并允许在规则中使用词缀的连接。词缀的可允许值的范围可以用无语境语法规则来描述。这就产生了两级语法的形式主义,也被称为VanWijngaarden语法或2VW语法。这些语法已被成功地用于描述复杂的语言,特别是Algol68编程语言的语法。然而,事实证明,即使词缀值只能用字符串连接来操作,这种形式主义也是图灵完全的;因此,即使是关于任意2VW语法所描述的语言的最基本问题,在一般情况下也是不可解的。20世纪80年代发展起来的扩展词缀语法是同一思想的一个更有限的版本。它们主要被用于描述自然语言的语法,例如英语。另一种可能性是允许用某种编程语言编写的代码来计算词缀的值。
有两种基本方法被使用。在属性语法中,词缀(称为属性)可以从任意领域取值(例如整数或实数,复杂的数据结构),并且可以指定任意的函数,用选择的语言编写,以描述规则中的词缀值是如何相互衍生的。在CDL(编译器描述语言)和它的后继者CDL2(开发于20世纪70年代)中,源代码的片段(通常是汇编语言)可以在规则中使用,而不是正常的右手边,允许直接表达输入扫描和词缀值计算的原语。作为实际编译器构建的基础,这种方法被用来编写编译器,以及其他软件,例如文本编辑器。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/163759/