@{ newObject(type, fields) { fields.__proto__ = type; fields } newCint(text) { newObject(C_int, { text: text }) } newCstring(text) { newObject(C_string, { text: "\""+text+"\"" }) } newCinitializer(list) { { __proto__: C_initializer, leftCurly: lcurly, initList: list, rightCurly: rcurly } } newToken(text) { { __proto__: Token, text: text } } comma = newToken(","); lcurly = newToken("{"); rcurly = newToken("}"); } enum foo { FOO, BAR, BAZ }; char *x[] = @(newCinitializer([newCstring("X"), comma, newCstring("Y")])); int i = @(newCint("42")); char *foos[] = { "FOO", "BAR", "BAZ" };