51
4. ro?ník / Re: Teoreticka informatika
« on: 02.02.2010, 03:57:24 »
Prave som uvolnil termin na 3. Hadam dakomu pomoze...
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
CASE LOZAT Vyraz POZAT ZERO Prikaz MINUS Prikaz
{
if($3.sig[0] != 'Z') yyerror("Ocakava sa logicky vyraz pre prikaz cyklu CASE");
$$=(char*)malloc(200+strlen($3.kod)+strlen($6)+strlen($8));
pn1 = navestie++;
pn2 = navestie++;
sprintf($$,
"%s"
"\tifeq\t.%d\n"
"%s"
"\tgoto\t.%d\n"
"\t.%d\n"
"%s"
"\t.%d\n",
$3.kod,pn1,$6.kod,pn2,pn1,$8.kod,pn2
);
free($3.kod);
free($8);
free($6);
};
napr takto ak ten prvy vyraz sa vykona ked je vyraz true a druhy ked je false([q,B],a,B,[q,a],R) - cize pamata si "B", na vstupe je "a", zapise tam "B" a pamata si "a" a posunie sa dopravato nemoze byt dobre, lebo potom by si mohol zacinat len symbolom a, bckom by sa nemohlo zacinat
([q,B],a,B,[q,a],R) - cize pamata si "B", na vstupe je "a", zapise tam "B" a pamata si "a" a posunie sa doprava
([q,a],b,a,[q,b],R) - pamata si "a", na vstupe je "b", zapise tam "a" a pamata si "b" a posunie sa doprava
([q,a],B,a,[q,B],R) - (na konci retazca) pamata si "a", na vstupe je "B", zapise tam "a" a pamata si "B" a posunie sa doprava
([q,B],a,a,[q,B],L) - a toto je naco ?
([q,B],B,B,[p,B],R) - a teraz len skontrolujem, ze je koniec retazca a prejdem do finalneho stavu "p"
je to tak ? a potom preco ked si pamatam "b" tak uz nie je pre nho dalsia instrukcia ? ... napriklad ([q,b],a,b,[q,a],R) ... som z toho jelen
toto co sa posuvas do lava tak si nie som isty ,ale bolo tam cosi take ze ked posunies to na paske tak sa vratis asi na zaciatok,ale neviem urcite
a to ze tam neni instrukcia pre b tak to je asi chyba,alebo neviem
cely princip je v tom ze si zapamatas co si prave precital a zapises co si mal zapamatane