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 三种
源码
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