T 语言语法设计(预审稿)
欢迎吐槽
一、 字面量
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();
;
T 语言语法设计(预审稿)的更多相关文章
- 2018-02-04 AppleScript类自然语言与非英语语法设计
最早知晓是之前C#中文版的github讨论里提到了AppleScript有多语言版. 昨天想起, 觉得它毕竟是为数不多(仅有的?)大公司开发的非英语语法的编程语言, 不禁好奇它的前世今生. 于是作了一 ...
- L脚本语言语法手冊 0.10版
L脚本语言语法手冊 0.10版 简 介 L脚本语言是一个轻量级的,旨在接近自然语言的编程语言,眼下支持在中文.英文基础上的编程.并可扩展为随意语种.L脚本语言的语法结构简单.程序结构相对 ...
- Go语言语法说明
Go语言语法说明 go语言中的go func(){}() 表示以并发的方式调用匿名函数func 深入讲解Go语言中函数new与make的使用和区别 前言 本文主要给大家介绍了Go语言中函数new与ma ...
- c++学习书籍推荐《C++语言的设计与演化》下载
百度云及其他网盘下载地址:点我 编辑推荐 <C++语言的设计与演化>由C++语言的设计者Bjarne Stroustrup著就,是一本阐述C++语言的设计及开发过程的无可争辩的内情手册.S ...
- PL真有意思(二):程序设计语言语法
前言 虽然标题是程序语言的语法,但是讲的是对词法和语法的解析,其实关于这个前面那个写编译器系列的描述会更清楚,有关语言语法的部分应该是穿插在整个设计当中的,也看语言设计者的心情了 和英语汉语这些自然语 ...
- JavaScript笔记 – 程序语法设计
一.基础语法设计 JavaScript是可以与HTML标记语言混合.用于网页交互式的解释型脚本语言.由国际标准ECMAScript提供核心语言功能.文档对象模型(DOM)提供访问和操作网页内容的方法和 ...
- Neo4j-Cypher语言语法
Neo4j-Cypher语言语法 梦飞扬 2018-03-15 264 阅读 Neo4j 本文是记录Neo4j图数据库中实用的Cypher语言语法. Cypher是什么 "Cypher&qu ...
- 学写PEP,参与Python语言的设计
如果你为Python写了一篇PEP,这篇PEP成功的被Python指导委员会接受了,那么以后你在吹牛皮的时候你就可以说我主导了Python语言某个特性的设计工作. -- 跬蟒 我就问你主导Python ...
- ANTLR 语法设计
下面学习如何编写语法. 如何定义语法规则 一种语言模式就是一种递归的语法结构. 我们需要从一系列有代表性的输入文件中归纳出一门语言的结构.在完成这样的归纳工作后,我们就可以正式使用ANTLR语法来表达 ...
- Go语言语法汇总(转)
Go语言语法汇总 分类: 技术2013-09-16 14:21 3007人阅读 评论(0) 收藏 举报 go语言golang并发语法 目录(?)[+] 最近看了看GoLang,把Go语言的语法 ...
随机推荐
- 利用 Page Visibility API 优化网页性能与用户体验
在现代 Web 开发中,用户可能会频繁切换标签页,或让网页处于后台运行.为了避免不必要的资源浪费并提升用户体验,合理利用 Page Visibility API 可以在页面不可见时暂停或减少资源的消耗 ...
- 五行强度得分_喜用神api免费接口_json数据八字五行强弱接口
本API接口基于深厚的八字学原理,为用户提供详尽的五行(金.木.水.火.土)强弱分析.五行打分评估,以及精准的喜用神判断.用户只需输入自己的八字信息,即可获得全面而深入的命理解读. 一.核心功能 ...
- USB总线-Linux内核USB3.0 Hub驱动分析(十四)
1.概述 USB Hub提供了连接USB主机和USB设备的电气接口.USB Hub拥有一个上行口,至少一个下行口,上行口连接上一级的Hub的下行口或者USB主机,连接主机的为Root Hub,下行口连 ...
- 何为ORM框架?和ADO.NET 对比
百度:ORM(Object Relational Mapping)框架采用元数据来描述对象与关系映射的细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中.简单理解为一种框架的格式 . 只 ...
- 分享几个实用且高效的EF Core扩展类库,提高开发效率!
前言 今天大姚给大家分享3款开源且实用的EF Core扩展类库,希望能帮助你在使用 EF Core 进行数据库开发变得更加高效和灵活,提高开发效率. EF Core介绍 Entity Framewor ...
- Office365常用的命令(持续更新中)
Office365常用的命令(持续更新中) 持续更新中............. Enable-ExchangeCertificate -Thumbprint B9C93420E7BEE46C1CD2 ...
- 云原生周刊:Meshery v0.70 发布 | 2024.1.22
开源项目推荐 flux-cluster-template 该项目用于部署由 Flux.SOPS.GitHub Actions.Renovate.Cilium 等支持的 Kubernetes 集群,专注 ...
- KubeSphere 社区双周报 | FluentBit 新增 tcp 输入插件 | 2023.09.29-10.12
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- Unreal RecastNavigation 开源项目详解
0 前言 Recastnavigation是一个游戏AI导航库,像Unity,UE引擎中都集成了这个开源项目, HALO中使用的也是这个开源库.导航最重要的就是为NPC寻路,以及其他的寻路需求. 需要 ...
- Linux Ubuntu 安装Python独立的不同版本
由于Ubuntu系统默认的Python版本基本为3.5.2,老掉牙的版本了,很多功能语法不可以使用,删除也并不好操作.所以不如新装一个最新的版本.速度快,操作简单,最重要的是使用只需要键入python ...