-/* Cycript - Remove Execution Server and Disassembler
+/* Cycript - Remote Execution Server and Disassembler
* Copyright (C) 2009 Jay Freeman (saurik)
*/
%code requires {
#include "Parser.hpp"
-@begin ObjC
+@begin ObjectiveC
#include "ObjectiveC.hpp"
@end
CYBoolean *boolean_;
CYClause *clause_;
CYCatch *catch_;
- CYClassName *className_;
CYComprehension *comprehension_;
CYCompound *compound_;
CYDeclaration *declaration_;
CYElement *element_;
CYExpression *expression_;
CYFalse *false_;
- CYField *field_;
CYFinally *finally_;
CYForInitialiser *for_;
CYForInInitialiser *forin_;
CYTrue *true_;
CYWord *word_;
-@begin ObjC
+@begin ObjectiveC
+ CYClassName *className_;
+ CYField *field_;
CYMessage *message_;
CYMessageParameter *messageParameter_;
CYSelectorPart *selector_;
%type <clause_> CaseClause
%type <clause_> CaseClausesOpt
%type <catch_> CatchOpt
-%type <statement_> CategoryStatement
-%type <expression_> ClassExpression
-%type <message_> ClassMessageDeclaration
-%type <message_> ClassMessageDeclarationListOpt
-%type <className_> ClassName
-%type <className_> ClassNameOpt
-%type <statement_> ClassStatement
-%type <expression_> ClassSuperOpt
-%type <field_> ClassFieldList
%type <comprehension_> ComprehensionList
%type <comprehension_> ComprehensionListOpt
%type <expression_> ConditionalExpression
%type <expression_> MemberExpression
%type <expression_> MemberExpression_
%type <expression_> MemberExpressionNoBF
-%type <messageParameter_> MessageParameter
-%type <messageParameter_> MessageParameters
-%type <messageParameter_> MessageParameterList
-%type <messageParameter_> MessageParameterListOpt
-%type <bool_> MessageScope
%type <expression_> MultiplicativeExpression
%type <expression_> MultiplicativeExpressionNoBF
%type <expression_> NewExpression
%type <expression_> RelationalExpressionNoIn
%type <infix_> RelationalExpressionNoIn_
%type <statement_> ReturnStatement
-%type <selector_> SelectorExpression
-%type <selector_> SelectorExpression_
-%type <selector_> SelectorExpressionOpt
%type <expression_> ShiftExpression
%type <expression_> ShiftExpressionNoBF
%type <statement_> SourceElement
%type <statement_> SwitchStatement
%type <statement_> ThrowStatement
%type <statement_> TryStatement
-%type <expression_> TypeOpt
%type <expression_> UnaryExpression
%type <expression_> UnaryExpression_
%type <expression_> UnaryExpressionNoBF
%type <statement_> VariableStatement
%type <statement_> WhileStatement
%type <statement_> WithStatement
-%type <word_> Word
-%type <word_> WordOpt
+@begin ObjectiveC
+%type <statement_> CategoryStatement
+%type <expression_> ClassExpression
+%type <statement_> ClassStatement
+%type <expression_> ClassSuperOpt
+%type <field_> ClassFieldList
+%type <message_> ClassMessageDeclaration
+%type <message_> ClassMessageDeclarationListOpt
+%type <className_> ClassName
+%type <className_> ClassNameOpt
%type <expression_> MessageExpression
+%type <messageParameter_> MessageParameter
+%type <messageParameter_> MessageParameters
+%type <messageParameter_> MessageParameterList
+%type <messageParameter_> MessageParameterListOpt
+%type <bool_> MessageScope
%type <argument_> SelectorCall
%type <argument_> SelectorCall_
+%type <selector_> SelectorExpression
+%type <selector_> SelectorExpression_
+%type <selector_> SelectorExpressionOpt
%type <argument_> SelectorList
+%type <expression_> TypeOpt
%type <argument_> VariadicCall
+%type <word_> Word
+%type <word_> WordOpt
+@end
%left "*" "/" "%"
%left "+" "-"
|
;*/
+@begin ObjectiveC
NewLineOpt
: "\n"
|
| "while" { $$ = $1; }
| "with" { $$ = $1; }
;
+@end
Identifier
: Identifier_ { $$ = $1; }
;
/* }}} */
-@begin ObjC
+@begin ObjectiveC
/* Cycript (Objective-C): @class Declaration {{{ */
ClassSuperOpt
: ":" MemberExpressionNoBF { $$ = $2; }
;
MessageExpression
- : "[" AssignmentExpression SelectorList "]" { $$ = new(driver.pool_) CYSend($2, $3); }
+ : "[" AssignmentExpression SelectorList "]" { $$ = new(driver.pool_) CYSendDirect($2, $3); }
+ | "[" "super" SelectorList "]" { $$ = new(driver.pool_) CYSendSuper($3); }
;
SelectorExpressionOpt