编程语言在其语法中不允许的东西

The*_*ask 1 programming-languages compiler-theory

有些东西我从未在任何编程语言中看到,我会知道为什么.我相信这些东西可能有用.如果你指出,也许解释会很明显.但是我们走了.

为什么不是10²,在语法上有效?有时,我们希望通过使用这样的符号来表达(就像在论文中一样)而不是预先计算的值(有时,这是一个很大的数字,并且,当第一次看到时会使一些困难,我相信它的目的是_在D和Java编程语言中)或仍然为此调用数学函数.当然,我说编译器将此变量的值替换为计算值,不要在运行时将其保留.

-在indentifier.为什么 - 对我int name-size = 14;不喜欢_?(只是lisp方言),并不意味着难以理解.或者这个"限制"属于计算机的字符集?

当有人回答我的问题时,我会很高兴.此外,如果您有另一个要求的指针,只需编辑我的答案并在其版本上发布注释或发布为评论.

Jon*_*eet 6

好的,所以你给出的两个具体问题:

  1. 10 2 - 您希望如何输入?除了标识符之外,编程语言倾向于坚持使用ASCII.请注意,您可以使用double x = 10e2;Java和C#...但e形式只适用于浮点文字,不是整数.

    正如在评论中指出,支持一些语言 -但我怀疑它只是没有被认为足够有用,值得额外的复杂性在多数.

  2. 带有-in 的标识符会导致使用中缀运算符的语言明显模糊:

    int x = 10;
    int y = 4;
    int x-y = 3;
    int z = x-y;
    
    Run Code Online (Sandbox Code Playgroud)

    z等于3(的值x-y变量)或者是它等于6(减去的值yx)?显然,你可以提出关于会发生什么的规则,但是通过-从标识符中的有效字符列表中删除,可以消除这种歧义.使用_或仅使用casing(nameSize)比在语言中提供额外的规则更简单.无论如何,你会在哪里停下来?那么.作为标识符的一部分,或者+

一般来说,您应该意识到语言很容易受到太多功能的影响.特别是C#团队对于使用新功能以使其成为语言的高度非常开放.必须设计,指定,实现,测试和记录每个新功能,然后开发人员必须了解它,如果他们要了解使用它的代码.这并不便宜,所以优秀的语言设计师自然是保守的.