]> git.saurik.com Git - cycript.git/blobdiff - Cycript.yy.in
Add syntax to support C-style typedef assignment.
[cycript.git] / Cycript.yy.in
index 8fd76aacf258f3f8cdf7c06b9e975ecef630218d..8adbbf5fe96c0431db20311601e0e1f90db9eafc 100644 (file)
@@ -230,6 +230,10 @@ int cylex(YYSTYPE *, cy::location *, void *);
 %token AtClass "@class"
 @end
 
+@begin C
+%token <identifier_> Typedef "typedef"
+@end
+
 @begin ObjectiveC
 %token AtImplementation "@implementation"
 %token AtImplementation_ ";@implementation"
@@ -645,6 +649,10 @@ WordOpt
 Identifier
     : Identifier_ { $$ = $1; }
 
+@begin C
+    | "typedef" { $$ = $1; }
+@end
+
     | "implements" { $$ = $1; }
     | "interface" { $$ = $1; }
     | "package" { $$ = $1; }
@@ -1623,6 +1631,11 @@ PrimaryExpression
     : "[" LexPushInOff LexSetRegExp "=" "]" LexPopIn "(" LexPushInOff TypedParameterListOpt ")" LexPopIn "->" ModifiedType BRACE LexPushInOff FunctionBody "}" LexPopIn { $$ = CYNew CYLambda($13, $9, $16); }
     ;
 /* }}} */
+/* Cycript (C): Type Definitions {{{ */
+Statement__
+    : "typedef" TypedIdentifier Terminator { $$ = CYNew CYTypeDefinition($2); }
+    ;
+/* }}} */
 @end
 
 /* YUI: Documentation Comments {{{ */