TypeScript code generator for AST nodes based on the following grammar format:
Circle: cx `number` cy `number` r `number` Rect: x `number` y `number` width `number` height `number` @Shape: | Circle | Rect Document: version `number`? shapes @Shape*