Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Un interpréteur BASIC casio
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Un interpréteur BASIC casio

Posté le 16/04/2018 16:13

Bonjour à tous,

Après en avoir parlé brièvement avec Lephénixnoir sur mon topic "une question comme ça", je crée ce topic consacré à la création d'un interpréteur BASIC casio.
Voici la progression actuelle:

Commandes
   20%


Editeur
   60%


Vitesse/possibilités
   10%


Comme vous pouvez le voir, ce projet est plutôt avancé mais pas trerminé .
Pour que vous puissiez vous en rendre compte, je vous met en lien le .rar avec le programme (+liste d'édition prète) et la lisre des commandes en pdf. Vous y trouverez aussi un exemple de programme et toutes les explicatios nécéssaires pour faire un premier programme. Si vous avez des questions, n'hésitez pas .

Si vous avez une/des idée(s) pour faire avancer le projet, votre participation sera la bienvenue.

Sur ce, A+

Fichier joint


Lephenixnoir En ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 16/04/2018 17:13 | #


Ton interpréteur est très proche du niveau assembleur. As-tu pensé à introduire des commandes type For/Done en utilisant une pile pour stocker ton contexte d'exécution ?

Tu peux aller assez loin rien qu'avec une idée de ce type (et faire des trucs qui n'existent pas en Basic, genre des fonctions récursives...)
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 16/04/2018 17:15 | #


Ah, je pensais pas, je suis bien parti alors ?
Au fait, tu dis:
Lephenixnoir a écrit :
en utilisant une pile pour stocker ton contexte d'exécution ?


Tu veut dire quoi, je suis pas sur de comprendre ?
Lephenixnoir En ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 16/04/2018 18:55 | #


Jette un oeil par ici :

Pile (informatique) sur Wikipédia

Imagine que tu as un If (appelons-le if0) qui contient un For (nommé for1), qui contient lui-même un If (surnommé if2), alors ta pile c'est (de haut en bas) [if2, for1, if0]. Et tu vois que quand on ouvre un bloc on ajoute quelque chose au sommet, quand on ferme un bloc on retire le sommet... cela correspond aux opérations élémentaires de la pile.

C'est un concept assez important que les contextes s'empilent.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

Citer : Posté le 16/04/2018 20:56 | #


Sympa, tu as implémenté pas mal de fonctions. Mais comment gérer deux variables du coup ?
D'ailleurs il y a moyen de lire un programme basic depuis un add-in ?
Lephenixnoir En ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 16/04/2018 23:27 | #


Ninestars a écrit :
D'ailleurs il y a moyen de lire un programme basic depuis un add-in ?

Si tu parles d'en lire les contenus, oui. Il faut manipuler un peu de MCS mais ça se fait.

Si tu parles de l'exécuter, on peut tout au plus passer la main à l'application PROG à la PRGM2. Ça ne laisse pas beaucoup de contrôle à l'add-in.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 17/04/2018 09:09 | #


Pour les deux variables, je pensais au début, à ajouter une ligne aux commandes qui commandent la variable À et qui accepterais les variables de A à Z et demanderais le code 1 à 26 pour chaque lettre. Je pense le mettre dans une maj mais ce n'est pas sur.
Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

Citer : Posté le 17/04/2018 22:51 | #


Ok Lephé, donc c'est techniquement possible de refaire un interpreteur en C de code ecrit en Basic alors.

Après comment gérer sur quelle variable faire le calcul ? Ça pose quelques difficultées
Lephenixnoir En ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 18/04/2018 10:01 | #


Ok Lephé, donc c'est techniquement possible de refaire un interpreteur en C de code ecrit en Basic alors.

On peut même faire une application PRGM+ qui soit en tout point identique à PRGM mais (on peut l'espérer) bien plus rapide.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 18/04/2018 16:57 | #


C'est une idée de projet après Gint non ?

Ajouté le 18/04/2018 à 17:08 :
Pour reprendre le premier commentaire de Lephenixnoir,

A la base, je pensais faire un truc uniquement pour du calcul type fonction (en math)..
Lephenixnoir En ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 18/04/2018 17:17 | #


Ce serait un truc bien à faire, mais je ne suis pas le seul à avoir les compétences. D'autres seraient sûrement plus séduits.

Si tu savais, les maths ce n'est que sommes infinies et intégrales à paramètres...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

Citer : Posté le 18/04/2018 18:37 | #


Bha en fait, et je crois que Léphé là dit plus haut, tu as fait un émulateur style assembleur. C'est cool
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 18/04/2018 20:10 | #


Bof, pas plus que ça pour moi. J'ai juste appris le fonctionnement de ce truc.

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 67 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd