+/* Cycript (Objective-C): Type Encoding {{{ */
+SuffixedType
+ : IdentifierOpt { $$ = CYNew CYTypedIdentifier($1); }
+ | "(" PrefixedType ")" { $$ = $2; }
+ | SuffixedType "[" NumericLiteral "]" { CYSetLast($1->type_) = CYNew CYTypeArrayOf($3->Value()); $$ = $1; }
+ ;
+
+PrefixedType
+ : SuffixedType { $$ = $1; }
+ | "const" PrefixedType { CYSetLast($2->type_) = CYNew CYTypeConstant(); $$ = $2; }
+ | "*" PrefixedType { CYSetLast($2->type_) = CYNew CYTypePointerTo(); $$ = $2; }
+ ;
+
+ModifiedType
+ : Variable { $$ = CYNew CYTypeVariable($1); }
+ | "const" ModifiedType { $$ = CYNew CYTypeConstant($2); }
+ ;
+
+TypedIdentifier
+ : ModifiedType PrefixedType { CYSetLast($2->type_) = $1; $$ = $2;}
+ ;
+
+EncodedType
+ : TypedIdentifier { $$ = CYNew CYEncodedType($1->type_); }
+ ;
+
+PrimaryExpression
+ : AtEncode "(" EncodedType ")" { $$ = $3; }
+ ;
+/* }}} */