点符号的点是操作员还是其他?你怎么知道



我正在尝试对点表示法( object.property(中使用的"点"令牌进行分类。

作为一个自学成才的业余开发器,主要使用JavaScript,我对编程和JavaScript有一个简化(肯定是不完美的(理解。

阅读代码时,我倾向于将令牌分类为五类:

  1. 标识符( 保留关键字(
  2. 操作员
  3. 定界符/点clunctutors
  4. 单位
  5. 评论

但是,当涉及根据我的简化模型中使用点表示法中使用的点时,我有疑问,但是尝试以这种方式进行分类不是很有意义的。

我更像是二进制运算符,它采用两个标识符并返回参考(可能是定界线?(。但是我没有设法找到明确建立这一点的来源。(或至少这清楚地建立了它,我能够理解(。

我查看了各种文档,包括ECMA规格。

所以这是我有两个问题:

  • 您认为我可以在哪里找到我要寻找的信息,或者我可以使用哪些关键字?
  • 您如何看待点分类作为令牌?二进制操作员?你怎么知道?

语法上,它是后缀运算符。也许最好称其为后缀运营商家族,每个法律标识符都可以遵循。

它类似于下标符号 v[a],它在句法上也更好地将其视为(划界(后缀运算符,即使它具有两个值作为操作数的值。以同样的方式,我们可以将所谓的三元运营商cond ? alt1 : alt0称为分界二进制操作员。从语法上讲,"操作员"是? alt1:

这种语法的观点最初可能看起来有些奇怪,它来自操作员语法的描述,该语法基本上具有表单,使用⟨⟩进行分组和*进行可选重复(即0或更多实例,如在正则表达式(。

⟨ PREFIX*  OPERAND POSTFIX* ⟩ ⟨ INFIX ⟨ PREFIX*  OPERAND POSTFIX* ⟩ ⟩*

该配方通过在OPERAND中包括( EXPRESSION )(递归(来处理括号,用于分组括号,并在POSTFIX中包括( EXPRESSION_LIST ),用于函数调用中使用的括号。

以这种方式看待表达有助于解析。它还有助于阐明优先级和关联的含义,尤其是对于划界的操作员。

运营商优先级的一般规则是,我们首先给所有后缀运营商具有相同的最高优先级。从理论上讲,这不是必需的,但几乎总是导致预期的含义。没有人会将2+sin(0.5)解释为"函数" 2+sin的调用。与您的问题更相关,2+s.size直观地表示.size首先应用于s,然后将2添加到结果中。

如果您专注于纯点符号,并且如果您以JS为例,则更多,那么它是分隔符。

当然,它不适用于添加功能的框架或形状。例如,自动化私有属性或类似属性的框架。

为什么?因为点表示法是替代式符号或颠倒的符号。和式式式服务器是定界线。 thing['otherthing']thing.otherthing

相同

最新更新