Hledám pomocníka s tvorbou kompilátoru – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Hledám pomocníka s tvorbou kompilátoru – Java – Fórum – Programujte.comHledám pomocníka s tvorbou kompilátoru – Java – Fórum – Programujte.com

 

9. 6. 2012   #1
-
0
-

ahoj 

mám jeden docela blbí problém. hledal jsem dlouho jak kompilovat programy, protože ve většině tutoriálů to je špatně. našel jsem jeden pěkný návod jak kompilovat. dělal jsem vše, co bylo popsané, ale co přišlo. chtělo to po mě nějakou za*ranou registraci na oracle.com. řešit jsem se to rozhodl jednoduše. naprogramuji si vlastní compiler Java.

bylo by fajn kdyby mi někdo pomohl. popravdě jsem to chtěl zkusit sám, ale k čemu je naprogramovat překladač, když ho nikdy nepřeložím   . jsem ochotný se na tom podílet s někým kdo tomu celkem rozumí, poněvadž nejsem zrovna na nejvyšší úrovni, ale programování celkem chápu (to celkem neberte moc vážně spíše jsem myslel že dokážu základy a nakousnout mírně pokročilé). co je asi problém ve mě je to, že nepoužívám ověřené postupy a spíše si vymyslím vlastní řešení (například místo použití metody pro odmocniny jsem udělal vlastní cyklus) 

budu rád když odešlete zájem na  misak.doubek@gmail.com  

Nahlásit jako SPAM
IP: 85.70.57.–
TheOndrap+2
Super člen
10. 6. 2012   #2
-
0
-

1)mám jeden docela blbí problém ... neumim češtinu

2)Jako je to zajímavej problém, ale to bych radši věnoval 15minut vyřešení "problému" s registrací, než se pouštěl do psaní vlastního kompilátoru, ono to totiž nebude nic jednoduchýho, dělal lexikální analyzátor, optimalizace atd .. to nebude práce na víkend

Nahlásit jako SPAM
IP: 88.102.250.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
TheOndrap+2
Super člen
12. 6. 2012   #3
-
0
-

A když už se do toho oopravdu budeš pouštět, zkus tohle: http://www.antlr.org/ .. to je framework na vytváření parseru a překladačů

Nahlásit jako SPAM
IP: 88.102.250.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
vitamin+8
Grafoman
12. 6. 2012   #4
-
+1
-
Zajímavé

#1 přezdívka
Kompilator je prekladac z jedneho jazyka do druheho. Takze zakladny predpoklad je ze dobre ovladas prekladany jazyk (javu) a cielovy jazyk (java bytecode). 

Vzhladom na to ze si sa nedostal k prekladacu kvoly jednej registracii tak pochybujem ze ovladas javu, nebodej jej bytecode.

Ak budes ovladat javu a java bytecode, tak aj tak budes potrebovat lepsie znalosti. Lexikalnu analyzu by i mozno aj zvladol, ale syntakticku a sematicku analyzu bez potrebnych znalosti asi nie.

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
TheOndrap+2
Super člen
12. 6. 2012   #5
-
+1
-
Zajímavé

:) třeba budeme za 5 let používat jeho kompilátor a číst si, že kdysi existoval i nějakej SUN kompilátor :D

Nahlásit jako SPAM
IP: 88.102.250.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
přezdívka
~ Anonymní uživatel
3 příspěvky
19. 6. 2012   #6
-
0
-

#5 TheOndrap
už jsem se do toho pustil sám a rozhodl jsem se, že zachráním čest Javy. Tu záchranu berte jako že je Java úplné ale úplné svinstvo a já jsem se rozhodl to novým bytecodem a menší úpravou syntaxe opravit. mimochodem to je s grafikou a to s tlačítkem kompiluj textboxem pro kód a oknem, abych na to viděl   

rozhodl jsem se tvořit v C#, ale jsou problémy. dělám v  mrkvosoft  visual studio C# express. problém je, že když použiji metodu ReadLine, tak mi tam hned vyskočí error a když jich použiji víc (a to že jich je jak máku) tak mi to háže ty errory furt a furt dokola. jak to potom na veřejnosti vypadá se sto řádky a 32 errory a to ani nemluvím o tom, že se mi to potom nechce testovat.

potom to háže další chybu. ta je, že když chci vytvořit nový soubor:

StreamWriter mezizapisovac = fi.CreateText();

tak to píše, že fi není v kontextu:

the name "fi" does not exist in current context.

díky za rady jak problémy vyřešit

ahoj
 

Nahlásit jako SPAM
IP: 85.70.57.–
TheOndrap+2
Super člen
19. 6. 2012   #7
-
0
-

:D:D:D to si skončil poměrně brzo

Nahlásit jako SPAM
IP: 88.102.250.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
19. 6. 2012   #8
-
+1
-
Zajímavé
Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
přezdívka
~ Anonymní uživatel
3 příspěvky
19. 6. 2012   #9
-
0
-

#7 TheOndrap
a co očekáváš od aplikace, která zapisuje mezikód do souboru???

Nahlásit jako SPAM
IP: 85.70.57.–
TheOndrap+2
Super člen
19. 6. 2012   #10
-
0
-

#8 djanosik
Dobrá myšlenka, dík za rozšíření obzorů.

#9 přezdívka
No je otázka, jestli ty jenom přepíšeš kod na bytekod .. já jsem to nestudoval, ale myslím že budeš muset dělat všechy výše zmíněné analýzy (lex., synt., semant.) .. 

Nahlásit jako SPAM
IP: 88.102.250.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
tečka
~ Anonymní uživatel
63 příspěvků
20. 6. 2012   #11
-
0
-

#10 TheOndrap
no zkusím ti to vysvětlit:

1) kompilátor převede Java kód na bytecode
2) můj vlastní VM přečte soubor a spustí se

a zazvonil zvonec a pohádky je konec

Nahlásit jako SPAM
IP: 85.70.57.–
TheOndrap+2
Super člen
21. 6. 2012   #12
-
0
-

#11 tečka
:D zkusím ti to vysvětlit. Já mám prostě pocit, že to vidíš jako hurvínek válku ;)

Kód v Javě:

for (int i = 2; i < 1000; i++) {
      for (int j = 2; j < i; j++) {
          if (i % j == 0)
              continue outer;
      }
      System.out.println (i);
  }

Převedený na bytekód:

0:   iconst_2
  1:   istore_1
  2:   iload_1
  3:   sipush  1000
  6:   if_icmpge       44
  9:   iconst_2
  10:  istore_2
  11:  iload_2
  12:  iload_1
  13:  if_icmpge       31
  16:  iload_1
  17:  iload_2
  18:  irem
  19:  ifne    25
  22:  goto    38
  25:  iinc    2, 1
  28:  goto    11
  31:  getstatic       #84; //Field java/lang/System.out:Ljava/io/PrintStream;
  34:  iload_1
  35:  invokevirtual   #85; //Method java/io/PrintStream.println:(I)V
  38:  iinc    1, 1
  41:  goto    2
  44:  return

To už bych přistoupil na možnost, že převedeš ten program do bytekódu (a tam evidentně budeš muset projít zdroják, rozpoznat příkazy atd - studoval jsem formální jazyky a překladače, tak mi věř že to neni uplně sranda), ale pokud budeš chtít dělat i vlastní Virtuální stroj (platformě závislý samozřejmě) tak good luck.

Nahlásit jako SPAM
IP: 88.102.250.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 23 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý