Ich würde gerne wissen, wie Ausdrücke analysiert werden, wenn mit Kontrollfluss gemischt werden.Mischen mathematischer Ausdruck mit Kontrollfluss
Lassen Sie uns solche Syntax annehmen:
case
when a == Method() + 1
then Something(1)
when a == Other() - 2
then 1
else 0
end
Wir haben hier zwei bedingte Ausdrücke bekam, Method() + 1
, Something(1)
und 0
. Jeder kann durch Shunting-yard algorithm
in Postfix übersetzt und dann leicht in AST
übersetzt werden. Aber ist es möglich, diesen Algorithmus auch auf den Kontrollfluss anzuwenden? Oder gibt es andere Ansätze, um eine solche Mischung von Ausdrücken und Kontrollflüssen zu lösen?
ein weiteres Beispiel:
a == b ? 1 : 2
auch, wie kann ich klassifiziere solcher Ausdruck: a between b and c
, kann ich sagen, dass between
drei Argumente Funktion? Oder gibt es einen speziellen Namen für solche Ausdrücke?
Was genau meinen Sie mit "Kontrollfluss" hier? '... zwischen ... und ...' hört sich nicht wirklich so an, wie ich es mir als Kontrollfluss-Konstrukt vorstelle. Meinst du nur "ternärer Operator"? – sepp2k
Sie haben Recht, ich sollte nicht Kontrollfluss Satz verwenden. Ich bin mir nicht sicher, wie ich solche Ausdrücke klassifizieren soll. Es ist kein ternärer Operator, denke ich, wie würdest du es nennen? – Puchacz
'a zwischen b und c' hat drei Argumente und es ist ein Ausdruck, der einen Booleschen Wert ergibt. Es ist ein ternärer Operator. – EJP