惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
腾讯CDC
Jina AI
Jina AI
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
Apple Machine Learning Research
Apple Machine Learning Research
GbyAI
GbyAI
WordPress大学
WordPress大学
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
小众软件
小众软件
M
MIT News - Artificial intelligence
MyScale Blog
MyScale Blog
D
Docker
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
月光博客
月光博客
L
LangChain Blog
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - Franky
C
Check Point Blog
U
Unit 42
人人都是产品经理
人人都是产品经理

博客园 - xuld

语言开发笔记3 编译器:类型系统的架构设计 语言开发随笔2 关于产品设计的思考 TS 原理详细解读(6)--语法增量解析 程序员的学习方法 T语言开发笔记1 给萌新的 TS custom transformer plugin 教程——TypeScript 自定义转换器插件 TS 原理详细解读(7)绑定1-符号 TS 原理详细解读(5)语法2-语法解析 T 语言语法设计方案总结 TypeScript 源码详细解读(4)语法1-语法树 TypeScript 源码详细解读(3)词法2-标记解析 TypeScript 源码详细解读(2)词法1-字符处理 TypeScript 源码详细解读(1)总览 7年编程语言设计精华总结——写给想创造或正在创造一门新编程语言的同学 我为什么开发新语言 TypeScript 编译器源码研究(一) gitignore 规范 [讨论]是否将单元测试文件和源文件放在一起
T 语言语法设计(预审稿)
xuld · 2021-05-13 · via 博客园 - xuld

欢迎吐槽

一、 字面量

1. 数字字面量

0, 0xff, 0b10_01, .1

2. 字符串字面量

'x', "x\n\uffff\Uffffffff", `x{1}y`

3. 布尔和空字面量

true, false, null

4. 数组和对象字面量

[0, 1..8, 2...3, 3..-=1..1]

{x: 0, ...obj}

5. 函数字面量

x => x + 1

<T> (x: T, y) => { }

6. 类型字面量

<Float>0, <RegExp>'\w+', <X>[1, 2]

7. 标识符

x, \x, \0, _

二、 表达式

8. 算数运算表达式

+, -, *, /, mod, ^

9. 比较运算表达式

==, !=, <, >, <=, >=

10. 逻辑运算表达式

&, |, !

11. 空值运算表达式

??, !

12. 赋值运算表达式

=, +=, -=, *=, /=, &=, |=, ??=, ->

13. 更新表达式

++, --

14. 类型操作表达式

as, is, X<Y>

15. this 表达式和 super 表达式

this, super

16. 访问表达式

x.y, x?.y, x[y], x[^1, ^0]

17. 函数和构造函数调用表达式

fn(p: x, y)

new X()

18. 分支表达式

x ? y : z

x match {0 => 1, 1 => 0}

19. 遍历表达式

arr ~ sum

20. 括号表达式

(x)

三、 类型

21. 特殊类型

any, void

22. 数字字面量类型

0, 0xff, 0b10_01, .1

23. 字符串字面量类型

'x', "x\n\uffff\Uffffffff", `x{1}y`

24. 布尔和空字面量类型

true, false, null

25. 数组和对象字面量类型

[X, Y]

{x: X, y: Y}

26. 函数和构造函数字面量类型

(x: X) => Y

new() => X

27. 区间类型

1..10, 2...10

28. 标识符和成员访问类型

X, \X, X.Y, $import("path").X

29. 泛型和数组类型

X<Y>

X[]

30. 双目运算和单目运算类型

&, |, -

31. this 类型

this

32. 条件类型

X is infer T ? T : Y

33. 括号类型

(X)

四、 声明

34. 变量声明

x := 0;

x: number = 0;

35. 访问器声明

get accessor { return 0 }

set accessor { print(value) }

36. 函数声明

function fn<T>(x, y: T, z = 1, ...rest) => 0;

37. 类声明

class X: Y {

    field = 0;

    get accessor => 0

    set accessor { field = value; }

    new() { }

    method<T>(p: T) { }

    plus(p) { }

    explicit as Z() { }

}

38. 接口声明

interface X { }

39. 枚举声明

enum X { x, y = 1 }

40. 类型别名声明

type X = Y;

41. 扩展声明

extension X { }

42. 模块声明

module X { }

module "name" {}

五、 语句

43. 判断语句

if (x) { }

if (x) { } else { }

44. 循环语句

while (x) { }

45. 跳转语句

break;

continue;

return x;

yield x;

46. 异常语句

try { } catch { } finally { }

throw "Error";

47. 确认语句

assert true;

48. 表达式和空语句

fn();

;