最近在使用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" 涉及的核心概念是编程语言的语法和Backus-Naur Form(BNF)表示法,这对于理解和构建编译器至关重要。BNF是一种形式化的语法描述方法,用于定义计算机语言的结构,是编译原理中的...
### BNF详细的语法定义 #### 一、BNF简介与基本概念 ...通过上述分析可以看出,无论是简单的词法单元还是复杂的语言结构,BNF都能够以一种结构化的方式进行描述,这对于语言设计者来说是非常有价值的。
在编译原理中,巴科斯范式(Backus-Naur Form,简称BNF)是一种用于描述形式语言的规范表示方法,常用于定义编程语言的语法结构。SP语言是一个假设的编程语言,我们在此将深入探讨其BNF定义以及如何通过实例来理解和...
**BNF(巴科斯范式)**是用于描述编程语言语法的一种形式化方法,由美国计算机科学家艾兹格·迪科斯彻提出。在C语言的上下文中,BNF文法描述了C语言的基本结构和语法规则,使得程序员或编译器设计者能够理解和解析...
BNF(巴科斯范式,Backus-Naur Form)是一种形式化语法的表示方法,广泛用于描述编程语言的语法结构。它由John Backus和Peter Naur在20世纪50年代末提出,旨在为ALGOL编程语言提供一个清晰的语法定义。在本资源中,...
BNF,全称为巴科斯范式(Backus-Naur Form),是一种用于描述形式语言的规范,广泛应用于计算机科学领域,特别是编译原理和解析器构造。它通过一套符号规则来定义语言的语法结构,使得程序员可以清晰地理解并实现...
BNF语法开发指南,离线命令词语法构建的BNF语法开发指南
BNF(巴科斯范式,Backus-Naur Form)是一种形式语法的表示方法,用于描述编程语言的语法规则。在这个C语言的子集中,BNF文法描述了程序的基本构建块,使得我们能够理解如何构建有效的C语言程序。 首先,`program`...
信息技术 语法元语言 扩展的BNF标准(EBNF) 巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。现在,几乎每一位新编程语言书籍的作者都使用...
sql-92_bnf巴格达范式 for antler
c++ bnf i need c++ bnf i need c++ bnf i need]
巴科斯范式(Backus-Naur Form,简称BNF)是一种形式化的语法描述方法,广泛应用于计算机语言的定义,尤其是编译器设计领域。BNF查看器是一个专门用来解析和展示BNF范式的工具,它能够帮助用户理解和分析BNF规范,对...
Java语法BNF(巴科斯范式)是描述Java编程语言结构的一种形式化方法,它是一种用于定义上下文无关文法的形式系统。BNF全称为Backus-Naur Form,由John Backus和Peter Naur提出,广泛应用于编译原理和语言设计中。在...
BNF(巴科斯范式)是一种形式语言的描述方法,全称为Backus-Naur Form,用于定义计算机语言的语法规则。在SQL-92 BNF中,我们可以通过这种形式化的描述理解SQL-92的语法结构。 "sql-92.bnf.html"这个文件很可能是对...
### LISP语言的特点及其文法的BNF描述 #### 摘要 LISP(LISt Processing)是一种重要的符号处理编程语言,自1958年由John McCarthy提出以来,在人工智能领域得到了广泛的应用和发展。Scheme语言作为LISP的一种方言...
在PL/0语言中,BNF被用来描述语言的结构和语法规则,使得我们可以明确地了解哪些组合的字符序列构成了有效的PL/0程序。 "PL-0.rar"是一个压缩包文件,其中包含了一份关于PL/0语言的BNF描述的文档,文件名为"PL-0....
实验二是对BNF定义的熟悉,BNF定义了一种语言的结构,通过一系列规则描述了语句和表达式的构造方式。以SP语言为例,其BNF定义如下: 1. `<program>`由零个或多个`<progline>`组成,这表明程序可以由一个或多个语句...
BNF是一种用于形式化描述上下文无关文法的符号表示法,常被用来定义编程语言的语法。通过图形化展示C语言的BNF语法,可以更加直观地理解C语言的各种语法规则。 ### 文件内容解析 #### 文件标题与描述 - **标题**:...
RRDiagram, 从代码或者BNF生成铁路图,从代码生成 BNF RRDiagram从代码或者BNF生成铁路图。 从代码生成 BNF 。rtc图是一个Java库,它从代码中生成铁路图( 也称为语法图),从。 输出格式是一个非常 compact SVG图像,...
BNF(巴科斯范式,Backus-Naur Form)是一种形式语法的表示法,常用于描述编程语言或查询语言的结构。在这个“sql-2003-bnf.tar.gz”压缩包中,我们有“sql-2003-2.bnf.html”这个文件,它很可能包含了SQL 2003的BNF...