Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: Projekte ::  Compiler  
Gehen Sie zu Seite Zurück  1, 2, 3, 4, 5  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
_matze
Mitglied

Benutzerprofil
Anmeldungsdatum: 31.07.2007
Beiträge: 10645
Beitrag _matze Mitglied 19:51:17 31.07.2012   Titel:              Zitieren

Tufelix schrieb:
ich meinte die zeile 12 im text der der übersetzer übersetzt -.-


Und in welcher Zeile in deinem Code passiert der Fehler?

_________________
Wie viele atheistische Babys hat man schon aus Versehen - oder gar mit Absicht! - getauft?
CCodex
Mitglied

Benutzerprofil
Anmeldungsdatum: 29.05.2010
Beiträge: 201
Beitrag CCodex Mitglied 00:58:50 01.08.2012   Titel:              Zitieren

DU machst dir unnötig Arbeit.
Bau dein Programm wie ein Compiler auf :
- Lexikalische Analyse
- Syntaktische Analyse
- Semantische Analyse

das ist das beste was du machen kannst.
So kannst du die Fehler schneller finden die im Quellcode sind.

Hier noch ein paar links:
http://de.wikipedia.org/wiki/Compiler
http://www.informatik.uni-rostock.de/tpp/lehre/slides/cobau.pdf
http://magazin.c-plusplus.de/artikel/AVL-Baum
http://magazin.c-plusplus.de/artikel/Compilerbau
hustbaer
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.10.2006
Beiträge: 16057
Beitrag hustbaer Mitglied 03:36:49 01.08.2012   Titel:              Zitieren

AVL-Baum?

_________________
"Let there be Licht..." http://lichttools.sourceforge.net/
Sehr cooles ASCII Spiel (leider nicht von mir): ASCII-Scramble - http://www.roskakori.at/ascii/
Chris++
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.05.2002
Beiträge: 782
Beitrag Chris++ Mitglied 07:55:44 01.08.2012   Titel:              Zitieren

Er will den AVL-Baum bestimmt für den Syntaxbaum verwenden.
@ThreadErsteller

Schau dir mal das Drachenbuch an. Umfangreicher, ausführlicher aber auch schwieriger Stoff: http://www.weltbild.de/3/14168864-1/buch/compilerbau.html?wea=8002019
Tufelix
Mitglied

Benutzerprofil
Anmeldungsdatum: 18.07.2012
Beiträge: 22
Beitrag Tufelix Mitglied 10:50:55 05.08.2012   Titel:              Zitieren

Nun ich hab die "codiereSprache" jetzt zum laufen bekommen jetzt aber hängt die "vergleicheWort" funktion

C++:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
string vergleicheWort(vector<string> &Woerter
                    ,vector<tSprache> &Sprache)
{
 
string Binärcode;
   
 
unsigned int c=0;
signed int bearbeiteteWoerter=Woerter.size()-1;
int Error=0;
int HEX=0;
 
 
 
 
    while(bearbeiteteWoerter+1==0==false && Error==0 )
    {
 
        if("HEX"==Woerter[bearbeiteteWoerter].substr(0,3)){
 
        Binärcode=Binärcode+HEXA(Woerter[bearbeiteteWoerter].substr(3,Woerter[bearbeiteteWoerter].size()-3));
 
        bearbeiteteWoerter--;
        }
 
        while(Sprache[c].Name!=Woerter[bearbeiteteWoerter] && bearbeiteteWoerter<0==false && c<Sprache.size() && Error==0){
       
       
         c++;
        }
 
        if(c>=Sprache.size()){
        Error=1;
 
        SetColor(13);
 
        cout << "Fehler Befehl konnte nicht gefunden werden:"<<endl;
        SetColor(15);
        cout<<"Befehl:";
        SetColor(12);
        cout<<Woerter[bearbeiteteWoerter]<<endl;
        SetColor(15);
        cout<<"Zeile:";
        SetColor(12);
        cout<<Zeilenanz<<endl;
        SetColor(15);
       
        }
       
        if(Error==0){
            if(Sprache[c].Name==Woerter[bearbeiteteWoerter] && bearbeiteteWoerter<0==false && c<Sprache.size() ){
           
           
           
            bearbeiteteWoerter--;
           
            Binärcode=Binärcode+Sprache[c].Binärcode;
            c=0;
       
 
            }
        }
    }
return Binärcode;  
}


