"Martin M. Pedersen" <noname> skrev i en meddelelse
news:40d2b0f1$0$205$edfadb0f@dread11.news.tele.dk...
> "Preben" <64bitNOnoNOSPAM@mailme.dk> wrote in message
> news:40d1f404$0$23879$14726298@news.sunsite.dk...
> > flex, bison og lexor? fremmedord for mig - nogen der vil forklare hvad i
> > snakker om?
>
> Normalt betragter man en compiler som kørende i forskellige faser, hvoraf
de
> to første er:
>
> 1. leksikal analyse, som udføres af en "lexer" eller "scanner".
> 2. syntaktisk analyse, som udføres af en "parser".
>
> 1) Dette går ud på at opdele kildeteksten i en sekvens af tokens, dvs.
> whitespace, identifiers, konstanter, tegnsætning mv. Det er her programmet
> "flex" - eller den originale Unix implmentation "lex" - kommer ind i
> billedet. Det er en kodegenerator der som input får en fil med regulære
> udtryk, der beskriver de enkelte tokens, og som output genererer en
> tilstandsmaskine der implementerer en "scanner".
>
> 2) Dette går ud på at omsætte sekvensen af tokens til noget som giver
mening
> i forhold til grammatikken for sproget. Der er her programmet "bison" -
> eller den originale Unix implementation "Yacc" - kommer ind i billedet.
Det
> er også en kodegenerator. Den får som input en fil med en grammatik, og
som
> output genererer den en tilstandsmaskine der implementerer der
implementerer
> en "parser".
>
> Både for flex og bison gælder det, at man i input-filen til programmet
> skriver "actions" - C kode der bliver udført når noget input er blevet
> genkendt. Så bliver vi lidt on-topic igen. De originale programmer "lex"
og
> "yacc" blev begge udviklet som en del af Unix til blandt andet at
> implementere C compileren med.
>
> Du kan evt. kigge her:
http://dinosaur.compilertools.net/
>
> mvh.
> Martin
>
>
Hej
Jeg har lige haft om Lex og Yacc sidste semester, og syntes nu de var meget
smarte - også Flex, som de fleste herinde åbentbart ikke er så vilde med;
hvorfor ikke? Synes nu den virker okay, og den er da bare med til at speede
processen lidt ved at lave tokens i stedet...
Men måske kan Flex nogle ting, jeg ikke lige har hørt om endnu, det kan
selvfølgelig nemt ske. Hvad er grunden egentlig?
Mvh
Jesper (der bare spørger dumt, på ingen måde ironisk, sarkastisk, osv.)