Seite 3 von 4

Verfasst: 08.01.2005 23:45
von bluejoke
ich habe alles andere schon gecodet!
:? :roll:

Die anderen haben dir doch jetzt massenweise Hinweise gegeben, wie man sowas macht, schau dir nochmal den Thread genau an!

Verfasst: 09.01.2005 11:50
von the one and only
Kyoko12 hat geschrieben:Wieso, so schwer kanns doch net sein!
Zitat aus den Robsite News:
einen guten Compiler zu bauen gehört nicht ohne Grund zu den schwierigsten Gebieten der Informatik
Wenn du "alles andere" schon gecodet hast würde mich interessieren als was du "alles andere" definierst.

Verfasst: 09.01.2005 14:19
von Kyoko12
Naja, den teil, der die Befehöe interpretiert, und ihn dan in NASM code umwandelt. Es ist ja eigentlich ein crosscompiler, kein Compiler!

Verfasst: 09.01.2005 14:46
von the one and only
Ein crosscompiler ist es auch nicht unbedingt wenn du den Source in Assembler für Nasm usw. umwandelst. Wenns danach ging wäre PureBasic ja auch ein crosscompiler.

Verfasst: 09.01.2005 14:51
von Zaphod
ein crosscompiler währe es, wenn er unter windows executables für linux erstellen könnte, oder sogar für einen anderen prozessor, zb für ppc.

Verfasst: 09.01.2005 15:08
von Kyoko12
Nö, ein Crosscompilere ist es, wenn es eine Quellsprache in eine Zielsprache umsetzt, und nur den Source in der Zielsprache erstellt, richtige Compiler haben zusätzlich noch nen ASM eingebaut, der die Zielsprache in Maschienencode umwandelt!

Verfasst: 09.01.2005 15:10
von brotkasten-deluxe
Um zu deiner anfangsfrage zurück zu kommen:
Der Parser muss zwischen verschiedenen Zeilenarten unterscheiden können.
Nach dem du die Zeile in alle Einzelheiten unterteilt hat muss man zB nach dem ersten "Token"(erster gefundener Teil der Zeile)schauen.
Falls dieser ein Schlüsselwort wie "IF" oder "Repeat" ist , dann muss er damit was anfangen können.Hier ein kleiner Tip : An dieser Stelle kann man hervorragend mit einer Select-Case Schleife arbeiten ;)
Anderseits wenn er keine schlüsselwörter findet schaut er ob ein Befehl ausgeführt werden kann oder eine Zuweisung stattfindet.

Bei den verschiedenen Schleifen musst du auch wieder darauf achten , dass du einen Jumper einbaust , wie zb bei "Repeat", damit der compiler den code innerhalb der schleife so oft wiederholt wird wie er es soll. :allright:

Verfasst: 09.01.2005 15:17
von freedimension
Kyoko12 hat geschrieben:Nö, ein Crosscompilere ist es, wenn es eine Quellsprache in eine Zielsprache umsetzt, und nur den Source in der Zielsprache erstellt, richtige Compiler haben zusätzlich noch nen ASM eingebaut, der die Zielsprache in Maschienencode umwandelt!
Du irrst:
wikipedia hat geschrieben: Ein Cross-Compiler bezeichnet einen Compiler, der auf einer Computerplattform läuft und Objektdateien oder ein ausführbares Programm für eine andere Computerplattform erzeugt.

Ein Cross-Compiler wird normalerweise benutzt, um ein Betriebssystem auf eine neue Hardwareplattform zu portieren oder um Programme für ein Embedded System zu erstellen.
Das was du meinst ist ein Transcompiler, also ein Zwischen(code)compiler.

Verfasst: 09.01.2005 18:40
von Kyoko12
naja, nciht verwunderlich, das ist asuch in dem Tut gestanden, in dem das mit Parsen = zerschgneiden in tokens gestanden ist.
Naja, danke, ich werd das schon irgendwie hinkriegen, vieleicht mit Inline-ASM da ist das viel leichter.


Danke an alle,
Kyoko12.

Verfasst: 09.01.2005 20:10
von FGK
Hi Kyoko12,

also täusch dich mal nicht das in ASM das Zeug leichter zu machen wäre.
Und nebenbei bemerkt haben die Jungs dir ja schon das meiste "verraten" wie es zu machen ist. Zunächst mal muß jede Zeile des Quellcodes in "Tokens" zerlegt werden. Dannach mußt die "Keywords" und ihre Parameter ermitteln und dann in "Deine" Zielsprache umsetzten.
Eigentlich genauso wie ein Converter - dazu müßte es doch ne Menge
Beispiele im Netz geben. Die Programmiersprache ist eher zweitrangig bei so nem Problem eher die Logik und die Vorgehensweise da wichtig => Sprich das "Konzept" wie man die Sache angehen muß.

Gruß
FGK