Autor Beitrag
Koj
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16


Delphi 2005 Pers., Lazarus, NASM, FASM, VB 2005 EpressEdition
BeitragVerfasst: Fr 09.05.08 21:46 
Hi,

ich bin dabei, eine eigene Programmiersprache in Delphi zu schreiben. Der Anfang befindet sich im Anhang.
Wenn ich an die Funktion "translate" als Parameter "hw|hw" übergebe, kommt als ausgabe:
org 100h
___start___:
HW
HWHW

die ersten 3 Zeilen sind ja auch richtig, aber in der letzten ist ein HW zu viel.

Kann mir jemand Helfen?

P.S.: In meinem Quellcode sind einige showmessage-Aufrufe, die lediglich zum Debugging dienten, also nicht beachtet werden müssen.

MfG koj

Moderiert von user profile iconAXMD: "Brauche dringend Hilfe" aus Titel entfernt - jeder braucht hier Hilfe
Einloggen, um Attachments anzusehen!
huuuuuh
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 665
Erhaltene Danke: 19

win xp, (win vista), win 7
VS 2008 Express Edition, VS 2010 Express Edition, VS 2010 Professionell
BeitragVerfasst: Fr 09.05.08 23:03 
warum willst du ne eigene prgrammiersprche entwickeln? :gruebel:
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Sa 10.05.08 07:37 
Ich würde mich mal mit Interpreter / Kompilerbau beschäftigen. So wird das nix.

_________________
Na denn, dann. Bis dann, denn.
Koj Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16


Delphi 2005 Pers., Lazarus, NASM, FASM, VB 2005 EpressEdition
BeitragVerfasst: Sa 10.05.08 13:08 
user profile iconhuuuuuh hat folgendes geschrieben:
warum willst du ne eigene prgrammiersprche entwickeln? :gruebel:


Ich bin am Schülerrechenzentrum (srz.tu-dresden.de). Jeder Schüler muss eine Jahresarbeit machen, ich hab mir eben rausgesucht, eine Programmiersprache zu schreiben.

user profile iconalzaimar hat folgendes geschrieben:
Ich würde mich mal mit Interpreter / Kompilerbau beschäftigen. So wird das nix.

Mir ist das zu kompliziert.
Außerdem hab ich nicht mehr viel Zeit, um mich nochmal damit zu beschäftigen.

oder kennt jemand eine sehr vesrtändliche Anleitung zum Compilerbau in Delphi/Pascal?

Moderiert von user profile iconAXMD: Beiträge zusammengefügt
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Sa 10.05.08 13:27 
Wie wäre es mit dem "Report on the Programming Language Modula-2" von Nikolaus Wirth, dem Vater von Pascal?

AXMD
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Sa 10.05.08 13:28 
user profile iconKoj hat folgendes geschrieben:
Jeder Schüler muss eine Jahresarbeit machen, ich hab mir eben rausgesucht, eine Programmiersprache zu schreiben.

ich vermute mal, dass es eine Skript-Sprache (und eine einfache noch dazu) sein soll, sonst hätte dich dein Lehrer ziemlich auflaufen lassen :P Also so was wie einen Mathe-Parser.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Koj Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16


Delphi 2005 Pers., Lazarus, NASM, FASM, VB 2005 EpressEdition
BeitragVerfasst: Sa 10.05.08 13:38 
user profile iconXion hat folgendes geschrieben:
user profile iconKoj hat folgendes geschrieben:
Jeder Schüler muss eine Jahresarbeit machen, ich hab mir eben rausgesucht, eine Programmiersprache zu schreiben.

ich vermute mal, dass es eine Skript-Sprache (und eine einfache noch dazu) sein soll, sonst hätte dich dein Lehrer ziemlich auflaufen lassen :P Also so was wie einen Mathe-Parser.


Nein, es soll schon eine "richtige" Programmiersprache sein, die in Assembler übersetzt wird.

kann mir denn niemand sagen, was an meinem Code falsch ist?

Moderiert von user profile iconAXMD: Beiträge zusammengefasst
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Sa 10.05.08 13:53 
Hi,

Ich habe mir deinen Quelltext mal teilweise angeschaut und
ausblenden an dieser Stelle gestockt:
1:
2:
3:
4:
5:
6:
case PatternPtr^ of 
  #0: 
  begin 
    result := StringPtr^ = #0;  //Was soll das denn? das ist immer true
    if result or (StringRes=nil) or (PatternRes=nil) then  //hier steigt er demnach immer aus
      Exit;  //wird wahrscheinlich zur Ablehnung der ganzen Sache führen, da Exit sehr ungern gesehen ist


Edit: Ups ich habe mich verlesen und "PatternStr^" und "StringPtr^für dasselbe Wort gehalten. Bitte auch selbsterklärende Bezeichner verwenden.

mfG,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)


