Problème de compréhension de la logique Michelson
-
-
J'aitendance àpenser que cette questionestmoins une question spécifique à Tezos/Michelsonet plus une questiongénérale sur lanotationpostfixet l'évaluation de lapile?I tend to think this question is less a Tezos/Michelson specific question and more a general question about postfix notation and stack evaluation ?
- 1
- 2019-01-31
- Ezy
-
2 réponses
- votes
-
- 2019-02-01
Nouspouvons simuler leprogramme de lamanière suivante. Nous écrivons lapileentre
[...]
,puis les opérations. Nous utilisonstrois opérations différentespush <int>
,*
et+
.push
met unentieren haut de lapile,*
apparaît deux éléments de lapileet pousse leurproduitet+
POPSdeux éléments de lapileet pousse leur somme.Votreprogramme commencepar unepile vide
[]
et certaines opérations:[], push 3, push 4, push 5, *, + -> (evaluation of push 3) [3], push 4, push 5, *, + -> (evaluation of push 4) [3, 4], push 5, *, + -> (evaluation of push 5) [3, 4, 5], *, + -> (evaluation of *) [3, 20], + -> (evaluation of +) [23]
donc le résultat de votre calculest
23
.We can simulate the program in the following way. We write the stack between
[...]
and then the operations. We use three different operationspush <int>
,*
and+
.push
puts an integer at the top of the stack,*
pops two elements from the stack and pushes their product, and+
pops two elements from the stack and pushes their sum.Your program starts with an empty stack
[]
and some operations:[], push 3, push 4, push 5, *, + -> (evaluation of push 3) [3], push 4, push 5, *, + -> (evaluation of push 4) [3, 4], push 5, *, + -> (evaluation of push 5) [3, 4, 5], *, + -> (evaluation of *) [3, 20], + -> (evaluation of +) [23]
So the result of your computation is
23
. -
- 2019-01-31
'*'et '+',dans ce contexte,ne sontpas les opérateurs d'infixes que vous êtes habitués.Imaginez la lecture degauche à droiteet empiler les chiffres àmesure que vous allez.Lorsque vous rencontrez + ou * vous remplacez les deux éléments supérieurs de lapile avec le résultat de l'opération.
'*' and '+', in this context, are not the infix operators you are used to. Imagine reading left to right and stacking up the numbers as you go. When you encounter + or * you replace the top two elements of the stack with the result of the operation.
Sije me suisbien compris,Michelsonest une languebasée sur lapile.
J'ai lu l'exemple suivant sur les languesbasées sur lapile:
Comment Michelson sait-il,qu'il doitplonger 4 * 5 avant d'ajouter 3?
justepourexpliquer commentje pense:
Lemultiplicateur vienten premierpour queje pense: 3 * 4 + 5=17
Pourquoiest-cefaux?