Composable Semantics Using Higher-Order Attribute Grammars