V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
TWorldIsNButThis
V2EX  ›  问与答

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

  •  
  •   TWorldIsNButThis · 2022-04-08 15:45:27 +08:00 · 1607 次点击
    这是一个创建于 720 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    13 条回复    2022-04-09 10:59:02 +08:00
    anjianshi
        1
    anjianshi  
       2022-04-08 16:25:00 +08:00
    可以用更基础、更通用的语法代替的,都是语法糖?
    例如 "a += 1" 可以用 "a = a + 1",那么 += 就可以算是语法糖
    woodensail
        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
    GeruzoniAnsasu
        3
    GeruzoniAnsasu  
       2022-04-08 16:36:29 +08:00   ❤️ 2
    循环是 goto 的语法糖( doge
    hvsy
        4
    hvsy  
       2022-04-08 16:43:44 +08:00 via Android
    图灵机了解一下
    Chingim
        5
    Chingim  
       2022-04-08 17:07:56 +08:00 via iPhone
    @anjianshi 为什么不是后者是+=的语法糖呢
    nba2k9
        6
    nba2k9  
       2022-04-08 17:12:11 +08:00
    intellij 黄色感叹号提示你可以缩减的部分
    cmdOptionKana
        7
    cmdOptionKana  
       2022-04-08 17:20:35 +08:00
    "a += 1" 与 "a = a + 1" 一般不说谁是谁的语法糖,因为差别太小了,很难分辨谁更“甜”,只能说提供了两种写法。(另外,隐约记得这两者也不是完全等价,某些语言的具体实现是 a += 1 稍稍高效一点)
    anjianshi
        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 代替
    xing7673
        9
    xing7673  
       2022-04-08 17:28:13 +08:00 via iPhone
    我是这么理解的,只有编译器能解释而无法用本身语言解释的语法是真语法,否则就是语法糖。
    xing7673
        10
    xing7673  
       2022-04-08 17:29:11 +08:00 via iPhone
    比如泛型
    pkookp8
        11
    pkookp8  
       2022-04-08 18:16:56 +08:00 via Android
    int 是不是 char 的语法糖?
    hez2010
        12
    hez2010  
       2022-04-09 01:20:39 +08:00 via Android
    一门语言只需要支持顺序、判断和跳转就能表达任何逻辑了,那照这么说其他任何特性全都是语法糖。
    GuuJiang
        13
    GuuJiang  
       2022-04-09 10:59:02 +08:00 via iPhone
    语法糖是可替代的,也就是说你可以选择不使用语法糖,而直接写等价的别的语句来达到同样的目的
    而语法是不可替代的,没办法在不使用该语法的情况下改为其他等价的语句
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1247 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:57 · PVG 01:57 · LAX 10:57 · JFK 13:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.