Ignore:
Timestamp:
Jul 25, 2024, 4:57:59 PM (4 months ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
master
Children:
3cb693c
Parents:
151c8db
Message:

parse keyword parameter and argument using '?' syntax

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.yy

    r151c8db rc1b0b8f  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 25 10:56:31 2024
    13 // Update Count     : 6727
     12// Last Modified On : Thu Jul 25 15:19:32 2024
     13// Update Count     : 6730
    1414//
    1515
     
    852852        ;
    853853
    854 argument_expression_list_opt:
    855         // empty
    856                 { $$ = nullptr; }
    857         | argument_expression_list
    858         ;
    859 
    860 argument_expression_list:
    861         argument_expression
    862         | argument_expression_list_opt ',' argument_expression
    863                 { $$ = $1->set_last( $3 ); }
    864         ;
    865 
    866 argument_expression:
    867         '@'                                                                                                     // CFA, default parameter
    868                 { SemanticError( yylloc, "Default parameter for argument is currently unimplemented." ); $$ = nullptr; }
    869                 // { $$ = new ExpressionNode( build_constantInteger( *new string( "2" ) ) ); }
    870         | '@' identifier '=' assignment_expression                      // CFA, keyword argument
    871                 { SemanticError( yylloc, "keyword argument is currently unimplemented." ); $$ = nullptr; }
    872         | assignment_expression
    873         ;
    874 
    875854field_name_list:                                                                                // CFA, tuple field selector
    876855        field
     
    11181097constant_expression:
    11191098        conditional_expression
     1099        ;
     1100
     1101argument_expression_list_opt:
     1102        // empty
     1103                { $$ = nullptr; }
     1104        | argument_expression_list
     1105        ;
     1106
     1107argument_expression_list:
     1108        argument_expression
     1109        // | argument_expression_list_opt ',' argument_expression // CFA, allow empty argument
     1110        | argument_expression_list ',' argument_expression      // no empty argument
     1111                { $$ = $1->set_last( $3 ); }
     1112        ;
     1113
     1114argument_expression:
     1115        '?'                                                                                                     // CFA, default parameter
     1116                { SemanticError( yylloc, "Argument to default parameter is currently unimplemented." ); $$ = nullptr; }
     1117                // { $$ = new ExpressionNode( build_constantInteger( *new string( "2" ) ) ); }
     1118        | '?' identifier '=' assignment_expression                      // CFA, keyword argument
     1119                { SemanticError( yylloc, "keyword argument is currently unimplemented." ); $$ = nullptr; }
     1120        | assignment_expression
    11201121        ;
    11211122
     
    35453546        identifier_at
    35463547                { $$ = DeclarationNode::newName( $1 ); }
    3547         | '@' identifier
     3548        | '?' identifier
    35483549                { SemanticError( yylloc, "keyword parameter is currently unimplemented." ); $$ = nullptr; }
    35493550        | '(' paren_identifier ')'                                                      // redundant parenthesis
Note: See TracChangeset for help on using the changeset viewer.