class AS_CALL_EXPR < $AS_EXPR
****
Expressions which directly make a call. The parser should convert sugar expressions into these as well (except for /= which should be converted into an "=" expression and a call on "not").


Ancestors
$AS_EXPR $NEXT{_} $AS_NODE $PROG_ERR
AS_EXPR AS_NODE



Public


Readable Attributes
attr args:$AS_EXPR;
**** The arguments, if any. brackets. "a(1,2)[3,4]" gets turned into 2 AS_CALL_EXPR objects, one for a(1,2), and one for [3,4]. of arguments because orginated in a ">" or "<=" sugar expr.
attr flip:BOOL;
**** True if need to flip order of evaluation of arguments because orginated in a ">" or "<=" sugar expr.
attr is_array:BOOL;
**** True if this is a call with square brackets. "a(1,2)[3,4]" gets turned into 2 AS_CALL_EXPR objects, one for a(1,2), and one for [3,4]. of arguments because orginated in a ">" or "<=" sugar expr.
attr modes: AS_ARG_MODE;
**** Modes of these arguments (if present) brackets. "a(1,2)[3,4]" gets turned into 2 AS_CALL_EXPR objects, one for a(1,2), and one for [3,4]. of arguments because orginated in a ">" or "<=" sugar expr.
attr name:IDENT;
**** The name of the call. brackets. "a(1,2)[3,4]" gets turned into 2 AS_CALL_EXPR objects, one for a(1,2), and one for [3,4]. of arguments because orginated in a ">" or "<=" sugar expr.
attr next:T;
**** Pointer to next element in list, if any.
attr ob:$AS_EXPR;
**** The expr the call is made on, if any. brackets. "a(1,2)[3,4]" gets turned into 2 AS_CALL_EXPR objects, one for a(1,2), and one for [3,4]. of arguments because orginated in a ">" or "<=" sugar expr.
attr source:SFILE_ID;
**** The origin of a node in a Sather source file.
attr tp:AS_TYPE_SPEC;
**** The class the call is made on, if any. brackets. "a(1,2)[3,4]" gets turned into 2 AS_CALL_EXPR objects, one for a(1,2), and one for [3,4]. of arguments because orginated in a ">" or "<=" sugar expr.

Writable Attributes
attr args:$AS_EXPR;
**** The arguments, if any. brackets. "a(1,2)[3,4]" gets turned into 2 AS_CALL_EXPR objects, one for a(1,2), and one for [3,4]. of arguments because orginated in a ">" or "<=" sugar expr.
attr flip:BOOL;
**** True if need to flip order of evaluation of arguments because orginated in a ">" or "<=" sugar expr.
attr is_array:BOOL;
**** True if this is a call with square brackets. "a(1,2)[3,4]" gets turned into 2 AS_CALL_EXPR objects, one for a(1,2), and one for [3,4]. of arguments because orginated in a ">" or "<=" sugar expr.
attr modes: AS_ARG_MODE;
**** Modes of these arguments (if present) brackets. "a(1,2)[3,4]" gets turned into 2 AS_CALL_EXPR objects, one for a(1,2), and one for [3,4]. of arguments because orginated in a ">" or "<=" sugar expr.
attr name:IDENT;
**** The name of the call. brackets. "a(1,2)[3,4]" gets turned into 2 AS_CALL_EXPR objects, one for a(1,2), and one for [3,4]. of arguments because orginated in a ">" or "<=" sugar expr.
attr next:T;
**** Pointer to next element in list, if any.
attr ob:$AS_EXPR;
**** The expr the call is made on, if any. brackets. "a(1,2)[3,4]" gets turned into 2 AS_CALL_EXPR objects, one for a(1,2), and one for [3,4]. of arguments because orginated in a ">" or "<=" sugar expr.
attr source:SFILE_ID;
**** The origin of a node in a Sather source file.
attr tp:AS_TYPE_SPEC;
**** The class the call is made on, if any. brackets. "a(1,2)[3,4]" gets turned into 2 AS_CALL_EXPR objects, one for a(1,2), and one for [3,4]. of arguments because orginated in a ">" or "<=" sugar expr.

Features
append(l:T)
**** Append the list `l' to the end of the list self. self may not be void but `l' may be.
args_size:INT
create: SAME
**** A new object with default initialization.
insert(e:T)
**** Insert the single element `e' after self. Neither may be void, `e.next' must be void.
size:INT
**** The number of elements in the list starting with self. Self may be void.