`
smithsun
  • 浏览: 11059 次
  • 性别: Icon_minigender_2
  • 来自: 昆明
社区版块
存档分类
最新评论

dot语言的BNF

阅读更多

最近在使用Graphviz工具作图,但是由于这个工具是C语言开发的,我打算把它移植到Java平台上,通过Java2D来渲染,绘制出静态的图片来。Graphviz的布局算法一大堆,也需要考虑移植过来。

 

Graphviz使用的一个DSL,即dot语言,看看了官方文档上附带的dot语言BNF,考虑使用javacc分析,这里是BNF代码:

graph -> [strict] (digraph|graph) id '{' stmt-list '}'
stmt-list -> [stmt [';'] [stmt-list] ]
stmt -> attr-stmt | node-stmt | edge-stmt | subgraph | id '=' id
attr-stmt -> (graph | node | edge) attr-list
attr-list -> '[' [a-list] ']' [attr-list]
a-list -> id '=' id [','][a-list]
node-stmt -> node-id [attr-list]
node-id -> id [port]
port -> port-location [port-angle] | port-angle [port-location]
port-location -> ':' id | ':' '(' id ',' id ')'
port-angle ->'@' id
edge-stmt -> (node-id | subgraph) edgeRHS [attr-list]
edgeRHS -> edgeop (node-id | subgraph) [edgeRHS]
subgraph -> [subgraph id] '{' stmt-list '}' | subgraph id

 

 

先贴在这里,后边在慢慢的编写词法/语法分析器,使用JavaCC应该没有多大的问题。

分享到:
评论

相关推荐

    常见计算机语言语法及BNF

    标题 "常见计算机语言语法及BNF" 涉及的核心概念是编程语言的语法和Backus-Naur Form(BNF)表示法,这对于理解和构建编译器至关重要。BNF是一种形式化的语法描述方法,用于定义计算机语言的结构,是编译原理中的...

    编译原理SP 语言的BNF 定义

    在编译原理中,巴科斯范式(Backus-Naur Form,简称BNF)是一种用于描述形式语言的规范表示方法,常用于定义编程语言的语法结构。SP语言是一个假设的编程语言,我们在此将深入探讨其BNF定义以及如何通过实例来理解和...

    C语言 子集 的BNF文法描述

    **BNF(巴科斯范式)**是用于描述编程语言语法的一种形式化方法,由美国计算机科学家艾兹格·迪科斯彻提出。在C语言的上下文中,BNF文法描述了C语言的基本结构和语法规则,使得程序员或编译器设计者能够理解和解析...

    BNF详细的语法定义(包含所有的BNF关键字)

    BNF详细的语法定义 BNF详细的语法定义 BNF详细的语法定义

    BNF语法开发指南

    BNF语法开发指南,离线命令词语法构建的BNF语法开发指南

    C、Java和Python的BNF范式

    BNF(巴科斯范式,Backus-Naur Form)是一种形式化语法的表示方法,广泛用于描述编程语言的语法结构。它由John Backus和Peter Naur在20世纪50年代末提出,旨在为ALGOL编程语言提供一个清晰的语法定义。在本资源中,...

    BNF范式查看器

    巴科斯范式(Backus-Naur Form,简称BNF)是一种形式化的语法描述方法,广泛应用于计算机语言的定义,尤其是编译器设计领域。BNF查看器是一个专门用来解析和展示BNF范式的工具,它能够帮助用户理解和分析BNF规范,对...

    ISO_IEC_14977_1996(E) 信息技术 语法元语言 扩展的BNF标准(EBNF) .pdf

    信息技术 语法元语言 扩展的BNF标准(EBNF) 巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。现在,几乎每一位新编程语言书籍的作者都使用...

    sql-92_bnf巴格达范式

    sql-92_bnf巴格达范式 for antler

    c++ bnf i need

    c++ bnf i need c++ bnf i need c++ bnf i need]

    C语言(子集)的BNF文法描述

    C语言(子集)的BNF文法描述,自己感觉还是挺全的,基本上把C语言中该有部分都包含在内了,,,下了绝对不会后悔的。。。。

    Java Syntax BNF_java_

    Java语法BNF(巴科斯范式)是描述Java编程语言结构的一种形式化方法,它是一种用于定义上下文无关文法的形式系统。BNF全称为Backus-Naur Form,由John Backus和Peter Naur提出,广泛应用于编译原理和语言设计中。在...

    BNF.zip_BNF parser analysis_bnf_bnf描述c语言_site:www.pudn.com

    BNF,全称为巴科斯范式(Backus-Naur Form),是一种用于描述形式语言的规范,广泛应用于计算机科学领域,特别是编译原理和解析器构造。它通过一套符号规则来定义语言的语法结构,使得程序员可以清晰地理解并实现...

    sql-92-bnf.tar.gz_BNF SQL92_bnf_sql b_sql server bnf_sql92 bnf

    BNF(巴科斯范式)是一种形式语言的描述方法,全称为Backus-Naur Form,用于定义计算机语言的语法规则。在SQL-92 BNF中,我们可以通过这种形式化的描述理解SQL-92的语法结构。 "sql-92.bnf.html"这个文件很可能是对...

    PL-0.rar_PL/0_anyonev4l_bnf_pl0 bnf_扩充的bnf

    在PL/0语言中,BNF被用来描述语言的结构和语法规则,使得我们可以明确地了解哪些组合的字符序列构成了有效的PL/0程序。 "PL-0.rar"是一个压缩包文件,其中包含了一份关于PL/0语言的BNF描述的文档,文件名为"PL-0....

    熟悉编译原理BNF定义

    实验二是对BNF定义的熟悉,BNF定义了一种语言的结构,通过一系列规则描述了语句和表达式的构造方式。以SP语言为例,其BNF定义如下: 1. `<program>`由零个或多个`<progline>`组成,这表明程序可以由一个或多个语句...

    RRDiagram, 从代码或者BNF生成铁路图,从代码生成 BNF.zip

    RRDiagram, 从代码或者BNF生成铁路图,从代码生成 BNF RRDiagram从代码或者BNF生成铁路图。 从代码生成 BNF 。rtc图是一个Java库,它从代码中生成铁路图( 也称为语法图),从。 输出格式是一个非常 compact SVG图像,...

    sql-2003-bnf.tar.gz_bnf_sql 2003_sql2003

    BNF(巴科斯范式,Backus-Naur Form)是一种形式语法的表示法,常用于描述编程语言或查询语言的结构。在这个“sql-2003-bnf.tar.gz”压缩包中,我们有“sql-2003-2.bnf.html”这个文件,它很可能包含了SQL 2003的BNF...

    sql-99-bnf.tar.gz_Sql bnf_bnf范式 sql

    BNF(巴科斯范式,Backus-Naur Form)是一种形式规范语言,用于描述编程语言或计算机指令的语法结构,它在这里被用来详细说明SQL-99的语法规则。 在"sql-99.bnf.html"这个文件中,你将找到一个完整的BNF表示,涵盖...

    sql各年标准bnf语法之xml展示

    sql各年标准bnf语法之xml展示,利用了xml的扩展特性,对BNF语法进行了元素显示深度扩展,十分利于查看sql语法,是学习sql和开发数据库软件的好帮手。 文件也包含了sql2011标准文档,下载来源是此网站。内包含一个程序...

Global site tag (gtag.js) - Google Analytics