myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   probleme beim parsen... (https://mygully.com/showthread.php?t=2979419)

gangstergangster 15.07.13 17:21

probleme beim parsen...
 
hallo.. ich habe vor ein paar wochen schonmal eine frage hier gestellt.. war lange am überlegen meine zweite in den selben thread zu machen.. aber ist schon was anderes..

und zwar habe ich einen parser programmiert..
siehe code: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

jetzt möchte ich auch noch sin(1) u.Ä. rechnen können.. ebenso soll PI benutzt werden können (ist im code schon definiert).

jedoch hab ichs nun so programmiert, dass jedes zeichen einzeln analysiert wird.. jedoch ist zb. sin(1) 6 zeichen..

hat jemand einen ansatz zur lösung?

edit: c++

ProgMaster 15.07.13 17:58

Welche Programmiersprache?
Verwende doch einen richtigen Parsergenerator...

gangstergangster 15.07.13 18:10

c++. ich will einen parser programmieren.. keinen programmierten benutzen...

urga 15.07.13 18:24

dann besorg dir am besten [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] k.a. ob es das in deutscher übersetzung gibt.
hm. aber wenn du mit "Parsertechniken in C++" probleme hast, dann lieber doch nicht ;) dann hilft eigentlich nur informatik zu studieren.

Delta538 15.07.13 19:56

Das einfachste wäre vermutlich, die Eingabe vorher daraufhin zu prüfen, ob soetwas wie sin/cos/PI usw. enthalten sind und dann dementsprechend darauf zu reagieren und diese Anweisung gesondert behandeln.
Am schönsten kann man das vermutlich rekursiv lösen und vermutlich auch am einfachsten.

Und noch eine kleine Anmerkung lass die Finger von goto das trägt nicht sonderlich zur lesbarkeit so könnte man diesen Befehl in der main vermeiden:

Code:

int eingabe = 1;

while(eingabe != 2)
{
        cout << "\n->Rechnen(1)\n->Beenden(2)\n";
        cin >> eingabe;
        cin.ignore();
             
        if(eingabe == 1)
      {
                Calculator calculator;
                calculator.Run();
      }
}


NetWebs 15.07.13 22:07

Zitat:

Zitat von gangstergangster (Beitrag 24722388)
c++. ich will einen parser programmieren.. keinen programmierten benutzen...

Deshalb sollst du ja einen Parsergenerator verwenden.
Ansonsten kommt da nur Müll raus...

Reines C++ ist dafür nicht geeignet.

gangstergangster 17.07.13 17:49

Zitat:

Zitat von NetWebs (Beitrag 24723108)
Deshalb sollst du ja einen Parsergenerator verwenden.
Ansonsten kommt da nur Müll raus...

Reines C++ ist dafür nicht geeignet.

es kommt eben nicht nur müll raus.. ich weis nicht was du meinst.. es klappt ja auch soweit...

mein code ist fast fertig.. eben nur noch probleme mit ein paar (mehr oder weniger) kleinigkeiten...


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:11 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.