【全网最强】从头开始开发一个C语言编译器,从基础到实现!!!

3.6万
关注
正在缓冲...
00:00 / 00:00
自动
    倍速
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    100
    更多播放设置
    播放方式
    视频比例
    其他设置
    -人正在看
    已装填 0 条弹幕
    自动平衡不同视频间的音量大小
    平衡音量同时保留更多声音细节
    关闭音量均衡
    开启画中画
    宽屏模式
    网页全屏
    进入全屏 (f)
    关闭弹幕 (d)
    视频底部15%部分为空白保留区
    特殊颜色、运动形式的弹幕
    反馈
      713
      278
      3116
      124
      本课程我们将要编译的 C 源文件加载到内存中。我们创建一个词法分析器来对源输入进行词法分析,它将源代码转换为我们的编译器可以轻松理解的一堆标记。然后,我们通过解析器传递令牌以生成抽象语法树。AST 以逻辑方式描述 C 程序,使我们的编译器更容易理解。例如,对于表达式 50 + 20,您最终将得到一个根表达式节点,该节点具有值为 50 的左操作数和一个具有值为 20 的节点的右操作数。以这种方式分解问题可以更轻松地创建编译器。
      资料领取=关注后看消息,小窗私信。扣“666”领取视频课件笔记代码、免费答疑学习、技术问题。
      弹幕列表
      弹幕列表
      屏蔽设定
      高级弹幕
      弹幕列表填充中...
      视频选集
      (1/100)
      自动连播
      1 - Introduction
      05:13
      2 - Overview Of The Course
      08:45
      3 - Installation And Setup
      01:24
      4 - Preparing our project
      26:34
      5 - What is Lexical Analysis
      06:52
      6 - Creating our token structures
      06:39
      7 - Preparing Our Lexer
      19:10
      8 - Creating a number token
      27:25
      9 - Creating a string token
      04:47
      10 - Creating a operator token
      28:07
      11 - Creating a symbol token
      04:46
      12 - Creating a identifier token
      05:12
      13 - Creating a keyword token
      05:51
      14 - Creating a new line token
      01:19
      15 - Creating a comment token
      07:19
      16 - Handling quotes in the Lexer
      05:37
      17 - Implementing Hexadecimal Numbers
      08:51
      18 - Implementing Binary Numbers
      04:09
      19 - Dealing with the parentheses buffer
      05:53
      20 - Creating tokens outside of the input file
      05:42
      21 - Creating number types
      03:22
      22 - Finalizing the lexer
      00:52
      23 - What is parsing
      05:02
      24 - Creating our parser structures
      06:06
      25 - Writing our parser template
      06:05
      26 - Creating our node file
      08:00
      27 - Creating Our First Node
      14:20
      28 - Creating an expression node
      22:03
      29 - Dealing with precedence in expressions Part 1
      12:28
      30 - Dealing with precedence in expressions Part 2
      21:20
      31 - Dealing with precedence in expressions Part 3
      02:44
      32 - Creating an identifier node
      01:45
      33 - Implementing datatypes and keywords Part 1
      17:24
      34 - Implementing datatypes and keywords Part 2
      18:00
      35 - Implementing datatypes and keywords Part 3
      16:57
      36 - Implementing datatypes and keywords Part 4
      07:56
      37 - Understanding scopes
      06:42
      38 - Implementing the scopes
      21:23
      39 - Understanding Symbol Resolution
      03:20
      40 - Implementing The Symbol Resolver
      17:38
      41 - Implementing datatypes and keywords Part 5
      04:44
      42 - Implementing Variables Part 1
      16:57
      43 - Implementing Variables Part 2
      08:47
      44 - Implementing Variables Part 3
      21:01
      45 - Understanding Array Declarations
      03:52
      46 - Implementing the calculation of array sizes
      05:27
      47 - Implementing Structures Part 1
      10:35
      48 - Implementing Structures Part 2
      01:39
      49 - Implementing Bodys Part 1
      19:29
      50 - What is padding and alignment
      04:28
      51 - Implementing datatype size functions
      06:52
      52 - Implementing variable size functions
      05:18
      53 - Implementing Alignment And Padding Functions
      14:03
      54 - Implementing Bodys Part 2
      12:29
      55 - Implementing Bodys Part 3
      08:26
      56 - Scope offsets explained
      11:35
      57 - Implementing parser scope entities and functionalities
      04:18
      58 - Implementing the variable node scope offsets Part 1
      17:00
      59 - Implementing the variable node scope offsets Part 2
      02:35
      60 - Implementing the variable node scope offsets Part 3
      07:08
      61 - Pushing variables to the scope
      01:36
      62 - Implementing Bodys Part 4
      15:14
      63 - Implementing Bodys Part 5
      05:40
      64 - Implementing Structures Part 3
      17:47
      65 - Implementing Structures Part 4
      08:42
      66 - Initializing our symbol resolver
      01:26
      67 - Testing our structure functionality
      02:34
      68 - Error checking our structures
      04:19
      69 - Project Cleanup
      02:31
      70 - Understanding Functions
      07:33
      71 - Implementing the function structures
      04:56
      72 - Parsing Functions
      23:01
      73 - Parsing function arguments
      09:17
      74 - Dealing with upward stacks
      03:35
      75 - Changing the parsing of identifiers
      00:36
      76 - Res 0 is missing
      01:01
      77 - Implementing expression parentheses
      14:31
      78 - Implementing IF statements
      09:50
      79 - Implementing Else And Else If
      06:32
      80 - Fixing some compiler warnings
      01:39
      81 - Implementing the return statement
      04:18
      82 - Implementing for loops
      11:02
      83 - Implementing while loops
      04:10
      84 - Implementing Do While Loops
      03:28
      85 - Implementing switch statements
      13:24
      86 - Implementing continue and break
      03:36
      87 - Implementing labels
      05:17
      88 - Implementing goto
      03:44
      89 - Implementing switch cases
      04:27
      90 - Implementing tenaries
      04:57
      91 - Implementing commas
      02:00
      92 - Implementing array brackets
      03:17
      93 - Implementing casts
      06:00
      94 - Case indexes or our register case function
      00:54
      95 - Understanding Fixups
      04:30
      96 - Creating our fixup core functionality
      14:09
      97 - Integrating our fixup functionality into the parser
      07:08
      98 - Parsing forward declarations
      02:04
      99 - Parsing unions
      08:24
      100 - Adjusting the function stack size
      01:01
      客服
      顶部
      赛事库 课堂 2021拜年纪