Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 点对点表示法是运算符还是其他什么?你怎么知道的?_Javascript_Token_Semantics_Lexical Analysis_Formal Languages - Fatal编程技术网

Javascript 点对点表示法是运算符还是其他什么?你怎么知道的?

Javascript 点对点表示法是运算符还是其他什么?你怎么知道的?,javascript,token,semantics,lexical-analysis,formal-languages,Javascript,Token,Semantics,Lexical Analysis,Formal Languages,我正在尝试对点表示法(object.property)中使用的“点”标记进行分类 作为一名自学成才的业余开发人员,我主要使用JavaScript,我对编程和JavaScript有着简化的(当然是不完善的)理解 在阅读代码时,我倾向于将令牌分为五类: 标识符(+保留关键字) 操作员 分隔符/标点符号 垃圾 评论 但是,当涉及到根据我的简化模型对点表示法中使用的点进行分类时,我有一个疑问,但这种分类方式可能没有意义 我认为它更像一个二进制运算符,它接受两个标识符并返回一个引用(它可能是分隔符吗?)。

我正在尝试对点表示法(
object.property
)中使用的“点”标记进行分类

作为一名自学成才的业余开发人员,我主要使用JavaScript,我对编程和JavaScript有着简化的(当然是不完善的)理解

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

  • 标识符(+保留关键字)
  • 操作员
  • 分隔符/标点符号
  • 垃圾
  • 评论
  • 但是,当涉及到根据我的简化模型对点表示法中使用的点进行分类时,我有一个疑问,但这种分类方式可能没有意义

    我认为它更像一个二进制运算符,它接受两个标识符并返回一个引用(它可能是分隔符吗?)。但我没能找到一个来源来证明这一点。(或者至少我可以清楚地证明这一点,并且我能够理解)

    我查阅了各种文档,包括ECMA规范

    以下是我的两个问题:

    • 你认为我在哪里可以找到我正在寻找的信息,或者我可以使用哪些关键字
    • 你如何看待作为标记的点分类?二进制运算符?你怎么知道的

    如果您专注于纯点符号,如果您以JS为例,则它是一个分隔符。

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

    为什么??因为点表示法是braket表示法或倒置表示法的替代方法。brakets是一个分隔符。
    thing['otherthing']
    thing相同。otherthing

    从语法上讲,它是一个后缀运算符。也许最好称之为后缀操作符家族,每个后缀后面的合法标识符对应一个后缀操作符家族

    它类似于下标表示法,
    v[a]
    ,它在语法上也被认为是一个(分隔的)后缀运算符,尽管它有两个值作为操作数。同样,我们可以称之为三元运算符
    cond?alt1:alt0
    一个带分隔符的二进制运算符。从语法上讲,“运算符”是
    ?备选方案1:

    语法的这种观点,一开始可能看起来有点奇怪,来自于对操作符语法的描述,它基本上是有形式的,使用
    ⟨⟩
    用于分组,而
    *
    用于可选重复(即,0个或多个实例,如在正则表达式中)

    该公式通过将
    (表达式)
    包含在
    操作数
    (递归)中来处理括号,因为括号用于分组,而将
    (表达式列表)
    包含在
    后缀
    中,用于函数调用中使用的括号

    以这种方式查看表达式有助于解析。它还有助于澄清优先级和关联性的含义,特别是对于分隔运算符


    运算符优先级的一般规则是,我们从赋予所有后缀运算符相同的最高优先级开始。这在理论上是不必要的,但它几乎总是导致预期的意义。没有人会将
    2+sin(0.5)
    解释为调用“函数”
    2+sin
    。与您的问题更相关的是,
    2+s.size
    直观地表示
    .size
    首先应用于
    s
    ,然后将2添加到结果中。

    它不是运算符。它是一个属性访问器。是的,我见过。但我正试图(而且可能是愚蠢的)根据一个简化的模型对其进行分类。是的,你可以称之为会员运营商。(我知道我不应该发表评论,只是说我觉得你的答案很有趣,但我无法将其标记为有用,因为我的帐户是全新的。)@mel IIRC有时间限制。我想等两个小时。@mel,你的意思是你不能回答还是仅仅?我不是来投票的:)做你能做/渴望/想要的。。。我希望你会觉得它很有用。干杯,欢迎。我没能投票,因为我的名声<15。我没有结束这个问题,因为我现在正在考虑如果。我对编程的理解有限,我觉得我的问题有点毫无意义,因为我试图根据一个模型来对令牌进行分类,而这个模型是我发明的,只基于我对复杂事物的简单表示的意愿。也许我不应该在我的问题中使用javascript,而是一种虚构的语言。
    ⟨ PREFIX*  OPERAND POSTFIX* ⟩ ⟨ INFIX ⟨ PREFIX*  OPERAND POSTFIX* ⟩ ⟩*