command C ::= V  =  E E
expression E ::= N V Q L F F  :  E ( E )
if:[   E     E     E   ]
let:[   I     E     E   ]
rec:[   I     E     E   ]
fix:[ E  !  E ]
function F ::= primop (\ I  .  E ) E  :  F
list L ::= [] [   E     E   ] [   E     E   *] [   E     E   !   E   ]
identifier I ::= V   [   I     I   ] [   I     I   !   I   ]
quotation Q ::= ^   E   " string.of.characters "
name V ::= simple.identifier
number N ::= integer.numeral floating.point.numeral

command ::= assignment
expression
assignment ::= V = expression
Top level, global assignment of a value to a name. The name must be a simple identifier. Any subsequent occurance of this name evaluates to the assigned value.
[DANGER] In other words, assigned values override bound values, resulting in name-space interference.
expression ::= number
name
quotation
list
function
application
parenthesized expression
conditional
let-expression
rec-expression
fix-expression
Daisy is an expression oriented language. Except at top level, all forms are regarded as expressions and are reduced to values, a process called evaluation.
quotation ::= ^ expression
" string.of.characters "
A quotation is a literal form of expression, whose value is the quoted object. A the value of a data quotation, ^e, is the quoted object, which may be any Daisy form. A string quotation specifies a literal string consisting of the characters between the `"' marks. Within a quoted string, the escape character "` (back-quote) is used to insert special characters (e.g. `", ``, and nonprinting codes)
TO BE CONTINUED.....