语法图(Syntax diagrams )又叫铁路图(railroad diagrams)是描述形式文法的一种方式。它是巴科斯范式或扩展巴科斯范式的图形化表示。最早使用语法图的书包括Niklaus Wirth写的“Pascal User Manual”(语法图开始于47页)和the Burroughs CANDE manual。在编译领域,像BNF和它的变体这样的文字式表示法都是首选的。BNF能很好的被编译器作者和编译器理解,但是不能很好的被这些语言的大部分用户理解。铁路图能更容易被大多数人理解。数据交换格式JSON之所以流行的部分原因就是它用铁路图来表示。
–《维基百科》
准则
- 从左边界开始沿着轨道去到右边界。
- 沿途,你将在圆框中遇到的是字面量,在方块中遇到的是规则或者描述。
- 任何沿着轨道能走通的序列都是合法的。
- 任何不能沿着轨道走通的序列都是非法的。
- 每个末端只有一个竖条的铁路图允许在任何一对标记中间插入空白。而在末端有两个竖条的铁路图是不允许的。
示例
以《JavaScript语言精粹》第10页的铁路图为例:
一条JavaScript语句可以是:
var name = expression;
var name1,name2,name3...,name;
var name 1,name2,...name3=expression3,...,name=expression;
var name 1,name2,...name3=expression3,...,name;
var name1=expression1,name2=expression2,name3=expression3...,name=expression;
参考资料