]> git.saurik.com Git - cycript.git/blobdiff - Cycript.yy.in
On Mac OS X, detect -framework JavaVM for CY_JAVA.
[cycript.git] / Cycript.yy.in
index d963589e56257ad6c5a1d3d57d37be5d9bbda64d..298d16f8454a7d9653d177e0e1a7e1d1cf2a9863 100644 (file)
@@ -1,5 +1,5 @@
 /* Cycript - Optimizing JavaScript Compiler/Runtime
- * Copyright (C) 2009-2014  Jay Freeman (saurik)
+ * Copyright (C) 2009-2015  Jay Freeman (saurik)
 */
 
 /* GNU Affero General Public License, Version 3 {{{ */
@@ -473,7 +473,9 @@ int cylex(YYSTYPE *, CYLocation *, void *);
 %type <statement_> VariableStatement
 %type <statement_> WithStatement
 %type <word_> Word
+@begin ObjectiveC
 %type <word_> WordOpt
+@end
 %type <expression_> Variable
 
 @begin C
@@ -658,10 +660,12 @@ Word
     | "with" { $$ = $1; }
     ;
 
+@begin ObjectiveC
 WordOpt
     : Word { $$ = $1; }
     | { $$ = NULL; }
     ;
+@end
 
 IdentifierType
     : Identifier_ { $$ = $1; }
@@ -1486,12 +1490,12 @@ MessageScope
     ;
 
 TypeOpt
-    : "(" LexSetRegExp TypedIdentifier ")" { $$ = $3; }
-    | { $$ = NULL; }
+    : "(" LexSetRegExp TypedIdentifier ")" { if ($3->identifier_ != NULL) error($3->location_, "unexpected identifier"); $$ = $3; }
+    | { $$ = CYNew CYTypedIdentifier(CYNew CYTypeVariable("id")); }
     ;
 
 MessageParameter
-    : Word ":" TypeOpt Identifier { $$ = CYNew CYMessageParameter($1, $3, $4); }
+    : Word ":" TypeOpt Identifier { $3->identifier_ = $4; $$ = CYNew CYMessageParameter($1, $3); }
     ;
 
 MessageParameterList
@@ -1505,7 +1509,7 @@ MessageParameterListOpt
 
 MessageParameters
     : MessageParameterList { $$ = $1; }
-    | Word { $$ = CYNew CYMessageParameter($1, NULL, NULL); }
+    | Word { $$ = CYNew CYMessageParameter($1, NULL); }
     ;
 
 ClassMessageDeclaration