首页 > 其他分享 >编译原理(清华大学版)第二章

编译原理(清华大学版)第二章

时间:2024-04-11 15:22:05浏览次数:24  
标签:文法 sum 清华大学 编译 beta alpha 第二章 符号串 Rightarrow

第二章 文法和语言

符号和符号串

  • 字母表是元素的非空有穷集合
  • 字母表中的元素称为符号
  • 字母表中的符号可以组成的任何又穷序列称为符号串

符号串运算

1.符号串的头尾,固有头和固有尾

​ \(z=xy,只对头感兴趣则可以写为z=x...\)

2.符号串的链接

​ $符号串x、y,连接之后为xy ;\space \epsilon x = x\epsilon = x $

3.符号串的方幂

​ \(设x为符号串,z=x^n ,称为符号串的方幂,即将x自身连接n次\)

4.符号串的集合

​ \(集合A中的一切元素都是某字母表上的符号串,则称A为该字母表上的符号串集合\)

​ \(俩符号串集合A,B的乘积,AB=\{x,y|x\in A且y\in B\}\)

​ \(\sum ^ *\)表示字母表$\sum $上所有有穷长的串的集合 $\sum ^*=\sum ^0 \cup \sum ^1 …… \cup \sum ^n $

​ \(\sum ^*称为集合\sum的闭包,\sum^+=\sum ^1 \cup \sum ^2…… \cup \sum ^n称为正闭包\)​


各种定义

文法\(G\)定义为四元组\((V_N,V_T,P,S)\)

\(V_N\)(Non-terminators)非终结符集 \(\space V_T\)(Terminator) 终结符集

\(P\)为规则$(\alpha \rightarrow \beta) $的集合

\(\alpha \in (V_N\cup V_T)^*\) 且至少包含一个非终结符,例如 \(Aa,A,ABa\space ,\beta \in (V_N\cup V_T)^*,V_T,V_N\)和\(P\)是非空有穷集合

\(S\)​坐标标识符或者开始符号,是一个非终结符号

推导的概念

  • 设$\alpha \rightarrow \beta $ 是文法\(G\)五元组的规则,$\gamma $和 $\delta $ 是\(V^*\)中的任意符号,若有符号串\(v,w\)满足

\[v=\gamma \alpha \delta,\space w=\gamma \beta \delta \]

​ 则说\(v\)直接产生\(w\),或者说\(w\)是\(v\)的直接推导,或者说\(w\)直接归约到\(v\),记作\(v \Rightarrow w\)。

  • 如果直接推导序列:

\[v = w_0\Rightarrow w_1 \Rightarrow w_2 \Rightarrow ...\Rightarrow w_n = w (n>0) \]

​ 则称\(v\)推导出\(w\),推导长度为\(n\),记作\(v\overset{+}{\Rightarrow} w\)​

句子、句型、语言定义

设\(G[S]\)是一个文法,如果符号串\(x\)是从识别符号推导出来的,即\(S\overset{*}{\Rightarrow}x\),则称\(x\)是文法\(G[S]\)​的句型

若\(x\)仅有终结符号组成,即\(S\overset{*}{\Rightarrow}x,x\in V^*_T\),称\(x\)是文法\(G[S]\)​的句子

语言:定义为集合\(\{ x|S\overset{*}{\Rightarrow}x,其中S为文法识别符号,且x\in V^*_T\}\)​

文法等价

若\(L(G_1)=L(G_2),则成文法G_1和文法G_2是等价的\)


文法的类型

0型、1型、2型、3型。

0型文法概念

设\(G=(V_N,V_T,P,S)\),如果它的每一个产生式\(\alpha \rightarrow \beta\)是这样一种结构:\(\alpha \in (V_N \cup V_T)^*\)且至少包含一个非终结符,\(\beta \in (V_N \cup V_T)^*\)

0型文法相当于图灵机,任何0型语言都是递归可枚举的,泛指递归可枚举的必定是一个0型语言

1型文法概念

设\(G=(V_N,V_T,P,S)\),如果它的每一个产生式\(\alpha \rightarrow \beta\)均满足\(|\beta|\ge|\alpha|\),仅仅$S \rightarrow \epsilon $除外,则文法是1型或者上下文有关的

2型文法概念

设\(G=(V_N,V_T,P,S)\),如果它的每一个产生式\(\alpha \rightarrow \beta\)均满足:\(\alpha\)是一个非终结符,\(\beta \in (V_N \cup V_T)^*\),则文法是2型或者上下文无关的

3型文法概念

设\(G=(V_N,V_T,P,S)\),如果P中每一个产生式的形式都是\(A\rightarrow aB\)或\(A\rightarrow a\),其中\(A,B\)都是非终结符,\(a\in V_T^*\)​,则是3型正规文法


上下文无关文法和语法树

上下文无关文法最直观的表达方式是语法树

如果推导的任何一步\(\alpha \Rightarrow \beta\),其中\(\alpha 、\beta\)是句型,都是对\(\alpha\)中的最左(最右)非终结符进行替换,则称这种推到为最左(最右)推导。

最右推导一般称之为规范推导

