0

来自Douglas Crockford 的 JavaScript:好的部分第 2 章语法

本章介绍了 JavaScript 优秀部分的语法,快速概述了该语言的结构。我们将用铁路图表示语法。

解释这些图的规则很简单:

  1. 您从左边缘开始,然后沿着轨道到右边缘。
  2. 在你进行的过程中,你会遇到椭圆形的文字,以及矩形的规则或描述。
  3. 任何可以通过跟踪轨道进行的序列都是合法的。
  4. 任何无法通过跟踪进行的序列都是不合法的。
  5. 每一端都有一个条形的铁路图允许在任何一对标记之间插入空格。每端有两个条的铁路图没有。

本章介绍的优秀部分的语法比整个语言的语法要简单得多。

我已经在 SO 上看到了这个答案,它基本上重申了书中介绍的内容。那么这里的token是什么意思呢?

4

1 回答 1

1

记号是语法的基本原子单位。在典型的编程语言中,标记包括代数运算符 ( +, *)、语句分隔符 ( (, {, ;)、标识符、数字和字符串值以及保留字。

“令牌”的概念在某种程度上与语法的编写和解析方式有关。一些解析方案不涉及标记化的概念(PEG 的 Packrat 解析器)。然而,在这种情况下,铁路图的使用意味着传统的 BNF(或类似 BNF)的语法,并带有一组标记。

编辑——实际上,看看另一个问题,那里的讨论实际上是关于令牌语法本身的——JSON 的令牌语法。我想您可以为此目的将字符集的元素视为“令牌”。无论如何,应该清楚的是,在这些情况下——数字和字符串的规则——空格不能出现在这些结构的中间。也就是说,232 3不一样。

除了自动分号插入的奇怪情况之外,我想不出 JavaScript 语法中不允许标记之间有空格的地方。

于 2013-07-22T17:50:35.447 回答