Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.yy

    r312029a re307e12  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 10 23:07:17 2019
    13 // Update Count     : 4400
     12// Last Modified On : Sat Dec  7 10:43:44 2019
     13// Update Count     : 4394
    1414//
    1515
     
    5151using namespace std;
    5252
    53 #include "SynTree/Declaration.h"
    5453#include "ParseNode.h"
    5554#include "TypedefTable.h"
     
    212211} // forCtrl
    213212
     213KeywordCastExpr::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
    214225bool forall = false, yyy = false;                                               // aggregate have one or more forall qualifiers ?
    215226
     
    237248        ExpressionNode * en;
    238249        DeclarationNode * decl;
    239         AggregateDecl::Aggregate aggKey;
     250        DeclarationNode::Aggregate aggKey;
    240251        DeclarationNode::TypeClass tclass;
    241252        StatementNode * sn;
     
    651662                { $$ = new ExpressionNode( build_fieldSel( $1, build_tuple( $4 ) ) ); }
    652663        | postfix_expression '.' aggregate_control
    653                 { $$ = new ExpressionNode( build_keyword_cast( $3, $1 ) ); }
     664                { $$ = new ExpressionNode( build_keyword_cast( Aggregate2Target( $3 ), $1 ) ); }
    654665        | postfix_expression ARROW identifier
    655666                { $$ = new ExpressionNode( build_pfieldSel( $1, build_varref( $3 ) ) ); }
     
    796807                { $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
    797808        | '(' aggregate_control '&' ')' cast_expression         // CFA
    798                 { $$ = new ExpressionNode( build_keyword_cast( $2, $5 ) ); }
     809                { $$ = new ExpressionNode( build_keyword_cast( Aggregate2Target( $2 ), $5 ) ); }
    799810                // VIRTUAL cannot be opt because of look ahead issues
    800811        | '(' VIRTUAL ')' cast_expression                                       // CFA
     
    20602071aggregate_data:
    20612072        STRUCT
    2062                 { yyy = true; $$ = AggregateDecl::Struct; }
     2073                { yyy = true; $$ = DeclarationNode::Struct; }
    20632074        | UNION
    2064                 { yyy = true; $$ = AggregateDecl::Union; }
     2075                { yyy = true; $$ = DeclarationNode::Union; }
    20652076        | EXCEPTION                                                                                     // CFA
    2066                 { yyy = true; $$ = AggregateDecl::Exception; }
     2077                { yyy = true; $$ = DeclarationNode::Exception; }
    20672078        ;
    20682079
    20692080aggregate_control:                                                                              // CFA
    20702081        GENERATOR
    2071                 { yyy = true; $$ = AggregateDecl::Coroutine; }
     2082                { yyy = true; $$ = DeclarationNode::Coroutine; }
    20722083        | COROUTINE
    2073                 { yyy = true; $$ = AggregateDecl::Coroutine; }
     2084                { yyy = true; $$ = DeclarationNode::Coroutine; }
    20742085        | MONITOR
    2075                 { yyy = true; $$ = AggregateDecl::Monitor; }
     2086                { yyy = true; $$ = DeclarationNode::Monitor; }
    20762087        | THREAD
    2077                 { yyy = true; $$ = AggregateDecl::Thread; }
     2088                { yyy = true; $$ = DeclarationNode::Thread; }
    20782089        ;
    20792090
Note: See TracChangeset for help on using the changeset viewer.