/* 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 {{{ */
%type <statement_> VariableStatement
%type <statement_> WithStatement
%type <word_> Word
+@begin ObjectiveC
%type <word_> WordOpt
+@end
%type <expression_> Variable
@begin C
| "with" { $$ = $1; }
;
+@begin ObjectiveC
WordOpt
: Word { $$ = $1; }
| { $$ = NULL; }
;
+@end
IdentifierType
: Identifier_ { $$ = $1; }
;
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
MessageParameters
: MessageParameterList { $$ = $1; }
- | Word { $$ = CYNew CYMessageParameter($1, NULL, NULL); }
+ | Word { $$ = CYNew CYMessageParameter($1, NULL); }
;
ClassMessageDeclaration