Changeset 51d6d6a for src/Parser
- Timestamp:
- Aug 26, 2017, 5:31:20 PM (7 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 9bd6105
- Parents:
- a16d833
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/parser.yy
ra16d833 r51d6d6a 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Aug 23 21:08:08201713 // Update Count : 27 0412 // Last Modified On : Sat Aug 26 14:41:43 2017 13 // Update Count : 2711 14 14 // 15 15 … … 120 120 %token RESTRICT // C99 121 121 %token ATOMIC // C11 122 %token FORALL MUTEX VIRTUAL // CFA122 %token FORALL MUTEX VIRTUAL // CFA 123 123 %token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED 124 124 %token BOOL COMPLEX IMAGINARY // C99 … … 188 188 %type<flag> asm_volatile_opt 189 189 %type<en> handler_predicate_opt 190 %type<en> when_clause_opt timeout191 190 192 191 // statements 193 192 %type<sn> labeled_statement compound_statement expression_statement selection_statement 194 193 %type<sn> iteration_statement jump_statement 195 %type<sn> with_statement exception_statement asm_statement 194 %type<sn> with_clause_opt with_statement 195 %type<sn> exception_statement handler_clause finally_clause 196 %type<catch_kind> handler_key 197 %type<en> when_clause when_clause_opt timeout 196 198 %type<sn> waitfor_statement 197 %type<sn> fall_through_opt fall_through 198 %type<sn> statement statement_list 199 %type<en> waitfor 200 %type<wfs> waitfor_clause 201 %type<sn> statement statement_list asm_statement 199 202 %type<sn> block_item_list block_item 200 %type<sn> with_clause_opt201 203 %type<en> case_value 202 204 %type<sn> case_clause case_value_list case_label case_label_list 203 205 %type<sn> switch_clause_list_opt switch_clause_list choose_clause_list_opt choose_clause_list 204 %type<sn> handler_clause finally_clause 205 %type<catch_kind> handler_key 206 %type<wfs> waitfor_clause 207 %type<en> waitfor 206 %type<sn> fall_through fall_through_opt 208 207 209 208 // declarations … … 818 817 819 818 selection_statement: 820 IF '(' push if_control_expression ')' statement 819 IF '(' push if_control_expression ')' statement %prec THEN 821 820 // explicitly deal with the shift/reduce conflict on if/else 822 821 { $$ = new StatementNode( build_if( $4, $6, nullptr ) ); } … … 981 980 ; 982 981 982 when_clause: 983 WHEN '(' comma_expression ')' 984 { $$ = $3; } 985 ; 986 983 987 when_clause_opt: 984 988 // empty 985 989 { $$ = nullptr; } 986 | WHEN '(' comma_expression ')' 987 { $$ = $3; } 990 | when_clause 988 991 ; 989 992 … … 1008 1011 1009 1012 waitfor_clause: 1010 when_clause_opt waitfor statement 1013 when_clause_opt waitfor statement %prec THEN 1011 1014 { $$ = build_waitfor( $2, $3, $1 ); } 1012 1015 | when_clause_opt waitfor statement WOR waitfor_clause 1013 1016 { $$ = build_waitfor( $2, $3, $1, $5 ); } 1014 | when_clause_opt timeout statement 1017 | when_clause_opt timeout statement %prec THEN 1015 1018 { $$ = build_waitfor_timeout( $2, $3, $1 ); } 1016 1019 | when_clause_opt ELSE statement 1017 1020 { $$ = build_waitfor_timeout( nullptr, $3, $1 ); } 1018 | when_clause_opt timeout statement WOR when_clause_opt ELSE statement 1021 // "else" must be conditional after timeout or timeout is never triggered (i.e., it is meaningless) 1022 | when_clause_opt timeout statement WOR when_clause ELSE statement 1019 1023 { $$ = build_waitfor_timeout( $2, $3, $1, $7, $5 ); } 1020 1024 ; 1021 1025 1022 1026 waitfor_statement: 1023 when_clause_opt waitfor statement 1027 when_clause_opt waitfor statement %prec THEN 1024 1028 { $$ = new StatementNode( build_waitfor( $2, $3, $1 ) ); } 1025 1029 | when_clause_opt waitfor statement WOR waitfor_clause
Note: See TracChangeset
for help on using the changeset viewer.