Changeset c75b30a for src/CodeGen


Ignore:
Timestamp:
Jan 31, 2024, 6:25:02 PM (4 months ago)
Author:
JiadaL <j82liang@…>
Branches:
master
Children:
32490deb
Parents:
16afb2a
Message:

Introduce posE, valueE, labelE pseudo language to the language. Rework the internal representation of enumeration.

Location:
src/CodeGen
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cpp

    r16afb2a rc75b30a  
    331331        extension( decl );
    332332        auto members = decl->members;
    333         if ( decl->base && !members.empty() ) {
    334                 long long curVal = 0;
    335                 for ( auto member : members ) {
    336                         auto obj = member.strict_as<ast::ObjectDecl>();
    337                         output << "static ";
    338                         output << genType( decl->base, mangleName( obj ), options );
    339                         genEnumInitializer( visitor, decl->base, output, obj->init, &curVal, options );
    340                         output << ";" << endl;
    341                 }
    342         } else {
     333        // if ( decl->base && !members.empty() ) {
     334        //      long long curVal = 0;
     335        //      for ( auto member : members ) {
     336        //              auto obj = member.strict_as<ast::ObjectDecl>();
     337        //              output << "static ";
     338        //              output << genType( decl->base, mangleName( obj ), options );
     339        //              genEnumInitializer( visitor, decl->base, output, obj->init, &curVal, options );
     340        //              output << ";" << endl;
     341        //      }
     342        // } else {
    343343                output << "enum ";
    344344                genAttributes( decl->attributes );
     
    353353                                auto obj = member.strict_as<ast::ObjectDecl>();
    354354                                output << indent << mangleName( obj );
    355                                 if ( obj->init ) {
     355                                if ( !decl->base && obj->init ) {
    356356                                        output << " = ";
    357357                                        obj->init->accept( *visitor );
     
    363363                        output << indent << "}";
    364364                }
    365         }
     365        // }
    366366}
    367367
  • src/CodeGen/GenType.cc

    r16afb2a rc75b30a  
    228228
    229229void GenType::postvisit( ast::EnumInstType const * type ) {
    230         if ( type->base && type->base->base ) {
    231                 result = genType( type->base->base, result, options );
    232         } else {
     230        // if ( type->base && type->base->base ) {
     231        //      result = genType( type->base->base, result, options );
     232        // } else {
    233233                result = type->name + " " + result;
    234234                if ( options.genC ) {
    235235                        result = "enum " + result;
    236236                }
    237         }
     237        // }
    238238        handleQualifiers( type );
    239239}
Note: See TracChangeset for help on using the changeset viewer.