Wie setze ich dies um(C++)?

...komplette Frage anzeigen

3 Antworten

Warum brauchst Du C++, wenn Du eine eigene Sprache entwerfen willst. Du musst Dich vielmehr mit dem Bau eines Compilers auseinandersetzen.

Oder willst Du C++ als Zwischensprache verwenden? Dazu eignet sich C++ nicht allzu gut und Du greifst lieber direkt auf C zurück. Es gibt sogar eine Entwicklung von C, die extra als Zwischensprache konzipiert ist, C- heißt sie.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von gerlochi
14.07.2016, 18:36

Es soll keine Kompilierte Sprache werden, es soll ein Interpreter heralten. Wie meinst du das mit "Zeischensprache"? Meinst du damit die Sprache die ich zum entwickeln verwende? Wenn ja, dann: Warum soll ich C++ nicht verwenden? Ich finde es angemessen und es war auch meine erste Entscheidung den Interpreter in C++ zu schreiben. Aber danje trotzdem für den Tipp!

0
Kommentar von Orsovai
14.07.2016, 18:52

Ah verstehe.

Mit Zwischensprache meine ich folgendes:
Haskell wird zum Beispiel zunächst in C Code umgewandelt und anschließend von C in Maschinencode kompiliert.

0
Kommentar von gerlochi
14.07.2016, 18:56

Ah, ok. Danke dir :)

0
Kommentar von gerlochi
14.07.2016, 21:56

ich habe es gerade nochmal durchgeschaut und gesehen dass du einen string einliest und dann alles aufsplitest. das habe ich aber alles schon in meinem interpreter verbaut... ich muss halt nur einen weg find4n, methoden in mein programm einzubauen. name und code in der funktion aufzurufen wäre gar nicht das problem, mein problem ist: wo soll ich die funktionen speichern? die naen würde ich in den vector einbauen, aber der code in den funktionen? wo soll der hin? ich glaube einfachmeine frage falsch formuliert zu haben, dafür muss ich mich entschuldigen (und für die ganzen rechtsschreibfehler, sitze leider am handy).

0

Deine Frage kann ich Dir vermutlich dennoch beantworten.

Gucken wir uns mal Dein Beispiel an:

int main(){
string s;
istringstream ein;
char c;

getline(cin,s); //Speichert die ganze Zeile in s
ein.str(s); //s wird auf den Stream ein geladen

z=ein.peek(); //Das nächste Zeichen von ein angucken

ein >> z; //Stream ein um 1 "weiterschieben"
}

Wenn Du jetzt z.B. Deine Zeichenfolge :1234: in einen char Vektor speichern willst, dann machst Du das wie folgt:

using namespace std;

int main(){

string s;
istringstream ein;
vector z;
int i=0;
char c;

cout << "Eingabe:";
getline(cin,s);
ein.str(s);

while(ein.eof()!=true){
c=ein.peek();
ein >> c;
z.push_back(c);

cout << z[i] << endl;
i++;
}
return 0;
}
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von gerlochi
14.07.2016, 20:20

Danke nochmal!

0
char string[]="a: 12345 :
char  *pointer;
int index;
char array[20] ;i=0;
pointer=string;
while ( 1 ) { if ( *pointer == '\\\\0' ) break;
                   array[i] = *pointer;
                   i++;
                   pointer++;
                   array[i]='\\\\0';
                 }
printf("%s\\\\n",string);
i=0;
while ( array[i] != '\\\\0' )  printf("%c",array[i++]);
printf("\\\\n");
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von gerlochi
14.07.2016, 20:20

Dake dir!

0
Kommentar von gerlochi
14.07.2016, 20:34

Jetzt muss ich aber mehrere von diesen Werten einlesen, speichern und abrufen. Schlussendlich sollen es Funktionen in meiner interpretierten Programmiersprache sein. So kann ich mit einem Wert arbeiten, aber mehrere?

0
Kommentar von Orsovai
14.07.2016, 20:36

Darum meine Lösung :) lass jede Zeile durch einen Stringstream einlesen und nutze Vektoren statt Arrays, bei denen kannst Du nämlich dynamisch Elemente anhängen und musst die Größe nicht von Vorhinein kennen bzw. die Größe vor dem Befüllen ermitteln.

0

Was möchtest Du wissen?