Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.yy

    re307e12 r9853d9b0  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Dec  7 10:43:44 2019
    13 // Update Count     : 4394
     12// Last Modified On : Thu Dec 12 17:54:22 2019
     13// Update Count     : 4404
    1414//
    1515
     
    5151using namespace std;
    5252
     53#include "SynTree/Declaration.h"
    5354#include "ParseNode.h"
    5455#include "TypedefTable.h"
     
    211212} // forCtrl
    212213
    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 
    225214bool forall = false, yyy = false;                                               // aggregate have one or more forall qualifiers ?
    226215
     
    248237        ExpressionNode * en;
    249238        DeclarationNode * decl;
    250         DeclarationNode::Aggregate aggKey;
     239        AggregateDecl::Aggregate aggKey;
    251240        DeclarationNode::TypeClass tclass;
    252241        StatementNode * sn;
     
    662651                { $$ = new ExpressionNode( build_fieldSel( $1, build_tuple( $4 ) ) ); }
    663652        | postfix_expression '.' aggregate_control
    664                 { $$ = new ExpressionNode( build_keyword_cast( Aggregate2Target( $3 ), $1 ) ); }
     653                { $$ = new ExpressionNode( build_keyword_cast( $3, $1 ) ); }
    665654        | postfix_expression ARROW identifier
    666655                { $$ = new ExpressionNode( build_pfieldSel( $1, build_varref( $3 ) ) ); }
     
    807796                { $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
    808797        | '(' aggregate_control '&' ')' cast_expression         // CFA
    809                 { $$ = new ExpressionNode( build_keyword_cast( Aggregate2Target( $2 ), $5 ) ); }
     798                { $$ = new ExpressionNode( build_keyword_cast( $2, $5 ) ); }
    810799                // VIRTUAL cannot be opt because of look ahead issues
    811800        | '(' VIRTUAL ')' cast_expression                                       // CFA
     
    12011190                { $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ),
    12021191                                                OperKinds::LThan, $1->clone(), new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) ); }
     1192        | '=' comma_expression                                                                  // CFA
     1193                { $$ = forCtrl( $2, new string( DeclarationNode::anonymous.newName() ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ),
     1194                                                OperKinds::LEThan, $2->clone(), new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) ); }
    12031195        | comma_expression inclexcl comma_expression            // CFA
    12041196                { $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), $1->clone(), $2, $3, new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) ); }
     
    12081200                { $$ = forCtrl( $3, $1, new ExpressionNode( build_constantInteger( *new string( "0" ) ) ),
    12091201                                                OperKinds::LThan, $3->clone(), new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) ); }
     1202        | comma_expression ';' '=' comma_expression                             // CFA
     1203                { $$ = forCtrl( $4, $1, new ExpressionNode( build_constantInteger( *new string( "0" ) ) ),
     1204                                                OperKinds::LEThan, $4->clone(), new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) ); }
    12101205        | comma_expression ';' comma_expression inclexcl comma_expression // CFA
    12111206                { $$ = forCtrl( $3, $1, $3->clone(), $4, $5, new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) ); }
     
    20712066aggregate_data:
    20722067        STRUCT
    2073                 { yyy = true; $$ = DeclarationNode::Struct; }
     2068                { yyy = true; $$ = AggregateDecl::Struct; }
    20742069        | UNION
    2075                 { yyy = true; $$ = DeclarationNode::Union; }
     2070                { yyy = true; $$ = AggregateDecl::Union; }
    20762071        | EXCEPTION                                                                                     // CFA
    2077                 { yyy = true; $$ = DeclarationNode::Exception; }
     2072                { yyy = true; $$ = AggregateDecl::Exception; }
    20782073        ;
    20792074
    20802075aggregate_control:                                                                              // CFA
    20812076        GENERATOR
    2082                 { yyy = true; $$ = DeclarationNode::Coroutine; }
     2077                { yyy = true; $$ = AggregateDecl::Coroutine; }
    20832078        | COROUTINE
    2084                 { yyy = true; $$ = DeclarationNode::Coroutine; }
     2079                { yyy = true; $$ = AggregateDecl::Coroutine; }
    20852080        | MONITOR
    2086                 { yyy = true; $$ = DeclarationNode::Monitor; }
     2081                { yyy = true; $$ = AggregateDecl::Monitor; }
    20872082        | THREAD
    2088                 { yyy = true; $$ = DeclarationNode::Thread; }
     2083                { yyy = true; $$ = AggregateDecl::Thread; }
    20892084        ;
    20902085
Note: See TracChangeset for help on using the changeset viewer.