Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Casio Basic Web Interpreter
Krevo_Hors ligneMaître du PuzzlePoints: 304 Défis: 0 Message

Casio Basic Web Interpreter

Posté le 29/08/2014 15:06

Bonjour,

Je viens de m'inscrire pour vous faire part de la mise en ligne d'un "Casio Basic Web Interpreter" que j'ai commencé à écrire.
Je crois que le nom parle de lui-même.... c'est un interpreteur 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


J'ai mis les sources sur GitHub.

A bientôt.
Krevo_


Pages : Précédente1, 2, 3, 4, 5, 6, 7
Krevo_Hors ligneMaître du PuzzlePoints: 304 Défis: 0 Message

Citer : Posté le 08/09/2019 21:59 | #


Merci à @Lephe et @Corne2plum3 d'abord pour avoir tester, ensuite pour votre enthousiasme et enfin pour vos retours techniques qui seront investigués dès que possible. Pour celui du break, je pense que cela fait partie des soucis que j'ai avec les if / then / else... j'ai fait une branche pour une nouvelle implémentation du if mais comme je n'en suis pas totalement satisfait elle n'est pas encore prête. Entre temps, j'ai avancé sur par mal d'autres trucs (comme tout récemment pouvoir renvoyer des erreurs à l'execution avec bien sûr le numéro de ligne d'origine ... ce qui n'est pas immédiat.) On peut tester cette nouveauté par exemple en faisant un List->Mat( avec un numéro de liste qui n'existe pas ou avec des listes de taille différentes. Je dois ajouter petit à petit des erreurs d’exécution (souvent on se contente d'une valeur retour à 0) quand cela est pertinent.

Pour le clavier, oui il a besoin d'être plus complet pour pouvoir générer toutes les entrées que certains programmes attendent. En fait, là je crois que je suis surtout en recherche d'un design / organisation de l'écran qui soit pas trop confus. Je pense faire un clavier qui peut s'ouvrir / se fermer. Faut que je trouve une icône et une façon de faire qui "fonctionne", je veux dire esthétiquement / niveau UI.

Pour les chaines de caractères, oui il y a un soucis hors ascii. Le javascript est nativement utf-16 pour l'encodage de ses chaines, mais le compilateur ne reconnait pas les chaines. J'ai aussi des polices qui ne sont pas complètes. ça fait partie des choses pas finies.

Bon, j'ai quand même mis récemment un coup de boost pour finir les listes (... euh il manque les "opérations sur les listes") et pour ajouter les matrices (ce qui augmente considérablement le nombre de programme que l'on pourrais supporter). Bon, hélas dès que j'en teste un il manque toujours quelque-chose. Mais ça vient ... une chose après l'autre. Je suis également toujours en train d'apprendre et certaines choses avec la grammaire ne sont pas forcément évidentes.

(Pour les rapports de bug, on peut aussi créer des issues sur le github du projet pour ceux qui le souhaitent. Je devrais moi même en créer...)

Re-merci pour ces deux messages, qui font du bien au moral








Découvrez mon projet principal : Casio Basic Web Interpreter, le basic Casio dans votre navigateur web !
LephenixnoirHors ligneAdministrateurPoints: 15507 Défis: 136 Message

Citer : Posté le 08/09/2019 22:08 | #


Content d'aider ! Le potentiel est immense. Si je peux me permettre, quelques conseils à récupérer selon tes envies sur l'interface :

• Personnellement je ne vois quasiment pas les numéros de lignes, gris sur bleu c'est chaud à lire.
• Un peu de CSS sur les boutons et exploiter la largeur des grands écrans ferait très professionnel !
• Il faut vraiment que tu autorises l'utilisateur à redimensionner la zone de texte.
• Fais vraiment gaffe à tes logs. Les activer consomme extrêmement vite toute la RAM disponible.
• Quelques raccourcis claviers ?

En debuggant un peu mon programme j'ai senti le potentiel quasi-IDE de l'outil, on peut vraiment faire des choses avec. J'ai le sentiment qu'en facilitant l'édition (zone de texte plus grande) et l'exécution (raccourcis claviers) on peut gagner facilement sur l'ergonomie.

Quoi que tu décides de faire, bon courage !
Krevo_Hors ligneMaître du PuzzlePoints: 304 Défis: 0 Message

Citer : Posté le 08/09/2019 22:48 | #


A une époque on pouvais redimensionner... je crois que ça a disparu avec l'utilisation du 'jquery-lined text area' (pour les numéros de ligne). Je pense tester et passer à CodeMirror. Tu as raison les numéros de ligne ne sont pas très visibles actuellement.

