racket/collects/deinprogramm/scribblings/std-grammar.ss
Eli Barzilay 4288c6c2c7 The Scribble reader was improved to make it pull out the syntax
punctuations outside of the form, as it does with quote punctuations.
So things like this

  #, @foo{...}

that required the space to make the @foo read as a scribble form are
now better written as

  @#,foo{...}

This changes all such occurrences.  (In case you see this change in
your files and are worried that there might be changes: I mechanically
verified that the result of `read'ing the modified files is identical
to the previous version.)

svn: r15111
2009-06-07 10:12:32 +00:00

92 lines
3.3 KiB
Scheme

#reader scribble/reader
#lang scheme/base
(require scribblings/htdp-langs/common
scribble/decode
(for-label deinprogramm/DMdA-beginner))
(provide prim-nonterms
schemegrammar*-DMdA)
(define ex-str "Dies ist eine Zeichenkette, die \" enthält.")
(define-syntax-rule (schemegrammar*-DMdA
#:literals (lit ...)
(def-rule ...)
(prod ...)
(expr-rule ...))
(schemegrammar*
#:literals (define define-record-procedures lambda cond if and or let letrec let* begin
#;require lib planet
check-expect check-within check-error
define-contract :
predicate one-of mixed list %a %b %c
lit ...)
(... [program (code:line def-or-expr ...)])
[def-or-expr definition
expr
test-case
#;library-require]
[definition @#,scheme[(define id expr)]
@#,scheme[(define-record-procedures id id id (id (... ...)))]
@#,scheme[(define-record-procedures-parametric (id id (... ...)) id id (id (... ...)))]
@#,scheme[(define-contract id contract)]
@#,scheme[(: id contract)]
def-rule ...]
prod ...
[expr @#,scheme[(code:line (expr expr (... ...)) (code:comment @#,seclink["application"]{Prozedurapplikation}))]
@#,scheme[#t]
@#,scheme[#f]
@#,scheme[number]
@#,scheme[string]
@#,scheme[(lambda (id (... ...)) expr)]
@#,scheme[(code:line id (code:comment @#,seclink["id"]{Bezeichner}))]
@#,scheme[(cond (expr expr) (expr expr) (... ...))]
@#,scheme[(cond (expr expr) (... ...) (else expr))]
@#,scheme[(if expr expr)]
@#,scheme[(and expr (... ...))]
@#,scheme[(or expr (... ...))]
@#,scheme[(let ((id expr) (... ...)) expr)]
@#,scheme[(letrec ((id expr) (... ...)) expr)]
@#,scheme[(let* ((id expr) (... ...)) expr) ]
@#,scheme[(begin expr expr (... ...))]
expr-rule ...]
[contract id
@#,scheme[(predicate expr)]
@#,scheme[(one-of expr (... ...))]
@#,scheme[(mixed contract (... ...))]
@#,scheme[(code:line (contract (... ...) -> contract) (code:comment @#,seclink["proc-contract"]{Prozedur-Vertrag}))]
@#,scheme[(list contract)]
@#,scheme[(code:line %a %b %c (code:comment @#,seclink["contract-variable"]{Vertrags-Variable}))]
@#,scheme[(combined contract (... ...))]
@#,scheme[(property expr contract)]
]
[test-case @#,scheme[(check-expect expr expr)]
@#,scheme[(check-within expr expr expr)]
@#,scheme[(check-error expr expr)]]
#;(...
[library-require @#,scheme[(require string)]
@#,scheme[(require (lib string string ...))]
@#,scheme[(require (planet string package))]])
(...
[package @#,scheme[(string string number number)]])))
(define prim-nonterms
(make-splice
(list
@t{Ein @scheme[_id] ist eine Folge von Zeichen, die weder Leerzeichen
noch eins der folgenden Zeichen enthält:}
@t{@hspace[2] @litchar{"} @litchar{,} @litchar{'} @litchar{`}
@litchar{(} @litchar{)} @litchar{[} @litchar{]}
@litchar["{"] @litchar["}"] @litchar{|} @litchar{;}
@litchar{#}}
@t{Ein @scheme[_number] ist eine Zahl wie z.B. @scheme[123], @scheme[3/2] oder
@scheme[5.5].}
@t{Ein @scheme[_string] ist eine Zeichenkette, und durch ein Paar von @litchar{"} umschlossen.
So sind z.B. @scheme["abcdef"],
@scheme["This is a string"] und @scheme[#,ex-str] Zeichenketten.}
)))