17

我正在阅读 Douglas Crockford 的“Javascript,The Good Parts”,并且很难理解所有铁路图的使用。对此,他也没有过多阐述。他只是说了以下内容(第 21 页):

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

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

我知道这本书被认为是任何真正认真对待 Javascript 的人的基础读物,我非常想了解他所讨论的概念。但是有些东西并没有点击整个铁路图。

谁能解释他对铁路图的使用?例子会很棒。

4

3 回答 3

7

这个IBM 页面可能有最简单的解释。

维基百科页面提供了有关如何构建它们的更多信息。

于 2013-10-14T22:11:00.183 回答
5

铁路图(语法图,http ://en.wikipedia.org/wiki/Syntax_diagram )是一种解释语法的图形方式。如果您只想了解铁路图,请了解您从左侧开始,然后沿着线路(轨道)行驶。当你遇到一个符号/名称时,你会沿着那个轨道走,直到它完成,然后回到你离开的地方。

此外,阅读 BNF 和 EBNF(扩展?Backus-Naur 形式主义,http ://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form ),这是一种描述语言语法的正式方式,使用一组产品,或重写规则。BNF/EBNF 的工作原理与铁路图相同,但使用符号表示法、::= 产生式符号和更正式/数学的方式来记录语法。

于 2013-10-15T01:44:58.040 回答
4

我也在看这本书。我花了很长时间,但终于明白了铁路图。

首先,正如@ChuckCottrill 提到的,您应该对语法图BNF/EBNF有一个基本的认识。但是读完之后,我仍然感到困惑,直到我比较了三张不同情况的图表:

零个或多个,零个或一个,一个或多个

要了解它们的区别(如下图所示),重点是 “您从左边缘开始,沿着轨道到右边缘”。 所以想象你是火车,你只是右转,不能左转。

在此处输入图像描述

上图由http://bottlecaps.de/rr/创建 在“编辑语法”选项卡中,输入以下语法:

zeroormore ::= element*
zeroorone ::= element?
oneormore ::= element+
于 2017-03-20T11:28:25.753 回答