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

Programming languages 编程语言在其语法中不允许的东西,programming-languages,compiler-theory,Programming Languages,Compiler Theory,有些东西我在任何编程语言中都看不到,我知道为什么。我相信这些东西可能有用。Wll,也许当你指出的时候,解释会很明显。但是我们走吧 为什么10²,的语法无效? 有时,我们希望通过使用这种表示法(就像在论文中一样)来表示,而不是使用预先计算的值(有时,这是一个很大的数字,而且,当第一次看到它时,我相信它的目的是uu在D和Java编程语言中)或仍然为此调用数学函数。当然,我要对编译器说,将这个变量的值替换为计算值,不要让它在运行时运行 标识符中的-。为什么对我来说,intname size=14,不能

有些东西我在任何编程语言中都看不到,我知道为什么。我相信这些东西可能有用。Wll,也许当你指出的时候,解释会很明显。但是我们走吧

为什么10²的语法无效? 有时,我们希望通过使用这种表示法(就像在论文中一样)来表示,而不是使用预先计算的值(有时,这是一个很大的数字,而且,当第一次看到它时,我相信它的目的是uu在D和Java编程语言中)或仍然为此调用数学函数。当然,我要对编译器说,将这个变量的值替换为计算值,不要让它在运行时运行

标识符中的-。为什么对我来说,
intname size=14,不能接受像ux(仅lisp方言)这样的-呢并不意味着不可读。或者这个“限制”是计算机字符集的属性


当有人回答我的问题时,我会非常高兴。另外,如果您还有其他问题要问,只需编辑我的答案,并在其版本上发布注释或作为评论发布。

好的,那么您给出的两个具体问题是:

  • 102-您希望如何键入此内容?编程语言倾向于对除标识符以外的所有标识符使用ASCII。请注意,您可以使用
    double x=10e2。。。但是
    e
    表单仅对浮点文本有效,而对整数无效

    正如在评论中所指出的,但我怀疑它并没有被认为足够有用,不值得在大多数情况下付出额外的复杂性

  • 在带有中缀运算符的语言中,带有
    -
    的标识符会导致明显的歧义:

    int x = 10;
    int y = 4;
    int x-y = 3;
    int z = x-y;
    
    z
    等于3(x-y
  • 变量的值)还是等于6(从
    x
    中减去
    y
    的值)?很明显,您可以提出关于将发生什么的规则,但是通过从标识符中的有效字符列表中删除
    -
    ,可以消除这种歧义。使用
    \uuu
    或仅使用大小写(
    nameSize
    )比在语言中提供额外规则更简单。无论如何,你会在哪里停下来?作为标识符的一部分或
    +
    如何


    一般来说,您应该意识到语言很容易受到太多特性的影响。特别是C#团队对于一个新特性进入语言的门槛有多高持开放态度。每个新特性都必须设计、指定、实现、测试、记录,然后开发人员必须了解它,如果他们想理解使用它的代码的话。这并不便宜,所以优秀的语言设计师自然是保守的。

    好的,那么您给出的两个具体问题是:

  • 102-您希望如何键入此内容?编程语言倾向于对除标识符以外的所有标识符使用ASCII。请注意,您可以使用
    double x=10e2。。。但是
    e
    表单仅对浮点文本有效,而对整数无效

    正如在评论中所指出的,但我怀疑它并没有被认为足够有用,不值得在大多数情况下付出额外的复杂性

  • 在带有中缀运算符的语言中,带有
    -
    的标识符会导致明显的歧义:

    int x = 10;
    int y = 4;
    int x-y = 3;
    int z = x-y;
    
    z
    等于3(x-y
    变量的值)还是等于6(从
    x
    中减去
    y
    的值)?很明显,您可以提出关于将发生什么的规则,但是通过从标识符中的有效字符列表中删除
    -
    ,可以消除这种歧义。使用
    \uuu
    或仅使用大小写(
    nameSize
    )比在语言中提供额外规则更简单。无论如何,你会在哪里停下来?作为标识符的一部分或
    +
    如何

  • 一般来说,您应该意识到语言很容易受到太多特性的影响。特别是C#团队对于一个新特性进入语言的门槛有多高持开放态度。每个新特性都必须设计、指定、实现、测试、记录,然后开发人员必须了解它,如果他们想理解使用它的代码的话。这并不便宜,所以优秀的语言设计师自然是保守的。

    二,。⁷

    1.617*10。ⁿ(13)

    显然是的。您可以修改ruby等语言(定义utf-8命名函数和monkey patch数值类)或实现额外的表达能力

    应该这样做吗

    你将如何输入这些字符

    你会用哪种unicode来表示,比如说,欧拉常数

    我要说的是,我们坚持我们可以键入并达成一致的代码。

    二,。⁷

    1.617*10。ⁿ(13)

    显然是的。您可以修改ruby等语言(定义utf-8命名函数和monkey patch数值类)或实现额外的表达能力

    应该这样做吗

    你将如何输入这些字符

    你会用哪种unicode来表示,比如说,欧拉常数


    我要说的是,我们坚持我们可以键入并达成一致的代码。

    这只是实现的问题(语言设计者如何编写语法和解析器)。例如,在某些语言中(例如in、COBOL和FORTH),破折号标识符非常好。@om-nom-nom:我知道这只是degsiner的选择。我想了解的是为什么。是的,我忘了这在listp dilect中是有效的:)我会记下这个注释并做另一个观察。问题是-也是一个运算符,例如,如果你有
    int name,size,指的是什么
    名称大小
    ?变量名称大小还是名称减去大小?这是一个讨论问题,在这里很难回答。因此,它不适合StackOverflow。(上面清楚地写着“基于你所面临的实际问题的实际的、可回答的问题”。)投票结束