Programming languages 编程语言在其语法中不允许的东西
有些东西我在任何编程语言中都看不到,我知道为什么。我相信这些东西可能有用。Wll,也许当你指出的时候,解释会很明显。但是我们走吧 为什么10²,的语法无效? 有时,我们希望通过使用这种表示法(就像在论文中一样)来表示,而不是使用预先计算的值(有时,这是一个很大的数字,而且,当第一次看到它时,我相信它的目的是uu在D和Java编程语言中)或仍然为此调用数学函数。当然,我要对编译器说,将这个变量的值替换为计算值,不要让它在运行时运行 标识符中的-。为什么对我来说,Programming languages 编程语言在其语法中不允许的东西,programming-languages,compiler-theory,Programming Languages,Compiler Theory,有些东西我在任何编程语言中都看不到,我知道为什么。我相信这些东西可能有用。Wll,也许当你指出的时候,解释会很明显。但是我们走吧 为什么10²,的语法无效? 有时,我们希望通过使用这种表示法(就像在论文中一样)来表示,而不是使用预先计算的值(有时,这是一个很大的数字,而且,当第一次看到它时,我相信它的目的是uu在D和Java编程语言中)或仍然为此调用数学函数。当然,我要对编译器说,将这个变量的值替换为计算值,不要让它在运行时运行 标识符中的-。为什么对我来说,intname size=14,不能
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#团队对于一个新特性进入语言的门槛有多高持开放态度。每个新特性都必须设计、指定、实现、测试、记录,然后开发人员必须了解它,如果他们想理解使用它的代码的话。这并不便宜,所以优秀的语言设计师自然是保守的。好的,那么您给出的两个具体问题是:
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
)比在语言中提供额外规则更简单。无论如何,你会在哪里停下来?作为标识符的一部分或+
如何我要说的是,我们坚持我们可以键入并达成一致的代码。这只是实现的问题(语言设计者如何编写语法和解析器)。例如,在某些语言中(例如in、COBOL和FORTH),破折号标识符非常好。@om-nom-nom:我知道这只是degsiner的选择。我想了解的是为什么。是的,我忘了这在listp dilect中是有效的:)我会记下这个注释并做另一个观察。问题是-也是一个运算符,例如,如果你有
int name,size代码>,指的是什么名称大小
?变量名称大小还是名称减去大小?这是一个讨论问题,在这里很难回答。因此,它不适合StackOverflow。(上面清楚地写着“基于你所面临的实际问题的实际的、可回答的问题”。)投票结束