【问题标题】:Why a variable can't start with a number but can ends with it? [duplicate]为什么变量不能以数字开头但可以以数字结尾? [复制]
【发布时间】:2014-03-09 11:34:45
【问题描述】:

在许多语言(C#、Javascript、CSS 等)中,我无法声明此变量:

123test

但我可以这样声明:

test123

真正的原因是什么?

【问题讨论】:

标签: string variables numbers declaration


【解决方案1】:

它简化了解析器。它可以从令牌中的第一个字符判断它是标识符还是数字。

另外,浮点的语法可以是这样的:

123e45

这意味着 123x1045。如果标识符可以以数字开头,这可能会与变量混淆。

有些语言没有这个禁令,例如 Common Lisp。它的规则本质上是令牌是一个符号,除非它可以被解析为一个数字。由于它还允许自定义输入基数,因此它具有标记是数字还是符号取决于变量设置的属性(它还具有允许您以一种或另一种方式强制它的转义机制)。

【讨论】:

  • 如果您不必考虑大量(双关语)特殊情况,它基本上可以简化词法分析。您可以查看数字(可能是数字)是否后跟没有中间运算符的字母,但是您必须从上下文中确定 1111 或 123e45 是(先前声明的)变量名还是数字文字。将标记识别从词法分析推回句法甚至语义分析可能会变得相当混乱,因此仅限制变量名的格式会更容易。
【解决方案2】:

因为这样一串数字既是一个有效的标识符,也是一个有效的数字。

int 17 = 497;
int 42 = 6 * 9;
String 1111 = "Totally text";

@skiphoppy的回答。

更多信息:Why can't variable names start with numbers?

【讨论】:

  • 只要你在答案中注明是谁的答案就可以了。
猜你喜欢
  • 1970-01-01
  • 2010-09-25
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
  • 2012-09-13
  • 1970-01-01
  • 2013-06-30
  • 2018-02-23
相关资源
最近更新 更多