在学习《javascript语言精粹》的时候,遇到了一种叫做铁路图的东西,对其百思不得其解。经过查找资料和分析,总结出如下规律。
简介
铁路图(railroad diagram),又叫语法图(syntax diagrams),是一种表示形式语法的方式,是巴科斯范式和扩展巴科斯范式的图形化表示。
巴科斯范式(英语:Backus Normal Form,缩写为 BNF),又称为巴科斯-诺尔范式(英语:Backus-Naur Form,缩写同样为 BNF,也译为巴科斯-瑙尔范式、巴克斯-诺尔范式),是一种用于表示上下文无关文法的语言,上下文无关文法描述了一类形式语言。它是由约翰·巴科斯(John Backus)和彼得·诺尔(Peter Naur)首先引入的用来描述计算机语言语法的符号集。
尽管巴科斯范式也能表示一部分自然语言的语法,它还是更广泛地使用于程序设计语言、指令集、通信协议的语法表示中。大多数程序设计语言或者形式语义方面的教科书都采用巴科斯范式。在各种文献中还存在巴科斯范式的一些变体,如扩展巴科斯范式 EBNF 或扩充巴科斯范式 ABNF。
https://zh.wikipedia.org/wiki/%E5%B7%B4%E7%A7%91%E6%96%AF%E8%8C%83%E5%BC%8F
基本规则
- 从左边界开始,沿着轨道到右边界。
- 沿途,你在圆框中遇到的是字面量,在方块中遇到的是规则或描述。
- 任何沿着轨道能走通的序列都是合法的。
- 任何不能沿着轨道走通的序列都是非法的。
- 末端只有一个竖条的铁路图,表示允许在任意一对符号中插入空白。而在末端有两个竖条的铁路图则不允许。
示例
以javascript为例,声明变量的语法,则语法如下:
1、空。
2、从name和=之间绕行。
var name;
3、中间横向语句。
var name = expression;
4、在expression和;之间循环。
var name, name,...,name;
var name = expression, name = expression,..., name = expression;
5、在分号之后循环。
var name = expression; var name = expression; ...
注:圆角向内表示循环,向外则不循环。或者将左下弧理解为出口,右下弧理解为入口。
————————————————
原文链接:https://blog.csdn.net/u013961139/article/details/49079233