FLEX (Fast LEXical Analyzer Generator) ve Fedora 22 İş İstasyonu Live

watch_later 1/15/2016
1. Fedora Live masaüstüne gelince terminal açılır.                                         
2. Terminalde sırasıyla aşağıdaki komutları çalıştırılmalıdır.
3. Admin olarak başlatılıp, tüm paketleri yüklenmelidir.
[liveuser@localhost ~]$ su –
[root@localhost ~]# dnf install gcc flex flex static bison nano -y
which ile yüklü paketlerin yolunu görülebilir.
   /bin/gcc
[root@localhost ~]# which gcc
   /bin/flex
[root@localhost ~]# which flex
   /bin/bison
[root@localhost ~]# which bison
[root@localhost ~]# exit
[liveuser@localhost ~]$

%{
//ornek.lex
#include 
int satirSayisi=1; 
float temp_kucuk=FLT_MAX; //En kucuk sayiyi max sayiyla
float temp_buyuk=-FLT_MAX; //En buyuk sayiyi max negatif sayiyla
int satir_kucuk; // En kucuk satir sayisi
int satir_buyuk; // En buyuk satir sayisi
int pozNegSayisi=0;
%}
%%
. ;
[\n]* {
satirSayisi++;
}
[+-]?[0-9]*(\.)?[0-9]*[\.] {  
    pozNegSayisi++;
    if(atof(yytext)<temp_kucuk) //Kucukse temp e at..
    {
      temp_kucuk=atof(yytext);
      satir_kucuk=satirSayisi;
    }
    if(atof(yytext)>temp_buyuk) //Buyukse temp e at..
    {
      temp_buyuk=atof(yytext);
      satir_buyuk=satirSayisi;
    }

}
%%
void main(int argc, char **argv)
{
yylex();
printf("En Kucuk: %f Satir Sayisi: %d\n",temp_kucuk,satir_kucuk);
printf("En Buyuk: %f Satir Sayisi: %d\n",temp_buyuk,satir_buyuk);
printf("Pozitif ve Negatif Sayisi: %d\n",pozNegSayisi);
}
[liveuser@localhost ~]$ ls
Home listesinde dosyalar arasında lex.yy.c isimli bir dosya olmayacak.
[liveuser@localhost ~]$ flex ornek.lex
[liveuser@localhost ~]$ ls
Home listesinde dosyalar arasında lex.yy.c isimli bir dosya olacak.
[liveuser@localhost ~]$ cat lex.yy.c
lex.yy.c dosyasının içeriği terminale yansıyacak.
[liveuser@localhost ~]$ gcc –o ornek.x lex.yy.c –lfl
[liveuser@localhost ~]$ ls
Home listesinde dosyalar arasında ornek.x isimli bir dosya olacak.
[liveuser@localhost ~]$ ./ornek.x
lex kodunu çalıştırmak için kullanılacak.
[liveuser@localhost ~]$ ./ornek.x < data.txt 
lex kodunu bir dosyadan okuyarak çalıştırmak için kullanılacak.


Linux Bash komut çalıştırma simülasyonu






Bir sonraki yazımda görüşmek üzere...



sentiment_satisfied Emoticon