一文看懂“铁路图”

在学习《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

基本规则

  1. 从左边界开始,沿着轨道到右边界。
  2. 沿途,你在圆框中遇到的是字面量,在方块中遇到的是规则或描述。
  3. 任何沿着轨道能走通的序列都是合法的。
  4. 任何不能沿着轨道走通的序列都是非法的。
  5. 末端只有一个竖条的铁路图,表示允许在任意一对符号中插入空白。而在末端有两个竖条的铁路图则不允许。

示例

以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

发表评论

电子邮件地址不会被公开。 必填项已用*标注