]> git.saurik.com Git - cycript.git/blobdiff - Cycript.yy.in
Implement more syntax from strawman:block_lambda_revival.
[cycript.git] / Cycript.yy.in
index b40c34868277dd96382fc2cc4640d5afddaf4057..925481af97cd977d20d04ec6b0b8a68e804a4edb 100644 (file)
@@ -437,8 +437,10 @@ int cylex(YYSTYPE *, cy::location *, void *);
 %type <infix_> RelationalExpressionNoIn_
 %type <statement_> ReturnStatement
 %type <rubyProc_> RubyProcExpression
+%type <rubyProc_> RubyProcExpressionNoOA
 %type <functionParameter_> RubyProcParameterList
 %type <functionParameter_> RubyProcParameterList_
+%type <functionParameter_> RubyProcParameters
 %type <functionParameter_> RubyProcParametersOpt
 %type <expression_> ShiftExpression
 %type <expression_> ShiftExpressionNoBF
@@ -1937,8 +1939,13 @@ RubyProcParameterList
     | { $$ = NULL; }
     ;
 
-RubyProcParametersOpt
+RubyProcParameters
     : "|" RubyProcParameterList "|" { $$ = $2; }
+    | "||" { $$ = NULL; }
+    ;
+
+RubyProcParametersOpt
+    : RubyProcParameters
     | { $$ = NULL; }
     ;
 
@@ -1946,6 +1953,14 @@ RubyProcExpression
     : "{" RubyProcParametersOpt StatementListOpt "}" { $$ = CYNew CYRubyProc($2, $3); }
     ;
 
+RubyProcExpressionNoOA
+    : "{" RubyProcParameters StatementListOpt "}" { $$ = CYNew CYRubyProc($2, $3); }
+    ;
+
+PrimaryExpressionNo
+    : RubyProcExpressionNoOA { $$ = $1; }
+    ;
+
 LeftHandSideExpression
     : LeftHandSideExpression RubyProcExpression { $$ = CYNew CYRubyBlock($1, $2); }
     ;