Guide: PLT Scheme

1`` | Welcome to PLT Scheme
2`` | Scheme Essentials
3`` | Built-In Datatypes
4`` | Expressions and Definitions
5`` | Programmer-Defined Datatypes
6`` | Modules
7`` | Contracts
8`` | Input and Output
9`` | Regular Expressions
10`` | Exceptions and Control
11`` | Iterations and Comprehensions
12`` | Pattern Matching
13`` | Classes and Objects
14`` | Units (Components)
15`` | Reflection and Dynamic Evaluation
16`` | Macros
17`` | Performance
18`` | Running and Creating Executables
19`` | Compilation and Configuration
20`` | More Libraries
| Bibliography
| Index

Version: 4.0.2
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:

- A meta-variable that ends in id stands for an identifier, such as x or my-favorite-martian.

- A meta-identifier that ends in keyword stands for a keyword, such as #:tag.

- A meta-identifier that ends with expr stands for any sub-form, and it will be parsed as an expression.

- A meta-identifier that ends with body stands for any sub-form; it will be parsed as either a local definition or an expression. A body can parse as a definition only if it is not preceded by any expression, and the last body must be an expression; see also Internal Definitions.

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