一个编程语言的语法哪些是真语法哪些是语法糖? 基本的声明、控制流关键字肯定是语法,那在此之上的呢
1
anjianshi 2022-04-08 16:25:00 +08:00
可以用更基础、更通用的语法代替的,都是语法糖?
例如 "a += 1" 可以用 "a = a + 1",那么 += 就可以算是语法糖 |
2
woodensail 2022-04-08 16:33:10 +08:00
遇事不决问 wiki
语法糖(英语:Syntactic sugar )是由英国计算机科学家彼得·兰丁发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用。语法糖让程序更加简洁,有更高的可读性。 https://zh.wikipedia.org/wiki/%E8%AF%AD%E6%B3%95%E7%B3%96 |
3
GeruzoniAnsasu 2022-04-08 16:36:29 +08:00 2
循环是 goto 的语法糖( doge
|
4
hvsy 2022-04-08 16:43:44 +08:00 via Android
图灵机了解一下
|
6
nba2k9 2022-04-08 17:12:11 +08:00
intellij 黄色感叹号提示你可以缩减的部分
|
7
cmdOptionKana 2022-04-08 17:20:35 +08:00
"a += 1" 与 "a = a + 1" 一般不说谁是谁的语法糖,因为差别太小了,很难分辨谁更“甜”,只能说提供了两种写法。(另外,隐约记得这两者也不是完全等价,某些语言的具体实现是 a += 1 稍稍高效一点)
|
8
anjianshi 2022-04-08 17:22:04 +08:00
@Chingim 因为 x = y + z 这个语法比 x += y 更通用啊。
所有 x += y 格式的语句都可以用 x = x + y 代替 但是有部分 x = y + z 的语句没法用 x += y 代替 |
9
xing7673 2022-04-08 17:28:13 +08:00 via iPhone
我是这么理解的,只有编译器能解释而无法用本身语言解释的语法是真语法,否则就是语法糖。
|
10
xing7673 2022-04-08 17:29:11 +08:00 via iPhone
比如泛型
|
11
pkookp8 2022-04-08 18:16:56 +08:00 via Android
int 是不是 char 的语法糖?
|
12
hez2010 2022-04-09 01:20:39 +08:00 via Android
一门语言只需要支持顺序、判断和跳转就能表达任何逻辑了,那照这么说其他任何特性全都是语法糖。
|
13
GuuJiang 2022-04-09 10:59:02 +08:00 via iPhone
语法糖是可替代的,也就是说你可以选择不使用语法糖,而直接写等价的别的语句来达到同样的目的
而语法是不可替代的,没办法在不使用该语法的情况下改为其他等价的语句 |