[ c00l3D @ 30.01.2006. 20:35 ] @
Napisati program u programskom jeziku "C" koji će u bilo kojem "C" programu koji mu se preda kao parametar analizirati pojavljivanje IF ELSE naredbe.
Analiza podrazumjeva:
1 - ispis linije koda na kojoj počinje i na kojoj se zavrsava naredba,
2 - sintaksnu analizu, ukoliko postoji neka greska - linija koda i ispis greske
3 - program napisati u više funkcija koje su napisane u odvojenim datotekama

Samo da napomenem da nisam kao ostali koji traze da im se uradi kod, nego mi je samo potrebna mala pomoc oko algoritma u vezi ovog zadatka. Ne trazim uradjen zadatak ali ako neko vec ima nije na odmet dakle ponavljam potreban mi je samo algoritam ako ima iko zainteresovan da pomogne hvala. Rok da zavrsim ovaj seminarski mi je 20 dana pa ako moze neko u ovih 5 dana nesto da uradi izvolite :)

[NAPOMENA: Molim bez suvisnih komentara ako zna neko neka kaze, a ako nezna nek dzaba ne pametuje]

UNAPRIJED HVALA
[ c00l3D @ 31.01.2006. 09:55 ] @
Jos jedan napomenica znao bi ja uraditi da se samo nalazi jedna komanda npr if ali problem je sto moram da provjeravam i else da li postoji pa ne kontam kako to da uradim, prvo sam mislio da trazim else pa da pomjeram se lijevo dok ne dodjem do if ali onda dodjem do problema tipa

if (nesto)
{
if (a=b) printf("Problem")
else printf("Problem2")
} else printf("NAJVECI PROBLEM");
[ c00l3D @ 31.01.2006. 20:04 ] @
Pa ljudi nije moguce da niko nezna ni algoritam, pa sta bi tek bilo da sam pitao da mi neko pomogne sa kodom. . . Stvarno mi gori pod nogama :(
[ blaza @ 01.02.2006. 10:32 ] @
Hint: recursive descent parser
[ c00l3D @ 01.02.2006. 12:52 ] @
Moze li kratko objasnjnenje mozda ???

Citat:
blaza: Hint: recursive descent parser
[ blaza @ 01.02.2006. 13:29 ] @
Google, Wikipedia...
[ c00l3D @ 13.02.2006. 21:12 ] @
E da ne bude nista nisam radio evo ovo je moj dio koda koji sam do sad uradio ali sad sam u velikoj krizi :)
Ne mogu da skontam kako mi je bolje da radim da li da prvo trazim ELSE naredbu pa provjeravam lijevo postoji li IF i da li je uredno napisana pa desno do kraja komande ili da idem redom pa kad dodjem do IF onda da gledam da li postoji ELSE, naravno uz istodobno pracenjne gresaka. Evo koda sto sam do sad uradio zato molim vas mala pomoc malo sam zapeo

Code:

#include <stdio.h>
#include <conio.h>

char buffer[10000];

main ()
{
     FILE *fajl;
     char f_ime[100];
     char znak;
     int pozicija[1000];
     long i=0,j=0,k,brojac=0,broj_else=0,tmp=1;

       printf("Unesi ime fajla: ");
       scanf("%s",&f_ime);
       if ((fajl=fopen(f_ime,"r"))==NULL) printf("\nGreska prilikom otvaranja fajla !!!");
          else
           {
              do {
                          znak=fgetc(fajl);
                          buffer[i]=znak;
                          printf("%c",znak);
                          i++;
                 } while (!feof(fajl));
       k=i;
for (i=0;i<=k;i++)
     { 
 if (((buffer[i]==' ')||(buffer[i]=='\n')||(buffer[i]=='\t')||(buffer[i]=='}')||(buffer[i]==';'))
      &&(buffer[i+1]=='i')&&(buffer[i+2]=='f')&&((buffer[i+3]=='\n')
      ||(buffer[i+3]=='\t')||(buffer[i+3]==' ')||(buffer[i+3]=='(')))
              {
              broj_else++;
              pozicija[tmp]=0;
              for (j=i;j>=0;j--)  
                 { 
                    if (buffer[j]=='\n') pozicija[tmp]++;
                 }
              printf("\n 'IF_ELSE' %d se nalazi na liniji broj: %d",broj_else,pozicija[tmp]+1);
              tmp++;
             }
     } 
}      //kraj else
if (broj_else==0) printf("Nije nadjena ni jedna 'IF_ELSE' naredba");
     getch();
     fclose(fajl);
}


Ljudi nemojte se stiditi slobodno pomozite :)