"Javascript, The Good Parts": 铁路图

17
我正在阅读Douglas Crockford的《JavaScript权威指南》,但我对所有铁路图的使用有些困惑。他没有详细解释这一点。他只是在第21页上简单地说了以下几点:
- 从左边开始,沿着轨道向右移动。 - 当你前进时,会遇到椭圆形中的文字或矩形中的规则或描述。 - 沿着轨道可以得到任何序列都是合法的。 - 不能沿着轨道得到的任何序列都是非法的。 - 在每端只有一根棒的铁路图允许在任意两个标记之间插入空格。而在每端有两根棒的铁路图则不允许。
我知道这本书被认为是任何真正认真学习JavaScript的人必读的基础读物,我也很想理解他所讲述的概念,但整个铁路图的概念让我感到困惑。
能否有人解释一下他对铁路图的使用?最好附上例子。

1
这可能是一个不错的开始:http://en.wikipedia.org/wiki/Syntax_diagram - Shomz
2
你有没有阅读过关于语法图的参考资料? - Nick Tomlin
谢谢大家的回复!+1 - shmuli
尝试访问https://dev59.com/lXDYa4cB1Zd3GeqPDr_B - Timeless
3个回答

7

5
铁路图(也称为语法图,详情请参见http://en.wikipedia.org/wiki/Syntax_diagram)是一种用图形化的方式来解释语法的方法。如果你只是想理解铁路图,那么请注意从左侧开始跟随线条,并沿着符号/名称所在的轨道前进,直到完成,然后回到离开的地方继续。

此外,了解BNF和EBNF(扩展 Backus-Naur 形式,详情请参见http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form),这是一种正式描述语言语法的方法,使用一组产生式或重写规则。 BNF / EBNF 与铁路图相同,但使用符号表示法、::=产生符号和更为正式/数学化的方式来记录语法。


4

我也在阅读这本书。虽然花费了很长时间,但终于理解了语法图。

首先,正如@ChuckCottrill所提到的那样,您应该对语法图和BNF/EBNF有基本了解。但是,在阅读之后,它仍然让我感到困惑,直到我比较了三种不同情况的图表:

零个或多个、零个或一个、一个或多个

要理解它们之间的差异(如下图所示),关键在于“你从左侧边缘开始,沿着轨道向右侧边缘前进。”因此想象一下你是火车,你只能向右转,不能向左转。

enter image description here

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

zeroormore ::= element*
zeroorone ::= element?
oneormore ::= element+

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接