Informatik-Frage - wie nennt man den Weg zur Methode?

Gast #5845846
Lesenswert?

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.
Gast #5845866
Lesenswert?

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
Gast #5846028
Lesenswert?

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.
Gast #5846079
Lesenswert?

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.
Gast #5846151
Lesenswert?

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.
1
a.b
2
 .c(32)
3
 .d
4
 .Test();
Würdest du es so formatiert auch "Zeile" nennen?
Gast #5846179
Lesenswert?

Oder anderes Beispiel. Mit einer anderen Klasse funktioniert diese 
Verkettung nicht. Du schreibst
1
a.b.c(32); a.d.Test();
In Python sagst du: Die andere Klasse benötigt 2 "Zeilen". Aber wie 
sagst du es bei C++? Ist das eine Zeile, oder sind das 2 Zeilen?
Beitrag #5846281 wurde von einem Moderator gelöscht.
Gast #5846364
Lesenswert?

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?
#5846377
Lesenswert?

1
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.
Gast #5846584
Lesenswert?

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...
Gast #5846586
Lesenswert?

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
Moderator #5846943
Lesenswert?

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:

1
expression-statement:
2
        expressionₒₚₜ ;
Gast #5850729
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren