编译原理期末复习---第二章 文法和语言

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表示通常由以下符号约定组成:

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

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

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

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

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

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

<非终结符> ::= <规则右部>

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

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

<expression> ::= <term> | <term> <add_op> <expression>
<term>      ::= <factor> | <factor> <mul_op> <term>
<factor>    ::= <number> | "(" <expression> ")"
<number>    ::= [0-9]+
<add_op>    ::= "+" | "-"
<mul_op>    ::= "*" | "/"

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

3、文法的类型

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

  1. 0型文法(无限制文法,Unrestricted Grammar):没有任何限制条件,产生式的左部可以是任意符号串。
形式上为 α → β,其中 α 和 β 是任意符号串。


  1. 1型文法(上下文相关文法,Context-Sensitive Grammar):
产生式的形式为 αAβ → αγβ

其中 A 是一个非终结符号,α、β、γ 是任意符号串(且 β 不为空串)

α 和 β 的长度可以是不等的。


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

  1. 2型文法(上下文无关文法,Context-Free Grammar):
产生式的形式为 A → α

其中 A 是一个非终结符号,α 是任意符号串。


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

  1. 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型文法

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值