Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.yy

    rfae90d5f rf6e3e34  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar 28 17:52:24 2018
    13 // Update Count     : 3130
     12// Last Modified On : Thu Mar 22 16:56:21 2018
     13// Update Count     : 3125
    1414//
    1515
     
    497497                { $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $5 ) ), $2 ) ); }
    498498        | type_name '.' no_attr_identifier                                      // CFA, nested type
    499                 { SemanticError( yylloc, "Qualified names are currently unimplemented." ); $$ = nullptr; }
     499                { SemanticError( yylloc, "Qualified names are currently unimplemented." ); $$ = nullptr; } // FIX ME
    500500        | type_name '.' '[' push field_list pop ']'                     // CFA, nested type / tuple field selector
    501                 { SemanticError( yylloc, "Qualified names are currently unimplemented." ); $$ = nullptr; }
     501                { SemanticError( yylloc, "Qualified names are currently unimplemented." ); $$ = nullptr; } // FIX ME
    502502        | GENERIC '(' assignment_expression ',' generic_assoc_list ')' // C11
    503                 { SemanticError( yylloc, "_Generic is currently unimplemented." ); $$ = nullptr; }
     503                { SemanticError( yylloc, "_Generic is currently unimplemented." ); $$ = nullptr; } // FIX ME
    504504        ;
    505505
     
    687687        | '(' type_no_function ')' cast_expression
    688688                { $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
    689         | '(' COROUTINE '&' ')' cast_expression                         // CFA
    690                 { SemanticError( yylloc, "coroutine cast is currently unimplemented." ); $$ = nullptr; }
    691         | '(' THREAD '&' ')' cast_expression                            // CFA
    692                 { SemanticError( yylloc, "monitor cast is currently unimplemented." ); $$ = nullptr; }
    693         | '(' MONITOR '&' ')' cast_expression                           // CFA
    694                 { SemanticError( yylloc, "thread cast is currently unimplemented." ); $$ = nullptr; }
    695689                // VIRTUAL cannot be opt because of look ahead issues
    696         | '(' VIRTUAL ')' cast_expression                                       // CFA
     690        | '(' VIRTUAL ')' cast_expression
    697691                { $$ = new ExpressionNode( new VirtualCastExpr( maybeMoveBuild< Expression >( $4 ), maybeMoveBuildType( nullptr ) ) ); }
    698         | '(' VIRTUAL type_no_function ')' cast_expression      // CFA
     692        | '(' VIRTUAL type_no_function ')' cast_expression
    699693                { $$ = new ExpressionNode( new VirtualCastExpr( maybeMoveBuild< Expression >( $5 ), maybeMoveBuildType( $3 ) ) ); }
    700694//      | '(' type_no_function ')' tuple
     
    788782        | logical_OR_expression '?' comma_expression ':' conditional_expression
    789783                { $$ = new ExpressionNode( build_cond( $1, $3, $5 ) ); }
    790                 // FIX ME: computes $1 twice
     784                // FIX ME: this hack computes $1 twice
    791785        | logical_OR_expression '?' /* empty */ ':' conditional_expression // GCC, omitted first operand
    792786                { $$ = new ExpressionNode( build_cond( $1, $1, $4 ) ); }
     
    803797                { $$ = new ExpressionNode( build_binary_val( $2, $1, $3 ) ); }
    804798        | unary_expression '=' '{' initializer_list comma_opt '}'
    805                 { SemanticError( yylloc, "Initializer assignment is currently unimplemented." ); $$ = nullptr; }
     799                { SemanticError( yylloc, "Initializer assignment is currently unimplemented." ); $$ = nullptr; } // FIX ME
    806800        ;
    807801
     
    873867        | exception_statement
    874868        | enable_disable_statement
    875                 { SemanticError( yylloc, "enable/disable statement is currently unimplemented." ); $$ = nullptr; }
     869                { SemanticError( yylloc, "enable/disable statement is currently unimplemented." ); $$ = nullptr; } // FIX ME
    876870        | asm_statement
    877871        ;
     
    10681062                { $$ = new StatementNode( build_return( $2 ) ); }
    10691063        | RETURN '{' initializer_list comma_opt '}'
    1070                 { SemanticError( yylloc, "Initializer return is currently unimplemented." ); $$ = nullptr; }
     1064                { SemanticError( yylloc, "Initializer return is currently unimplemented." ); $$ = nullptr; } // FIX ME
    10711065        | THROW assignment_expression_opt ';'                           // handles rethrow
    10721066                { $$ = new StatementNode( build_throw( $2 ) ); }
     
    10921086mutex_statement:
    10931087        MUTEX '(' argument_expression_list ')' statement
    1094                 { SemanticError( yylloc, "Mutex statement is currently unimplemented." ); $$ = nullptr; }
     1088                { SemanticError( yylloc, "Mutex statement is currently unimplemented." ); $$ = nullptr; } // FIX ME
    10951089        ;
    10961090
     
    13141308static_assert:
    13151309        STATICASSERT '(' constant_expression ',' string_literal ')' ';' // C11
    1316                 { SemanticError( yylloc, "Static assert is currently unimplemented." ); $$ = nullptr; }
     1310                { $$ = DeclarationNode::newStaticAssert( $3, $5 ); }
    13171311
    13181312// C declaration syntax is notoriously confusing and error prone. Cforall provides its own type, variable and function
Note: See TracChangeset for help on using the changeset viewer.