【问题标题】:What is meant by a token in the context of rail-road diagrams?在铁路图的上下文中,令牌是什么意思?
【发布时间】:2013-07-23 02:07:09
【问题描述】:

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

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

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

  1. 您从左侧边缘开始,然后沿着轨道到右侧边缘。
  2. 您会遇到椭圆形的文字和矩形的规则或描述。
  3. 任何可以按照轨道制作的序列都是合法的。
  4. 任何无法通过轨道完成的序列都是非法的。
  5. 每一端都有一个条形的铁路图允许在任何一对标记之间插入空格。带有两个条形图的铁路图 在每一端都不要。

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

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

【问题讨论】:

    标签: javascript grammar bnf


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 什么是BNF语法?
    • @Geek 哦,它的意思是“Backus-Naur 形式”。这是一种书写语法的符号。
    • @Geek 如果你能从书中找到的那部分提供更多上下文,那将会很有帮助。人们将铁路图用于语言语法的“高级”视图,也用于标记语法本身。
    • 我确实添加了更多上下文。
    • @Geek 好的,对于那个特定情况,我认为将“token”解释为“铁路图中明确提到的任何语法元素”是安全的。因此,如果图表是关于字符的(如 JSON 图),那么“令牌”就是一个字符。如果图表是关于(例如)for 循环的语法,那么“令牌”将指代 for 关键字、括号、变量名和其他表达式组件、分号等。跨度>
    猜你喜欢
    • 1970-01-01
    • 2011-05-03
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 2011-06-11
    • 1970-01-01
    相关资源
    最近更新 更多