铁路图(railroad diagram)规则:
- 1.从左边界开始沿着轨道去到右边界。
- 2.沿途,你将在圆框中遇到的是字面量,在方块中遇到的是规则或者描述。
- 3.任何沿着轨道能走通的序列都是合法的。
- 4.任何不能沿着轨道走通的序列都是非法的。
- 5.每个末端只有一个竖条的铁路图允许在任何一对标记中间插入空白。而在末端有两个竖条的铁路图是不允许的。
语法图(Syntax diagrams )又叫铁路图(railroad diagrams)是描述形式文法的一种方式。它是巴科斯范式或扩展巴科斯范式的图形化表示。最早使用语法图的书包括Niklaus Wirth写的“Pascal User Manual”(语法图开始于47页)和the Burroughs CANDE manual。在编译领域,像BNF和它的变体这样的文字式表示法都是首选的。BNF能很好的被编译器作者和编译器理解,但是不能很好的被这些语言的大部分用户理解。铁路图能更容易被大多数人理解。数据交换格式JSON之所以流行的部分原因就是它用铁路图来表示。
准则
一个语法的表示法是由一套语法图组成。每个图定义了一个非终结符。有一个主图通过下面方式定义了这门语言:属于这门语言的每句话都必须在主图上描绘一个路径。
每个图都有一个起始点和一个终点。这个图通过穿过其他的非终结符和终结符描绘了这些两点之间的可能路径。终结符用圆形区域表示,同时非终结符用方形区域表示。
例子
我们用一个算术表达式作为一个例子。首先我们提供一段简单的BNF语法:
<expression>::= <term> | <term> "+" <expression>
<term>::= <factor> | <factor> "*" <term>
<factor>::= <constant> | <variable> | "(" <expression> ")"
<variable>::= "x" | "y" | "z"
<constant>::= <digit> | <digit> <constant>
<digit>::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
这段语法也能在EBNF中被表示:
expression = term , {"+" term};
term = factor , {"*" factor};
factor = constant | variable | "(" , expression , ")";
variable = "x" | "y" | "z";
constant = digit , {digit};
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
关于这段语法的一组可能的语法图:
- 大小: 26.5 KB
分享到:
相关推荐
编译原理一书中的TINY语言的EBNF语法图。
编译原理,C-语言的语法图,EBNF方式描述。
Syntax Diagrams For SQLite参考手册,图形生动,有效的帮助理解SQLite!
vscode中的语法高亮和语义高亮 Vscode Syntax Highlight Vscode Semantic Highlight
语法高亮插件vue-syntax-highlight,语法高亮插件vue-syntax-highlight,语法高亮插件vue-syntax-highlight
该项目旨在创建一个Java应用程序/库,该应用程序/库能够生成SVG图形格式的(编程)语言的语法图。
invalid syntax是什么错误
Atom-brahalla-syntax.zip,A dark colored syntax theme for Atom, based on Seti-Syntax.布拉哈拉语法,atom是一个用web技术构建的开源文本编辑器。
xalan java源码基于以下位置的示例代码和示例: 根据原始知识共享署名-相同方式共享 3.0 未移植许可证获得许可。 在 SBT 中,运行package来构建。 你也可以使用Maven。...project/boot/scala-2.8.0/lib/scala-library.j
华南师范大学 本资源包括TINY扩充语言的语法分析的实验报告,编译原理附录B和TINY扩充语言的语法分析代码.实验报告中说明了该实验的完成步骤. 扩充的语法规则有:实现while、do while、for语句和求余计算式子,具体...
liquid-syntax-mode, sublime text的流 语法模式 Siteleaf 流 支持 Sublime 文本这是shopify液体语法,它是基于 Django的Djaniero包。安装建议: 使用包控制插件安装。 搜索"。siteleaf 流 语法"。手动安装或者:克隆...
Atom-atom-panda-syntax.zip,atom的panda语法主题。一个超小的,黑暗的语法主题。这是panda语法主题的最新版本。这是一个特别为Atom设计的黑色语法主题,带有微妙的颜色,很容易让人看到。,atom是一个用web技术构建...
Python for Data Mining Quick Syntax Reference(2019) (用于数据挖掘的python快速语法参考) Python for Data Mining Quick Syntax Reference-Apress (2019).pdf 269页 4.5 MB 你将学到什么 •安装python并选择开发...
`invalid syntax` 是一个 Python 的语法错误,通常发生在 Python 解释器无法理解代码时。 这个错误会出现在很多不同的情况下,例如: 1. 括号、引号、分号等常见拼写错误。 2. 少了或多了任何必要的冒号。 3. 函数...
SPSS 25 语法命令参考(Subscription_Command_Syntax_Reference)IBM官方说明手册,英文版。
语法图(syntax diagram)——更习惯的译法可能是“句法图”。 组词规则(lexical rules)——有时也译为“词法规则”。 占位符(placeholders)——场地把持者,给实际值占一个内存空位。 函数(function)——在STEP 7...
jQuery.Syntax是一种轻量级的客户端语法突出显示工具,可在需要时动态加载外部依赖项(JavaScript和CSS)。 它使用jQuery使其跨浏览器兼容,并简化了集成以及与其他系统的集成。 动机 jQuery.Syntax是在Web上语法...
实现语法高亮显示主要由四个文件完成的:Syntax.h、Syntax.cpp、SynEditView.h和SynEditView.cpp。其中Syntax.h、Syntax.cpp包含了一系列语言的语法分析的API函数。 CSynEditView一个支持语法编辑的视图类。 使用...
我写的google protobuf 的visual studio2008 语法高亮插件,目前只有语法高亮,没有自动完成等功能,后续考虑添加。
TreeForm语法树绘图软件是语言语法/语义树绘图编辑器。 设计用于图形化的n元树图。 Mac用户可以通过新软件包安装软件,但必须通过“系统偏好设置”>“安全性和隐私权”授予权限。 Windows和Linux用户可以直接通过JAR...