Skip to main content

Typescript编译原理 4.8.4

编译部分位于 src/compiler ⽬录下

其中分为以下⼏个关键部分:

Scanner 扫描器( scanner.ts )

扫描所有⽂件,根据 import 或者 ///< reference path=... />语法找出有哪些⽂件需 要被编译,扫描过程类似于 node 的⽂件查找过程。

Parser 解析器( parser.ts )

将⽂件内容⽣成抽象语法树,树的节点称为 node。

Binder 绑定器( binder.ts )

为有命名的实体 node ⽣成对应的 symbol,对于相同名称的 node,⽐如名称相同 的 class 和 namespace 会共⽤⼀个 symbol

Checker 检查器( checker.ts )

TypeChecker 是 TypeScript 类型系统的核⼼,它为 symbol ⽣成相应的类型信息DRONE_SECRET_SECRET

Emitter 发射器( emitter.ts )

输出⽂件,可能是 .js 、 .d.ts 、 .js.map 三种

1

源码 to scanner(扫描器) to token数据流 to parser(解析器) to AST(抽象语法树)

docker run \
--volume=/var/run/docker.sock:/var/run/docker.sock \ --volume=/var/lib/drone:/data \ --env=DRONE_GITHUB_SERVER=https://github.com \ --env=DRONE_GITHUB_CLIENT_ID=0f646090f08ce5a7bde8 \ --env=DRONE_GITHUB_CLIENT_SECRET=df8d3cecef0ff3bb3e9c4c48356e2f9b127ca789 \ --env=DRONE_RUNNER_CAPACITY=2 \ --env=DRONE_SERVER_HOST=127.0.0.1 \ --env=DRONE_SERVER_PROTO=http \ --env=DRONE_TLS_AUTOCERT=true \ --publish=80:80 \ --publish=443:443 \ --restart=always \ --detach=true \ --name=drone \ drone/drone:1.0.0-rc.6

curl -L https://github.com/docker/compose/releases/download/2.14.0/docker-compose-`uname -s-uname -m` > /usr/local/bin/docker-compose