Avatar billede cyberlsn Nybegynder
04. oktober 2001 - 15:03 Der er 22 kommentarer og
1 løsning

C++ compiler´s \"ordforråd\"

Jeg er igang med at lave en C++ compiler i Delphi.
Den fungere korrekt indtil videre, men jeg
skal bruge nogle C++ koder/kommandoer.

Er der nogen der vil være med til at udvide denne c++-compiler´s \"ordforråd\"?

- kom med nogle eksempler til, hvilke kommandoer den skal håndtere!

P.S. Når i kommer med jeres koder, bedes i (for en sikkerhedsskyld) give nogle kommentare med, for at jeg ved hvad de beyder!

Mange tak på forhånd!
Avatar billede henrik_ffc Nybegynder
04. oktober 2001 - 15:09 #1
Er du sikker på det er en C++ compiler du er ved at lave ???
Avatar billede fri-hash Nybegynder
04. oktober 2001 - 15:11 #2
jeg troede egentlig man brugte assembler til compilere, men det lyder spændende .... lytter med
Avatar billede henrik_ffc Nybegynder
04. oktober 2001 - 15:26 #3
Nej du kan sagtens lave en compiler i et andet sprog. Faktisk tror jeg at compilere ofte bliver skrevet i netop C++
Avatar billede cyberlsn Nybegynder
04. oktober 2001 - 16:05 #4
Okay, da! Compiler og compiler....
Det er et program, hvor du kan skrive nogle C++ commandoer, og så derefter lave en .exe fil, som udfører kommandoerne.

Eks.:
I udviklingsmiljøet skriver du:

#include <iostream.h>

void main(void)
{
  int i;
  i == 5;
  cout <<\"5+5 = \"5+5<<;

}

hvorefter en .exe fil skriver på skærmen:
5+5 = 10

Såeh.... jeg ved ikke hvad man så skulle kalde et sådan program?

Men programmet skal ihvertfald kunne en del mere en ovenstående eksempel!

Jeg har programmeret den til, at den kan håndtere variabler, så brugeren selv kan vælge, om der skal stå int i eller int s osv. så det hele bliver ligesom en rigtig C++ compiler.
Avatar billede cyberlsn Nybegynder
04. oktober 2001 - 18:17 #5
ups. i == 5 laves lige om til i = 5;
Avatar billede fri-hash Nybegynder
04. oktober 2001 - 18:48 #6
og cout ser sådan ud :
cout << \"5+5 = \" << 5+5;
..men det er sikkert en skrivefejl :-)
Avatar billede cyberlsn Nybegynder
04. oktober 2001 - 20:43 #7
Nå... ikke mere snak om det!
Kom nu med nogle C++ koder, så jeg kan få udvidet den her C++ compiler eller hvad det nu er for noget jeg vil lave...

Jeg er nemlig ikke selv særlig god til C++, såeh....


Avatar billede alvion Nybegynder
04. oktober 2001 - 20:57 #8
Du kan gå på www.codeguru.com og finde al det kode du vil have.
Avatar billede rasmusneckelmann Nybegynder
08. oktober 2001 - 20:46 #9
Du er forhåbenligt klar over hvor kompleks en opgave det er at lave en C++ compiler?
Når du snakker om \"C++ koder\" hvad er det så lige nøjagtigt du mener? Hvis du snakker om keywords (if/else/new/delete/etc) så er der ikke særligt mange af dem (se din C++ manual eller MSDN). cout er ikke en \"C++ kode\", men en funktion(el. rettere objekt) som en smart library programmør har skrevet.
Og er du ekspert i X86 maskinkode? Det skal man ihvertfald være hvis man vil til at lave exe filer...
Avatar billede rasmusneckelmann Nybegynder
08. oktober 2001 - 20:47 #10
\"Jeg er nemlig ikke selv særlig god til C++, såeh....\"

Og du vil lave en C++ compiler...
Avatar billede cyberlsn Nybegynder
10. oktober 2001 - 19:09 #11
Ja. Jeg er fuldstændig klar over, hvor kompleks det er at lave en C++-compiler....
- eller er det?

Man skal da bare programmere det sådan her (har da virket fint indtil nu):

\"HVIS der står \'en_c++_kommando\' SÅ BEGYND på
Tilsvarende_PASCAL-kommando\"

Altså:

