在铁路图的背景下,令牌是什么意思?

时间:2013-07-22 17:41:26

标签: javascript grammar bnf

来自Douglas Crockford's JavaScript: The Good Parts第2章语法

  

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

     

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

     
      
  1. 从左边缘开始,沿着轨道向右边缘移动。
  2.   
  3. 当你走的时候,你会遇到椭圆形的文字,以及矩形的规则或描述。
  4.   
  5. 通过跟踪曲目可以制作的任何序列都是合法的。
  6.   
  7. 跟踪曲目无法制作的任何序列都不合法。
  8.   
  9. 每端有一个条形的铁路图允许在任何一对标记之间插入空格。与两个酒吧的铁路图   在每一端都没有。
  10.         

    本章介绍的好的部分的语法是   比整个语言的语法简单明了。

我见过this answer on SO,它基本上重申了本书中的内容。那么这里的令牌是什么意思?

1 个答案:

答案 0 :(得分:1)

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

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

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

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