我正在阅读道格拉斯·克罗克福德的“Javascript,The Good Parts”,并且难以理解所有铁路图的使用。他也没有详细说明这一点。他只是说了以下内容(第21页):
解释这些图表的规则很简单:
- 从左边缘开始,沿着轨道向右边缘移动。
- 当你走的时候,你会遇到椭圆形的文字,以及矩形的规则或描述。
- 通过跟踪曲目可以制作的任何序列都是合法的。
- 跟踪曲目无法制作的任何序列都不合法。
- 每端有一个条形的铁路图允许在任何一对标记之间插入空格。两端有两根钢筋的铁路图没有。
我知道这本书被认为是任何真正认真对待Javascript的人的基本阅读,我非常想了解他正在解决的概念。但有些事情并不是点击整个铁路图的事情。
有人能解释他对铁路图的使用吗?例子很棒。
答案 0 :(得分:7)
这IBM page可能有最简单的解释。
Wikipedia page提供了有关如何构建它们的更多信息。
答案 1 :(得分:5)
铁路图(语法图,http://en.wikipedia.org/wiki/Syntax_diagram)是解释语法的图形方式。如果您只想了解铁路图,请了解您从左侧开始,然后沿着线(轨道)行驶。当你遇到一个符号/名字时,你会跟着那条轨道,直到它完成,然后回到你离开的地方。
另外,阅读BNF和EBNF(扩展?Backus-Naur Formalism,http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form),这是描述语言语法,使用一组制作或重写规则的正式方式。 BNF / EBNF的工作方式与铁路图相同,但使用符号表示法,:: =生产符号,以及更正式/数学方式来记录语法。
答案 2 :(得分:3)
我也在读这本书。这需要我很长时间,但最后了解铁路图。
首先,正如@ChuckCottrill所提到的,您应该对语法图和 BNF / EBNF 有一个基本的认可。但在阅读之后,在我比较不同情况的三张图之前,它仍然让我感到困惑:
零或更多,零或一,一个或多个
要了解它们之间的差异(如下图所示),重点是 “你从左边开始,沿着轨道走到右边缘。” 所以想象你是火车,你只需向右转,就不能左转。
由http://bottlecaps.de/rr/创建的上述图片 在“编辑语法”选项卡中,输入以下语法:
zeroormore ::= element*
zeroorone ::= element?
oneormore ::= element+