Expression lists and commands are stored using list nodes. A list node has an OPCODE value eNTYPE_LST defined in expression.c, and has two node pointers. One points to the node that belongs to the list member and other points to the next list node.
If nItem is a list node for an expression list then CAR(nItem) is the root node of the expression, and CDR(nItem) is the list node for the next expression. CAR(CDR(nItem)) is the root node of the second expression.
The nodes are indexed with unsigned long values. NULL pointer is a 0L value and list node lists are terminated with a node that has CDR(nItem)=0L.
See also CDR.