• 编译原理网课笔记——第二章


    第二章

    2.1词法语法分析基本概念

    字母表的乘积:笛卡尔积

    字母表的n次幂:长度为n的符号串构成的集合(注意空串ε)

    字母表的正闭包:长度整数的符号串构成的集合

    字母表的克林闭包:正闭包+空==任意符号串(长度可为0)构成的闭包

    串是字母表中符号的一个有穷序列

    串上的运算

    串的连接:xy(空串是连接运算的单位元,对任何串都有εs=sε=s)

    x = yz y是x的前缀,z是x的后缀

    串的幂运算:将n个串连接起来

    2.2文法的定义

    语法成分:<>,反之为语言基本符号

    语言的基本符号:未用尖括号括起来的

    文法的形式化定义:

    G = (VT,VN,P,S)

    VT:终结符集合(token),文法所定义的语言的基本符号

    VN:非终结符(语法变量),用来表示语法成分的符号

    VT∩VN = Φ VT与VN不相交

    VT∪VN:文法符号集

    第一个框列为字母表中排在前面的 第二个列字母表中排在后面的

    P:产生式集合:产生式描述了将终结符和非终结符组成串的方法。

    产生式的一般形式:a->b

    • a定义为b, a∈(VT∪VN)+,且至少包含VN中一个元素,称为左部;
    • b∈(VT∪VN)*,称为右部

    S:开始符号,最大的文法成分

    不引起歧义前提下可以只写产生式

    产生式的简写:

    2.3语言的定义

    推导:(生成语言)自上向下

    直接推导:用产生式的右部直接替换产生式的左部

    总结:

    名称

    符号

    含义

    直接推导

    =>

    1步

    推导

    =>+

    大于等于1步

    广义推导

    =>*

    大于等于0步

    归约:(识别语言)就是反向,自底向上

    思考:

    有了文法,如何判定某一词串是否为该语言的句子?

    两种方法:

      • 句子的推导(从生成语言的角度)
      • 句子的归约(从识别语言的角度)

    句型和句子

    句型:属于文法符号集的闭包的符号串。

    句子:仅包含终结符号的句型。

    语言:

    语言上的运算

    2.4文法的分类

    Chomsky文法分类体系

    • 0型文法

    • 1型文法
      • 上下文有关文法不包含空产生式。

    • 2型文法

    • 3型文法

    四种文法之间的关系:

    2.5CFG的分析树

    基本定义:

    分析树是推导的图形化表示。

    二义性文法:一个文法可以为某个句子生成多棵分析树。

    满足,肯定没有二义性。

    不满足,也未必就是有二义性d 

  • 相关阅读:
    如何用个人数据Milvus Cloud知识库构建 RAG 聊天机器人?(上)
    代谢组学文献分享:地中海饮食、血浆代谢组和心血管疾病风险
    rem响应式布局
    最长递增子序列问题(你真的会了吗)
    6.基于蜻蜓优化算法 (DA)优化的VMD参数(DA-VMD)
    4.Spring Boot
    点成分享 | 微流控技术集成系统的应用
    消息队列的模拟实现(二)
    【2022牛客多校5 A题 Don‘t Starve】DP
    【Qt炫酷动画】demo02-仿苹果对话框淡入淡出的动画
  • 原文地址:https://blog.csdn.net/m0_54674275/article/details/127633022