Das problem ist das diese Schleife nicht anhalten will obwohl die bedingungen nicht erfüllt werden:
C++:
while(bearbeiteteWoerter+1==0==false && Error==0 )
    {

hat wer ne idee an was das liegen könnte(eventuell debuggeneinstellungen ändern)
_matze
Mitglied

Benutzerprofil
Anmeldungsdatum: 31.07.2007
Beiträge: 10645
Beitrag _matze Mitglied 08:45:51 06.08.2012   Titel:              Zitieren

C++:
while(bearbeiteteWoerter+1==0==false && Error==0 )


Oh je, setz da mal Klammern! Wie meinst du es denn? So?


C++:
while(((bearbeiteteWoerter+1)==0)==false && Error==0 )


Dann kannst du auch gleich != benutzen.

Es ist irgendwie nicht sehr schön, dass bearbeiteteWoerter rückwärts läuft und unter 0 sinken kann. Der Bezeichner sagt irgendwie was anderes aus.

_________________
Wie viele atheistische Babys hat man schon aus Versehen - oder gar mit Absicht! - getauft?
Tufelix
Mitglied

Benutzerprofil
Anmeldungsdatum: 18.07.2012
Beiträge: 22
Beitrag Tufelix Mitglied 10:35:54 06.08.2012   Titel:              Zitieren

_matze schrieb:

Es ist irgendwie nicht sehr schön, dass bearbeiteteWoerter rückwärts läuft und unter 0 sinken kann. Der Bezeichner sagt irgendwie was anderes aus.

jop ich weis,hatte ganz vergessen das man zahlen von rechts nach links schreibt :D.
mir ist der fehler erst beim 1 testlauf aufgefallen, hab dann einfach die schleife rückwärts laufen lassen :D

_matze schrieb:

Dann kannst du auch gleich != benutzen.

joar hatte anfangs gedacht das der fehler vielleicht das ungleich wäre, hab dann es mit einem false ausgetauscht :D

_matze schrieb:

Oh je, setz da mal Klammern! Wie meinst du es denn? So?


jop, hab jetzt wieder das ungleich eingebaut

C++:
while((bearbeiteteWoerter+1)!=0 && Error==0 )

aber die schleife tut dadurch immernoch nicht :(
_matze
Mitglied

Benutzerprofil
Anmeldungsdatum: 31.07.2007
Beiträge: 10645
Beitrag _matze Mitglied 11:00:26 06.08.2012   Titel:              Zitieren

Tufelix schrieb:

aber die schleife tut dadurch immernoch nicht :(


Dann nutze den Debugger! Die Schleife wird sicher verlassen, wenn die Bedingung nicht mehr erfüllt ist. Darauf kannst du dich verlassen. Aber nicht auf deinen Code. Den musst du überprüfen. Und das geht am einfachsten mit dem Debugger. Schau dir an, welche Werte deine Variablen wirklich zur Laufzeit haben und warum die Schleife nicht verlassen wird.

_________________
Wie viele atheistische Babys hat man schon aus Versehen - oder gar mit Absicht! - getauft?
Tufelix
Mitglied

Benutzerprofil
Anmeldungsdatum: 18.07.2012
Beiträge: 22
Beitrag Tufelix Mitglied 11:32:11 06.08.2012   Titel:              Zitieren

also der fehler tritt auf wenn bearbeitetewoerter der wert -1 hat und der debugger bei dem schleifenanfang ist wenn man dann einen schritt macht kommt die fehlermeldung

Schleifenanfang:
C++:
while(bearbeiteteWoerter!=-1 && Error==0 )
Tufelix
Mitglied

Benutzerprofil
Anmeldungsdatum: 18.07.2012
Beiträge: 22
Beitrag Tufelix Mitglied 11:40:26 06.08.2012   Titel:              Zitieren

fehlermeldung:
Code:
Unbehandelte Ausnahme bei 0x7c812afb in Editor.exe: Microsoft C++-Ausnahme: std::out_of_range an Speicherposition 0x0012f144..


Zuletzt bearbeitet von Tufelix am 11:40:49 06.08.2012, insgesamt 1-mal bearbeitet
c++.de :: Projekte ::  Compiler  
Gehen Sie zu Seite Zurück  1, 2, 3, 4, 5  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum nicht antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.