Questions tagged «syntax»

语法是指一组规则,这些规则定义了如何用语言编写结构正确的程序。它显然不处理程序的含义或解释。

2
使用方括号作为数组元素的习惯是如何发展的?
许多编程语言都使用该语法a[i]来引用i数组,序列或向量的'th元素a-特别是C和Pascal(从1960年代末至1970年代初)。另一方面,某些较早的语言(例如Fortran(1950年代))不使用此约定。另外,我学习了一些数学,数学家使用方括号作为间隔,下标用于数组和矩阵的下标(如果将数组视为非负整数的函数,则使用正则括号)。 因此,我的问题是:用于数组下标的方括号在哪里/如何/在什么情况下发展?由谁开发? 注意:这个问题完全不是关于在C中使用大括号的问题。
11 history  array  syntax 

2
为什么Forth的灵活性使语法不适合它?
我最近承担了编写基于堆栈的编程语言的任务。但是,在开始设计语言之前,我认为阅读和尝试现有的基于堆栈的语言是一个好主意。 这把我带到了这篇文章的主题。我正在阅读有关Forth的Wikipedia文章,Forth是一种使用后缀样式表达式的基于堆栈的语言。在文章中,我看到了以下语句: Forth的灵活性使静态BNF语法不合适,并且它没有整体编译器。扩展编译器只需要写一个新词,而不需要修改语法和更改基础实现。 据我了解,在Forth术语中,“单词”一词基本上与“子例程”同义。鉴于此,上述说法似乎很奇怪。为什么在Forth中创建新功能的能力会导致Forth的正式语法不合适?为什么需要为定义的每个新子例程重新编写语法?在环境中写一个新单词如何构成扩展编译器?上面的陈述似乎类似于说正式语法不适合Python,因为您可以定义新函数。 实际上,我决定尝试为下面的Forth的一个简单子集编写BNF样式语法: program ::= stmt+ stmt ::= func | expr func ::= ':' expr+ ';' expr ::= INTEGER | word word ::= ('+' | '-' | '*' | '/' ) 上面的语法似乎涵盖了Forth语句的有效子集,并且似乎很难扩展到涵盖Forth语言中的所有有效语句。此外,如果编译器的解析器实现了上述语法,我将看不到如何扩展该编译器。编译器只会在其环境中添加任何新词。仅环境被更改。似乎以上来自Wikipedia的摘录似乎正在将构成编译器(不会更改)的下划线代码与编译器的环境(确实会更改)进行混合。 总而言之,为什么福斯(Forth)定义新词(子例程)的敏捷性不适合书面语法?

6
可选分号
通常,在通用命令式语言中,分号作为语句分隔符是必需的,或者是完全不允许使用的(例如C和Python)。 但是,某些语言(例如JavaScript)允许您选择不使用分号来分隔语句,而支持其他分隔符(例如换行符)。 这背后的设计决策是什么?我知道在同一行上编写多个语句时,分号是必不可少的,但是还有其他理由使分号成为强制性的(除了C之后)?


4
为什么科学编程语言如此怪异?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 在我看来,与通用语言相比,用于科学和工程的编程语言一直很奇怪。我脑海中浮现出一些例子: 在Matlab中,每个函数都必须放在单独的文件中 在R中,<-是赋值运算符,与几乎所有其他语言中的=相对 Matlab,R,Julia等都被1索引 Matlab使用%进行注释,而不是标准的#或// 当然,这些语言都具有几种设计功能,实际上使它们更易于用于科学应用,例如更自然的矩阵符号。尽管如此,他们全都莫名其妙地做出了所有这些奇怪的选择,这些选择并没有使任何事情变得容易,并且如果语言设计者只是选择做其他99%的语言所做的事情,就很容易避免。是供应商锁定的原因吗?缺乏与更广泛的软件开发社区的联系?还有吗 我阅读了此主题,但并没有找到令人满意的解释。仅仅因为R被设计为科学语言并不意味着它必须完全忽略约定并使用<-代替=。

1
Haskell记录语法让我感到不舒服
大多数Haskell语法具有纯净之美。但是记录语法看起来很丑。真不舒服 感觉与C有某种混合。它需要逗号和花括号。Haskell具有基于行的制表符分隔。因此,它看起来比原来要求的太冗长。为什么以这种方式设计?
9 syntax  haskell 

8
语法糖的严格定义?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 在语言圣战中,人们似乎不断地贬低他们认为不是特别有用的任何功能,例如“仅是语法糖”。在这些辩论中,“真实特征”与“句法糖”之间的界线往往变得模糊。您认为语法糖的合理而明确的定义是什么,它避免将其定义为说话者/作者没有用的任何功能?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.