If pos(\"En_C++_kommando\",richedit1.text) <> 0 then
begin
  //Skriv tilsvarende Pascal-kommando.
end;

Avatar billede stigc Nybegynder
10. oktober 2001 - 20:05 #12
Du skal jo lave det om til maskinekode og ikke til Pascal. Desuden vil dit lille trick ikke virke ordentlig ved strukture, som ikke er ens i de to sporg. f.eks en for-løkke.......
Avatar billede cyberlsn Nybegynder
12. oktober 2001 - 15:53 #13
Det problem HAR jeg tænkt på for lang tid siden!
- og har også løst det!

kom nu bare med nogle foreslag!
Avatar billede rasmusneckelmann Nybegynder
12. oktober 2001 - 16:36 #14
\"HVIS der står \'en_c++_kommando\' SÅ BEGYND på
Tilsvarende_PASCAL-kommando\"

HAHA. Det ville være det samme som at lave et Dansk-Fransk oversættelsesprogram som fungere ved at udskifte hver enkelt danske ord med \"det tilsvarende franske\"    Hmmmm.... jeg tror resultatet er en smule tvivlsomt. Selv babelfisken er smartere.

OG hvis det så lykkedes dig at gøre det som du skriver, så har du IKKE lavet en compiler. En compiler er et program som genererer maskinkode, ikke Pascal kode.

stigc skriver: \"Desuden vil dit lille trick ikke virke ordentlig ved strukture, som ikke er ens i de to sporg. f.eks en for-løkke....... \"

For-løkker er trodsalt meget simple så det kan måske lade sige gøre...  men hvad hvis vi begynder at snakke om ting som friends, classes, interfaces, virtuals, inheritance, COM osv osv osv. 
Avatar billede cyberlsn Nybegynder
12. oktober 2001 - 23:13 #15
>For-løkker er trodsalt meget simple så det kan måske lade sige gøre...  men hvad hvis vi begynder at snakke om ting som friends, classes, interfaces, virtuals, inheritance, COM osv osv osv. 

--
Når vi kommer ud i det problem, bruger man selvfølgelig maskinkode... ASM

Alt det med disse \"reserverede\" ord HAR jeg ordnet!

Nu mangler jeg bare en ordentlig stak tags!
Okay. Så kalder vi det ikke en compiler, men et C++-værktøj.

Kom nu bare med nogle tags, foreslag til C++-koder osv.

Jeg HAR lavet det sådan, at man kan bruge variabler for-løkker osv.

Jeg gentager:
Jeg mangler ikke andet end \"tags\" (eller hvad man nu skal kalde det).

Altså, programmet skal kort sagt være en kopi af Microsoft Visual C++, så derfor skal jeg bruge ALLE Visual C++´s funktioner!

Altså det jeg mener, er altså:
I skal svare mig sådan (bare et lille eksempel):
\"Hvad med at programmøren kan lave et program, hvor man kan printe den tekst ud, som brugeren har skrevet? \".

- kom derefter med C++-koden.
Altså den/de samme C++ kode(r) som man skal skrive i Visual C++ for at få den ønskede funktion!


Avatar billede stigc Nybegynder
13. oktober 2001 - 15:16 #16
Tag en c++ bog jeg tror ikke der findes mere end 50 Keywords i c++. Men jeg tror også du tænkter på al den funktionalitet man får ved at inkludere andres kode (eller satndard bibliotker), og her er der jo uendelig meget!


Avatar billede fri-hash Nybegynder
13. oktober 2001 - 15:32 #17
ja, få fat i borland c++builder eller visual c++ og kig i iostream.h, string.h, math.h, osvosv..
Avatar billede cyberlsn Nybegynder
13. oktober 2001 - 17:06 #18
Jammen hvis der er så uendelig mange funktioner i MS Visual C++, hvordan har Microsoft så fået det lavet????

Hvis Microsoft kan, kan jeg også. :)
Avatar billede stigc Nybegynder
13. oktober 2001 - 18:36 #19
Men hvis du bare laver oversættelse med keywords kan du jo bare tage koden fra deres standard biblioteker, så din \"compiler\" selv kan oversætte det!
Avatar billede cyberlsn Nybegynder
14. oktober 2001 - 11:26 #20
Jammen hvor er standard bibliotekerne????
Jeg har ikke Microsoft Visual C++.

Kan i så ikke bare sende hele standardbiblioteket til mig via email?
Avatar billede borrisholt Novice
17. oktober 2001 - 10:36 #21
Det er noget være vrøvl du har gang i cyberlsn ..... Man kan ikke oversætte fra C++ til Pascal, ved hjælp af en automatiseret process.

Du render ind i voldsomme problemer lige så snart man begynder med Templates prøv fx at kigge på den her headder fil :

http://www.sgi.com/tech/stl/stl_algo.h

Hvad vil du gøre ved den ?

Jens B
Avatar billede cyberlsn Nybegynder
17. oktober 2001 - 12:24 #22
Jeg har jo sagt, at når jeg når ud i det, bruger jeg Assembler!
- så enkelt er det.

Avatar billede cyberlsn Nybegynder
28. december 2001 - 13:41 #23
lukket
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