[JAVASCRIPT] Alternative à eval() ?

SwordLava
2022-06-22 20:19:58

https://image.noelshack.com/fichiers/2022/25/1/1655735810-eval.png

J'ai fait une calculatrice mais à ce qu'il paraît eval() est fortement déconseillé, mais j'arrive pas à trouver d'alternative ça me rend fouhttps://image.noelshack.com/fichiers/2020/52/6/1608985783-ahi-triangle.png

Vous avez une idée ?https://image.noelshack.com/fichiers/2020/52/6/1608985783-ahi-triangle.png

Je bouclerai sur ça tant que j'aurai pas de réponses qui me conviennenthttps://image.noelshack.com/fichiers/2020/52/6/1608985783-ahi-triangle.png

Mayuri_Shiina
2022-06-22 20:20:49

Je sais pas mais je uphttps://image.noelshack.com/fichiers/2021/48/4/1638481074-1630432176-chatmirroirstretch.png

SwordLava
2022-06-22 20:21:22

Le 22 juin 2022 à 20:20:49 :
Je sais pas mais je uphttps://image.noelshack.com/fichiers/2021/48/4/1638481074-1630432176-chatmirroirstretch.png

Mercihttps://image.noelshack.com/fichiers/2020/52/6/1608985783-ahi-triangle.png

DoYouEvenRACE
2022-06-22 20:23:25

Le 22 juin 2022 à 20:19:58 :
https://image.noelshack.com/fichiers/2022/25/1/1655735810-eval.png

J'ai fait une calculatrice mais à ce qu'il paraît eval() est fortement déconseillé, mais j'arrive pas à trouver d'alternative ça me rend fouhttps://image.noelshack.com/fichiers/2020/52/6/1608985783-ahi-triangle.png

Vous avez une idée ?https://image.noelshack.com/fichiers/2020/52/6/1608985783-ahi-triangle.png

Je bouclerai sur ça tant que j'aurai pas de réponses qui me conviennenthttps://image.noelshack.com/fichiers/2020/52/6/1608985783-ahi-triangle.png

Soit tu essaies d'anticiper toutes les exploitations possibles de ton eval (bof)

Soit tu passes juste un string, que tu parses pour faire l'opération "à la main"
Avec un peu de réflexion ça doit pouvoir se faire, et tu dois avoir plein d'idées sur internet.

Je pense qu'il doit y avoir des notions de récursivité pour parser tout ça

SwordLava
2022-06-22 20:27:05

Le 22 juin 2022 à 20:23:25 :

Le 22 juin 2022 à 20:19:58 :
https://image.noelshack.com/fichiers/2022/25/1/1655735810-eval.png

J'ai fait une calculatrice mais à ce qu'il paraît eval() est fortement déconseillé, mais j'arrive pas à trouver d'alternative ça me rend fouhttps://image.noelshack.com/fichiers/2020/52/6/1608985783-ahi-triangle.png

Vous avez une idée ?https://image.noelshack.com/fichiers/2020/52/6/1608985783-ahi-triangle.png

Je bouclerai sur ça tant que j'aurai pas de réponses qui me conviennenthttps://image.noelshack.com/fichiers/2020/52/6/1608985783-ahi-triangle.png

Soit tu essaies d'anticiper toutes les exploitations possibles de ton eval (bof)

Soit tu passes juste un string, que tu parses pour faire l'opération "à la main"
Avec un peu de réflexion ça doit pouvoir se faire, et tu dois avoir plein d'idées sur internet.

Je pense qu'il doit y avoir des notions de récursivité pour parser tout ça

Le problème c'est que je suis trop con ça demande trop de réflexion, ça fait des jours que je réfléchis j'ai pas trouvé de solutionhttps://image.noelshack.com/fichiers/2020/52/6/1608985783-ahi-triangle.png

DoYouEvenRACE
2022-06-22 20:32:31

Inspire toi
https://www.section.io/engineering-education/building-a-calculator-a-javascript-project-for-beginners/

Bien de pas savoir faire une recherche Googlehttps://image.noelshack.com/fichiers/2020/52/6/1608985783-ahi-triangle.png

Charlies_lost
2022-06-22 20:35:51

Tu as plusieurs approches pour programmer une calculatrice.
Le problème usuel vient de la notation infixée (la notation classique avec l'opérateur entre les deux opérandes).

Dans tous les cas, il faut à un moment où l'autre construire l'AST ( https://fr.m.wikipedia.org/wiki/Arbre_de_la_syntaxe_abstraite ) de l'expression qu'on veut calculer. Une fois l'arbre construit, tu fais une évaluation récursive et c'est fini.
Donc soit tu proposes à l'utilisateur de remplir l'AST directement à travers l'interface, soit tu parses l'AST depuis la chaîne de caractères.

En ce qui concerne le parsing, il faut d'abord tokeniser la chaîne.
Ensuite, puisque tu n'utilises pas la notation Polonaise, dans quel cas c'est trivial, il faut trouver une grammaire LL1 pour notation infixée.

Une fois que tu as la grammaire LL1, tu construis l'arbre en O(n) et c'est fini.

Le problème n'est pas vraiment le JavaScript à ce moment là :hap:

CarlisteDeter
2022-07-05 15:19:36

https://image.noelshack.com/fichiers/2022/27/2/1657027151-capture-d-ecran-du-2022-07-05-15-19-04.png

Persoent ----> ENThttps://image.noelshack.com/fichiers/2021/48/7/1638744083-166298-full-removebg-preview-removebg-preview.png

Infos
Gestion du forum

contact@geevey.com

API disponible. Utilisez le paramètre "api" en GET, peu importe le contenu, sur une page du site.

Notes

    Partenaire: JVFlux
    Ce site n'est pas associé à Jeuxvideo.com ou Webedia. Nous utilisons seulement des archives publiques.
    Il est inutile de me spammer par e-mail pour supprimer un topic. Au contraire, en conséquence, je mettrais votre topic dans le bloc ci-dessous.
Non-assumage
    Personne n'a pas assumé de topic pour le moment.