Casio Basic Web Interpreter
Posté le 29/08/2014 15:06
Je vous présente ici mon projet "Casio Basic Web Interpreter" qui a débuté en 2014 et dont le développement se poursuis encore actuellement.
Il s'agit d'un
interpréteur pour le langage basic des calculatrices Casio.
Le truc c'est que c'est un interpréteur en mode web, le rendu (=écran de la calculatrice) se fait sur un canvas HTML5.
Donc c'est ici =>
Casio Basic Web Interpreter
ATTENTION : ce que je partage avec vous est dans une version "alpha", il manque encore beaucoup de choses...
J'ai mis pleins de programmes en exemple.
En vrac la liste des instructions supportées :
[color1] Plot
[color1] PlotOn
PlotOff
PlotChg
[color1] PxlOn
PxlOff
PxlChg
PxlTest
[color1] Line
[color1] [sketchMode2] F-Line
[color1] [sketchMode2] Horizontal
[color1] [sketchMode2] Vertical
[color1] [sketchMode2] Circle
Plot/Line-Color color1
S-L-Normal
S-L-Dot
S-L-Broken
S-L-Thick
S-L-Normal
S-L-Thin
Cls
ClrText
ClrGraph
BG-Pict
BG-None
StoPict
RclPict
AxesOn
AxesOff
LabelOn
LabelOff
Isz
Dsz
Lbl
Goto
Prog
Return
Stop
Mcl
Range
ViewWindow
Menu
Locate
Text
expr->variable
expr->variableStart~variableEnd
variable
"string"
?->variable
"string"?->variable
Ran#
RanInt#
GetKey
MOD(
Int
Intg
Frac
Deg
Rad
Grad
sin
cos
tan
Rec
Pol
Ans
+
-
*
/
=> (If)
If/Then/Else/IfEnd
<=
>=
=
<> (or !=)
<
>
And/Or/Xor/Not
(expr)
-expr
Do/LpWhile
While/WhileEnd
For/Next
Break
{1,2,3,4}->List n
List n->List m
List Ans
x->Dim List n
Dim List n
Filen
Seq(
x->List n[expr]
List n
List n[expr]
ClrList
ClrList n
Sum list
Prod list
Mean(list
Median(list
Max(list
Min(list
SortA(list
SortD(list
Fill(value,list)
Augment(list,list)
Cuml list
?List list
Percent list
RanInt#(min,max,nb)
RanList#(int)
[[1,2,3][4,5,6]...]->Mat n
Mat n
Mat Ans
{l,c}->Dim Mat n
Dim Mat i
x->Mat n[expr,expr]
Mat n[expr,expr]
Mat n->Mat m
1 color can be Black, Blue, Red, Magenta, Green, Cyan or Yellow
2 sketchMode can be SketchNormal, SketchThick, SketchBroken, SketchDot, SketchThin
Vous trouverez
les sources sur GitHub.
A bientôt.
Krevo_
Citer : Posté le 29/08/2014 15:54 | #
Il y a quelques différences avec la police d'origine aussi.
Si ça t'intéresse, il existe un pdf avec toute la police au pixel.
Citer : Posté le 29/08/2014 16:43 | #
Tu comptes présenter une version bêta quand ?
Si tu veux tu peux nous faire part de l'avancement de ton projet dans la revue des projet
Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
Tableau de variations
Equations Diophantiennes
Conversion d'un nombre décimal en fraction
Citer : Posté le 29/08/2014 16:57 | #
alpha, bêta, ... c'est juste des noms. Après ça dépend ce que l'on met derrière.
Je compte rajouter des instructions au fil de l'eau .... et vous tenir au courant de semaine en semaine.
J'ai une vague "roadmap" en tête qui ressemble à ceci (dans l'ordre ou presque) :
- une réelle distinction écran texte / écran graphique (parce que là les chaines de caractères imprimés et les plot/line se superpose sur le même écran)
-
un scroll de l'écran texte (l'ajout d'une ligne doit faire monter ce qu'il y avait déjà)v0.1.3-
ajout de ? pour recevoir de l'input utilisateurv0.1.5-
ajout de [EXE] (touche "entrée"), pour valider son inputv0.1.5- ajout pause affichage : ◢
- ajout de [EXE], pour continuer quand c'était en pause
- ajout déplacement curseur (j'ai de vieux programme comme "Démineur" basé sur un Plot x,y◢ ) , valid et recup coordonnées
- ajout affectation à un ensemble de variable genre 1->A~Z
- gestion programmes / sous-programmes (appel "Prog x", Return, ...)
- ....
C'est pas les tâches qui manquent.
Citer : Posté le 29/08/2014 17:04 | #
Super !! le plus important c'est que toutes les commandes de programmation soient supportées par ton interpréteur et que l'interface soit la plus pratique possible pour la programmation on PC.
Sur le côté de l'écran de saisi, tu pourrais mettre des icônes de caractères pour qu'on puisse directement cliquer dessus afin qu'ils soint ajoutés au code. Ou des petits menu comme ceux accessibles sur la calculatrice ...
En tout cas, continu c'est super
Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
Tableau de variations
Equations Diophantiennes
Conversion d'un nombre décimal en fraction
Citer : Posté le 29/08/2014 17:10 | #
Est-ce que les fonctions et l'affichage graphique ont la même vitesse que sur calculatrice?
Citer : Posté le 29/08/2014 17:11 | #
Le prog2 a plutôt une vitesse semblable... ce serait vraiment pratique ça.
Citer : Posté le 29/08/2014 17:48 | #
J'ai remarqué un bug (au moins sous Chrome) si je clique plusieurs fois sur "prog 2" ça accélère l'execution ... pour l'instant je vous le laisse comme ça.
A la base j'ai mis un setTimeout(...) javascript avec 10ms, ce qui en théorie nous donne 1 instruction executés toutes les 10ms, soit environ 100 instructions par seconde.
A terme, je mettrais des boutons de réglages de la vitesse d'execution.
Citer : Posté le 29/08/2014 18:12 | #
Ben oui parce que tu ajoutes des timeout() en différé...
Citer : Posté le 29/08/2014 18:38 | #
Ben oui parce que tu ajoutes des timeout() en différé...
+1
Citer : Posté le 29/08/2014 19:25 | #
Nice
Escape prison
Bloxorz
Free wheel
QR code
Nombre en or
RayCasting Engine
Mario Party
Zelda
et Planète Casio
Citer : Posté le 31/08/2014 22:14 | #
Dernières modifs :
1. J'ai désactivé les multiplications sans opérateur * car cele faisait un bug : "B-2" était reconnu comme "B*-2" ce qui est plutôt embêtant.. j'avais modifier un peu vite la grammaire, cela nécessite + d'attention. J'y reviendrais.
2. Les goto vers un label postérieur (c'est à dire non encore rencontré) ne marchaient pas. Ceci est corrigé. Ça manque encore de msg d'erreurs clair en règle générale....
Ajouté le 04/09/2014 à 14:48 :
J'ai mis en ligne une version v0.1.5 avec :
?->var
"chaine"?->var
J'ai ajouté :
- un bouton "Stop" à coté du bouton "Execute"
- un lien vers une liste d'instructions déjà implémentées.
Ajouté le 05/11/2018 à 22:53 :
Bonjour,
Après une longue ... très longue pause, j'ai repris un peu le développement de mon programme.
Toujours situé à l'adresse http://basic.crevola.org/.
Je viens de rajouter :
- la multiplication sans opérateur * (exemple: 2B, 5(3+1), ....)
- les boucles Do/LpWhile et While/WhileEnd
- l'interprétation des symboles ≥,≤,≠,◢,⇒ et → (ce qui vous laisse le choix d'utiliser ces symboles ou leurs équivalents textuels respectivement >=, <=, <>, _, => et -> .... et accessoirement permet de copier/coller des exemples provenant de célèbre(s) site(s) web )
(Problèmes actuels :
- les réponses de type "chiffre" devraient être alignés à droite de l'écran et non à gauche
- les "syntax errors" ne précisent pas l'emplacement de l'erreur.
- les boucles Do/LpWhile et While/WhileEnd ne respectent pas le timeout de 10ms .. et sont donc paradoxalement trop rapides.
- pleins d'instructions manquantes ... mais ça c'est normal car il reste du travail)
Citer : Posté le 05/11/2018 23:11 | #
Génial si tu avance encore sur ton projet fait le savoir c'est intéressant
Citer : Posté le 06/11/2018 07:18 | #
Oh j'y repensais il n'y a pas si longtemps, joli hasard ! xD
Effectivement c'est une belle machinerie. *-* Je n'arrive pas à valider les entrées avec "?", comment faut-il s'y prendre ?
Citer : Posté le 06/11/2018 07:59 | #
Merci à tous pour vos commentaires, remarques et encouragements.
. *-* Je n'arrive pas à valider les entrées avec "?", comment faut-il s'y prendre ?
Normalement, tu dois taper tes chiffres puis faire 'Entrée' sur ton clavier. Si vraiment ça marche pas, j'enquêterai ..
Citer : Posté le 06/11/2018 08:16 | #
Eh bien, ici dans Firefox 63 sous Linux, ça ne marche pas il semblerait.
Si ça peut t'aider, chaque fois que j'entre un chiffre ou que j'appuie sur Entrée, la console affiche une erreur ReferenceError: event is not defined dans le fichier cbi.js, ligne 85 (je suppose qu'il y a un mélange avec e, enfin j'ai déjà rencontré ça...). Les chiffres sont écrits quand même, mais Entrée ne marche pas.
Citer : Posté le 06/11/2018 09:11 | #
Ok, merci des précisions. A l'instant, Firefox 63 sur Windows 10 même problème. (Ok sous Chrome et Edge) Je vais arranger ça...
Ajouté le 06/11/2018 à 09:24 :
... ok j'ai corrigé le bug. Merci pour ce retour. Effectivement, c'était n'importe quoi (mélange entre e et event)
Citer : Posté le 06/11/2018 12:35 | #
Ça me donne envie d'essayer...
Le lien est down ?
Citer : Posté le 06/11/2018 12:57 | #
Ça me donne envie d'essayer...
Le lien est down ?
En principe non, c'est pas down. Le lien c'est toujours http://basic.crevola.org/
Citer : Posté le 06/11/2018 12:59 | #
C'est mieux, bien joué !
Citer : Posté le 06/11/2018 13:31 | #
Bon...
Sur mon téléphone ça me renvoie ERR_NAME_NOT_RESOLVED
Je vais essayer sur mon RPi
Ajouté le 06/11/2018 à 13:46 :
Ne fonctionne pas sur mon Raspberry Pi non plus...
Je pense que je suis cassé
Citer : Posté le 06/11/2018 18:51 | #
Sur mon tel sa marche bien... T'utilise un vrai navigateur ??