Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %baseclass-preinclude "semantics.h"
- %lsp-needed
- %token <szoveg> AZONOSITO
- %token WHILE ENDWHILE IF ENDIF ELSE ARIT_ADD ARIT_SUBTRACT ARIT_MULTIPLY ARIT_DIVIDE ARIT_MOD ARIT_BY TO FROM WRITE READ MOVE TYPE PROGRAM DATA SEP_KETTOSPONT SEP_PONT SEP_VESSZO OP_NOT TYPE_INTEGER TYPE_BOOL LIT_TRUE LIT_FALSE LIT_INTEGER NYITO CSUKO
- %left OP_OR
- %left OP_AND
- %left OP_EGYENLO
- %left OP_KISEBB OP_NAGYOBB
- %union
- {
- std::string *szoveg;
- }
- %%
- start:
- PROGRAM AZONOSITO SEP_PONT DATA SEP_KETTOSPONT deklaracio { std::cout << "start -> PROGRAM AZONOSITO SEP_PONT DATA SEP_KETTOSPONT deklaracio" << std::endl; }
- |PROGRAM AZONOSITO SEP_PONT torzs {std::cout << "start -> PROGRAM AZONOSITO SEP_PONT torzs " << std::endl;}
- ;
- deklaracio:
- AZONOSITO TYPE TYPE_INTEGER SEP_VESSZO deklaracio {
- if( szimbolumtabla.count(*$1) > 0 ) {
- std::stringstream ss;
- ss << "Ujradeklaralt valtozo: " << *$1 << ".\n" << "Korabbi deklaracio sora: " << szimbolumtabla[*$1].decl_row << std::endl;
- error( ss.str().c_str() );
- }
- szimbolumtabla[*$1] = var_data(d_loc__.first_line, integer);
- }
- |AZONOSITO TYPE TYPE_BOOL SEP_VESSZO deklaracio {
- if( szimbolumtabla.count(*$1) > 0 ) {
- std::stringstream ss;
- ss << "Ujradeklaralt valtozo: " << *$1 << ".\n" << "Korabbi deklaracio sora: " << szimbolumtabla[*$1].decl_row << std::endl;
- error( ss.str().c_str() );
- }
- szimbolumtabla[*$1] = var_data(d_loc__.first_line, boolean);
- }
- |AZONOSITO TYPE TYPE_INTEGER SEP_PONT torzs {
- if( szimbolumtabla.count(*$1) > 0 ) {
- std::stringstream ss;
- ss << "Ujradeklaralt valtozo: " << *$1 << ".\n" << "Korabbi deklaracio sora: " << szimbolumtabla[*$1].decl_row << std::endl;
- error( ss.str().c_str() );
- }
- szimbolumtabla[*$1] = var_data(d_loc__.first_line, integer);
- }
- |AZONOSITO TYPE TYPE_BOOL SEP_PONT torzs {
- if( szimbolumtabla.count(*$1) > 0 ) {
- std::stringstream ss;
- ss << "Ujradeklaralt valtozo: " << *$1 << ".\n" << "Korabbi deklaracio sora: " << szimbolumtabla[*$1].decl_row << std::endl;
- error( ss.str().c_str() );
- }
- szimbolumtabla[*$1] = var_data(d_loc__.first_line, boolean);
- }
- ;
- torzs:
- // ures { std::cout << "torzs -> epszilon" << std::endl; }
- |utasitas torzs { std::cout << "torzs -> utasitas torzs" << std::endl; }
- ;
- utasitas:
- MOVE kifejezes_int TO AZONOSITO SEP_PONT {
- /*if( szimbolumtabla.count(*$4) == 0 ) {
- std::stringstream ss;
- ss << "1 Nem deklaralt valtozo: " << *$4 << std::endl;
- error( ss.str().c_str() );
- }*/
- }
- |READ TO AZONOSITO SEP_PONT {
- if( szimbolumtabla.count(*$3) == 0 ) {
- std::stringstream ss;
- ss << "2 Nem deklaralt valtozo: " << *$3 << std::endl;
- error( ss.str().c_str() );
- }
- }
- |WRITE AZONOSITO SEP_PONT { std::cout << "utasitas -> WRITE AZONOSITO SEP_PONT" << std::endl; }
- |ARIT_ADD kifejezes_int TO AZONOSITO SEP_PONT { std::cout << "utasitas -> ARIT_ADD kifejezes_int TO AZONOSITO SEP_PONT" << std::endl; }
- |ARIT_SUBTRACT kifejezes_int FROM AZONOSITO SEP_PONT { std::cout << "utasitas -> ARIT_SUBTRACT kifejezes_int FROM AZONOSITO SEP_PONT" << std::endl; }
- |ARIT_MULTIPLY AZONOSITO ARIT_BY kifejezes_int SEP_PONT { std::cout << "utasitas -> ARIT_MULTIPLY AZONOSITO ARIT_BY kifejezes_int SEP_PONT" << std::endl; }
- |ARIT_DIVIDE AZONOSITO ARIT_BY kifejezes_int SEP_PONT { std::cout << "utasitas -> ARIT_DIVIDE AZONOSITO ARIT_BY kifejezes_int SEP_PONT" << std::endl; }
- |ARIT_MOD AZONOSITO ARIT_BY kifejezes_int TO AZONOSITO SEP_PONT { std::cout << "utasitas -> ARIT_MOD AZONOSITO ARIT_BY kifejezes_int TO AZONOSITO SEP_PONT" << std::endl; }
- |WHILE kifejezes_bool SEP_PONT utasitas torzs ENDWHILE SEP_PONT { std::cout << "utasitas -> WHILE kifejezes_bool SEP_PONT utasitas torzs ENDWHILE SEP_PONT" << std::endl; }
- |IF kifejezes_bool SEP_PONT utasitas torzs ENDIF SEP_PONT { std::cout << "utasitas -> IF kifejezes_bool SEP_PONT utasitas torzs ENDIF SEP_PONT" << std::endl; }
- |IF kifejezes_bool SEP_PONT utasitas torzs ELSE SEP_PONT utasitas torzs ENDIF SEP_PONT { std::cout << "utasitas -> IF kifejezes_bool SEP_PONT utasitas torzs ELSE utasitas torzs ENDIF SEP_PONT" << std::endl; }
- ;
- kifejezes_int:
- LIT_INTEGER { std::cout << "kifejezes_int -> LIT_INTEGER" << std::endl; }
- |AZONOSITO { std::cout << "kifejezes_int -> AZONOSITO" << std::endl; }
- ;
- kifejezes_bool:
- LIT_TRUE { std::cout << "kifejezes_bool -> LIT_TRUE" << std::endl; }
- |LIT_FALSE { std::cout << "kifejezes_bool -> LIT_FALSE" << std::endl; }
- |AZONOSITO { std::cout << "kifejezes_bool -> AZONOSITO" << std::endl; }
- |NYITO kifejezes_bool CSUKO { std::cout << "kifejezes_bool -> NYITO kifejezes_bool CSUKO " << std::endl; }
- |kifejezes_bool OP_AND kifejezes_bool { std::cout << "kifejezes_bool -> kifejezes_bool OP_AND kifejezes_bool " << std::endl; }
- |kifejezes_bool OP_OR kifejezes_bool { std::cout << "kifejezes_bool -> kifejezes_bool OP_OR kifejezes_bool " << std::endl; }
- |kifejezes_int_to_bool OP_AND kifejezes_bool { std::cout << "kifejezes_bool -> kifejezes_bool OP_AND kifejezes_bool " << std::endl; }
- |kifejezes_bool OP_OR kifejezes_int_to_bool { std::cout << "kifejezes_bool -> kifejezes_bool OP_OR kifejezes_bool " << std::endl; }
- |kifejezes_bool OP_AND kifejezes_int_to_bool { std::cout << "kifejezes_bool -> kifejezes_bool OP_AND kifejezes_bool " << std::endl; }
- |kifejezes_int_to_bool OP_OR kifejezes_bool { std::cout << "kifejezes_bool -> kifejezes_bool OP_OR kifejezes_bool " << std::endl; }
- |OP_NOT kifejezes_bool { std::cout << "kifejezes_bool -> OP_NOT kifejezes_bool" << std::endl; }
- |kifejezes_int_to_bool OP_AND kifejezes_int_to_bool { std::cout << "kifejezes_bool -> kifejezes_int_to_bool OP_AND kifejezes_int_to_bool" << std::endl; }
- |kifejezes_int_to_bool OP_OR kifejezes_int_to_bool { std::cout << "kifejezes_bool -> kifejezes_int_to_bool OP_OR kifejezes_int_to_bool" << std::endl; }
- |OP_NOT kifejezes_int_to_bool { std::cout << "kifejezes_bool -> OP_NOT kifejezes_int_to_bool" << std::endl; }
- ;
- kifejezes_int_to_bool:
- kifejezes_int OP_EGYENLO kifejezes_int { std::cout << "kifejezes_int_to_bool -> kifejezes_int OP_EGYENLO kifejezes_int" << std::endl; }
- |kifejezes_int OP_KISEBB kifejezes_int { std::cout << "kifejezes_int_to_bool -> kifejezes_int OP_KISEBB kifejezes_int" << std::endl; }
- |kifejezes_int OP_NAGYOBB kifejezes_int { std::cout << "kifejezes_int_to_bool -> kifejezes_int OP_NAGYOBB kifejezes_int" << std::endl; }
- ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement