自己动手用java写编译器 课时1 用java实现一个简易编译器1-词法解析入门 笔记

缘起

网易云课堂《自己动手用java写编译器》课时1 的笔记

ps: 博主 tyler_download 真乃神人也~ 用java写编译器,写操作系统内核.

分析

技术的发展日新月异,层出不穷. 不论是大数据,还是AI,这些听上去、看上去高大上的一逼的东西无不建立在三大基石之上.

  1. 编译原理
  2. 操作系统
  3. 计算机网络

这是所有软件技术的基石.

编译原理的实现者——编译器的作用就是将计算机无法理解的文本,转译成计算机能执行的机器指令. 虽然整个过程很庞杂,但是整个编译原理无非由2部分组成

  1. 词法分析
  2. 语法分析

本集讲解词法分析. 其实词法分析做的事情就是分割语句为若干有意义的字符串,然后给分割出来的字符串打标签

那问题来了,什么叫做有意义的? 标签又是什么?

例如,算术表达式

1
1+2*3+4

我们告诉计算机

  • 1、2、3、4是有意义的,我们给它们打上标签NUM_OR_ID

  • +是有意义的,我们给它打上标签PLUS

  • *是有意义的, 我们给它打上标签TIMES
  • ; 是有意义的, 我们给它打上标签SEMI

下面的demo是用于解析 1+2*3=4 这个算术表达式的. 照着作者写的. 但是加上了一些自己的注释。

DEMO

【1】https://github.com/yfsyfs/backend/tree/master/compiler/src/com/yfs/compiler