1 Welcome to PLT Scheme
2 Scheme Essentials
3 Built-In Datatypes
4 Expressions and Definitions
5 Programmer-Defined Datatypes
6 Modules
7 Input and Output
8 Contracts
9 Classes and Objects
10 Exceptions and Control
11 Iterations and Comprehensions
12 Regular-Expression Matching (Regexps)
13 Pattern Matching
14 Quasiquoting
15 Units (Higher-Order Modules)
16 Threads
17 Syntactic Extension (Macros)
18 Reflection and Dynamic Evaluation
19 Reader Extension
20 Security
21 Memory Management
22 Performance
23 Foreign-Function Interface (FFI)
24 Scripts
25 Graphical User Interfaces (GUIs)
26 More Tools
Index

contents

 index

← prev  up  next →

 

4.1 Notation

This chapter (and the rest of the documentation) uses a slightly different notation than the character-based grammars of the Scheme Essentials chapter. The grammar for a use of a syntactic form something is shown like this:

(something [id ...+] an-expr ...)

The italicized meta-variables in this specification, such as id and an-expr, use the syntax of Scheme identifiers, so an-expr is one meta-variable. A naming convention implicitly defines the meaning of many meta-variables:

Square brackets in the grammar indicate a parenthesized sequence of forms, where square brackets are normally used (by convention). That is, square brackets do not mean optional parts of the syntactic form.

A ... indicates zero or more repetitions of the preceding form, and ...+ indicates one or more repetitions of the preceding datum. Otherwise, non-italicized identifiers stand form themselves.

Based on the above grammar, then, here are a few conforming uses of something:

  (something [x])

  (something [x] (+ 1 2))

  (something [x my-favorite-martian x] (+ 1 2) #f)

Some syntactic-form specifications refer to meta-variables that are not implicitly defined and not previously defined. Such meta-variables are defined after the main form, using a BNF-like format for alternatives:

(something-else [thing ...+] an-expr ...)

 

thing

 

=

 

thing-id

 

 

|

 

thing-keyword

The above example says that, within a something-else form, a thing is either an identifier or a keyword.

 

contents

 index

← prev  up  next →