Avatar billede Daniel.E Praktikant
24. marts 2005 - 19:21 Der er 16 kommentarer og
1 løsning

lex og Yacc

Der er lige en ting jeg skal være 100 % med på.

Hvis jeg benytter lex og Yacc, hvad skal jeg så selv skrive af kode.  Jeg kan forstå at de funktioner jeg skal benytte skal skrive selv. 

Hva med variabler f.eks.. der er meget andet...

hvad skal man skrive efter man har benyttet Lex og Yacc, hvis man er ved at lave et lille sprog som minder og PHP ??



Hvis du kender en god tutorial til et mini script sprog, for at demonstrere, er jeg meget intereseret.
Avatar billede arne_v Ekspert
24. marts 2005 - 19:28 #1
yacc oversætter din .y fil til en .c fil som du kan bygge normalt.

lex oversætter din .l fil til en .c fil som du kan bygge normalt.

yacc genererer en parser d.v.s. checker en strøm af tokens mod en grammatik
og kalder noget C kode når den har genkendt noget.

lex genererer en scanner som læser en char strøm og outputter en token strøm.

Hvordan du struktuerer din compiler/interpreter er helt op til dig. Du kan embeddde
al din C kode i .y og .l filen eller du kan lade C koden i .y og .l filen
udelukkende bestå af funktions kald til noget kode som er i seperate .c filer.

Det er dit valg.

Bison docs giver faktisk en god intro.
Avatar billede arne_v Ekspert
24. marts 2005 - 19:29 #2
Avatar billede arne_v Ekspert
24. marts 2005 - 19:30 #3
Avatar billede Daniel.E Praktikant
24. marts 2005 - 20:19 #4
1) Vil det sige at i Lex filen der skriver man sin grammatik regler for variabel, funktioner, if, while osv.. ??

2) vil det sige at Yacc læser Lex´s output, og udføre de tokens runtime, udfra de funktioner der bliver kaldt fra de seprerate .c filer ??


Jeg vil benytte seperate .c fil kald, med de nødvendige funktioner for at gennemføre et lille script sprog.
Avatar billede Daniel.E Praktikant
24. marts 2005 - 20:21 #5
Men der er lige en anden ting.

Jeg forstå ikke helt hvordan teorien er bag funktions integration.  Skriver man i sin grammatik regler hvad der skal kaldes når parseren støder på funtionen print eks. vis ??
Avatar billede Daniel.E Praktikant
24. marts 2005 - 20:22 #6
puha.. det er godt nok meget læsning der skal til for at lave 2 forskellige filer...
Avatar billede arne_v Ekspert
24. marts 2005 - 20:25 #7
scanneren oversætter:

a = b + 1;

til:

navn a
=
navn b
+
konstant 1
;

parseren oversætter:

navn + konstant -> værdi
navn = værdi -> statement

og udfører kode for hver af de transformationer
Avatar billede Daniel.E Praktikant
24. marts 2005 - 20:25 #8
du kender ikke også en side hvor der er et download, med et eks...så kunne man kigge i det, og bruge det som reference...
Avatar billede arne_v Ekspert
24. marts 2005 - 20:25 #9
Læs Bison eksemplet - det er kanon godt
Avatar billede Daniel.E Praktikant
24. marts 2005 - 20:34 #10
det er vel det, som jeg skal gøre så. 

/SU
Avatar billede arne_v Ekspert
24. marts 2005 - 20:35 #11
Det indeholder et komplet eksempel.

Jeg har også nogle eksempler liggende, hvsi det skulle have interesse.
Avatar billede arne_v Ekspert
24. marts 2005 - 20:35 #12
svar
Avatar billede Daniel.E Praktikant
24. marts 2005 - 20:41 #13
jo tak, jeg er meget interesseret.

Send til: cgeeks.dk@gmail.com
Avatar billede arne_v Ekspert
24. marts 2005 - 21:05 #14
de er online

et simpelt command line parse eksempel:

http://www.vajhoej.dk/arne/avu2/LIB/CMDSCAN.L
http://www.vajhoej.dk/arne/avu2/LIB/CMDPARS.Y

et komplekst Pascal parse eksempel:

http://www.vajhoej.dk/anonymous/NICE/NICE_2.ZIP

men Bison eksemplet er meget bedre fordi de forklarer hvad og hvorfor
Avatar billede Daniel.E Praktikant
24. marts 2005 - 21:15 #15
det der nice... er det ikke nok at eskekvere MAKEMSC... ?
Avatar billede arne_v Ekspert
24. marts 2005 - 21:34 #16
måske

opsætning er nok skræddersyet til min:
  486DX
  DOS 6.22 + Win 3.1
  16 bit MS C/C++
som jeg brugte i 1996

Måske er der noget som er anderledes på din PC ...

:-)

Men .l og .y filerne må du jo kunne studere
Avatar billede codecow Nybegynder
25. marts 2005 - 11:55 #17
En god bog om lex og yacc er :

"Introduction to compiler techniques"
McGraw-Hill
Jeremy Bennet
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester