----------------------------------------------------------------------
--- 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> ----------------------------------------------------------------------

Share |

This web page is created and maintained using the Semware TSE text editor