I. The Mesa subset
The subset of Mesa expressions interpreted by BugBane is roughly described by the following list of constructs. BugBane attempts to perform a reasonable amount of coercion to get values to agree with their targets. This coercion is usually more than the compiled langauge provides.
1, 1.2, "abc", 'A, TRUE, $atom-- fixed, float, rope, char, bool, atom constants
&x, foo, FooImpl -- simple variables, according to search rules below
X.Y -- X is a record, ref to a record, pointer to a record, a global frame
X[Y] -- X is a sequence or array, ref or pointer to a sequence or array
Proc[X, ...] -- Proc is a procedure taking given arguments
Type[X, ...] -- a record or array constructor (Type may be implicit)
NEW [T ← expr] -- only in the local world
X op Y -- for op in {+, -, *, /, MOD}
op[X, ...] -- for op in {MIN, MAX, ALL, LIST, CONS}
X ← Y -- X and Y are expressions, [] ← Y is permitted