command | C | ::= | V
=
E
![]() | ||||
expression | E | ::= | N
![]() ![]() ![]() ![]() ![]() ![]() ![]() | ||||
![]() | |||||||
![]() | |||||||
![]() | |||||||
![]() | |||||||
function | F | ::= | primop
![]() ![]() | ||||
list | L | ::= | []
![]() ![]() ![]() | ||||
identifier | I | ::= | V
![]() ![]() | ||||
quotation | Q | ::= | ^
E
![]() | ||||
name | V | ::= | simple.identifier
number
| N
| ::=
| integer.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. 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) |