文法的形式定义
创始人
2025-05-30 22:37:43

一、序列的集合称为形式语言


序列的集合称为形式语言

二、形式语言的描述


  1. 当语言是有穷集合时,用枚举法表示。

EX:

设字母表A={a,b,c},则

L1={a,b,c}

L2={a,aa,bb,ac}

L3={c,cc}

均表示字母表A上的一个形式语言。

2.当语言是无穷集合时,用文法来描述(文法实际上时一组规律)

EX:

Σ={0,1},则Σ+={0,1,00,,01,10,11,000,001,……}

上例可表示为:A->0 A->1 A->A0 A->A1

反复用这个例子,不计较其顺序,反复用则产生:Σ+={0,1,00,01,10,000,001,……}

文法作用:是用有穷集合描述无穷集合的一种工具

三、文法的形式定义


文法的直观认识

语言应该包括语法和语义两个方面。

语法用来定义什么样的符号序列是合法的,与这些法号的含义毫无关系

EX:

狗是小狗

文法是用来形式化定义语法的工具。

文法的定义:是定义规则的非空有穷集合。定义为:

G=(VT,VN,S,P)是一个四元组,

其中

VT:终结符的集合,可出现在文法的任何地方;

VN:非终结符的集合;且有VT∩VN=

规则(产生式)

是一个符号与一个符号串的有序对(偶),(A,a),通常写作A->α,通常写作(A->α)

或者(A::α)

①、一个规则作用:描述语言中句子是怎样产生的;

②、一组规则作用:描述一个语言的语法结构。

非终结符:能推导/导出/派出 符号、符号串(一般在左部)

终结符:不能派生出符号串的符号(不可再分的单位)

S:文法的开始符号 P:文法规则式的集合

EX:

A->0 VT={0,1}

A->1 VN={A}

A->A0 S=A

A-->A1 P : A->0|1|A0|A1

EX:

设Σ={a,b},试设计一个文法,定义语言L: L={ a^2n ,b^2n |n>=1 }

分析:看一下这个语言里句子结构的特征(串结构的特征)

L={aa,bb,aaaa,bbbb,aaaaaa,bbbbbb,……}

即L中有偶数个a,偶数个b,

则文法为:

P1:

A->aa VT={a,b}

A->aaB VN={A,B,D}

B->aa | aaB S:A

A->bb G={VT,VN,S,P}

A->bbD

D->bb|bbD

从上式子可以看出来:

①描述语言的文法是不唯一的;

②用文法描述语言要准确的描述,既不能扩大,也不能缩小。

EX:

用文法定义一个含 +,* 的算术表达式,定义用下述自然语言描述:变量是一个表达式;若E1和E2是算术表达式,则E1+E2,E1*E2,(E1)也是算术表达式。

形式化描述:

P:

E->i;

E->E + E | E*E | (E)

相当于 L={i,i+i,(i),i+i*i,……}

EX:

设计一个表示所有标识符的文法。

分析:标识符为以字母开头的字母数字串即:

字母|字母开头 字母数字串

P: I ->L | ID | IL

L->a|b|……|z|A|B|……|Z

D->0|1|2|……9

P: I->L | ID

L->a|b|……|z|A|B|……|Z

D->0|1|2|3|4……9

下边的文法产生式中只能生成字母在前,数字在后的串,不能生成如a1b1这样的串,故此文法将其功能缩小了

EX:已知语言L={(n)^n | n=0,1,2,3,……},试求L对应的文法G

解: L={,(),(()),((())),……}

P: S->|(S)

相关内容

热门资讯

阿里春招-2023.3.15-... 极差三元组计数 Problem Description 给定一个数组,请你计算有多少个...
电压放大器在钢筋剥离损伤识别试...   实验名称:钢筋剥离损伤识别试验  研究方向:无损检测  测试目的&#...
MOCO论文前几段精读 MoCo MoCo是CVPR 2020的最佳论文提名,算是视觉领域里,使...
【lua初级篇】基础知识和开发... 文章介绍 文章介绍 简述 工具安装配置和下载 快速看基础知识 一些常用的关键字一览 数据类型 tab...
Yuv422、Nv12转C#B... 1.1、Nv12转Bitmapint w = 1920;int h = 1080;i...
Linux互斥量和信号量的区别... 互斥量和信号量的区别 1.互斥量用于线程的互斥: 互斥:加锁解锁,是指某...
Git 和 GitHub 超入... 1.解决行结束符问题 需要在你的仓库中添加一个.gitattributes文件,标记正...
基于C++的AI五子棋游戏项目... 项目资源下载 基于C++的AI五子棋游戏项目源码压缩包下载地址基于C+...
#浅聊 webSocket (... 如果可以实现记得点赞分享,谢谢老铁~ 一,什么是webso...
Java SE API kno... Java SE API know how 字符串 紧凑字符串 java8 无论字符串的编码ÿ...
常用的VB函数 数学函数函数说明示例Sin(N)返回自变量N的正弦值Sin(0)=0 N为弧度Cos(N)返...
C++ 机房预约系统(五):管... 7.3 显示功能 功能描述: 显示学生信息或教师信息 功能实现: voi...
PIC单片机的一些问题 error 1347 can't find 0x16 words (0x16 withtotal) ...
完美日记母公司再度携手中国妇基... 撰稿 | 多客 来源 | 贝多财经 当春时节,梦想花开。和煦的三月暖阳,...
GDPU C语言 天码行空3 1. 分段函数 #includeint main(){double x,y;scanf("%lf",...
【瑞萨 MCU】开发环境搭建之... e2 studio e2 studio(简称为 e2 或 e2s)是瑞萨...
C语言内联汇编 之前我们介绍了一种C语言与汇编代码混合编程方式,就是两个文件分开编写,分...
Linux 网络编程学习笔记—... 一、TCP 服务的特点 传输层协议主要有 TCP 协议和 UDP 协议,前者相对于后者...
KubeSphere All ... KubeSphere All in one安装配置手册 1. 初始化 1.1 配置apt源 # vi...
学习软件测试怎么能缺少练手的软... 你好,我是凡哥。 最近收到许多自学自动化测试的小伙伴私信,学习了理论知识...
【面试题】浅谈css加载是否会... 大厂面试题分享 面试题库前后端面试题库 (面试必备) 推荐:...
直播带货系统开发的关键点、代码... 时下,直播的热度依然不减,而它的产物之一:直播带货系统&#...
一文读懂强化学习! 一.了解强化学习1.1基本概念强化学习是考虑智能体(Agent)与环境&...
Spring Cloud之一:... 目录 环境 Eureka工程的创建步骤 系列目录(持续更新。。。) S...
golang实现守护进程(2) 前言golang实现守护进程,包含功能:1. 守护进程只创建一次2. 平...
url 格式详解 统一资源定位系统(uniform resource locator; url ...
elasticsearch7.... elasticsearch版本:7.17.3 目标:实现对类型为text...
SpringBoot 加载系统... 开发环境: IDEA 2022.1.4+ MyBatis         代码参考:spri...
交换机概念和知识和命令 目录 一、华为交换机基础学习的一些重要概念和知识 二、交换机常用命令大全 三、不常用的交换机命令 ...
什么是 JavaScript ... 本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻࿰...