Ignore:
Timestamp:
May 15, 2017, 11:30:26 AM (7 years ago)
Author:
Rob Schluntz <rschlunt@…>
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:
d36c117
Parents:
65aca88
Message:

initial work on references: reference types passed through the system, very simple examples work

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.yy

    r65aca88 rce8c12f  
    23772377variable_ptr:
    23782378        ptrref_operator variable_declarator
    2379                 { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
     2379                { $$ = $2->addPointer( DeclarationNode::newPointer( 0, $1 ) ); }
    23802380        | ptrref_operator type_qualifier_list variable_declarator
    2381                 { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
     2381                { $$ = $3->addPointer( DeclarationNode::newPointer( $2, $1 ) ); }
    23822382        | '(' variable_ptr ')' attribute_list_opt
    23832383                { $$ = $2->addQualifiers( $4 ); }                               // redundant parenthesis
     
    24252425function_ptr:
    24262426        ptrref_operator function_declarator
    2427                 { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
     2427                { $$ = $2->addPointer( DeclarationNode::newPointer( 0, $1 ) ); }
    24282428        | ptrref_operator type_qualifier_list function_declarator
    2429                 { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
     2429                { $$ = $3->addPointer( DeclarationNode::newPointer( $2, $1 ) ); }
    24302430        | '(' function_ptr ')'
    24312431                { $$ = $2; }
     
    24652465KR_function_ptr:
    24662466        ptrref_operator KR_function_declarator
    2467                 { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
     2467                { $$ = $2->addPointer( DeclarationNode::newPointer( 0, $1 ) ); }
    24682468        | ptrref_operator type_qualifier_list KR_function_declarator
    2469                 { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
     2469                { $$ = $3->addPointer( DeclarationNode::newPointer( $2, $1 ) ); }
    24702470        | '(' KR_function_ptr ')'
    24712471                { $$ = $2; }
     
    25092509type_ptr:
    25102510        ptrref_operator variable_type_redeclarator
    2511                 { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
     2511                { $$ = $2->addPointer( DeclarationNode::newPointer( 0, $1 ) ); }
    25122512        | ptrref_operator type_qualifier_list variable_type_redeclarator
    2513                 { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
     2513                { $$ = $3->addPointer( DeclarationNode::newPointer( $2, $1 ) ); }
    25142514        | '(' type_ptr ')' attribute_list_opt
    25152515                { $$ = $2->addQualifiers( $4 ); }
     
    25532553identifier_parameter_ptr:
    25542554        ptrref_operator identifier_parameter_declarator
    2555                 { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
     2555                { $$ = $2->addPointer( DeclarationNode::newPointer( 0, $1 ) ); }
    25562556        | ptrref_operator type_qualifier_list identifier_parameter_declarator
    2557                 { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
     2557                { $$ = $3->addPointer( DeclarationNode::newPointer( $2, $1 ) ); }
    25582558        | '(' identifier_parameter_ptr ')' attribute_list_opt
    25592559                { $$ = $2->addQualifiers( $4 ); }
     
    26132613type_parameter_ptr:
    26142614        ptrref_operator type_parameter_redeclarator
    2615                 { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
     2615                { $$ = $2->addPointer( DeclarationNode::newPointer( 0, $1 ) ); }
    26162616        | ptrref_operator type_qualifier_list type_parameter_redeclarator
    2617                 { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
     2617                { $$ = $3->addPointer( DeclarationNode::newPointer( $2, $1 ) ); }
    26182618        | '(' type_parameter_ptr ')' attribute_list_opt
    26192619                { $$ = $2->addQualifiers( $4 ); }
     
    26562656abstract_ptr:
    26572657        ptrref_operator
    2658                 { $$ = DeclarationNode::newPointer( 0 ); }
     2658                { $$ = DeclarationNode::newPointer( 0, $1 ); }
    26592659        | ptrref_operator type_qualifier_list
    2660                 { $$ = DeclarationNode::newPointer( $2 ); }
     2660                { $$ = DeclarationNode::newPointer( $2, $1 ); }
    26612661        | ptrref_operator abstract_declarator
    2662                 { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
     2662                { $$ = $2->addPointer( DeclarationNode::newPointer( 0, $1 ) ); }
    26632663        | ptrref_operator type_qualifier_list abstract_declarator
    2664                 { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
     2664                { $$ = $3->addPointer( DeclarationNode::newPointer( $2, $1 ) ); }
    26652665        | '(' abstract_ptr ')' attribute_list_opt
    26662666                { $$ = $2->addQualifiers( $4 ); }
     
    27452745abstract_parameter_ptr:
    27462746        ptrref_operator
    2747                 { $$ = DeclarationNode::newPointer( nullptr ); }
     2747                { $$ = DeclarationNode::newPointer( nullptr, $1 ); }
    27482748        | ptrref_operator type_qualifier_list
    2749                 { $$ = DeclarationNode::newPointer( $2 ); }
     2749                { $$ = DeclarationNode::newPointer( $2, $1 ); }
    27502750        | ptrref_operator abstract_parameter_declarator
    2751                 { $$ = $2->addPointer( DeclarationNode::newPointer( nullptr ) ); }
     2751                { $$ = $2->addPointer( DeclarationNode::newPointer( nullptr, $1 ) ); }
    27522752        | ptrref_operator type_qualifier_list abstract_parameter_declarator
    2753                 { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
     2753                { $$ = $3->addPointer( DeclarationNode::newPointer( $2, $1 ) ); }
    27542754        | '(' abstract_parameter_ptr ')' attribute_list_opt
    27552755                { $$ = $2->addQualifiers( $4 ); }
     
    28242824variable_abstract_ptr:
    28252825        ptrref_operator
    2826                 { $$ = DeclarationNode::newPointer( 0 ); }
     2826                { $$ = DeclarationNode::newPointer( 0, $1 ); }
    28272827        | ptrref_operator type_qualifier_list
    2828                 { $$ = DeclarationNode::newPointer( $2 ); }
     2828                { $$ = DeclarationNode::newPointer( $2, $1 ); }
    28292829        | ptrref_operator variable_abstract_declarator
    2830                 { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
     2830                { $$ = $2->addPointer( DeclarationNode::newPointer( 0, $1 ) ); }
    28312831        | ptrref_operator type_qualifier_list variable_abstract_declarator
    2832                 { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
     2832                { $$ = $3->addPointer( DeclarationNode::newPointer( $2, $1 ) ); }
    28332833        | '(' variable_abstract_ptr ')' attribute_list_opt
    28342834                { $$ = $2->addQualifiers( $4 ); }
     
    28702870                // No SUE declaration in parameter list.
    28712871        ptrref_operator type_specifier_nobody
    2872                 { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     2872                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0, $1 ) ); }
    28732873        | type_qualifier_list ptrref_operator type_specifier_nobody
    2874                 { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
     2874                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1, $2 ) ); }
    28752875        | ptrref_operator cfa_abstract_function
    2876                 { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     2876                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0, $1 ) ); }
    28772877        | type_qualifier_list ptrref_operator cfa_abstract_function
    2878                 { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
     2878                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1, $2 ) ); }
    28792879        | ptrref_operator cfa_identifier_parameter_declarator_tuple
    2880                 { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     2880                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0, $1 ) ); }
    28812881        | type_qualifier_list ptrref_operator cfa_identifier_parameter_declarator_tuple
    2882                 { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
     2882                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1, $2 ) ); }
    28832883        ;
    28842884
     
    29582958cfa_abstract_ptr:                                                                               // CFA
    29592959        ptrref_operator type_specifier
    2960                 { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     2960                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0, $1 ) ); }
    29612961        | type_qualifier_list ptrref_operator type_specifier
    2962                 { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
     2962                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1, $2 ) ); }
    29632963        | ptrref_operator cfa_abstract_function
    2964                 { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     2964                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0, $1 ) ); }
    29652965        | type_qualifier_list ptrref_operator cfa_abstract_function
    2966                 { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
     2966                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1, $2 ) ); }
    29672967        | ptrref_operator cfa_abstract_declarator_tuple
    2968                 { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     2968                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0, $1 ) ); }
    29692969        | type_qualifier_list ptrref_operator cfa_abstract_declarator_tuple
    2970                 { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
     2970                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1, $2 ) ); }
    29712971        ;
    29722972
Note: See TracChangeset for help on using the changeset viewer.