Skip to content

Commit

Permalink
Added support for parentheses in for loops (closes zephir-lang#3)
Browse files Browse the repository at this point in the history
  • Loading branch information
sjinks committed Apr 13, 2017
1 parent ec88f07 commit b300363
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 0 deletions.
24 changes: 24 additions & 0 deletions parser/parser.php5.lemon
Original file line number Diff line number Diff line change
Expand Up @@ -1230,6 +1230,30 @@ xx_for_statement(R) ::= FOR IDENTIFIER(K) COMMA IDENTIFIER(V) IN REVERSE xx_comm
R = xx_ret_for_statement(E, K, V, 1, L, status->scanner_state);
}

xx_for_statement(R) ::= FOR PARENTHESES_OPEN IDENTIFIER(V) IN xx_common_expr(E) PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . {
R = xx_ret_for_statement(E, NULL, V, 0, L, status->scanner_state);
}

xx_for_statement(R) ::= FOR PARENTHESES_OPEN IDENTIFIER(V) IN xx_common_expr(E) PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . {
R = xx_ret_for_statement(E, NULL, V, 0, NULL, status->scanner_state);
}

xx_for_statement(R) ::= FOR PARENTHESES_OPEN IDENTIFIER(V) IN REVERSE xx_common_expr(E) PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . {
R = xx_ret_for_statement(E, NULL, V, 1, L, status->scanner_state);
}

xx_for_statement(R) ::= FOR PARENTHESES_OPEN IDENTIFIER(K) COMMA IDENTIFIER(V) IN xx_common_expr(E) PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . {
R = xx_ret_for_statement(E, K, V, 0, L, status->scanner_state);
}

xx_for_statement(R) ::= FOR PARENTHESES_OPEN IDENTIFIER(K) COMMA IDENTIFIER(V) IN xx_common_expr(E) PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . {
R = xx_ret_for_statement(E, K, V, 0, NULL, status->scanner_state);
}

xx_for_statement(R) ::= FOR PARENTHESES_OPEN IDENTIFIER(K) COMMA IDENTIFIER(V) IN REVERSE xx_common_expr(E) PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . {
R = xx_ret_for_statement(E, K, V, 1, L, status->scanner_state);
}

xx_let_statement(R) ::= LET xx_let_assignments(A) DOTCOMMA . {
R = xx_ret_let_statement(A, status->scanner_state);
}
Expand Down
24 changes: 24 additions & 0 deletions parser/parser.php7.lemon
Original file line number Diff line number Diff line change
Expand Up @@ -1253,6 +1253,30 @@ xx_for_statement(R) ::= FOR IDENTIFIER(K) COMMA IDENTIFIER(V) IN REVERSE xx_comm
xx_ret_for_statement(&R, &E, K, V, 1, &L, status->scanner_state);
}

xx_for_statement(R) ::= FOR PARENTHESES_OPEN IDENTIFIER(V) IN xx_common_expr(E) PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . {
xx_ret_for_statement(&R, &E, NULL, V, 0, &L, status->scanner_state);
}

xx_for_statement(R) ::= FOR PARENTHESES_OPEN IDENTIFIER(V) IN xx_common_expr(E) PARENTHESES_CLOSE BRACKET_OPEN BRACKET_CLOSE . {
xx_ret_for_statement(&R, &E, NULL, V, 0, NULL, status->scanner_state);
}

xx_for_statement(R) ::= FOR PARENTHESES_OPEN IDENTIFIER(V) IN REVERSE xx_common_expr(E) PARENTHESES_CLOSE BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . {
xx_ret_for_statement(&R, &E, NULL, V, 1, &L, status->scanner_state);
}

xx_for_statement(R) ::= FOR IDENTIFIER(K) COMMA IDENTIFIER(V) IN xx_common_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . {
xx_ret_for_statement(&R, &E, K, V, 0, &L, status->scanner_state);
}

xx_for_statement(R) ::= FOR IDENTIFIER(K) COMMA IDENTIFIER(V) IN xx_common_expr(E) BRACKET_OPEN BRACKET_CLOSE . {
xx_ret_for_statement(&R, &E, K, V, 0, NULL, status->scanner_state);
}

xx_for_statement(R) ::= FOR IDENTIFIER(K) COMMA IDENTIFIER(V) IN REVERSE xx_common_expr(E) BRACKET_OPEN xx_statement_list(L) BRACKET_CLOSE . {
xx_ret_for_statement(&R, &E, K, V, 1, &L, status->scanner_state);
}

xx_let_statement(R) ::= LET xx_let_assignments(A) DOTCOMMA . {
xx_ret_let_statement(&R, &A, status->scanner_state);
}
Expand Down

0 comments on commit b300363

Please sign in to comment.