Ajouté le 09/09/2019 à 13:47 :
Ok, uploadé une modif css pour que les numéros de ligne soient bien visibles !

Ajouté le 11/09/2019 à 13:18 :
Uploadé la modif qui consiste à utiliser CodeMirror (au lieu de jquery-linedtextarea) pour la partie éditeur de code source avec numéro de ligne.
(Ctrl + reload dans le navigateur au cas où ...)

Du coup, j'ajoute la mise en évidence de la ligne en erreur, quand il y en a une. Et parmi ce qui devient possible à l'avenir : la coloration syntaxique, ... et d'autres trucs "qui déchiiire" mais chuuuut je dis rien car j'ai pas le temps de tout faire...

Découvrez mon projet principal : Casio Basic Web Interpreter, le basic Casio dans votre navigateur web !
LephenixnoirHors ligneAdministrateurPoints: 15507 Défis: 136 Message

Citer : Posté le 11/09/2019 15:38 | #


Je ne sais pas si je suis le seul, mais j'ai un problème de certificat avec ton site. :o
KirafiHors ligneMembrePoints: 2105 Défis: 10 Message

Citer : Posté le 11/09/2019 15:57 | #


Idem que Lephé "Non sécurisé".
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Krevo_Hors ligneMaître du PuzzlePoints: 304 Défis: 0 Message

Citer : Posté le 11/09/2019 16:09 | #


Oui, mais ça va se résoudre à la prochaine regen des certificats Let's Enscrypt. A moins que je demande au support si ça peut se faire avant.

Sinon, vous y allez en http et c'est ok.

Ajouté le 11/09/2019 à 16:12 :
Et sinon le nouvel éditeur avec la ligne en rose sur une syntax error ?
Découvrez mon projet principal : Casio Basic Web Interpreter, le basic Casio dans votre navigateur web !
LephenixnoirHors ligneAdministrateurPoints: 15507 Défis: 136 Message

Citer : Posté le 11/09/2019 17:04 | #


Ben écoute j'ai tenté de faire apparaître des erreurs de syntaxe et j'ai trouvé plein de résultats surprenants. Par exemple...

1**2=0
1*/2=0
1/*2=Infinity
1//2=Infinity
1/***//*/*/2=NaN
Krevo_Hors ligneMaître du PuzzlePoints: 304 Défis: 0 Message

Citer : Posté le 11/09/2019 19:44 | #


'Infinity' (et 'NaN') c'est typique des calcul en javascript. Je ne contrôle pas assez en amont de l'opération ... d'où les résultats étranges. Je rajoute au fur et à mesure des 'check' surtout depuis que je peux renvoyer des erreurs durant l'exécution...et ce depuis quelques jours seulement. Je vais corriger tout ça et ensuite mettre ces exemples de calcul dans mes tests unitaires.

Merci pour être re-retourner voir.

(Une erreur de syntaxe facile tu prends un mot clefs genre 'Goto' et tu mets à la place 'Gata', ...)


Découvrez mon projet principal : Casio Basic Web Interpreter, le basic Casio dans votre navigateur web !
LephenixnoirHors ligneAdministrateurPoints: 15507 Défis: 136 Message

Citer : Posté le 11/09/2019 20:40 | #


Oui t'inquiète, c'est ton parser qui doit avoir quelques effets bizarres, voilà tout.
Krevo_Hors ligneMaître du PuzzlePoints: 304 Défis: 0 Message

Citer : Posté le 12/09/2019 12:49 | #


Krevo_ a écrit :
Oui, mais ça va se résoudre à la prochaine regen des certificats Let's Enscrypt. A moins que je demande au support si ça peut se faire avant.


Le support a forcé la regen du certificat ssl. Tout est donc ok en Https maintenant.

Ajouté le 12/09/2019 à 13:15 :
Lephenixnoir a écrit :

1**2=0


Le parseur a reconnu :
(1 * undefined ) * 2
.. et moi pour "1 * undefined" je renvoie 0. Je vais modifier pour renvoyer syntax error.
Découvrez mon projet principal : Casio Basic Web Interpreter, le basic Casio dans votre navigateur web !
RedcmdHors ligneMembrePoints: 134 Défis: 2 Message

Citer : Posté le 12/09/2019 22:40 | #


isn't the double ** mean to the power of?
3**2 = 3^2 = 9?
RedCMD#4299 - Discord
Mandelbrot SNKEmini Minesweeper Sudoku
LephenixnoirHors ligneAdministrateurPoints: 15507 Défis: 136 Message

Citer : Posté le 12/09/2019 22:54 | #


Not in this Basic language, exponentiation is ^ only
Pages : Précédente1, 2, 3, 4, 5, 6, 7

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 37 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