铁路图(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语言的语法图(Syntax Diagram)及其相关的编译原理知识。 首先,让我们明确什么是语法图。语法图,也称为哈里森图或railroad diagram,是一种图形化的方式来表示文法的规则,通常用于...
在编译原理中,语法图(Syntax Diagram)或称为EBNF(Extended Backus-Naur Form)是一种用来形式化描述语言语法的方法。下面我们将详细探讨C语言的语法图和EBNF。 首先,EBNF是一种扩展的巴科斯范式,用于定义上...
【标题】"Language Syntax Diagram Library-开源"是一个专注于生成编程语言语法图的Java应用程序和库。这个项目的主要目的是为开发者提供一种工具,可以方便地将编程语言的语法规则转化为直观的SVG图形,帮助理解和...
Syntax Diagrams For SQLite参考手册,图形生动,有效的帮助理解SQLite!
Oracle文档使用了两种方法来表达语法规则:语法图(Syntax Diagrams)和BNF(Backus-Naur Form)。BNF是一种形式化的语法表示方法,能够精确地描述计算机语言的语法规则。由于BNF对很多人来说可能不够直观,因此...
1. **语法高亮 (Syntax Highlight)** 语法高亮是通过解析源代码,将不同类型的代码元素(如关键字、变量、字符串、注释等)用不同的颜色或样式显示,以区分其在代码中的角色。VSCode 使用 TextMate 的语法解析引擎...
在实际使用中,用户需要将"jedit-syntax-2.2.2.zip"解压,并将其中的语法文件复制到jEdit的安装目录下的相应位置,以便编辑器能够识别并应用新的语法高亮规则。然后,通过jEdit的设置界面,可以选择启用或禁用特定的...
如果未自动识别,可以在文件右下角的语法选择器中手动选择`Vue (Vue Syntax Highlight)`。此插件支持Vue的单文件组件(.vue)格式,能对模板、脚本和样式区域进行单独高亮。 除了基本的语法高亮,Vue Syntax ...
"Invalid Syntax"错误是编程语言中常见的一个错误类型,它表示你的代码中存在不符合该语言语法规则的部分。在Python这种解释型语言中,当解释器遇到无法理解的代码结构时,就会抛出"Invalid Syntax"错误。这个错误...
例如,可能有一个名为 "Java_Syntax.md" 的文件,详细介绍了Java语言的语法特性,包括类定义、方法、变量声明、循环结构等。另一个文件 "HTML_Syntax.html" 可能是一个HTML语法教程,讲解了如何使用HTML标签创建网页...
Atom-elegant-atom-syntax是一个专为Atom编辑器设计的语法包,旨在提供一种温和、舒适的代码高亮体验,尤其适合那些寻求与优雅的Atom UI主题相搭配的用户。Atom编辑器,由GitHub开发,是一款基于Web技术的免费开源...
本资源提供了针对Visual Studio 2008的protobuf语法高亮插件,名为"google protobuf visual Studio 2008 语法高亮插件(protobuf syntax highlighter)"。该插件的目的是改善protobuf源代码在IDE内的显示效果,通过为...
Atom-brahalla-syntax.zip,A dark colored syntax theme for Atom, based on Seti-Syntax.布拉哈拉语法,atom是一个用web技术构建的开源文本编辑器。
"Atom-photon-syntax" 是一个专门为Atom设计的暗色语法主题,旨在提供清晰且舒适的编程视觉体验。这个主题被称为“光子”,可能是因其在视觉上给人带来的明亮而聚焦的感觉,尽管它是暗色调的。 在Atom编辑器中,...
语法分析是编译器设计中的关键步骤,它的目标是从源代码的词法单元流中构建出符合语言语法规则的抽象语法树(Abstract Syntax Tree, AST)。这个过程通常分为自顶向下和自底向上的两种方法。yacc采用的就是自顶向下...
xalan java源码基于以下位置的示例代码和示例: 根据原始知识共享署名-相同方式共享 3.0 未移植许可证获得许可。 在 SBT 中,运行package来构建。 你也可以使用Maven。...project/boot/scala-2.8.0/lib/scala-library.j
"Atom-electron-highlighter-syntax"是一个专门为Atom设计的语法主题,旨在提升代码的可读性和视觉吸引力。这个主题是由mikemcbride为他的“electron”项目贡献的,它可能特别适合于Electron应用的开发,Electron是...
2. **语法分析器(Parser 或 Syntax Analyzer)**:语法分析器接收词法分析器生成的单词标记流,并根据语法规则进行解析,以验证代码是否符合特定语言的结构规则。它通常采用递归下降分析、LR、LL或LALR等算法。如果...
liquid-syntax-mode, sublime text的流 语法模式 Siteleaf 流 支持 Sublime 文本这是shopify液体语法,它是基于 Django的Djaniero包。安装建议: 使用包控制插件安装。 搜索"。siteleaf 流 语法"。手动安装或者:克隆...
本文将围绕"Syntax_Analysis.rar_Analysis.exe_语法分析程序"这一主题,深入探讨语法分析的基本概念、工作原理以及如何使用该程序进行简单的四则运算式的语法分析。 首先,我们要理解什么是语法分析。在编译过程中...