Composable parsing for JavaScript