In this chapter, the syntax of Lucid will be formally specified. Also, the denotational semantics of Lucid will be outlined. The example programs in Chapter 1, surprisingly perhaps, informally introduced all the syntax of Lucid. There, we saw where clauses, definitions, terms, dimension names variables, functions, constants, and operations. Now, we will see how these syntactic entities are formalized, and the examples in the previous chapter will be looked at again, this time to see which of the syntactic entities are being used, and how. Lucid is an expression-based language: every Lucid program is a term, which might be a where clause of size 1. A where clause of size n is an n-tuple of terms together with declarations of new dimensions and subsidiary definitions (that follow the keyword where). The definitions in a where clause have right-hand sides that may be where clauses. Thus, Lucid programs are naturally recursively structured, to arbitrary depth. We will say that Lucid is where clause structured, where we intend that expression to convey all that the expression block structured conveys about scoping in, say, Algol, Pascal, or Ada. After that very cursory top-down view of Lucid, we now immediately look at the basic entities from which terms are formed: variables, functions, constants, and operations. These four basic types of entities we will call atoms. Syntactically, variables and functions are represented by identifiers, which are alphanumeric strings that start with a letter. Constants and operations, on the other hand, are usually represented by characters other than letters, such as + and 3 and #. Some operations and constants are represented by alphanumeric strings, such as fby, true, and div. (Also, the ternary conditional operation is represented by four such strings: if, then, else, and fi.) We will say that these strings are not identifiers—they are special reserved keywords—and we will not allow them to be used to represent variables or functions. (This is standard practice for many languages.) All atoms have two arities, which we will call the Roman and the Greek arities.