006
26.04.2004, 01:31 Uhr
Pablo
Supertux (Operator)
|
C++: |
cout << Variable1 Operator Varibale2;
|
Kann nicht funktionieren, weil sowas nicht in der Grammatik von C++ definiert ist und weil der Operator << von cout auch sowas nicht erkennen kann. Außerdem wie willst du, dass der Compiler begreift, dass du mit Operator eine Operator meinst und dies auch als ein Operator verstehet, wenn er eine Variable sieht? Es ist, als würdest du einen blinden einen Kissen geben, so dass er glaubt, dass du ihm einen Stein geben hast.
Was du machen willst, ist nicht so einfach zu programmieren, dafür habe ich dir dieses Stichwort gegeben: parsen. Parsen ist das Herausfinden, ob eine Zeichenkette gültig ist anhand eine Folge von Regeln. Solche Menge von Regel und Zeichen heißen Grammatiken, und sie bestimmen, wie die Ausdrücke aussehen sollen. Ein Parser ist ein Programm (oder Funktion), der ein Folge von Zeichen bekommt, und dann sagt, ob diese Zeichenfolge den Regeln entspricht.
Was du machen musst (ich nehme an, du willst sowas wie einen kleinen Taschenrechner machen, so dass der Benutzer 3+5 eingibt und dein Programm 8 ausgibt), ist eine Grammatik zu erstellen und einen Parser dafür schreiben.
Die Grammatik für den Taschenrechner, den ich dir im anderen Link gegeben hat, sieht so aus:
Zitat: |
Die C++ Programmiersprache (Bjarne Stroustrup) Die Gramatik für die vom Taschenrechner akzeptierte Sprache
program: END // END ist Eingabeende expr_list END
expr_list: expression PRINT //PRINT ist Semikolon expression PRINT expression
expression: expression + term expression - term term
term: term / primary term * primary primary
primary: NUMBER NAME NAME = expression - primary ( expression )
|
Da gibt es eine Folge von Regeln, denen du (und dein Programm) folgen müssen, damit sie Ausdrücke wie 2+3 erkannt und richtig ausgewertet werden. -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! Dieser Post wurde am 26.04.2004 um 01:32 Uhr von Pablo editiert. |