Changes in src/Parser/parser.yy [312029a:e307e12]
- File:
-
- 1 edited
-
src/Parser/parser.yy (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/parser.yy
r312029a re307e12 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Dec 10 23:07:17201913 // Update Count : 4 40012 // Last Modified On : Sat Dec 7 10:43:44 2019 13 // Update Count : 4394 14 14 // 15 15 … … 51 51 using namespace std; 52 52 53 #include "SynTree/Declaration.h"54 53 #include "ParseNode.h" 55 54 #include "TypedefTable.h" … … 212 211 } // forCtrl 213 212 213 KeywordCastExpr::Target Aggregate2Target( DeclarationNode::Aggregate aggr ) { 214 KeywordCastExpr::Target target; 215 switch ( aggr ) { 216 case DeclarationNode::Coroutine: target = KeywordCastExpr::Coroutine; break; 217 case DeclarationNode::Monitor: target = KeywordCastExpr::Monitor; break; 218 case DeclarationNode::Thread: target = KeywordCastExpr::Thread; break; 219 default: abort(); 220 } // switch 221 return target; 222 } // Aggregate2Target 223 224 214 225 bool forall = false, yyy = false; // aggregate have one or more forall qualifiers ? 215 226 … … 237 248 ExpressionNode * en; 238 249 DeclarationNode * decl; 239 AggregateDecl::Aggregate aggKey;250 DeclarationNode::Aggregate aggKey; 240 251 DeclarationNode::TypeClass tclass; 241 252 StatementNode * sn; … … 651 662 { $$ = new ExpressionNode( build_fieldSel( $1, build_tuple( $4 ) ) ); } 652 663 | postfix_expression '.' aggregate_control 653 { $$ = new ExpressionNode( build_keyword_cast( $3, $1 ) ); }664 { $$ = new ExpressionNode( build_keyword_cast( Aggregate2Target( $3 ), $1 ) ); } 654 665 | postfix_expression ARROW identifier 655 666 { $$ = new ExpressionNode( build_pfieldSel( $1, build_varref( $3 ) ) ); } … … 796 807 { $$ = new ExpressionNode( build_cast( $2, $4 ) ); } 797 808 | '(' aggregate_control '&' ')' cast_expression // CFA 798 { $$ = new ExpressionNode( build_keyword_cast( $2, $5 ) ); }809 { $$ = new ExpressionNode( build_keyword_cast( Aggregate2Target( $2 ), $5 ) ); } 799 810 // VIRTUAL cannot be opt because of look ahead issues 800 811 | '(' VIRTUAL ')' cast_expression // CFA … … 2060 2071 aggregate_data: 2061 2072 STRUCT 2062 { yyy = true; $$ = AggregateDecl::Struct; }2073 { yyy = true; $$ = DeclarationNode::Struct; } 2063 2074 | UNION 2064 { yyy = true; $$ = AggregateDecl::Union; }2075 { yyy = true; $$ = DeclarationNode::Union; } 2065 2076 | EXCEPTION // CFA 2066 { yyy = true; $$ = AggregateDecl::Exception; }2077 { yyy = true; $$ = DeclarationNode::Exception; } 2067 2078 ; 2068 2079 2069 2080 aggregate_control: // CFA 2070 2081 GENERATOR 2071 { yyy = true; $$ = AggregateDecl::Coroutine; }2082 { yyy = true; $$ = DeclarationNode::Coroutine; } 2072 2083 | COROUTINE 2073 { yyy = true; $$ = AggregateDecl::Coroutine; }2084 { yyy = true; $$ = DeclarationNode::Coroutine; } 2074 2085 | MONITOR 2075 { yyy = true; $$ = AggregateDecl::Monitor; }2086 { yyy = true; $$ = DeclarationNode::Monitor; } 2076 2087 | THREAD 2077 { yyy = true; $$ = AggregateDecl::Thread; }2088 { yyy = true; $$ = DeclarationNode::Thread; } 2078 2089 ; 2079 2090
Note:
See TracChangeset
for help on using the changeset viewer.