Add aggregate literals to ASH.

The main use of these is likely for initialization of maps and arrays, as
well as specifying anonymous maps as functions arguments. These take the
form

value [key] {keyExpr:valueExpr,...}

Arbitrary whitespace should be permissible --- for instance,

value [key]
{
keyExpr1 : valueExpr1,
keyExpr2 : valueExpr2
}

is also legal. Arbitrary expressions may be used for keyExpr as well as
valueExpr, provided that they can be coerced to the appropriate
datatypes.

This particular implementation dictates that if a key appears multiple
times, its value will be clobbered, and the final value will be the one
corresponding to the last instance of said key.

Experimental, moderately tested.

by heeheehee on 2016-04-09 13:53:00

M /src/net/sourceforge/kolmafia/textui/Parser.java (view) (diff)