首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在设计一种编程语言时,设计者是否完全指定了它的操作/表示语义?

在设计一种编程语言时,设计者是否完全指定了它的操作/表示语义?
EN

Stack Overflow用户
提问于 2019-01-18 07:00:18
回答 2查看 70关注 0票数 1

对于出现在POPLICFP等学术会议上的语言,通常会很好地指定语言的语义(以operationaldenotational语义的形式)。我试图为流行的语言(例如,C、Python、JavaScript)找到文档化的语义,但是没有找到。

当开发具有“重”特性的语言(相对作为概念证明而设计的语言)时,这些语言的设计者(或委员会成员)是否会在不指定其语义的情况下添加特性?大多数流行的编程语言都是这种情况吗?

如果是这样的话,我认为这实际上是有意义的,因为并不是每个想要为开发语言做出贡献的人都需要成为PL研究员。但我想知道在现实世界中存在什么样的权衡。

EN

回答 2

Stack Overflow用户

发布于 2019-01-24 20:17:29

一些动态编程语言的语义正在出现,因为它们的语法核心是最小的,并且主要是由它们的库定义的(实际用于编程的语言比语法定义的语言要长得多)。示例如下:

  • LISP
  • PERL
  • TCL

一些语言定义了如此多的语法歧义,以至于语义最终是由特定的实现定义的。示例:

  • Early C++
  • C++ with STL
  • AG Natural

任何具有宏功能的编程语言,或者通常与宏预处理器一起使用的编程语言,最终都会通过使用的宏来重新定义语义(就像在特定于域的语言中一样)。允许在运行时更改解析行为的动态语言也是在运行时定义的。

在面向对象的语言(以及其他根据对象的类型进行调度的语言)中,表达式的语义取决于所涉及的对象的类型,而这些语义可能在很大程度上与内置类型和标准类型的等价表达式的语义不同。

票数 1
EN

Stack Overflow用户

发布于 2019-01-18 07:15:39

几乎所有的语言都是用诸如BNF这样的标准符号来定义的。This site has references to many

这在一定程度上是为了消除歧义并确保语法一致性。如果没有它们,将很难构建编译器或渲染器。

这部分内容进入了design of HTML5.2,它解释了一些推理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54245509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档