Ignore:
Timestamp:
Apr 1, 2021, 4:17:56 PM (8 months ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
arm-eh, jacob/cs343-translation, master, new-ast-unique-expr
Children:
3bd2464
Parents:
ca33b15
Message:

add keywords typeid and vtable, and parse new syntax for virtual tables

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.yy

    rca33b15 r1f652a7  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Mar 30 18:39:23 2021
    13 // Update Count     : 4965
     12// Last Modified On : Thu Apr  1 14:43:24 2021
     13// Update Count     : 4978
    1414//
    1515
     
    264264%token RESTRICT                                                                                 // C99
    265265%token ATOMIC                                                                                   // C11
    266 %token FORALL MUTEX VIRTUAL COERCE                                              // CFA
     266%token FORALL MUTEX VIRTUAL VTABLE COERCE                               // CFA
    267267%token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED
    268268%token BOOL COMPLEX IMAGINARY                                                   // C99
     
    270270%token uFLOAT16 uFLOAT32 uFLOAT32X uFLOAT64 uFLOAT64X uFLOAT128 // GCC
    271271%token ZERO_T ONE_T                                                                             // CFA
    272 %token VALIST                                                                                   // GCC
    273 %token AUTO_TYPE                                                                                // GCC
    274 %token TYPEOF BASETYPEOF LABEL                                                  // GCC
     272%token SIZEOF TYPEOF VALIST AUTO_TYPE                                   // GCC
     273%token OFFSETOF BASETYPEOF TYPEID                                               // CFA
    275274%token ENUM STRUCT UNION
    276275%token EXCEPTION                                                                                // CFA
    277276%token GENERATOR COROUTINE MONITOR THREAD                               // CFA
    278277%token OTYPE FTYPE DTYPE TTYPE TRAIT                                    // CFA
    279 %token SIZEOF OFFSETOF
    280278// %token RESUME                                                                                        // CFA
     279%token LABEL                                                                                    // GCC
    281280%token SUSPEND                                                                                  // CFA
    282281%token ATTRIBUTE EXTENSION                                                              // GCC
     
    373372
    374373%type<decl> basic_declaration_specifier basic_type_name basic_type_specifier direct_type indirect_type
     374%type<decl> vtable vtable_opt default_opt
    375375
    376376%type<decl> trait_declaration trait_declaration_list trait_declaring_list trait_specifier
     
    785785        | OFFSETOF '(' type_no_function ',' identifier ')'
    786786                { $$ = new ExpressionNode( build_offsetOf( $3, build_varref( $5 ) ) ); }
     787        | TYPEID '(' type_no_function ')'
     788                {
     789                        SemanticError( yylloc, "typeid name is currently unimplemented." ); $$ = nullptr;
     790                        // $$ = new ExpressionNode( build_offsetOf( $3, build_varref( $5 ) ) );
     791                }
    787792        ;
    788793
     
    18951900        | AUTO_TYPE
    18961901                { $$ = DeclarationNode::newBuiltinType( DeclarationNode::AutoType ); }
     1902        | vtable
     1903        ;
     1904
     1905vtable_opt:
     1906        // empty
     1907                { $$ = nullptr; }
     1908        | vtable;
     1909        ;
     1910
     1911vtable:
     1912        VTABLE '(' type_list ')' default_opt
     1913                { SemanticError( yylloc, "vtable is currently unimplemented." ); $$ = nullptr; }
     1914        ;
     1915
     1916default_opt:
     1917        // empty
     1918                { $$ = nullptr; }
     1919        | DEFAULT
     1920                { SemanticError( yylloc, "vtable default is currently unimplemented." ); $$ = nullptr; }
    18971921        ;
    18981922
     
    21022126
    21032127aggregate_data:
    2104         STRUCT
     2128        STRUCT vtable_opt
    21052129                { yyy = true; $$ = AggregateDecl::Struct; }
    21062130        | UNION
    21072131                { yyy = true; $$ = AggregateDecl::Union; }
    21082132        | EXCEPTION                                                                                     // CFA
    2109                 // { yyy = true; $$ = AggregateDecl::Exception; }
    2110                 { SemanticError( yylloc, "exception aggregate is currently unimplemented." ); $$ = AggregateDecl::NoAggregate; }
     2133                { yyy = true; $$ = AggregateDecl::Exception; }
     2134          //            { SemanticError( yylloc, "exception aggregate is currently unimplemented." ); $$ = AggregateDecl::NoAggregate; }
    21112135        ;
    21122136
Note: See TracChangeset for help on using the changeset viewer.