Zuletzt bearbeitet von Hidden am Sa 10.05.08 13:56, insgesamt 1-mal bearbeitet
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Sa 10.05.08 13:54 
user profile iconAXMD hat folgendes geschrieben:
Wie wäre es mit dem "Report on the Programming Language Modula-2" von Nikolaus Wirth, dem Vater von Pascal?


Hast du dir das schon angesehen?

AXMD
Koj Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16


Delphi 2005 Pers., Lazarus, NASM, FASM, VB 2005 EpressEdition
BeitragVerfasst: Sa 10.05.08 13:56 
user profile iconAXMD hat folgendes geschrieben:
user profile iconAXMD hat folgendes geschrieben:
Wie wäre es mit dem "Report on the Programming Language Modula-2" von Nikolaus Wirth, dem Vater von Pascal?


Hast du dir das schon angesehen?

AXMD


Ja, aber hilft mir nicht so richtig.

user profile iconHidden hat folgendes geschrieben:
Hi,

Ich habe mir deinen Quelltext mal teilweise angeschaut und
ausblenden an dieser Stelle gestockt:
1:
2:
3:
4:
5:
6:
case PatternPtr^ of 
  #0: 
  begin 
    result := StringPtr^ = #0;  //Was soll das denn? das ist immer true
    if result or (StringRes=nil) or (PatternRes=nil) then  //hier steigt er demnach immer aus
      Exit;  //wird wahrscheinlich zur Ablehnung der ganzen Sache führen, da Exit sehr ungern gesehen ist


Edit: Ups ich habe mich verlesen und "PatternStr^" und "StringPtr^für dasselbe Wort gehalten. Bitte auch selbsterklärende Bezeichner verwenden.

mfG,


die split-Funktion ist nicht von mir, deshalb hab ich sie auch so gelassen, wie sie war.
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Sa 10.05.08 13:59 
user profile iconKoj hat folgendes geschrieben:
Ja, aber hilft mir nicht so richtig.


Inwiefern? Das beschreibt genau das, was du machen willst und ist zudem relativ ausführlich erklärt.

AXMD
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Sa 10.05.08 14:02 
user profile iconKoj hat folgendes geschrieben:
die split-Funktion ist nicht von mir, deshalb hab ich sie auch so gelassen, wie sie war.


dein Code ist trotzdem voller Breaks und Exits. Das wird definitiv nicht gut kommen. (Oder habt ihr das etwa so gelernt :?: In dem Fall müsstest du mal mit denem Lehrer reden :lol: ).

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Koj Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16


Delphi 2005 Pers., Lazarus, NASM, FASM, VB 2005 EpressEdition
BeitragVerfasst: Sa 10.05.08 14:10 
user profile iconAXMD hat folgendes geschrieben:
user profile iconKoj hat folgendes geschrieben:
Ja, aber hilft mir nicht so richtig.


Inwiefern? Das beschreibt genau das, was du machen willst und ist zudem relativ ausführlich erklärt.

AXMD


ich will ja nur, dass der Fehler in meinem Code gefunden wird.


user profile iconHidden hat folgendes geschrieben:
user profile iconKoj hat folgendes geschrieben:
die like-Funktion ist nicht von mir, deshalb hab ich sie auch so gelassen, wie sie war.


dein Code ist trotzdem voller Breaks und Exits. Das wird definitiv nicht gut kommen. (Oder habt ihr das etwa so gelernt :?: In dem Fall müsstest du mal mit denem Lehrer reden :lol: ).


ich glaub eher nicht, dass der Fehler in der like-Funktion steckt.
Ich habe diese Funktion so übernommen, weil ich zu faul (oder zu dumm???) bin, selbst so eine zu schreiben.(trifft auch für die split-Funktion zu)
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Sa 10.05.08 14:25 
user profile iconKoj hat folgendes geschrieben:
user profile iconHidden hat folgendes geschrieben:
user profile iconKoj hat folgendes geschrieben:
die like-Funktion ist nicht von mir, deshalb hab ich sie auch so gelassen, wie sie war.


dein Code ist trotzdem voller Breaks und Exits. Das wird definitiv nicht gut kommen. (Oder habt ihr das etwa so gelernt :?: In dem Fall müsstest du mal mit denem Lehrer reden :lol: ).


ich glaub eher nicht, dass der Fehler in der like-Funktion steckt.
Ich habe diese Funktion so übernommen, weil ich zu faul (oder zu dumm???) bin, selbst so eine zu schreiben.(trifft auch für die split-Funktion zu)


Hörst du mir nicht zu? Breaks und Exits führen höchstwahrscheinlich zur Ablehnung(6), nach dem, was ich gehört habe.

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Koj Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16


Delphi 2005 Pers., Lazarus, NASM, FASM, VB 2005 EpressEdition
BeitragVerfasst: Sa 10.05.08 14:30 
user profile iconHidden hat folgendes geschrieben:
user profile iconKoj hat folgendes geschrieben:
user profile iconHidden hat folgendes geschrieben:
user profile iconKoj hat folgendes geschrieben:
die like-Funktion ist nicht von mir, deshalb hab ich sie auch so gelassen, wie sie war.


