Recall that the parser loop calls parsing words with an accumulator vector on the stack. The parser loop can be invoked recursively with a new, empty accumulator; the result can then be added to the original accumulator. This is how parsing words for object literals are implemented; object literals can nest arbitrarily deep.
A simple example is the parsing word that reads a quotation:
This word uses a utility word which recursively invokes the parser, reading objects into a new accumulator until an occurrence of
]:
parse-literal ( accum end quot -- accum )
There is another, lower-level word for reading nested structure, which is also useful when called directly:
parse-until ( end -- vec )
Words such as
] use a declaration which causes them to throw an error when an unpaired occurrence is encountered:
delimiter
See also{,
H{,
V{,
W{,
T{,
}