----------------------------------------------------------------------
--- Knud van Eeden --- 17 May 2008 - 18:42 pm ------------------------
How to create (ASCII text) diagram representation of regular expression or Extended Backus Naur form? [Grammar / Parser / Syntax diagram / Railroad diagram / BNF / EBNF]
===
SOME IDEAS:
===
The simplest method (e.g. converting BNF (similar regular expression) to ASCII graph) is probably the following:
Overview:
Infix -> Postfix -> Evaluate postfix and store each of the subresults in files (or buffers) and put that filenumber (or buffernumber) on the stack. Pop one or more buffer numbers from the stack and combine them using the unary or binary operators ('+', ',', '*', ...). Put each subendresult again in a separate file or buffer and put that file or buffer number on the stack. Until the stack is empty.
--- cut here: begin --------------------------------------------------
"{a?|b*|c+|d|e|f|ghij}|{a?|b*|c+|d|e|f|ghij}"
is represented by this graph
+-+ +-+ +-+ +-+
+->-+a|->-+->-+->-+->-+->-+->-+->-+->-+h+->-+i+->-+j+->-+
| +-+ | | | | | | | +-+ +-+ +-+ |
| | | | | | | | |
+->-------+ | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
+-+ | | | | | | |
+->-+b+->-+->-+ | | | | | |
| +-+ | | | | | | |
| | | | | | | |
+->-------+ | | | | | |
| | | | | | | |
+-------<-+ | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
+-+ | | | | | |
+->-+c|->-+->-----+ | | | | |
| +-+ | | | | | |
| | | | | | |
+-------<-+ | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
+-+ | | | | |
|d+->-----------------+ | | | |
+-+ | | | |
| | | |
+-+ | | | |
|e+->---------------------+ | | |
+-+ | | |
| | |
+-+ | | |
|f+->-------------------------+ | |
+-+ | |
| |
+-+ | |
|g+->-----------------------------+ |
+-+ |
|
+-+ +-+ +-+ +-+ |
+->-+a|->-+->-+->-+->-+->-+->-+->-+->-+h+->-+i+->-+j+->-+
| +-+ | | | | | | | +-+ +-+ +-+
| | | | | | | |
+->-------+ | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
+-+ | | | | | |
+->-+b+->-+->-+ | | | | |
| +-+ | | | | | |
| | | | | | |
+->-------+ | | | | |
| | | | | | |
+-------<-+ | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
+-+ | | | | |
+->-+c|->-+->-----+ | | | |
| +-+ | | | | |
| | | | | |
+-------<-+ | | | |
| | | |
| | | |
| | | |
| | | |
+-+ | | | |
|d+->-----------------+ | | |
+-+ | | |
| | |
+-+ | | |
|e+->---------------------+ | |
+-+ | |
| |
+-+ | |
|f+->-------------------------+ |
+-+ |
|
+-+ |
|g+->-----------------------------+
+-+
--- cut here: end ----------------------------------------------------
See e.g.
-Computer: Editor: Text: TSE: How to create (ASCII text) diagram representation of regular expression or Extended Backus Naur form? [Grammar / Parser / Syntax diagram / Railroad diagram / BNF / EBNF]
http://goo.gl/Qr4h8
===
-How about using current version of GraphViz?
===
-Given a graph
-A directed graph is a special case of a graph
-a Backus Naur Form (BNF) is a special case of a directed graph
-an Extended Backus Naur Form (EBNF) is a special case of a Backus Naur form
-Thus an Extended Backus Naur form is a special case of a directed graph
-Computer languages are a class of languages, of which the regular expression is one of the simplest
-Computer languages' grammatical structure can be represented in a Backus Naur form
-A regular expression is thus a special case of a Backus Naur form
-Thus a regular expression is a special case of a directed graph
-You can use the (GraphViz) dot language to draw a directed graph (e.g. in ASCII text form)
-Thus you can use the (GraphViz) dot language to draw an Extended Backus Naur form (e.g. in ASCII text form)
-Thus you can use the (GraphViz) dot language to draw a regular expression (e.g. in ASCII text form)
===
Using Graphviz to create if, while, repeat presentation
IF:
--- cut here: begin --------------------------------------------------
a11 o->-[c]->-o b11
| |
a12 o---->----o b12
--- cut here: end ----------------------------------------------------
--- cut here: begin --------------------------------------------------
digraph G {
ranksep = 0.1;
size = "7.5, 7.5";
// all nodes are default point shaped
node [fontsize=10, shape=point, color=grey, label=""];
// this node setting overwrites the default node setting
c [color=black, shape=box, label="c"];
// make sure the corresponding same height points stay on the same height
{ rank = same; a11; c; b11; }
{ rank = same; a12; b12; }
// all connection lines are default straight lines without arrow
edge [arrowhead=none, style=filled, color=black];
// now connect the points with straight lines
a11 -> a12;
b11 -> b12;
// this settings overwrite the default connection line
edge [style=filled, fontsize=8, arrowtail=none, arrowhead=normal, color=black];
// now connect points using arrows
a11 -> c;
c -> b11;
edge [style=filled, fontsize=8, arrowtail=none, arrowhead=normal, color=black, weight=0];
a12 -> b12;
}
--- cut here: end ----------------------------------------------------
===
REPEAT:
--- cut here: begin --------------------------------------------------
a11 o->-[c]->-o b11
| |
a12 o----<----o b12
--- cut here: end ----------------------------------------------------
--- cut here: begin --------------------------------------------------
digraph G {
ranksep = 0.1;
size = "7.5, 7.5";
// all nodes are default point shaped
node [fontsize=10, shape=point, color=grey, label=""];
// this node setting overwrites the default node setting
c [color=black, shape=box, label="c"];
// make sure the corresponding same height points stay on the same height
{ rank = same; a11; c; b11; }
{ rank = same; a12; b12; }
// all connection lines are default straight lines without arrow
edge [arrowhead=none, style=filled, color=black];
// now connect the points with straight lines
a11 -> a12;
b11 -> b12;
// this settings overwrite the default connection line
edge [style=filled, fontsize=8, arrowtail=none, arrowhead=normal, color=black];
// now connect points using arrows
a11 -> c;
c -> b11;
edge [style=filled, fontsize=8, arrowtail=none, arrowhead=normal, color=black, weight=0];
b12 -> a12;
}
--- cut here: end ----------------------------------------------------
===
WHILE
--- cut here: begin --------------------------------------------------
a10 o----<----o b10
| |
a11 o->-[c]->-o b11
| |
a12 o---->----o b12
--- cut here: end ----------------------------------------------------
--- cut here: begin --------------------------------------------------
digraph G {
ranksep = 0.1;
size = "7.5, 7.5";
// all nodes are default point shaped
node [fontsize=10, shape=point, color=grey, label=""];
// this node setting overwrites the default node setting
c [color=black, shape=box, label="c"];
// make sure the corresponding same height points stay on the same height
{ rank = same; a10; b10; }
{ rank = same; a11; c; b11; }
{ rank = same; a12; b12; }
// all connection lines are default straight lines without arrow
edge [arrowhead=none, style=filled, color=black];
// now connect the points with straight lines
a10 -> a11;
a11 -> a12;
b10 -> b11;
b11 -> b12;
// this settings overwrite the default connection line
edge [style=filled, fontsize=8, arrowtail=none, arrowhead=normal, color=black];
// now connect points using arrows
a11 -> c;
c -> b11;
a12 -> b12;
edge [style=filled, fontsize=8, arrowtail=none, arrowhead=normal, color=black, weight=0];
b10 -> a10;
}
--- cut here: end ----------------------------------------------------
===
OTHER IDEAS
===
Steps: Overview:
1. -Use (GraphViz) dot language to draw a regular expression (e.g. in ASCII text form)
2. -E.g. given the Extended Backus Naur form or regular expression
(abc*)|(de)
in TSE this would be
{abc*}|{de}
3. -In dot language this becomes e.g.
(for each element, use arrow '->' to indicate the connection direction
in between.
? (or 'if') you replace by 1 -> 2; 1 -> 2;
* (or 'while') you replace by 1 -> 3; 1 -> 2; 2 -> 1;
+ (or 'repeat') you replace by 1 -> 2; 2 -> 1;
then possibly remove some spurious links afterwards
)
[kn, ri, sa, 19-07-2008 13:12:17]
Note: This is still not showing correct (e.g. * (or 'while').
You will have to do more research.
--- cut here: begin --------------------------------------------------
digraph myRegularExpression {
rankdir = LR;
begin -> a;
a -> b;
b -> c;
b -> end;
c -> b;
c -> end;
begin -> d;
d -> e;
e -> end;
}
--- cut here: end ----------------------------------------------------
4. -Goto URL
http://bloodgate.com/graph-demo/
5. -Copy/paste this
6. -Enable radio button 'ASCII'
7. -Click button 'Render'
8. -That will show a screen output similar to the following:
--- cut here: begin --------------------------------------------------
+-------------------+
| v
+-------+ +---+ +---+ +---+ +-----+
| begin | --> | a | --> | b | --> | c | --> | end |
+-------+ +---+ +---+ +---+ +-----+
| ^ | ^
| +---------+ |
v |
+-------+ +---+ |
| d | --> | e | --------------------------+
+-------+ +---+
--- cut here: end ----------------------------------------------------
9. -Copy/paste this e.g. in your ASCII text file
10. -Possibly create (render) it in another format
---
---
===
Idea:
One approach might be to build an n-ary tree (it might even have
to be a graph) from the given BNF (using a parser for BNF itself), walk
that tree (or graph) twice. First time only reading the minimum and
maximum scaling values by looking at the parts. And then print or draw
the tree scaled correctly while walking it the second time, using that
scaling values. That should work as far as I can see.
Of course ideas are cheap.
===
Idea:
-To automate this further
Given your regular expression or Extended Backus Naur form,
e.g.
1. -Convert TSE regular expression to Extended Backus Naur form
or Perl regular expression
(so that you can use it also in Perl Graph::RegEx)
2. -Convert expression (regular expression or Extended Backus Naur
form) automatically to e.g. GraphViz dot language
3. -Pass that expression as a GET parameter to an online URL
4. -Microsoft Visio accepts as input SVG format.
Thus converting your diagrams (e.g. dot to SVG) lets you further
manipulate that diagrams in Microsoft Visio.
---
-To possibly create an Extended Backus Naur form diagram yourself:
Ideas:
1. -Problem solving method: Try to get the simplest possible representation,
and work from there
2. -Use squares (or even simpler lines, or vectors) to represent
the elements
+---+
| > |
| a |
+---+
===
'?' or 'IF' becomes then 2 x 3 squares
+---+---+---+
| | | |
| | > | |
+---+---+---+
+---+---+---+
| | > | |
| | a | |
+---+---+---+
===
'+' or 'REPEAT' becomes then 2 x 3 squares
+---+---+---+
| | | |
| | < | |
+---+---+---+
+---+---+---+
| | > | |
| | a | |
+---+---+---+
===
'*' or 'WHILE' becomes then 3 x 3 squares
+---+---+---+
| | | |
| | > | |
+---+---+---+
+---+---+---+
| | > | |
| | a | |
+---+---+---+
+---+---+---+
| | | |
| | < | |
+---+---+---+
That are your main smallest building blocks.
===
Given the regular expression or the Extended Backus Naur form
the main operations are
-serial: add (translate) the blocks horizontally
-parallel (or alternate): add (translate) the blocks vertically
-grouping (collects one or more groups of blocks)
-closure: select the appropriate building block and insert it
===
E.g.
(abc*) becomes in this simplest form:
Because it is serial, you translate horizontal.
+---+---+---+
| | | |
| | > | |
+---+---+---+
+---+---+---+
| | > | |
| | c | |
+---+---+---+
+---+---+---+---+---+
| > | > | | | |
| a | b | | < | |
+---+---+---+---+---+
===
E.g.
(de) becomes in this simplest form:
Because it is serial, you translate horizontal.
+---+---+
| > | > |
| d | e |
+---+---+
===
E.g.
(abc*)|(de) becomes in this simplest form:
Because it is parallel (or alternate), you translate vertical.
+---+---+---+
| | | |
| | > | |
+---+---+---+
+---+---+---+
| | > | |
| | c | |
+---+---+---+
+---+---+---+---+---+
| > | > | | | |
| a | b | | < | |
+---+---+---+---+---+
+---+---+
| > | > |
| d | e |
+---+---+
---
This is just a starting idea, you have then have to add some extra
squares noting the 'begin' and 'end', and some squares for the arrows '>',
and some connection squares.
---
You might have to determine the largest rectangle spanning the blocks
(e.g. by determining the maximum of the individual horizontal and
vertical sides of the blocks). This in order to collect all squares
which belong to a group (after which you translate that whole group to
a new position). Your group is then the rectangle which spans all
involved blocks.
---
You can e.g. use a (vector) translation transformation (=add values to
the x or y coordinates of the blocks) to move the blocks vertically or
horizontally.
Note: you can convert a vector translation to a vector multiplication by adding another dimension
(e.g. from 3 x 3 to 4 x 4).
The advantage of this approach is that you can work mainly with vector
multiplications only to do a translation, which leads to more uniform
and less (basically only one, that is multiplication, to do it all)
calculation methods.
---
To automate this drawing process, e.g. analyze the given regular
expression or Backus Naur form expression, convert it to a tree (e.g.
using a methode similar to method(s) used to convert an infix to suffix
notation (RPN or reverse Polish notation), because serial is no
operation, grouping is similar to parenthesis '()', and closure *, ?
and + are an unary operators, each with a certain priority), and
analyze further.
===
Book: see also:
===
Diagram: see also:
===
Help: see also:
===
Image: see also:
===
Internet: see also:
---
Create SVG Railroad diagram online
http://railroad.my28msec.com/rr/ui
---
AntLRWorks automatically creates syntax railroad graph from your BNF
http://stackoverflow.com/questions/5495307/parsing-flow-graph-parsing-flowchart-what-is-this-called-and-how-can-i-make-th
---
Computer: Editor: Text: TSE: Syntax: Highlight: Language: Computer: Backus: Naur: Form: File: Source: bnf.txt
http://goo.gl/20jJm
---
Language: Grammar: Parser: Backus Naur Form: Syntax: Library: BNF: Type: EBNF: Language: Computer: TSE: SAL: Syntax: File: Source: ebnfLanguageComputerTseSalSyntax.ebnf [railroad diagram]
http://goo.gl/oDmN9
---
Wei parser generator (+Graphviz diagrams)
http://code.google.com/p/wei-parser-generator/
---
Railroad (syntax) diagrams
https://mailman.research.att.com/pipermail/graphviz-interest/2008q3/005570.html
---
Visualization of Compiler Graphs (VCG)
http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html
---
Showgrammar: Python: Convert YACC syntax diagrams to railroad diagrams
http://compilers.iecc.com/comparch/article/00-09-056
---
Showgrammar: Python: Convert YACC syntax diagrams to railroad diagrams
http://se.wtb.tue.nl/~hat/showgrammar/
---
Backus Naur form: Images
http://askbluey.com/Image?q=Backus%E2%80%93Naur+Form
---
Language: Grammar: Parser: Backus Naur Form: Presentation: Operation: Create: Link: Overview: Do you have an overview of links of presentations of Backus Naur Forms? Database: Table: Master: 1 [railroad diagram / BNF / EBNF]
http://goo.gl/En1sJ
---
Context Free Grammar Visualization Using SVG
http://www.svgopen.org/2009/papers/58-Interactive_Documentation_using_JavaScript_and_SVG/
---
Computer: Editor: Text: TSE: Operation: Draw: Rubberbanding: Simple: How to draw rectangular ASCII Backus Naur Form boxes (if, repeat, while, ...) using rubberbanding? [mouse]
http://goo.gl/yf6nY
---
Computer: Editor: Text: TSE: Text: Block: Operation: Convert: Simplest: How to convert an ASCII text diagram block to graphic? [Ditaa]
http://goo.gl/B0tcl
---
Graph: Drawing graphs: GraphViz dot language
http://www.graphviz.org
---
Language: Computer: Datastructure: Graph: Dot: Program: Graphviz: Link: Overview: Can you give an overview of links?
http://goo.gl/adj7e
---
Graph: Drawing graphs: Online: using the GraphViz dot language (or Perl Graph::Easy)
http://bloodgate.com/graph-demo/
---
Graph: Data structure: Definition: What is a definition of a graph?
http://goo.gl/WsVMW
---
Compiler: Language: Overview: Hierarchy: Chomsky: Model: What is the Chomsky hierarchy?
http://goo.gl/JHOEQ
---
Backus Naur form: Railroad diagram: Simple: Java
http://teaching.cs.uml.edu/Texts/OReillyCDBookshelf/java/langref/ch01_05.htm
---
Extended Backus Naur form: History: Notations for context free grammars
http://www.cs.man.ac.uk/~pjj/bnf/bnf.html
---
Backus Naur form: History: Wikipedia: John Backus
http://en.wikipedia.org/wiki/John_Backus
---
Backus Naur form: History: Wikipedia: Peter Naur
http://en.wikipedia.org/wiki/Peter_Naur
---
Backus Naur form: Wikipedia
http://en.wikipedia.org/wiki/Backus-Naur_form
---
Backus Naur form: What is BNF notation?
http://cui.unige.ch/db-research/Enseignement/analyseinfo/AboutBNF.html
---
Backus Naur form: Text parsing, formal grammars and BNF introduction
http://eikke.com/text-parsing-formal-grammars-and-bnf-introduction/
---
Backus Naur form: BNF and EBNF
http://www.augustana.ab.ca/~mohrj/courses/2000.fall/csc370/lecture_notes/ebnf.html
---
Extended Backus-Naur form: Wikipedia
http://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form
---
Extended Backus-Naur form: What is EBNF?
http://goo.gl/5G0XS
---
BNF and EBNF: What are they and how do they work?
http://www.garshol.priv.no/download/text/bnf.html
---
Language: Computer: BNF: Diagram: Railroad: Operation: Create: How to: What is a good tool for creating railroad diagrams?
http://stackoverflow.com/questions/773371/what-is-a-good-tool-for-creating-railroad-diagrams/773453#773453
---
Language: Computer: BNF: Diagram: Railroad: Operation: Create: How to: What is a good tool for creating railroad diagrams?
http://stackoverflow.com/questions/796824/tool-for-generating-railroad-diagram-used-on-json-org
---
Generating Syntax Diagrams Using TCL/Tk
http://wiki.tcl.tk/21708
---
TCL/Tk: Parser: Backus Naur Form: Syntax: Diagram: Railroad: Operation: Create: How to: Operation: Run: How to
http://goo.gl/zcUBm
---
EBNF: Railroad diagram: Elaine Rich
http://www.cs.utexas.edu/~ear/cs341/automatabook/appcproglang.html
---
SYNGEN - a Syntax diagram drawing tool
http://homepages.inf.ed.ac.uk/wadler/realworld/syngen.html
---
Extended Backus Naur form: Diagram: Online: University: Regensburg: Automatic generation of graphical syntax diagrams from text Extended Backus Naur Form (EBNF) or regular expression
http://www-cgi.uni-regensburg.de/~brf09510/syntax.html
---
---
---
Backus Naur form: Diagram: Online: BNF Web Club (Backus Naur form Java, Ada, Modula-2, LISP, Lazy, SQL, PL/SQL, SQL2, IDL)
http://cuiwww.unige.ch/db-research/Enseignement/analyseinfo/BNFweb.html
---
---
---
Extended Backus Naur form: Diagram: Program: EBNF-Visualizer
http://dotnet.jku.at/applications/Visualizer/
---
---
---
---
Meta languages Railroad diagrams
http://www.slideshare.net/shortcomp/meta-languages-railroad-diagrams?src=related_normal&rel=1700676
---
Meta languages
http://www.slideshare.net/ldunphy/meta-languages
---
Meta languages: Difference between BNF and EBNF
http://www.slideshare.net/shortcomp/meta-languages-bnf-ebnf-student-version
---
Extended Backus Naur form: Diagram: Railroad diagram: Horizontal or vertical
http://leepoint.net/JavaBasics/appendix/10-syntax-notation.html
===
Extended Backus Naur form: Diagram: Latex: Railroad diagrams in Latex
http://www.hi.is/~snorri/091263/rail/node1.html#SECTION00010000000000000000
---
Extended Backus Naur form: Diagram: Latex: Rail
http://www.ctan.org/tex-archive/support/rail/
---
Extended Backus Naur form: Diagram: Latex: Ebnf2tex.sed
http://www.geocities.com/robertzierer/Scripts.html
http://www.geocities.com/robertzierer/Scripts.zip
http://www.geocities.com/robertzierer/ebnf2tex-screenshot.html
---
Extended Backus Naur form: Diagram: Latex: Syngen
http://homepages.inf.ed.ac.uk/wadler/realworld/syngen.html
---
Wikipedia: Syntax diagram
http://en.wikipedia.org/wiki/Syntax_diagram
---
HTML_Railroad_Diagram
http://code.google.com/p/html-railroad-diagram/
---
Extended Backus Naur form: Diagram: Automatic conversion from text EBNF to graphical EBNF: Clapham: Java (railroad diagram generator. Generates diagrams in PNG and SVG from parser grammars specified in BNF and other parser formats. Implemented in Java). Created by Julian Hyde.
http://julianhyde.blogspot.com/2009/05/clapham-railroad-diagram-generator.html
---
Java: Source: Code: Clapham
http://sourceforge.net/projects/clapham/
---
---
Extended Backus Naur form: Diagram: Automatic conversion from text EBNF to graphical EBNF: EBNF Parser & Syntax Diagram Renderer: PHP
http://wiki.karmin.ch/ebnf/index
===
---
Data: Structure: Graphviz: How to create a Backus Naur form?: Link: Can you give an overview of links?
https://bit.ly/3rrzVwq
---
Extended Backus Naur form: Diagram: Automatic conversion from text EBNF to graphical EBNF: Program: Bungisoft: Visualizer
http://www.bungisoft.com
http://mac.wareseeker.com/download/bungisoft-syntax-visualizer-1.2.2.rar/bb0576270 (trial version, no full version available anymore commercially)
---
Extended Backus Naur form: Diagram: Automatic conversion from text EBNF to graphical EBNF: Download and install Emacs, then search for the file ebnf2ps.el and similar. Written in LISP.
http://compilers.iecc.com/comparch/article/02-12-059
---
Extended Backus Naur form: Diagram: Automatic conversion from text EBNF to graphical EBNF: PostScript: Ebnf2ps: Convert EBNF to Latex / PostScript / PDF
http://www.informatik.uni-freiburg.de/~thiemann/haskell/ebnf2ps/
---
Diagram: Automatic conversion: Visual and Interactive Tools: Susan H. Rodger: Java
http://www.cs.duke.edu/~rodger/tools/tools.html
---
Backus Naur form: Diagram: Automatic conversion from Yacc BNF like grammar to railroad diagram: ShowGrammar: Python
http://se.wtb.tue.nl/~hat/showgrammar/
---
Extended Backus Naur form: Examples of Extended Backus Naur form for computer languages: Program: Gold
http://www.devincook.com/GOLDParser/getting-started/index.htm
---
Extended Backus Naur form: Examples of Extended Backus Naur form for computer languages: MATHS
http://csci.csusb.edu/dick/samples/
---
Backus Naur form: Examples of Backus Naur form for computer languages: University: Santiago
http://www.ucse.edu.ar/fma/compiladores/ingles/gramaticas.html
---
Backus Naur form: Examples of Backus Naur form for computer languages: BNF Web club
http://cuiwww.unige.ch/db-research/Enseignement/analyseinfo/BNFweb.html
---
Backus Naur form: Examples of Backus Naur form for computer languages: C
http://lists.canonical.org/pipermail/kragen-hacks/1999-October/000201.html
---
Backus Naur form: Examples of Backus Naur form for computer languages: C
http://www.math.grin.edu/~stone/courses/languages/C-syntax.xhtml
---
Backus Naur form: Examples of Backus Naur form for computer languages: C: Yacc
http://www.lysator.liu.se/c/ANSI-C-grammar-y.html
---
Backus Naur form: Examples of Backus Naur form for computer languages: C++
http://www.nongnu.org/hcb/#header-name
---
Backus Naur form: Examples of Backus Naur form for computer languages: Java
http://www.daimi.au.dk/dRegAut/JavaBNF.html
---
Backus Naur form: Examples of Backus Naur form for computer languages: Java
http://www.martinrinehart.com/articles/javabnf.html
---
Backus Naur form: Examples of Backus Naur form for computer languages: Oberon
http://www.statlab.uni-heidelberg.de/projects/oberon/ItO/www/Oberon2.EBNF.html
---
Backus Naur form: Examples of Backus Naur form for computer languages: Python
http://www.python.org/doc/2.4.3/ref/grammar.txt
---
Extended Backus Naur form: Examples of Backus Naur form for computer languages: Python
http://www.martinrinehart.com/articles/python-grammar.html
---
Backus Naur form: Examples of Backus Naur form for computer languages: Ruby
http://www.ruby-doc.org/docs/ruby-doc-bundle/Manual/man-1.4/yacc.html
---
Backus Naur form: Examples of Backus Naur form for computer languages: BNF Grammars for SQL-92, SQL-99, SQL-2003
http://savage.net.au/SQL/
---
Backus Naur form: BNF for Java
http://bnf-for-java.sourceforge.net/
---
Backus Naur form: Table to convert between BNF, YACC/Bison, EBNF, ISO/IEC 14077, BS6154, ABNF, XML, SGML, XBNF
http://www-cgi.uni-regensburg.de/~brf09510/grammartypes.html
---
Backus Naur form: Parser: Generator: C: BNF Parser Generator
http://www.nongnu.org/bnf/
---
Backus Naur form: Parser: Convert: BNF to JavaCC
http://www.cs.man.ac.uk/~pjj/projects/javacc.html
---
Backus Naur form: Converting Backus Naur form to computer source code: Python: PyParsing
http://eikke.com/pyparsing-introduction-bnf-to-code/
---
Backus Naur form: Parser: Forth: A BNF parser in Forth
http://www.bradrodriguez.com/papers/bnfparse.htm
---
Extended Backus Naur form: Perl: CPAN: package: Parse::ABNF
http://search.cpan.org/~bjoern/Parse-ABNF-0.05/lib/Parse/ABNF.pm
---
Extended Backus Naur form: Perl: CPAN: package: Parse::EBNF::Token
http://search.cpan.org/~iamcal/Parse-EBNF-1.03/lib/Parse/EBNF/Token.pm
---
Extended Backus Naur form: Perl: CPAN: package: Parse::EBNF::Rule
http://search.cpan.org/~iamcal/Parse-EBNF-1.03/lib/Parse/EBNF/Rule.pm
---
Perl: CPAN: package: Parse::EBNF
http://search.cpan.org/~iamcal/Parse-EBNF-1.03/lib/Parse/EBNF.pm
---
Regular Expression: Wikipedia
http://en.wikipedia.org/wiki/Regular_expression
---
Regular expression: File: Log: Perl: CPAN: package: Regexp::Log
http://search.cpan.org/~book/Regexp-Log-0.04/lib/Regexp/Log.pm
---
Regular expression: Perl: CPAN: package: Graph::Regexp
http://search.cpan.org/~tels/Graph-Regexp-0.05/lib/Graph/Regexp.pm
---
Language: Computer: Script language: Perl: Expression: Regular: Operation: Draw: How to visualize Perl regular expressions using GraphViz? GraphViz::Regex: Operation: Run: How to [binary tree]
http://goo.gl/a8PVb
---
---
---
Regular expression: Perl: CPAN: package: Regexp::Parser
http://search.cpan.org/author/PINYAN/Regexp-Parser-0.20/lib/Regexp/Parser.pm
---
Regular expression: Perl: CPAN: package: Regexp::Genex
http://search.cpan.org/search%3fmodule=Regexp::Genex
---
Language: Computer: Script language: Perl: Grammar: Backus: Naur: Form: How to visualize recursive descent? Graphviz::Parse::RecDescent: Operation: Run: How to
http://goo.gl/zVr7v
---
RailRoad diagrams
http://weblogs.java.net/blog/cayhorstmann/archive/2006/07/railroad_diagra.html
---
RFF Flowchart generator
http://www.rff.com
---
Smartdraw flow chart generator
http://www.smartdraw.com
---
Programmiersprachen
http://www.mi.uni-koeln.de/c/mirror/f7alpha1.informatik.fh-muenchen.de/~schieder/programmieren-1-ws96-97/sprachen.html
---
Pattern Matching vs Lexical Grammar Specification
http://xahlee.org/cmaci/notation/pattern_matching_vs_pattern_spec.html
---
Download: Draw Extended Backus Naur form manually in Microsoft Visio v2007 Professional (stencil)
---
===
SDG2 = Syntax Diagram Generator 2 (for ANTLR). SDG2 allows to visualize textual syntax diagrams (ANTLR) as "railroad" diagrams. Created by Mark Malakanov.
http://olex.openlogic.com/packages/print/1234
===
Podcast: see also:
===
Record: see also:
===
Screencast: see also:
===
Table: see also:
===
Video: see also:
===
<version>1.0.0.0.37</version>
----------------------------------------------------------------------