Lookup/Call/Index

Punctuation: <Prefix> <Call | Index | Lookup | TryOperator | NilCoalesce>*

Call: '(' <ExpressionList> ')' <Punctuation>?;
Index: '[' <ExpressionList> ']' <Punctuation>?;
Lookup: '.' <Identifier> <Punctuation>?;

This set of operators acts on a term followed by a way of interacting with that term to either call it like a function, look up a value by index, or lookup a member value by an identifier.

These expression are chainable. For example, this code accesses a value from a list within a list by chaining the index operator after invoking list.get(0) function:

let list = [[1, 2, 3], [4, 5, 6]];
let 2 = list.get(0)[1];