dein Code ist trotzdem voller Breaks und Exits. Das wird definitiv nicht gut kommen. (Oder habt ihr das etwa so gelernt :?: In dem Fall müsstest du mal mit denem Lehrer reden :lol: ).


ich glaub eher nicht, dass der Fehler in der like-Funktion steckt.
Ich habe diese Funktion so übernommen, weil ich zu faul (oder zu dumm???) bin, selbst so eine zu schreiben.(trifft auch für die split-Funktion zu)


Hörst du mir nicht zu? Breaks und Exits führen höchstwahrscheinlich zur Ablehnung(6), nach dem, was ich gehört habe.

ok, ich werde die Funktion noch ändern.
Aber trotzdem denke ich, der Fehler liegt irgendwo anders.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Sa 10.05.08 14:31 
Was hast du denn gehört? Seit wann darf man keine Ablaufkontrolle mehr verwenden?
Goto ist ja ok (auch wenn ich da auch anderer Meinung bin), aber ich bitte dich, übertrieben muss man es ja nicht...

Und ja, der Fehler liegt woanders. Ich lad mir mal die Sourcen runter... auch wenn ich sowas ungern mache.

EDIT: Hilfe :shock:
Also, freundlicher Hinweis hierhin: wiki.delphigl.com/in...criptsprachen_Teil_1

Ich würde einfach mal vermuten, dass deine Patterns falsch sind. *|* matcht auch auf a|b|c|d|e...

Und wenn du hier weiter machen willst: denk dir tunlichst ne andere Syntax aus. ASM in ASM übersetzen bringt erstens nix, und ist 2. auch nicht wirklich ne Herausforderung. Auch wenn ein Templater drin ist...

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Koj Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16


Delphi 2005 Pers., Lazarus, NASM, FASM, VB 2005 EpressEdition
BeitragVerfasst: Sa 10.05.08 14:48 
user profile iconMartok hat folgendes geschrieben:
Was hast du denn gehört? Seit wann darf man keine Ablaufkontrolle mehr verwenden?
Goto ist ja ok (auch wenn ich da auch anderer Meinung bin), aber ich bitte dich, übertrieben muss man es ja nicht...

Und ja, der Fehler liegt woanders. Ich lad mir mal die Sourcen runter... auch wenn ich sowas ungern mache.

EDIT: Hilfe :shock:
Also, freundlicher Hinweis hierhin: wiki.delphigl.com/in...criptsprachen_Teil_1

Ich würde einfach mal vermuten, dass deine Patterns falsch sind. *|* matcht auch auf a|b|c|d|e...

Und wenn du hier weiter machen willst: denk dir tunlichst ne andere Syntax aus. ASM in ASM übersetzen bringt erstens nix, und ist 2. auch nicht wirklich ne Herausforderung. Auch wenn ein Templater drin ist...


der Link ist zwar gut, aber ich darf ja nicht alles übernehmen, ich muss ja mein Programm selber schreiben.

Warum sind die Patterns falsch?
Ein "|" soll einfach nur mehrere Anweisungen mit einander verbinden.

P.S.: Es kommt auch die Ausgabe:

org 100h
___start___:
HW
HWHW

wenn ich das eingebe:

hw<Zeilenumbruch>
hw

Leute!
Ich glaube das Problem liegt entweder in lesedateiinhalt() oder leseiniwert().
Ich hab die translate-Funktion jetzt so abgeändert:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
function translate(code:string):string;
var zeilen,woerter,zz:TStringArray;
z:integer;
asmcode,errors:string;
begin
  errors:='';
  asmcode:=lesedateiinhalt(lib_verzeichnis+leseiniwert('anfang'));
  zeilen:=Split(code,#13#10);
  for z:=low(zeilen) to high(zeilen) do
  begin
    if not(like(zeilen[z],'*|*'))then//wenn in der Zeile nur eine Anweisung steht
    begin
      woerter:=split(zeilen[z],' ');//Zeile "auseinandernehmen"
      if like(woerter[low(woerter)],'//*')then
        //wenn Kommentar, tue nichts
      else if lowercase(woerter[low(woerter)])='hw' then
        asmcode:=asmcode+#13#10+'Hier kommen die Hello-World-Befehle hin.'
      else//wenn Befehl unbekannt
        errors:=errors+#13#10'Unbekannter Befehl: Z '+inttostr(z+1);
    end
    else//wenn in der Zeile mehrere Anweisungen, durch "|" getrennt, stehen
    begin
      zz:=split(zeilen[z],'|');
      asmcode:=asmcode+#13#10+translate2(stringarray2string(zz,#13#10));
    end;
  end;
                                
  if errors<>'' then //wenn Fehler
    result:='~ERRORS~:'+errors
  else //wenn kein Fehler
    result:=asmcode;
end;


Danke für Eure Hilfe.
Ich poste den Code, wenn das Programm fertig ist.

Moderiert von user profile iconAXMD: Beiträge zusammengefügt