文法的二义性和语言的二义性是两个不同的概念。

如果一个文法存在的某个句子,有两个不同的最左(最右推导),则说这文法是二义的。或者某个句子对应两棵不同的语法树。


句型的分析

  • 令G是一个文法,S是文法的开始符号,\(\alpha \beta \delta\)是文法G的一个句型。如果有\(S\overset{*}{\Rightarrow} {\alpha A\delta }\)且\(A \overset{+}{\Rightarrow} \beta\),则称\(\beta\)是句型$\alpha \beta \delta $相对于非终结符A的短语
  • 如果\(A \Rightarrow \beta\),则称\(\beta\)是句型\(\alpha \beta \delta\)相对于规则\(A\rightarrow \beta\)的直接短语,也叫简单短语
  • 一个右句型的直接短语称为该句型的句柄
    • 如果文法无二义,右句型有唯一的最右推导,句柄唯一,是所有直接短语中最左边的那一个
    • 如果文法是二义的,则有多个句柄。

标签:文法,sum,清华大学,编译,beta,alpha,第二章,符号串,Rightarrow
From: https://www.cnblogs.com/graffiticode/p/18129320

相关文章

  • 编译原理(清华大学版)第一章
    第一章概论基本概念 词法分析经过词法分析器识别出Token,把字符串转化为一个个Token。Token包括:关键字、标识符、界符等语法分析把Token串转换成体现语法规则的抽象树(AST)语义分析审查源程序有无语义错误找到变量的作用域识别执行的运算方式进行类型......
  • Item31:最小化文件之间的编译依赖
    芝士wa2024.4.11Item31链接引子“你进入到你的程序中,并对一个类的实现进行了细微的改变。提醒你一下,不是类的接口,只是实现,仅仅是private的东西。然后你重建(rebuild)这个程序,预计这个任务应该只花费几秒钟。毕竟只有一个类被改变。你在Build上点击或者键入make(或者其它等......
  • ZOMI的AI编译原理4
    为什么需要AI编译器面临的问题挑战类别描述算子挑战越来越多新算子被提出,导致算子库的开发、维护、优化和测试工作量指数上升。1.硬件不仅需要实现新算子,还需要结合硬件进行特性优化和测试,以充分发挥硬件性能。例如,对于Convolution运算,需要将其转换为GEMM矩阵乘......
  • 看不懂来打我,vue3如何将template编译成render函数
    前言在之前的通过debug搞清楚.vue文件怎么变成.js文件文章中我们讲过了vue文件是如何编译成js文件,通过那篇文章我们知道了,template编译为render函数底层就是调用了@vue/compiler-sfc包暴露出来的compileTemplate函数。由于文章篇幅有限,我们没有去深入探索compileTemplate函数是......
  • vue编译器
    ast-编译成代码import*aspathfrom'path'importtype{Plugin,ResolvedConfig}from'vite'import{NodePath}from'@babel/traverse';import{JSXElement}from'@babel/types';import{compile,generate,transform......
  • 如何让WSL2使用自己编译的内核
    目录wsl基本介绍以及安装编译内核下载linux源码使用wsl内核配置添加uvc内核驱动编译内核切换wsl内核重启内核最近有一个摄像头的项目,想着为什么不直接使用wsl呢。查阅了网络上大量的资料,修改了WSL2内核来支持UVCwsl基本介绍以及安装wsl(windowssubsystemforlinux)是wind......
  • 千万不要将centos中python 默认2.7的编译器改为3.x的,会出现File “ usr bin yum“, li
    千万不要将centos中python默认2.7的编译器改为3.x的,在使用yum时,会报各种错,1、File"/usr/bin/yum",line30  exceptKeyboardInterrupt,e:原因是yum按python3.6解析2.7的语法出错了修改/usr/bin/yum文件中的第一行为#!/usr/bin/python2.72、 File"/usr/libexec/url......
  • 26版SPSS操作教程(高级教程第二章)
    前言#经过20多天的坚持学习,本人也终于开启SPSS高级教程的副本了,茫茫长征路,需要我们一起共同去征服;#由于导师最近布置了学习SPSS这款软件的任务,因此想来平台和大家一起交流下学习经验,这期推送内容接上一次高级教程第一章的学习笔记,希望能得到一些指正和帮助~粉丝及官方意见说......
  • ZOMI的AI编译原理3
    LLVM设计架构LLVMIR与GCCIR对比特性LLVMIRGCCIR(GIMPLE)独立性和库化架构高度模块化,前端和后端分离,易于添加新语言和目标平台传统GCC架构,前端和后端耦合较紧密表达形式人类可读的汇编形式、C++对象形式、序列化后的bitcode形式GIMPLE表示形式,三地址代码,SS......
  • Notepad--文本编译工具推荐
    推荐一个全平台的文本、代码编辑工具Notepad--,支持Windows、Mac以及国产uos深度系统、redhat/ubutu/centos等系统。可以替换你目前手头使用的Notpad++,这个软件能不用就别用了,懂得都懂。废话不多说,附上Notepad--作者爬山虎的gitee链接ndd发行版-Gitee.com这个软件挺轻量化的......