wenn ich ueber einen Objekt-Kette eine Methode Aufrufe - wie nennt man
dann die ganze Zeile (aus Kompiler, AST-Sicht?)?
z.B.
a.b.c(32).d.Test();
Ist das eine Expression, einen Anweisung, eine
Dereferenzierung(teilweise)?
Wie nennt man das ganze zusammen?
AST = Abstract syntax tree
Also ein Baum aus Nodes mit Child Nodes die den Code in seine
Bestandteile Aufspaltet, so abstrakt repräsentiert & klassifiziert zur
Weiterverarbeitung.
Nimmt man dann eine Node plus all deren child nodes usw., dann würde ich
das als ein Subtree des AST bezeichnen. Aber du willst vermutlich
wissen, wie die übergeordnete Node für diesen Ausdruck heisst? Wie das
genannt wurde, muss man halt im AST selbst nachsehen. Falls das
überhaupt nur eine übergeordnete für nur den teil hat, und diese
überhaupt einen Namen hat, usw. Gesammte Ausdrücke werden aber häufig
als "statement", "expression" oder ähnliches bezeichnet, manchmal
besteht ein Statement aus einer oder mehreren Expressions, und manchmal
nennt man die auch anders oder man baut es sogar anders auf.
DPA schrieb:> Falls das> überhaupt nur eine übergeordnete für nur den teil hat, und diese> überhaupt einen Namen hat, usw. Gesammte Ausdrücke werden aber häufig> als "statement", "expression" oder ähnliches bezeichnet, manchmal> besteht ein Statement aus einer oder mehreren Expressions, und manchmal> nennt man die auch anders oder man baut es sogar anders auf.
Ja genau, es ist ein wenig unklar: Statement finde ich aber auch schon
mal nicht schlecht
Für jede Sprache gibt es eine offizielle Grammatik. Die C++ musst du bei
der ISO kaufen, aber du findest auch freie Versionen, wie z.B hier
http://eel.is/c++draft/gram
Wenn du den Namen deines Ausdrucks haben willst, musst du halt wie ein
Compiler die Zeile zerlegen, die entsprechenden Blätter im Baum suchen
und anhand der Regeln den gemeinsamen internen Knoten finden.
Cppbert3 schrieb:> wenn ich ueber einen Objekt-Kette eine Methode Aufrufe - wie nennt man> dann die ganze Zeile (aus Kompiler, AST-Sicht?)?
Man nennt die Zeile "Zeile" oder auf englisch "line". Du hast so wenig
Ahnung von Informatik, dass du nicht mal eine brauchbare Frage stellen
kannst. Also lass es.
Hmmm... In Sprachen wie Python, Basic oder Fortran muss jede Anweisung
in einer Zeile stehen. Da währe es ja durchaus sinnvoll wenn wir
Cppberts Zeile auch "Zeile" nennen.
In C++ ist aber auch eine andere Form üblich.
Das wird aufwendig schrieb:> a.b> .c(32)> .d> .Test();Würdest du es so formatiert auch "Zeile" nennen?
Nein, aber a.b würden ich und der Compiler Zeile nennen. .c(32) auch.
usw.
Ist das so schwer?
Na, was habe ich über brauchbare Fragen geschrieben? Gilt auch für dich.
Und nun troll dich.
Wie kann ich ausdrücken: Cppberts Klasse braucht nur eines von diesen
Dingern. Die andere Klasse braucht zwei von diesen Dingern.
In Python ergibt jedes dieser Dinge eine Zeile. Somit kann ich sagen:
Bei der ersten Klasse braucht man nur eine Zeile, bei der anderen Klasse
braucht man zwei Zeilen.
Aber wie heisst dieses Ding in C++? Kann ich sagen: Die zweite Klasse,
braucht zwei Statements? Zwei Expressions? Zwei Verkettungen? Zwei
Verkettungs-Ausdrücke?
Wie nennt ein Informatiker dieses Ding?
Wenn man im Standard nachschaut ist das ganze Formal ein
(Expression-)Statement. Ohne Semikolon ist es eine Expression. Siehe
[stmt.expr]. Die Expression kann man dann noch wieder weiter
aufschlüsseln in die Unterkomponenten.
Von Zeilen im AST zu sprechen ist Quatsch. Im AST werden die Zeilen ja
auch gar nicht verzeichnet.
Cppbert3 schrieb:> wenn ich ueber einen Objekt-Kette eine Methode Aufrufe - wie nennt man> dann die ganze Zeile (aus Kompiler, AST-Sicht?)?>> z.B.>> a.b.c(32).d.Test();
Es wird eine Methode aufgerufen. Also ist es ein Methodenaufruf
(method call). Warum willst Du einen anderen Namen dafür?
Cppbert3 schrieb:> wenn ich ueber einen Objekt-Kette eine Methode Aufrufe - wie nennt man> dann die ganze Zeile (aus Kompiler, AST-Sicht?)?>> z.B.>> a.b.c(32).d.Test();>> Ist das eine Expression, einen Anweisung, eine> Dereferenzierung(teilweise)?> Wie nennt man das ganze zusammen?
Kein Ahnung.
Der eigentliche Punkt aber ist: das interessiert (jenseits des
akademischen Bereiches) auch absolut niemanden. Und es ist obendrein
sehr fraglich, ob es im akademischen Bereich irgend jemanden ernsthaft
interessiert...
Vorschlag: konzentriere dich auf wichtigere Sachen...
Ntldr -. schrieb:> a.b.c(32).d.Test();> Wenn man im Standard nachschaut ist das ganze Formal ein> (Expression-)Statement. Ohne Semikolon ist es eine Expression. Siehe> [stmt.expr]. Die Expression kann man dann noch wieder weiter> aufschlüsseln in die Unterkomponenten.>> Von Zeilen im AST zu sprechen ist Quatsch. Im AST werden die Zeilen ja> auch gar nicht verzeichnet.
Dann nenne ich es in meinem Interpreter wohl doch Expression
Danke an alle
Yalu X. schrieb:> cppbert3 schrieb:>> Dann nenne ich es in meinem Interpreter wohl doch Expression>> Ohne das abschließende Semikolon wäre das richtig.
Und mit dem abschließenden Semikolon?
Mark B. schrieb:> Yalu X. schrieb:>> cppbert3 schrieb:>>> Dann nenne ich es in meinem Interpreter wohl doch Expression>>>> Ohne das abschließende Semikolon wäre das richtig.>> Und mit dem abschließenden Semikolon?
Das hat doch Ntldr oben schon geschrieben:
Ntldr -. schrieb:> Wenn man im Standard nachschaut ist das ganze Formal ein> (Expression-)Statement. Ohne Semikolon ist es eine Expression.
Die enstprechende Stelle im ISO-Dokument sieht so aus:
Mark B. schrieb:> Yalu X. schrieb:>> Die enstprechende Stelle im ISO-Dokument sieht so aus:>>>>>>> expression-statement:>> expressionₒₚₜ ;>>> Danke. Nur was genau jetzt der Erkenntnisgewinn in diesem Thread ist,> erschließt sich mir nicht so recht. ;-)
Ich brauchte einen Namen für einen Interpreter Klasse
Eine eigene Frage?
Dieser Thread ist über 7 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.