编译原理期末复习

您所在的位置:网站首页 linux符号表原理 编译原理期末复习

编译原理期末复习

2023-06-26 10:21| 来源: 网络整理| 查看: 265

这里写目录标题 1、文法2、文法的BNF表示3、文法的类型4、四种文法类型的关系

1、文法

1、文法(Grammar)是一种形式化的符号系统,用于描述一门语言的结构和规则。它定义了一个语言的合法句子(字符串)的形式以及生成这些句子的规则。

2、文法的四元组表示形式为 G = (N, T, P, S),其中:

N 表示非终结符号集合。 T 表示终结符号集合。 P 表示产生式规则集合。 S 表示开始符号。

非终结符号(Non-terminals):也称为非终结符或者变量,表示语言中的语法范畴或符号组合。非终结符可以通过一系列的规则进行替换或扩展,最终生成合法的句子。通常用小写字母或希腊字母表示。

终结符号(Terminals):也称为终结符或者词汇项,表示语言中的基本符号或单词。例如,在英语文法中,终结符可以是单词如"cat"、“dog”、"run"等。通常用大写字母表示。

产生式(Productions):也称为规则,指定了如何将非终结符替换为终结符和/或其他非终结符的序列。产生式的左侧是一个非终结符,右侧是由终结符和非终结符组成的序列。例如,产生式可以表示为 A → BCD,表示将非终结符 A 替换为 BCD。

开始符号(Start symbol):表示一个特定的非终结符,作为生成句子的起始点。从开始符号出发,根据产生式规则逐步替换,直到得到最终的句子。

2、文法的BNF表示

BNF(巴科斯范式)是一种用于描述上下文无关文法的形式化表示方法,常用于描述编程语言的语法规则。BNF使用产生式规则来定义语法结构。

BNF表示通常由以下符号约定组成:

: 用尖括号括起来的字母或字母组合表示非终结符号,例如 , , 等。每个非终结符表示一个语法结构或语法范畴。

终结符号: 直接写出的字符或字符串表示终结符号,例如数字、标识符、运算符等。终结符号不需要使用尖括号括起来。

::=: 表示“被定义为”的意思,用来分隔产生式左部和右部。

|: 表示“或”的意思,在产生式的右部可以有多个选择。

空白符:用空格或制表符表示空白符。

BNF表示中的产生式规则由非终结符号和终结符号组成,示例格式如下:

::=

其中,规则右部可以由非终结符号、终结符号和操作符组成。可以使用递归方式定义复杂的语法结构。

以下是一个简单的示例,演示了如何使用BNF表示算术表达式的文法规则:

::= | ::= | ::= | "(" ")" ::= [0-9]+ ::= "+" | "-" ::= "*" | "/"

以上示例展示了表达式、项、因子和数字的语法规则。例如,一个简单的表达式可以通过递归地应用这些规则来解析和生成。

3、文法的类型

乔姆斯基文法(Chomsky Grammar)是由诺姆·乔姆斯基(Noam Chomsky)在形式语言理论中提出的,根据产生式规则的限制条件将文法分为四种类型:0型文法、1型文法、2型文法和3型文法。

0型文法(无限制文法,Unrestricted Grammar):没有任何限制条件,产生式的左部可以是任意符号串。 形式上为 α → β,其中 α 和 β 是任意符号串。 1型文法(上下文相关文法,Context-Sensitive Grammar): 产生式的形式为 αAβ → αγβ 其中 A 是一个非终结符号,α、β、γ 是任意符号串(且 β 不为空串) α 和 β 的长度可以是不等的。

1型文法对应于上下文相关语言,可以由线性有界自动机进行描述。

2型文法(上下文无关文法,Context-Free Grammar): 产生式的形式为 A → α 其中 A 是一个非终结符号,α 是任意符号串。

2型文法对应于上下文无关语言,可以由推导树和上下文无关语法分析器进行解析。

3型文法(正则文法,Regular Grammar): 产生式的形式为 A → aB 或 A → a 其中 A 和 B 是非终结符号,a 是终结符号。

3型文法对应于正则语言,可以由有限自动机(DFA/NFA)进行描述。

乔姆斯基文法的类型按照表达能力逐渐降低,0型文法最为灵活,3型文法最为受限。在实际应用中,上下文无关文法(2型文法)常用于表示编程语言的语法规则。

4、四种文法类型的关系

在这里插入图片描述 即:0型文法包含了1型、2型和3型文法;1型文法包含了2型和3型文法;2型文法包含了3型文法。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3