Beskrivelse av installasjon og eksempler
Innhold
Installasjon av JFlex og CUP
Installasjon p? Linux
-
Dersom du ikke allerede kan kj?re Ant (Test med kommandoen ant),
last ned siste versjon av Ant.
Opprett en katalog for ant, for eksempel ~/install/ant
Pakk ut Ant i katalogen, for eksempel med kommandoen tar xzvf apache-ant-1.7.0-bin.tar.gz.
Du vil da ha en katalog som heter ~/install/ant/apache-ant-1.7.0/bin som blant annet inneholder skriptet ant. Katalogen legges til path-variablen med export PATH=$PATH:~/install/ant/apache-ant-1.7.0/bin. Denne linjen kan godt legges inn i login-skriptet ditt. Test Ant med kommandoen ant. Du b?r f? meldingen
Buildfile: build.xml does not exist!
Build failed - Opprette en katalog for obligen, feks ~/inf5110/oblig
- Last ned CUP 11a beta developer sourcecode release. Du vil f? filen CUP-develop.tar.gz. Pakk ut CUP developer sourcecode release i katalogen, for eksempel med kommandoen tar xzvf CUP-develop.tar.gz. Det vil opprette katalogen ~/inf5110/oblig/develop/bin hvor de to viktige filene JFlex.jar og java-cup-11.jar vil ligge.
- Last ned eksemplene og kodeskallet i inf5110-oblig1.zip . Pakk den ut i den samme katalogen (~/inf5110/oblig), for eksempel med kommandoen unzip inf5110-oblig1.zip.
- Test at ant virker ved ? g? til katalogen ~/inf5110/oblig/inf5110-oblig1 og kj?re kommandoen ant. Menyen med targets skal vises.
Installasjon med Eclipse
- Opprette en katalog for obligen, feks C:\inf5110\oblig
- Last ned CUP 11a beta developer sourcecode release. Du vil f? filen CUP-develop.tar.gz. Pakk ut CUP developer sourcecode release i katalogen (C:\inf5110\oblig). Dersom du trenger et verkt?y for ? pakke ut filene kan du for eksempel bruke WinRAR. Det vil opprette katalogen ~/inf5110/oblig/develop.
- Last ned eksemplene og kodeskallet i inf5110-oblig1.zip . Pakk den ut i den samme katalogen (C:\inf5110\oblig).
- ?pne Eclipse med workspace C:\inf5110\oblig.
-
I Package Explorer velg New->Project... Velg Java Project og skriv inn navnet develop. Eclipse
vil advare om at det finnes noe der fra f?r og det er jo ok. Klikk gjennom Wizarden og aksepter
det som foresl?s med unntak av to ting.
- Default output folder. Det er viktig at den ikke settes til develop/bin, men noe annet som for eksempel develop/classes.
- Libraries. Velg Add JARs... og legg til de to .jar-filene under develop/bin.
- Gj?r tilsvarende for inf5110-pakken. I Package Explorer velg New->Project... Velg Java Project og skriv inn navnet inf5110-oblig1. Eclipse vil advare om at det finnes noe der fra f?r og det er jo ok. Klikk gjennom Wizarden og aksepter det som foresl?s.
- Eclipse er klar og Ant kan kj?res ved ? h?yreklikke p? build.xml. Det vil vises noen feil i koden (Merket med r?de kryss), men det er greit.
Kompilering og kj?ring
Kompilering med Ant
Kompilering med Ant kan foreg? ved enten ? bruke Eclipse og h?yreklikke p? build.xml og velge targets, eller ved ? skrive ant <target> p? kommandolinjen.
I Eclipse har jeg hatt litt problemer med run-targetene i build.xml, s? det kan v?re en mulighet ? h?yreklikke p? parser-klassen eller compiler-klassen (Se eksemplene) og kj?re de slik.
Kompilering p? kommandolinjen
Dersom CLASSPATH er satt til ? inkludere JFlex.jar kan JFlex greit kj?res fra kommandolinjen med java JFlex.Main <options> <inputfiles>.
CUP kj?res med java -jar java-cup-11.jar <options> <inputfiles>.
Eksemplene
Det er tre eksempler som er inludert i filen inf5110-oblig1.zip og gramatikkene for de ligger under inf5110-oblig1/grammars.
- Expression-Eval.
Dette eksemplet regner ut verdien av utrykk som skrives inn p? kommandolinjen. Utrykket m? avsluttes med semikolon. Dette eksemplet er laget ved bruk av en flertydig grammatikk og presedensregler. Eksemplet bygges med ant compile-example-eval og kj?res med ant run-example-eval. Merk: Jeg fikk ikke denne til ? ta imot input fra kommandolinjen n?r jeg startet den fra Eclipse med Ant, men det fungerte greit fra kommandolinjen med Ant og det er mulig ? h?yreklikke p? klassen (expression_eval.parser) og starte den med run. Man m? trykke Refresh i Eclipse for ? se de genererte klassene. - Expression-Par.
Dette eksemplet lager et abstrakt syntakstre av utrykk som leses fra en fil. Filnavnet angis p? kommandolinjen. Det aksepterer kun addisjon og multiplikasjon og det leser inn ett uttrykk pr linje. Dette eksemplet er laget ved bruk av en entydig grammatikk uten presedensregler. Eksemplet bygges med ant compile-example-par og kj?res med ant run-example-par. - Skall til obligen (oblig1).
Det siste eksemplet er kun et skall til obligen. Det bygges med ant build og kj?res med ant run.