bkyk8rc3zvpnsf5inmcqq4n3k98cv6hj-my-site-hyper-literate-git.test.suzanne.soy-0.0.1

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 9cee9100aa6320e5104153105f21466a8a044b1a
parent 9ed7cf89ead366382705bd585cc905f0ac6a7ed5
Author: Matthew Flatt <mflatt@racket-lang.org>
Date:   Thu, 29 Jul 2010 06:56:05 -0500

add example to scribble/bnf docs

original commit: 33e3dac94eaa7cf66be90090d2ff0684950fcd6a

Diffstat:
Mcollects/scribblings/scribble/bnf.scrbl | 35+++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+), 0 deletions(-)

diff --git a/collects/scribblings/scribble/bnf.scrbl b/collects/scribblings/scribble/bnf.scrbl @@ -1,6 +1,7 @@ #lang scribble/doc @(require scribble/manual "utils.ss" + scribble/bnf (for-label scribble/bnf)) @title[#:tag "bnf"]{BNF Grammars} @@ -8,6 +9,40 @@ @defmodule[scribble/bnf]{The @racket[scribble/bnf] library provides utilities for typesetting grammars.} +For example, + +@verbatim[#:indent 2]|{ +@(let ([open @litchar{(}] + [close @litchar{)}]) + @BNF[(list @nonterm{expr} + @nonterm{id} + @BNF-seq[open @kleeneplus[@nonterm{expr}] close] + @BNF-seq[open @litchar{lambda} + open @kleenestar[@nonterm{id}] close + @nonterm{expr} close] + @nonterm{val}) + (list @nonterm{val} + @BNF-alt[@nonterm{number} @nonterm{primop}]) + (list @nonterm{id} + @elem{any name except for @litchar{lambda}})]) +}| + +produces the output + +@(let ([open @litchar{(}] + [close @litchar{)}]) + @BNF[(list @nonterm{expr} + @nonterm{id} + @BNF-seq[open @kleeneplus[@nonterm{expr}] close] + @BNF-seq[open @litchar{lambda} + open @kleenestar[@nonterm{id}] close + @nonterm{expr} close] + @nonterm{val}) + (list @nonterm{val} + @BNF-alt[@nonterm{number} @nonterm{primop}]) + (list @nonterm{id} + @elem{any name except for @litchar{lambda}})]) + See also @racket[racketgrammar]. @defproc[(BNF [prod (cons element? (listof element?))] ...) table?]{