Keresés

Aktív témák

  • sany80

    csendes tag

    Én is a beadandón ügyködöm és bajban vagyok vele. Alaposan belezavarodtam ha valaki segítene hálás lennék.

    ezt dobja ki hibaüzenetként:

    [Warning] Line 46: (compiler.y) In production rule
    `4: declaration -> UNSIGNED IDENT #0001 '
    cannot determine default type of $0
    [Warning] Line 64: (compiler.y) In production rule
    `6: declaration -> BOOL IDENT #0002 '
    cannot determine default type of $0
    [Error 1] Line 90: (compiler.y) unrecognized input (`(') encountered
    Automatikus tesztelo: Hiba van a bisonc++ forrasfajljaban.

    A tanár tutorial-ja alapján csináltam de most már nem látom a fától az erdőt.

    Ez meg a file:

    %baseclass-preinclude "semantics.h"
    %lsp-needed

    %token UNSIGNED;
    %token BOOL;
    %token TRUE;
    %token FALSE;
    %token NUMBER;
    %token <szoveg> IDENT;
    %token ASSIGN;

    %union
    {
    std::string *szoveg;

    }

    %%

    start:
    declarations assignments
    ;

    declarations:
    // ures
    |
    declaration declarations
    ;

    declaration:
    UNSIGNED IDENT
    {
    szimbolumtabla[*$2] = var_data( d_loc__.first_line, unsigned );
    }
    {
    std::cout << *$2 = var_data( d_loc__.first_line, unsigned );

    if( szimbolumtabla.count(*$2) > 0 )
    {
    std::stringstream ss;
    ss << "Ujradeklaralt valtozo: " << *$2 << ".\n"
    << "Korabbi deklaracio sora: " << szimbolumtabla[*$2].decl_row << std::endl;
    error( ss.str().c_str() );
    }
    delete $2;
    }
    |
    BOOL IDENT
    {
    szimbolumtabla[*$2] = var_data( d_loc__.first_line, bool );
    }
    {
    std::cout << *$2 = var_data( d_loc__.first_line, bool );

    if( szimbolumtabla.count(*$2) > 0 )
    {
    std::stringstream ss;
    ss << "Ujradeklaralt valtozo: " << *$2 << ".\n"
    << "Korabbi deklaracio sora: " << szimbolumtabla[*$2].decl_row << std::endl;
    error( ss.str().c_str() );
    }
    delete $2;

    }
    ;

    assignments:
    // ures
    |
    assignment assignments
    ;

    assignment:
    IDENT ASSIGN expr
    {
    if ( IDENT != szimbolumtabla )
    cout << "azonosito nincs deklaralva";
    }

    ;

    expr:
    IDENT

    {
    if ( IDENT != szimbolumtabla )
    cout << "azonosito nincs deklaralva";
    }
    if( szimbolumtabla[*$1].var_type != *$3 ) //itt van az a bizonyos 90 sor
    {
    error( "Tipushibas ertekadas.\n" );
    $$ = new type(szimbolumtabla[*$1].var_type);
    }
    |
    NUMBER

    if( szimbolumtabla unsigned != *$3 )
    {
    error( "Tipushibas ertekadas.\n" );
    }
    $$ = new type(unsigned);
    |
    TRUE

    if( szimbolumtabla bool != *$3 )
    {
    error( "Tipushibas ertekadas.\n" );
    }
    $$ = new type(bool);
    |
    FALSE

    if( szimbolumtabla bool != *$3 )
    {
    error( "Tipushibas ertekadas.\n" );
    }
    $$ = new type(bool);
    ;

Aktív témák