Avatar billede simonvalter Praktikant
03. februar 2005 - 17:24 Der er 16 kommentarer og
1 løsning

projekt forslag søges

Min gruppe skal have besluttet hvad vi vil lave som projekt i faget "compiler theory" til på mandag men har ingen erfaring med det endnu så det er lidt svært at vælge noget.

Hvis der er nogen der har erfaring med et ligende projekt eller bare har nogen gode ideer vil jeg meget gerne høre dem.


min egen ide ville være at lave en post compiler som virker ala AOP og det havde jeg forestillet mig kunnne laves med javacc og et bytecode manipulations library ala becl,asm osv. men jeg har ikke lige overblikket over hvor omfattende det ville være. (har frem til 27 maj med løbende undervisning)

noget flex+bison er en mulighed men kun 1 i gruppen er vant til C
Avatar billede arne_v Ekspert
03. februar 2005 - 17:37 #1
yacc/bison er bare 10000 gange bedre end JavaCC.

:-)
Avatar billede arne_v Ekspert
03. februar 2005 - 17:41 #2
Hvad med noget sprog konvertering ?

En Java<->C# konverter måske.

Som altså gjorde det ordentlig. get & set <-> properties. Ændring af navne casing.
Konvertering af System<->java.lang + System.IO<->java.io biblioteks kald.
Avatar billede simonvalter Praktikant
03. februar 2005 - 18:06 #3
jep jeg tror gerne det er bedre men javacc er også en del nemmere at forstå.. jeg fik ihvertfald fat i hvad der foregik i en tutorial der lavede et simpelt sprog første gang.  jeg har stadig lidt svært ved at se hvad der sker i et simpelt sprog lavet med yacc/bison.... men der er jo godt nok lidt tid til at lære det.

convertere har vi fået flere forslag om at lave. java > c / java > c++ osv men hvad ville det indebære? ligger der de samme step i det for validering af syntax osv vil jo ikke være nødvendigt. pattern matching og udskiftning af strings virker ikke særligt udfordrene eller er der mere i det end jeg lige kan se.
Avatar billede arne_v Ekspert
03. februar 2005 - 18:15 #4
Efter min bedste overbevisning kan du ikke lave en fornuftig oversættelse uden
en fuld parser.
Avatar billede simonvalter Praktikant
03. februar 2005 - 18:19 #5
ok så er der ikke noget i vejen for at få den vej.
Avatar billede arne_v Ekspert
03. februar 2005 - 18:20 #6
Lad os tage et helt banalt eksempel.

C#:

decimal a = 1;
decimal b = a+1;

Java:

BigDecimal a = new BigDecimal("1");
BigDecimal b = a.add(new BigDecimal("1"));

Prøv og lav den som string replace !

Du er nødt til at parse C# programmet og opbygge en symbol tabel så du ved
at a er en decimal så du kan generere noget fornuftigt kode når du kommer
til a+1.
Avatar billede arne_v Ekspert
03. februar 2005 - 18:25 #7
Eller lige så banalt:

Java:

int x = o.getX();

C#:

int x = o.X;

Du er nødt til at vide at x/X er en property for at kunne generere den rigtige kode.
Avatar billede simonvalter Praktikant
03. februar 2005 - 18:30 #8
ok det er noteret :)
Avatar billede arne_v Ekspert
03. februar 2005 - 18:38 #9
For 15 år siden lavede jeg et program (i C med flex & bison) som kunne
formatere Pascal kode og konvertere mellem VMS Pascal og Turbo Pascal.

Det var osgå meningen at det skulle kunne konvertere til C, men projektet
blev opgivet inden det kom så langt.
Avatar billede simonvalter Praktikant
03. februar 2005 - 18:41 #10
har du det stadig liggende og er det noget man kan se? Det er lidt svært at se det i den store sammenhæng i en bog der tager det ud i små dele så det ville være rart at se et eksempel.
Avatar billede arne_v Ekspert
03. februar 2005 - 18:45 #11
Jeg smider aldrig noget væk.

http://www.vajhoej.dk/anonymous/nice/

Og et relevant snip fra index.lis:

  [.NICE]NICE_BASE_1.ZIP (zipped with VMS ZIP)
  [.NICE]NICE_BASE_2.ZIP (zipped with PKZIP)

    Description : Pascal beautifier (prettyprinter) with lots of features
                  analysing code and helping porting between DEC PASCAL
                  and TURBO PASCAL. This is the base kit for program
                  modification.
    Source      : C,YACC and LEX
    Binary      : see below
    Notes      : (all platforms)
    Posted      : not

  [.NICE]NICE_1.ZIP (zipped with VMS ZIP)
  [.NICE]NICE_2.ZIP (zipped with PKZIP)

    Description : Pascal beautifier (prettyprinter) with lots of features
                  analysing code and helping porting between DEC PASCAL
                  and TURBO PASCAL. This is a prepared kit for DEC PASCAL,
                  TURBO PASCAL and STANDARD PASCAL.
    Source      : C
    Binary      : EXE's in NICE_BIN_GNUC.ZIP (compiled with
                  GNU C 2.6.3 on VAX and linked on VMS VAX 6.2)
                  EXE's in NICE_BIN_VAXC.ZIP (compiled with
                  VAX C 3.2 on VAX and linked on VMS VAX 6.2)
                  EXE's in NICE_BIN_DECC_VAX.ZIP (compiled with
                  DEC C 5.3 on VAX and linked on VMS VAX 6.2)
                  EXE's in NICE_BIN_DECC_AXP.ZIP (compiled with
                  DEC C 5.3 on AXP and linked on VMS AXP 6.2)
                  EXE's in NICE_BIN_MSC.ZIP (compiled and linked
                  with MS C 7.0 on PC)
                  EXE's in NICE_BIN_BC.ZIP (compiled and linked
                  with Borland C 3.0 on PC)
                  EXE's in NICE_BIN_DJG.ZIP (compiled and linked
                  with DJ GPP 2.6.3 on PC)
    Notes      : (all platforms)
    Posted      : not
Avatar billede simonvalter Praktikant
03. februar 2005 - 18:49 #12
ok tak.. du kan godt smide et svar jeg lukker en af dagene.
Avatar billede arne_v Ekspert
03. februar 2005 - 18:52 #13
ok
Avatar billede arne_v Ekspert
03. februar 2005 - 19:10 #14
Udover at være noget gammelt, så er er meget af build procedurer etc. jo
lavet til et VMS system, men DCL er ikke så svært at læse.

:-)
Avatar billede simonvalter Praktikant
14. februar 2005 - 21:48 #15
Nå der var ikke nogen der ville hverken mit eller dit forslag. Vi laver istedet et nyt mini-sprog hvor vi prøver at gøre det lidt smartere .. hvor vi låner lidt af de gode ting fra python og java og kommer nogen af vores egen ideer ind (måske support for aop). Måske vil vi kigge lidt på at lave egen lexer/parser men hvis der ikke bliver tid så bliver det med JFlex og CUP. det bliver sikkert ikke særligt brugbart men vi kommer til at arbejde med mere af den teori vi lærer.
Avatar billede arne_v Ekspert
14. februar 2005 - 22:14 #16
I får ikke tid til både at lave et nyt sprog og en parser generator.
Avatar billede simonvalter Praktikant
14. februar 2005 - 22:32 #17
nej det regnede jeg heller ikke med så det har også fået lav prioritet.
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