码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • vue源码笔记之compiler编译器


    一、compiler过程

    compiler过程就是把源代码(template)转换为目标代码(render)
    三个核心步骤:

    • 解析(parse):template模版生成AST
    • 转化(transform):AST转换为Javascript AST
    • 生成(generate):通过Javascript AST生成render
      AST: 抽象语法树,就是将代码通过一种对象的方式存储下来

    二、解析

    有限状态机: 官方意思是:有限个状态以及在这些状态之间的转移和动作等行为的数据计算模型
    主要三个特征为:

    • 状态总数有限
    • 任一时刻,一定只处于一种状态
    • 某种条件下,一定会从一种状态转换为另一种状态

    举个🌰:

    hello world

    该模版主要包含状态为开始标签状态,文本状态,结束标签状态,当前处理的只能是一个状态
    通过有限状态机会生成一些token,再通过从上到下扫描token,借用栈,生成一个AST树

  • 相关阅读:
    Linux家目录变成了-bash-4.2$
    Android 11 IP白名单功能
    composer update抛出异常的处理
    【C语言拓展提升】类型转换、内存分区
    在别人眼中,pmp有什么作用?
    Maven生命周期与插件
    手机无人直播软件在苹果iOS系统中能使用吗?
    GD32Pack包下载地址
    使用matplotlib画k线(2条k线同列)----附python源码
    DDIA读书笔记第八章——分布式系统的麻烦
  • 原文地址:https://blog.csdn.net/zhongqw_00/article/details/134428283
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    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号