一个编程语言的语法哪些是真语法哪些是语法糖?

2022-04-08 15:45:27 +08:00
 TWorldIsNButThis

一个编程语言的语法哪些是真语法哪些是语法糖? 基本的声明、控制流关键字肯定是语法,那在此之上的呢

1630 次点击
所在节点    问与答
13 条回复
anjianshi
2022-04-08 16:25:00 +08:00
可以用更基础、更通用的语法代替的,都是语法糖?
例如 "a += 1" 可以用 "a = a + 1",那么 += 就可以算是语法糖
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
GeruzoniAnsasu
2022-04-08 16:36:29 +08:00
循环是 goto 的语法糖( doge
hvsy
2022-04-08 16:43:44 +08:00
图灵机了解一下
Chingim
2022-04-08 17:07:56 +08:00
@anjianshi 为什么不是后者是+=的语法糖呢
nba2k9
2022-04-08 17:12:11 +08:00
intellij 黄色感叹号提示你可以缩减的部分
cmdOptionKana
2022-04-08 17:20:35 +08:00
"a += 1" 与 "a = a + 1" 一般不说谁是谁的语法糖,因为差别太小了,很难分辨谁更“甜”,只能说提供了两种写法。(另外,隐约记得这两者也不是完全等价,某些语言的具体实现是 a += 1 稍稍高效一点)
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 代替
xing7673
2022-04-08 17:28:13 +08:00
我是这么理解的,只有编译器能解释而无法用本身语言解释的语法是真语法,否则就是语法糖。
xing7673
2022-04-08 17:29:11 +08:00
比如泛型
pkookp8
2022-04-08 18:16:56 +08:00
int 是不是 char 的语法糖?
hez2010
2022-04-09 01:20:39 +08:00
一门语言只需要支持顺序、判断和跳转就能表达任何逻辑了,那照这么说其他任何特性全都是语法糖。
GuuJiang
2022-04-09 10:59:02 +08:00
语法糖是可替代的,也就是说你可以选择不使用语法糖,而直接写等价的别的语句来达到同样的目的
而语法是不可替代的,没办法在不使用该语法的情况下改为其他等价的语句

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/845729

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX