Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.yy

    r064e3ff r8688ce1  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug  4 16:56:28 2016
    13 // Update Count     : 1694
     12// Last Modified On : Thu Aug  4 11:28:18 2016
     13// Update Count     : 1672
    1414//
    1515
     
    119119        LabelNode *label;
    120120        InitializerNode *in;
    121         OperatorNode::Type op;
    122121        bool flag;
    123122}
     
    130129%type<constant> constant
    131130%type<en> tuple                                                 tuple_expression_list
    132 %type<op> ptrref_operator
    133 %type<en> unary_operator                                assignment_operator
     131%type<en> ptrref_operator                               unary_operator                          assignment_operator
    134132%type<en> primary_expression                    postfix_expression                      unary_expression
    135133%type<en> cast_expression                               multiplicative_expression       additive_expression                     shift_expression
     
    362360                //   struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1;
    363361        | postfix_expression '.' no_attr_identifier
    364                 { $$ = new CompositeExprNode2( build_fieldSel( $1, new VarRefNode( $3 ) ) ); }
     362                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), $1, new VarRefNode( $3 )); }
    365363        | postfix_expression '.' '[' push field_list pop ']' // CFA, tuple field selector
    366364        | postfix_expression ARROW no_attr_identifier
    367                 { $$ = new CompositeExprNode2( build_pfieldSel( $1, new VarRefNode( $3 ) ) ); }
     365                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), $1, new VarRefNode( $3 )); }
    368366        | postfix_expression ARROW '[' push field_list pop ']' // CFA, tuple field selector
    369367        | postfix_expression ICR
     
    412410                //   struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1;
    413411        | no_attr_identifier '.' field
    414                 { $$ = new CompositeExprNode2( build_fieldSel( $3, new VarRefNode( $1 ) ) ); }
     412                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( $1 ), $3 ); }
    415413        | no_attr_identifier '.' '[' push field_list pop ']'
    416                 { $$ = new CompositeExprNode2( build_fieldSel( $5, new VarRefNode( $1 ) ) ); }
     414                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( $1 ), $5 ); }
    417415        | no_attr_identifier ARROW field
    418                 { $$ = new CompositeExprNode2( build_pfieldSel( $3, new VarRefNode( $1 ) ) ); }
     416                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( $1 ), $3 ); }
    419417        | no_attr_identifier ARROW '[' push field_list pop ']'
    420                 { $$ = new CompositeExprNode2( build_pfieldSel( $5, new VarRefNode( $1 ) ) ); }
     418                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( $1 ), $5 ); }
    421419        ;
    422420
     
    432430                { $$ = $2->set_extension( true ); }
    433431        | ptrref_operator cast_expression                                       // CFA
    434         { $$ = $1 == OperatorNode::AddressOf ? (ExpressionNode*) new CompositeExprNode2( build_addressOf( $2 ) ) : (ExpressionNode*)new CompositeExprNode( new OperatorNode ( $1 ), $2 ); }
     432                { $$ = new CompositeExprNode( $1, $2 ); }
    435433                // '*' ('&') is separated from unary_operator because of shift/reduce conflict in:
    436434                //              { * X; }         // dereference X
     
    443441                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), $2 ); }
    444442        | SIZEOF unary_expression
    445                 { $$ = new CompositeExprNode2( build_sizeOf( $2 ) ); }
     443                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), $2 ); }
    446444        | SIZEOF '(' type_name_no_function ')'
    447                 { $$ = new CompositeExprNode2( build_sizeOf( new TypeValueNode( $3 ) ) ); }
     445                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( $3 )); }
    448446        | OFFSETOF '(' type_name_no_function ',' no_attr_identifier ')'
    449                 { $$ = new CompositeExprNode2( build_offsetOf( new TypeValueNode( $3 ), new VarRefNode( $5 ) ) ); }
     447                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::OffsetOf ), new TypeValueNode( $3 ), new VarRefNode( $5 )); }
    450448        | ATTR_IDENTIFIER
    451449                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 )); }
     
    455453                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 ), $3 ); }
    456454        | ALIGNOF unary_expression                                                      // GCC, variable alignment
    457                 { $$ = new CompositeExprNode2( build_alignOf( $2 ) ); }
     455                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), $2 ); }
    458456        | ALIGNOF '(' type_name_no_function ')'                         // GCC, type alignment
    459                 { $$ = new CompositeExprNode2( build_alignOf( new TypeValueNode( $3 ) ) ); }
     457                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( $3 ) ); }
    460458//      | ANDAND IDENTIFIER                                                                     // GCC, address of label
    461459//              { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true ) ); }
     
    463461
    464462ptrref_operator:
    465         '*'                                                                                     { $$ = OperatorNode::PointTo; }
    466         | '&'                                                                           { $$ = OperatorNode::AddressOf; }
     463        '*'                                                                                     { $$ = new OperatorNode( OperatorNode::PointTo ); }
     464        | '&'                                                                           { $$ = new OperatorNode( OperatorNode::AddressOf ); }
    467465                // GCC, address of label must be handled by semantic check for ref,ref,label
    468         | ANDAND                                                                        { $$ = OperatorNode::And; }
     466        | ANDAND                                                                        { $$ = new OperatorNode( OperatorNode::And ); }
    469467        ;
    470468
     
    479477        unary_expression
    480478        | '(' type_name_no_function ')' cast_expression
    481                 { $$ = new CompositeExprNode2( build_cast( new TypeValueNode( $2 ), $4 ) ); }
     479                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( $2 ), $4 ); }
    482480        | '(' type_name_no_function ')' tuple
    483                 { $$ = new CompositeExprNode2( build_cast( new TypeValueNode( $2 ), $4 ) ); }
     481                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( $2 ), $4 ); }
    484482        ;
    485483
     
    744742case_value_list:                                                                                // CFA
    745743        case_value                                                                      { $$ = new StatementNode( StatementNode::Case, $1, 0 ); }
    746                 // convert case list, e.g., "case 1, 3, 5:" into "case 1: case 3: case 5"
    747744        | case_value_list ',' case_value                        { $$ = (StatementNode *)($1->set_link( new StatementNode( StatementNode::Case, $3, 0 ) ) ); }
    748745        ;
Note: See TracChangeset for help on using the changeset viewer.