码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 编译原理基本概念


    文章目录

    • 一、编译过程与T形图
      • 1.编译过程
      • 2.T形图
    • 二、自动机基础
      • 1.文法定义:G=(VT,VN,P,S)
      • 2.推导与规约
      • 3.句型与句子
      • 4.语言
      • 5.文法分类
        • (1)0型文法
        • (2)1型文法(上下文有关语言)
        • (3)2型文法(上下文无关文法)
        • (4)3型文法
        • (5)四种文法关系
      • 6.上下文无关文法(CFG)分析树
        • (1)建树规则
        • (2)衍生概念
      • 7.二义性文法

    一、编译过程与T形图

    1.编译过程

    从宏观上讲就是由高级语言生成机器码的过程。
    在这里插入图片描述

    2.T形图

    在这里插入图片描述

    二、自动机基础

    1.文法定义:G=(VT,VN,P,S)

    字母表:有穷符号集合。
    乘积:连接。
    正闭包与克林闭包:克林闭包多了一个空串。(所有不同长度的字符串组成的集合)
    G=(VT,VN,P,S)

    • VT:终结符,a,b,c,id…
    • VN:非终结符,通常用来描述终结符,E,T…
    • P:产生式集合,描述将终结符和非终结符组合成串的方法。
    • S:开始符号,表示的是该文法中最大的语法成分。

    2.推导与规约

    在这里插入图片描述
    +表示经过正数次推导,*表示经过若干次推导(多了一个0次)。

    3.句型与句子

    在这里插入图片描述
    不包含非终结符的是句子,包含的是句型,句子是一个特殊的句型。

    4.语言

    由文法开始符号推导出所有的句子构成的集合称为该文法生成的语言。

    5.文法分类

    是通过对产生式内容的限制来划分的。

    (1)0型文法

    无限制文法,a->b

    ,a中至少有一个非终结符。

    (2)1型文法(上下文有关语言)

    a->b

    a中至少一个非终结符
    且|a|<=|b|

    (3)2型文法(上下文无关文法)

    a->b

    a中至少一个非终结符
    |a|<=|b|
    a只能是非终结符

    (4)3型文法

    a->b

    a中至少一个非终结符
    |a|<=|b|
    a只能是非终结符
    右线性:(a->w)||(a->wB) 左线性:(a->w)||(a->Bw)

    (5)四种文法关系

    在这里插入图片描述

    6.上下文无关文法(CFG)分析树

    我们只对2型文法做研究。

    (1)建树规则

    根节点符号为文法开始符号。
    子树根节点为产生式左侧,子节点从左到右构成产生式右侧。
    叶节点既可以是终结符,也可以是非终结符。

    (2)衍生概念

    边缘:从左到右排列叶子节点,得到符号串称为这棵树的边缘。
    短语:分析树中的每一个子树的边缘称为该句型的一个短语。
    直接短语:子树只有父子两代节点,它的边缘为一个直接短语。
    在这里插入图片描述

    7.二义性文法

    形成多棵分析树的文法是二义性文法,我们要避免。有一个充分条件,如果文法满足,则为一个二义性文法。

  • 相关阅读:
    支付宝微信支付业务流程图
    【C++】特殊类的设计
    Java面试题之初入Java世界
    Java虚拟机面试问题
    sql事务-1
    Android 如何在Service中使用ViewModel
    Kubernetes 深入理解Kubernetes(二) 声明组织对象
    怎样将几个pdf合并?
    vue3打包报错: “@charset“ must be the first rule in the file“
    【HTML学生作业网页】基于HTML+CSS+JavaScript仿南京师范大学泰州学院(11页)
  • 原文地址:https://blog.csdn.net/qq_51492202/article/details/127794998
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号