码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【软考】8.2 编译程序基本原理/文法/正规式/有限自动机


    《编译程序基本原理》

    • 编译过程
    1. 词法分析: 针对单词;输入是字符;读的是字符流;
    2. 语法分析: 针对语句;读的是记号流,即词法分析产生的一个个单词
    3. 语义分析(针对语句含义)

    a. 静态语义错误(编译阶段)
    b. 动态语义错误(运行阶段)

    1. 中间代码和目标代码(可跨平台)
    2. 代码优化
    3. 目标代码生成(不可跨平台)
      在这里插入图片描述
      在这里插入图片描述
    • 中间代码
    • 常见:后缀式(逆波兰式)、三元式(三地址码)、四元式、树
    • 表达式采用逆波兰式表示时,利用 栈 进行求值
    • 后缀表达式的简单求法:从左到右开始先把表达式加上括号,再依次把运算符加到本层次的括号后面
      在这里插入图片描述
    • 给中缀表达式求后缀:
      在这里插入图片描述

    《文法定义》

    • 文法(编译阶段)
    • “ + ”:正则闭包,不含空串
    • “ * ”:闭包,含空串
      在这里插入图片描述
      在这里插入图片描述
    • E ——> T+T ——> T:只考虑符号,只看逻辑运算
    • E=>E+T =>T+T =>T+T * F =>F + F * F =>N + -F * N =>N + -N * N
    • 所以符合答案的2 + -3 * 4
      在这里插入图片描述

    《正规式》

    • 带“ * ”包含空串,无“ * ” 不包含空串
      在这里插入图片描述
    • 闭包包含空串,正则闭包不包含空串在这里插入图片描述
      在这里插入图片描述

    《有限自动机》

    • 确定的有限自动机(DFA):五元组
    • 不确定的有限自动机(NFA)
    • 五元组:
    • 一个环(开始),两个环(结束)
      在这里插入图片描述
      在这里插入图片描述

    在这里插入图片描述

    • DFA和NFA的转换

    1. 看状态图上的转换条件是否都有
    2. 先分析状态图的头尾,再分析中间

    • 转换条件:S1 —0—> S4,S2 —空串—> S3
    • 头尾:0 0
      在这里插入图片描述

    《语法分析方法》

    在这里插入图片描述

  • 相关阅读:
    vue3 中 ref、toRef、toRefs 和 reactive 的区别
    掌握Go语言:深入encoding/gob包的高效数据序列化
    小程序上车,车载小程序的信息安全是否可靠?
    CF981G Magic multisets
    Android编程之Kotlin技巧与诀窍:提升代码可读性
    【计算机网络】数据链路层(二)—— 差错控制
    【图解RabbitMQ-6】说说交换机在RabbitMQ中的四种类型以及使用场景
    聊一聊被 .NET程序员 遗忘的 COM 组件
    多次复制Excel符合要求的数据行:Python批量实现
    DECLARE_DYNAMIC提示缺少显示类型指定
  • 原文地址:https://blog.csdn.net/weixin_48348920/article/details/133690043
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号