# 31.5. 16:00

<{ForumPost(poster="tutchek", timestamp=2005-05-31 20:31:16)}>
Tak potom co jsem na linearce dopadl jak napoleon u waterloo (jenze tomu lord Welington nerekl "pohar me trpelivosti pretekl, dete domu") Tak jsem si po ceste domu skocil mimo plan na cecko a vysledek:  
  
zadani:  
udelejte procesor maker ve formatu  
#makroA nahrada  
#makroB nahrada  
  
nazev je posloupnost znaku u kterych by isalpha() hodila true  
  
pricemz makro v makru se ma rozvinout take... bez parametru zpracovat stdin a vystup na stdout, jinak:  
-i input.file  
-o output.file  
  
protoze to ma jit i pres stdin, musi to byt na jeden pruchod, makra se nemuzou zacyklit, protoze pri rozbaleni makraA jeste nebylo definovane makroB, delka nazvu makra muze byt napr. max 64 znaku (omezit konstantou) a delka vseho ostatniho nekonecne dlouha...  
  
takze napr:  
#prvni toto je makro  
#druhe toto neni prvni makro  
toto je druhe ne prvni  
  
vystup bude:  
toto je toto neni toto je makro makro ne toto je makro  
  
(proste se to rozbalilo vicekrat ;)  
  
skore: 2 ano (i kdyz ja v poslednich minutach), 1 ne... vic nas tam nebylo
<{/ForumPost}>

<{ForumPost(poster="Dawe", timestamp=2005-06-01 07:55:49)}>
Chci se zeptat, jaká tam byla podmínka toho nahrazování, vždyť kdyby bylo v každém z těch dvou maker slovo které by bylo v nahrazujícím výrazu toho druhého, pak by se to klidně mohlo zacyklit. Chápal bych kdyby se rozbalilo první, pak druhý makro atd. Z toho tvýho příkladu jsem ale pochopil, že se má rozbalit snad všechno, to by se ale potom klidně mohlo cyklit do nekonečna...  
A nebo to má být jen dvojtě? Pak by stačilo zachovat si makra, vytvořit nejříve pomocný soubor a pak to na to pustit znovu ne?
<{/ForumPost}>

<{ForumPost(poster="tutchek", timestamp=2005-06-01 13:39:47)}>

 > Dawe wrote:Chci se zeptat, jaká tam byla podmínka toho nahrazování, vždyť kdyby bylo v každém z těch dvou maker slovo které by bylo v nahrazujícím výrazu toho druhého, pak by se to klidně mohlo zacyklit. Chápal bych kdyby se rozbalilo první, pak druhý makro atd. Z toho tvýho příkladu jsem ale pochopil, že se má rozbalit snad všechno, to by se ale potom klidně mohlo cyklit do nekonečna...  
 > A nebo to má být jen dvojtě? Pak by stačilo zachovat si makra, vytvořit nejříve pomocný soubor a pak to na to pustit znovu ne?

 > Já jsem wrote:protoze to ma jit i pres stdin, musi to byt na jeden pruchod, makra se nemuzou zacyklit, protoze pri rozbaleni makraA jeste nebylo definovane makroB, delka nazvu makra muze byt napr. max 64 znaku (omezit konstantou) a delka vseho ostatniho nekonecne dlouha...

Tzn. nemuze se to zacyklit, protoze pokud by posledni makro vychazelo z prvniho, tak by to neslo, pac to prvni uz nezmeni... to uz je dany a nemenny...  
  
A jeste plati ze "prvni" neni "prvniXXX"
<{/ForumPost}>

<{ForumPost(poster="Hugo", timestamp=2005-06-01 15:12:24)}>
moc tomu na ten "1 pruchod" nerozumim..  
  
#define dnes ctvrtek je dnes  
  
makro bude znat a az narazi na dnes, tak ho nahradi..ale ptz bude znat makro dnes skonci to nekonecnym vypisonavim ctvrtek je ctvrtek je ctvrtek je...:)
<{/ForumPost}>

<{ForumPost(poster="Hugo", timestamp=2005-06-01 15:22:19)}>
Kdyz jsem se o to ted pokousel, tak kdyz nasel definovane makro, tak jsem nahradu za nej jeste jednoduse prolitl doposud znamymi defin. makry.. 3-4 radky kodu navic..
<{/ForumPost}>

<{ForumPost(poster="Anonymous", timestamp=2005-06-01 15:33:23)}>
uz mi to mozna docvaklo; kdyz definuji, tu definici prip rozvinu pomoci maker..ale pak, kdyz na to makro prijde,  rovnou dosazuji (pri dosazovani na ni uz zadna makra nemaji vliv)?
<{/ForumPost}>

<{ForumPost(poster="tutchek", timestamp=2005-06-02 19:31:09)}>

 > Hugo wrote:moc tomu na ten "1 pruchod" nerozumim..  
 >   
 > #define dnes ctvrtek je dnes  
 >   
 > makro bude znat a az narazi na dnes, tak ho nahradi..ale ptz bude znat makro dnes skonci to nekonecnym vypisonavim ctvrtek je ctvrtek je ctvrtek je...:)

Makro se samozrejme neaplikuje samo na sebe... na jeden pruchod znamena, ze kazdy kus vstupu uvidi program jen jednou (jako kdyby mu prisel pres pajpu, kdyz uz mame ty unixove znalosti ;))
<{/ForumPost}>

