`
desert3
  • 浏览: 2159467 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

语法图(Syntax diagram)、铁路图(railroad diagrams)

 
阅读更多
铁路图(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

    在这里,我们将深入探讨TINY语言的语法图(Syntax Diagram)及其相关的编译原理知识。 首先,让我们明确什么是语法图。语法图,也称为哈里森图或railroad diagram,是一种图形化的方式来表示文法的规则,通常用于...

    C-语法图 Syntax Diagram

    在编译原理中,语法图(Syntax Diagram)或称为EBNF(Extended Backus-Naur Form)是一种用来形式化描述语言语法的方法。下面我们将详细探讨C语言的语法图和EBNF。 首先,EBNF是一种扩展的巴科斯范式,用于定义上...

    Language Syntax Diagram Library-开源

    【标题】"Language Syntax Diagram Library-开源"是一个专注于生成编程语言语法图的Java应用程序和库。这个项目的主要目的是为开发者提供一种工具,可以方便地将编程语言的语法规则转化为直观的SVG图形,帮助理解和...

    Syntax Diagrams For SQLite

    Syntax Diagrams For SQLite参考手册,图形生动,有效的帮助理解SQLite!

    如何读懂Oracle文档中的语法图

    Oracle文档使用了两种方法来表达语法规则:语法图(Syntax Diagrams)和BNF(Backus-Naur Form)。BNF是一种形式化的语法表示方法,能够精确地描述计算机语言的语法规则。由于BNF对很多人来说可能不够直观,因此...

    vscode中的语法高亮和语义高亮(Syntax Highlight and Semantic Highlight)

    1. **语法高亮 (Syntax Highlight)** 语法高亮是通过解析源代码,将不同类型的代码元素(如关键字、变量、字符串、注释等)用不同的颜色或样式显示,以区分其在代码中的角色。VSCode 使用 TextMate 的语法解析引擎...

    jedit-syntax-2.2.2.zip_jedit-syntax-2.2.2_语法高亮

    在实际使用中,用户需要将"jedit-syntax-2.2.2.zip"解压,并将其中的语法文件复制到jEdit的安装目录下的相应位置,以便编辑器能够识别并应用新的语法高亮规则。然后,通过jEdit的设置界面,可以选择启用或禁用特定的...

    语法高亮插件vue-syntax-highlight

    如果未自动识别,可以在文件右下角的语法选择器中手动选择`Vue (Vue Syntax Highlight)`。此插件支持Vue的单文件组件(.vue)格式,能对模板、脚本和样式区域进行单独高亮。 除了基本的语法高亮,Vue Syntax ...

    invalid syntax是语法错误.docx

    "Invalid Syntax"错误是编程语言中常见的一个错误类型,它表示你的代码中存在不符合该语言语法规则的部分。在Python这种解释型语言中,当解释器遇到无法理解的代码结构时,就会抛出"Invalid Syntax"错误。这个错误...

    syntax

    例如,可能有一个名为 "Java_Syntax.md" 的文件,详细介绍了Java语言的语法特性,包括类定义、方法、变量声明、循环结构等。另一个文件 "HTML_Syntax.html" 可能是一个HTML语法教程,讲解了如何使用HTML标签创建网页...

    Atom-elegant-atom-syntax,一个温和的atom编辑器语法包(与优雅的atom ui主题配合使用).zip

    Atom-elegant-atom-syntax是一个专为Atom编辑器设计的语法包,旨在提供一种温和、舒适的代码高亮体验,尤其适合那些寻求与优雅的Atom UI主题相搭配的用户。Atom编辑器,由GitHub开发,是一款基于Web技术的免费开源...

    google protobuf visual Studio 2008 语法高亮插件(protobuf syntax highlighter)

    本资源提供了针对Visual Studio 2008的protobuf语法高亮插件,名为"google protobuf visual Studio 2008 语法高亮插件(protobuf syntax highlighter)"。该插件的目的是改善protobuf源代码在IDE内的显示效果,通过为...

    Atom-brahalla-syntax,基于seti的atom的深色语法主题.zip

    Atom-brahalla-syntax.zip,A dark colored syntax theme for Atom, based on Seti-Syntax.布拉哈拉语法,atom是一个用web技术构建的开源文本编辑器。

    Atom-photon-syntax,Atom的黑色语法主题。贡献给Maximsokolov/光子.zip

    "Atom-photon-syntax" 是一个专门为Atom设计的暗色语法主题,旨在提供清晰且舒适的编程视觉体验。这个主题被称为“光子”,可能是因其在视觉上给人带来的明亮而聚焦的感觉,尽管它是暗色调的。 在Atom编辑器中,...

    编译原理 语法分析 语法树生成

    语法分析是编译器设计中的关键步骤,它的目标是从源代码的词法单元流中构建出符合语言语法规则的抽象语法树(Abstract Syntax Tree, AST)。这个过程通常分为自顶向下和自底向上的两种方法。yacc采用的就是自顶向下...

    xalanjava源码-SyntaxDiagramGenerator:Scala2.8的语法图生成插件,基于http://blog.32lea

    xalan java源码基于以下位置的示例代码和示例: 根据原始知识共享署名-相同方式共享 3.0 未移植许可证获得许可。 在 SBT 中,运行package来构建。 你也可以使用Maven。...project/boot/scala-2.8.0/lib/scala-library.j

    Atom-electron-highlighter-syntax,Atom编辑器的语法主题。对mikemcbride/electron的贡献.zip

    "Atom-electron-highlighter-syntax"是一个专门为Atom设计的语法主题,旨在提升代码的可读性和视觉吸引力。这个主题是由mikemcbride为他的“electron”项目贡献的,它可能特别适合于Electron应用的开发,Electron是...

    一个带界面的词法分析+语法分析语法树生成

    2. **语法分析器(Parser 或 Syntax Analyzer)**:语法分析器接收词法分析器生成的单词标记流,并根据语法规则进行解析,以验证代码是否符合特定语言的结构规则。它通常采用递归下降分析、LR、LL或LALR等算法。如果...

    liquid-syntax-mode, sublime text的流 语法模式.zip

    liquid-syntax-mode, sublime text的流 语法模式 Siteleaf 流 支持 Sublime 文本这是shopify液体语法,它是基于 Django的Djaniero包。安装建议: 使用包控制插件安装。 搜索"。siteleaf 流 语法"。手动安装或者:克隆...

    Syntax_Analysis.rar_Analysis.exe_语法分析程序

    本文将围绕"Syntax_Analysis.rar_Analysis.exe_语法分析程序"这一主题,深入探讨语法分析的基本概念、工作原理以及如何使用该程序进行简单的四则运算式的语法分析。 首先,我们要理解什么是语法分析。在编译过程中...

Global site tag (gtag.js) - Google Analytics