码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【编译原理】编译器前端


    前端 指的是编译器对程序代码的分析和理解过程,

    后端: 生成目标代码的过程

    词法分析:

    语法是由一个个token组成的,我们可以制定一些来区分每一个token,比如对于>, 既可能表示是表示GT,也可能表示的是GE

    这些规则也可以由词法分析器的生成工具来生成, 这些生成工具是基于一些规则来work的。

    这些规则用正则文法来表达,符合正则文法的表达式称之为正则表达式, 生成工具可以读入正则表达式,生成一种叫,"有限自动机"的算法

    有限自动机是有限个状态的自动机,当达到某个状态的时候,就会做某件事情,比如当你写了一个标识符,

    语法分析

    编译器的下一个阶段是语法分析,语法分析是在词法分析的基础上面识别出程序的语法结构,这个结构就是一个树状结构,是计算机容易理解和执行的。

    这棵树叫做抽象语法树, AST,树木的每一个节点是一个语法单元, 形成ast之后的好处就是,让计算机很容易去处理,一种非常直观的构造思路是自上而下进行分析。

    首先构造根节点,代表整个程序,之后向下扫描 Token 串,构建它的子节点, 当它看到一个 int 类型的 Token 时,知道这儿遇到了一个变量声明语句,于是建立一个“变量声明”节点;接着遇到 age,建立一个子节点,这是第一个变量;之后遇到 =,意味着这个变量有初始化值,那么建立一个初始化的子节点;最后,遇到“字面量”其值是 45。

    语义分析:

    语义分析是最后一步就是让计算机理解我们的真实意图,将一些模棱两可的地方给消除掉,同时我们会将这个属性进行标注,这样之后编译器就可以理解我们的真实意思了

  • 相关阅读:
    18.项目开发之前端项目搭建测试
    努力一周,开源一个超好用的接口Mock工具——Msw-Tools
    记录一些mac电脑重装mysql和pgsql的坑
    css盒子模型(框模型)属性
    多模态信息抽取(一)——融合知识图谱和多模态的文本分类研究(论文研读)
    Python_it_heima
    基于FPGA的softmax函数优化及实现
    【已解决】电脑设置notepad++默认打开txt
    Nodejs+vue+mysql网上药店购药系统 9h2k5
    项目九、无线组网
  • 原文地址:https://blog.csdn.net/user_2022_5_1/article/details/126462423
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号