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 - Projets de programmation


Index du Forum » Projets de programmation » BIDE - Basic IDE
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

BIDE - Basic IDE

Posté le 26/08/2016 19:36

Je vous présente mon nouveau projet : un IDE pour le Basic (casio bien entendu).

Lien de téléchargement


Un petit malin a écrit :
Mais ça va faire un bide ton projet !

...
(bref, si quelqu'un a un meilleur nom pour ça, qu'il le dise. )

En particulier pour les prochains CPC, un IDE pour le basic serait assez utile (enfin pour tout programme basic, c'est horriblement chiant de faire de grands programmes illisibles sur un écran monochrome (donc sans coloration syntaxique) de 21*6 sans aucune indentation).

Todo list (ça c'est pour moi) :
- Conversion des lignes des options en \r\n (ou édition directement dans BIDE)
- Optimisation : enlèvement des accolades, crochets et parenthèses fermants
- Conversion optimisée png -> multi drawstat
- Importation automatique sur la calculatrice
- Option pour générer du super drawstat

Les features de cet IDE seraient :

- Remplacement automatique des caractères spéciaux : par exemple si l'utilisateur tape "- >" (sans l'espace bien entendu) ça le remplacera automatiquement par "→". Pareil pour =>, <=, >=, etc. (pas fait)
Pour les autres caractères qui n'ont pas vraiment de représentation ASCII (disp par exemple) le remplacement s'effectue en tapant un '&' avant le nom de caractère, dans ce cas taper "&disp" le remplaçera par "◢".
Si l'utilisateur ne veut pas le remplacement (par exemple, s'il veut avoir "- >" et non pas "→") il lui suffit de séparer le "mot-clé" en deux parties et de les recoller après. Le remplacement se fera uniquement si l'utilisateur tape tout le mot d'un coup.
Cela remplace aussi les noms de fonction, si l'utilisateur tape "locate" ce sera remplacé automatiquement par "Locate".

Là où vous pouvez m'aider : me fournir les caractères unicode correspondant à chaque caractère ("◢" = 0x0C, etc).

- Possibilité de nommer ses variables. Il sera possible par exemple de mettre "vieJoueur" comme nom de la variable "A", et dans ce cas la variable A sera remplacée par "vieJoueur" dans le programme. Ca évite de se rappeler à chaque fois de l'utilité de chaque variable. (pas fait, utiliser les octets de header pour identifier les g1m)

- Aide au niveau des fonctions graphiques : survoler une fonction graphique montrera son résultat dans une petite pop-up. (pas fait)

- Indentation automatique lors de l'importation du projet (fait), et lors de l'écriture (pas fait) (par exemple, écrire "If A=2" puis faire une nouvelle ligne mettra automatiquement un ":Then" après le "A=2", un "IfEnd", puis augmentera le niveau d'indentation).

- La coloration syntaxique (c'est la base ), dites si vous voulez un style du type notepad++, eclipse, ou autre. Je préfère personnellement celui de notepad++. (fait à moitié)

- D'autres fonctions assez utiles inspirées d'eclipse : survoler une fonction affiche sa documentation, l'auto-completion, la sidebar à droite montrant les todos/warnings/erreurs, etc. (pas fait)

- Optimisation automatique lors de la compilation : enlever les guillemets/crochets/parenthèses/accolades à la fin d'une instruction (d'autres suggestions pour optimiser ?). La désoptimisation se fera à l'importation du .g1m (parce que des parenthèses pas fermées c'est chiant (pas fait)

- Support de B2C pour pouvoir tester sur l'émulateur facilement (pas fait)

- L'IDE refusera de compiler le programme s'il y a un quelconque goto dedans (j'ai du compromettre)

- Support de commentaires style C (// et /*...*/) (pas fait)

Voilà, si vous avez d'autres suggestions n'hésitez pas à les dire et aussi, si quelqu'un a un bon tutoriel sur les GUI en java, ça me serait bien utile (sachant que j'en ai trouvé aucun de compréhensible et que j'y comprends toujours rien).


1, 2, 3, 4, 5 Suivante
Lephenixnoir Hors ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 26/08/2016 19:42 | #


C'est surtout du graphique en fait, à part B2C ?

Rapidement :
Zezombye a écrit :
"◢" = 0x0C

En UTF-8, je doute. Perso j'ai 0xe297a2.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 26/08/2016 19:47 | #


Non, je parle du code de la table de caractère de casio, où ◢ a la valeur 0x0C

Mais oui ce sera surtout du graphique, parsé à coup de regex (le seul vrai parsage sera pour les strings). Après si j'ai le temps c'est vrai que je pourrai faire la vérification du code (par exemple l'absence de IfEnd, ou un Locate avec 2 arguments, ou l'utilisation de la valeur de retour d'un Locate, etc).
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Cakeisalie5 Hors ligne Ancien administrateur Points: 1966 Défis: 11 Message

Citer : Posté le 26/08/2016 19:49 | #


Je te le dis tout de suite : si tu veux vraiment faire une interface graphique, tu vas en chier. Pourquoi ne pas faire un plugin et une coloration sur un éditeur que tu utilises, type Notepad++ (puisque tu en parles) ?

Pour l'émulation, j'aurais dit de faire quelque chose à côté (un petit utilitaire avec la SDL), ce serait plus simple. (encore plus simple, ce serait d'utiliser la ligne de commande, mais vous autres sous Windows vous préférez pas trop la voir celle-là è_é)
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Lephenixnoir Hors ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 26/08/2016 20:39 | #


Ah, tu veux les opcodes ? Ben dans ce cas là c'est trivial (merci SimLo).
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 26/08/2016 20:44 | #


Non, les caractères x) par exemple 0xE6A6 = ◼. Enfin bon avec les sites dédiés à l'unicode ça devrait pas me prendre beaucoup de temps de faire un tableau, du coup je pourrais m'en sortir moi même en fin de compte.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir Hors ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 26/08/2016 20:49 | #


Bon alors c'est trivial aussi. Dans l'archive qui contient le SDK se trouve un manuel qui contient toute la table des caractères.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 28/08/2016 02:30 | #


Va voir du côté de UnicornEdit Tu verras le chantier d'un IDE. Un IDE est chiant à faire car les features phares sont extrêmement dur à concevoir notamment l'edition de texte. Ensuite, bien que le basic casio soit relativement simple, l'analyser est bien difficile et la construction d'un lexer/parser puis d'un assembleur ne se fait pas sans dommage sur le cerveau ( je sais de quoi je parle, Blang me fait trop chier )
Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

Citer : Posté le 28/08/2016 11:45 | #


Intelligide a écrit :
la construction d'un lexer/parser puis d'un assembleur ne se fait pas s'en dommage sur le cerveau

*sans.
Désolé, c'est comme mon shampooing : ça pique trop les yeux.
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 22/02/2017 15:58 | # | Fichier joint


Un prototype de BIDE est prêt pour l'instant il n'a rien d'un IDE, mais il y a juste la conversion g1m/ascii (et inversement).

Ce qu'on peut faire c'est donc éditer un .g1m en mode texte, tout comme le fait FA-124 mais avec une police pas dégueulasse et avec un g1m créé sans opcodes chelou qui se glissent dans les strings.

J'ai mis le .jar en pièce jointe. Pour l'utiliser sous windows, faites shift+clic droit sur là où vous l'avez mis, cliquez sur "ouvrir une nouvelle ligne de commande", puis tapez "java -jar bide.jar". Les utilisateurs de linux n'ont pas besoin que je leur dise quoi faire Enlevez l'extension .txt, c'est parce que ce forum est discriminatoire contre le java et n'autorise pas les .jar.

Le programme vous demande 3 chemins :
- Le chemin d'origine de votre .g1m
- Le fichier texte où vous allez éditer le g1m
- Le g1m à créer lorsque vous avez fini d'éditer le programme (je vous déconseille de mettre le même que le chemin d'origine, au cas où BIDE ne retranscrirait pas bien)

Je vous invite à tester la conversion et à me dire tous les bugs

Note: un des bugs est que si un programme contient les caractères '=' et '>' à la suite (dans un string par exemple), alors BIDE les convertira en '=>' au lieu des caractères originaux. Ce bug sera fixé lorsque j'implémenterai un éditeur de texte propre à BIDE.

Ah, et merci à cake pour sa refc
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Fabcvlr Hors ligne Membre Points: 2275 Défis: 41 Message

Citer : Posté le 23/02/2017 09:35 | #


Moi qui code beaucoup en BASIC, je suis très intéressé !
L'expérience des autres, c'est comme une chandelle que l'on tient allumée dans son dos par une nuit de tempête !
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 23/02/2017 11:03 | #


C'est sur Linux ou Windaube ? Si c'est sur Windows, il faut avoir quelque chose d'installer pour le lancer ou pas ?
Je suis moi aussi plutôt intéressé
Lephenixnoir Hors ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 23/02/2017 11:07 | #


C'est un peu un manque de professionnalisme que de demander si un programme Java tourne sous Windows ou sous Linux.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 23/02/2017 11:11 | #


J'y connais rien
Lephenixnoir Hors ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 23/02/2017 11:14 | #


Le Java est par essence cross-platform. Un programme Java tourne nécessairement sur les deux plateformes. La commande est identique pour les deux systèmes, en l'occurrence.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 23/02/2017 11:52 | #


J'ai eu une erreur :

C:\Users\User1\Desktop\dfcgh>java -jar bide.jar
Enter the path to the .g1m file:
C:\Users\User1\Desktop\dfcgh\PLAT MEN.g1m
Enter the path to the output .bide (or .txt) file:
C:\Users\User1\Desktop\Nouveau dossier\text.txt
Reading from g1m at C:\Users\User1\Desktop\dfcgh\PLAT MEN.g1m
Found basic program
Testing for opcode 50
Matches opcode P
Testing for opcode 4c
Matches opcode L
Testing for opcode 41
Matches opcode A
Testing for opcode 54
Matches opcode T
Testing for opcode 4d
Matches opcode M
Testing for opcode 45
Matches opcode E
Testing for opcode 4e
Matches opcode N
Found end of given string
Name = PLAT MEN, password = <no password>
Testing for opcode 22
Matches opcode "
Testing for opcode 50
Matches opcode P
Testing for opcode 4c
Matches opcode L
Testing for opcode 41
Matches opcode A
Testing for opcode 54
Matches opcode T
Testing for opcode 22
Matches opcode "
Testing for opcode e
Matches opcode ->
Testing for opcode 7f51
Matches opcode List
Testing for opcode 31
Matches opcode 1
Testing for opcode 36
Matches opcode 6
Testing for opcode 7f46
Matches opcode Dim
Testing for opcode 7f51
Matches opcode List
Testing for opcode 31
Matches opcode 1
Testing for opcode 36
Matches opcode 6
Testing for opcode 3c
Matches opcode <
Testing for opcode 32
Matches opcode 2
Testing for opcode 13
Matches opcode =>
Testing for opcode 32
Matches opcode 2
Testing for opcode e
Matches opcode ->
Testing for opcode 7f46
Matches opcode Dim
Testing for opcode 7f51
Matches opcode List
Testing for opcode 31
Matches opcode 1
Testing for opcode 36
Matches opcode 6
Testing for opcode f708
Matches opcode While
Testing for opcode 31
Matches opcode 1
Testing for opcode f718
Matches opcode ClrText
Testing for opcode 22
Matches opcode "
Testing for opcode 3d
Matches opcode =
Testing for opcode 42
Matches opcode B
Testing for opcode 41
Matches opcode A
Testing for opcode 53
Matches opcode S
Testing for opcode 49
Matches opcode I
Testing for opcode 43
Matches opcode C
Testing for opcode 50
Matches opcode P
Testing for opcode 4c
Matches opcode L
Testing for opcode 41
Matches opcode A
Testing for opcode 54
Matches opcode T
Testing for opcode 46
Matches opcode F
Testing for opcode 4f
Matches opcode O
Testing for opcode 52
Matches opcode R
Testing for opcode 4d
Matches opcode M
Testing for opcode 45
Matches opcode E
Testing for opcode 52
Matches opcode R
Testing for opcode 3d
Matches opcode =
Testing for opcode 22
Matches opcode "
Testing for opcode 22
Matches opcode "
Testing for opcode 22
Matches opcode "
Testing for opcode 22
Matches opcode "
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e6a5
Matches opcode &white_square;
Testing for opcode e745

ERROR: Unknown opcode e745


Ca a planté au petit E majuscule trouvable dans les caractères dans la dernière catégorie.

Ajouté le 23/02/2017 à 11:57 :
Il connait pas le divisé non plus visiblement
ERROR: Unknown opcode b9
Fabcvlr Hors ligne Membre Points: 2275 Défis: 41 Message

Citer : Posté le 23/02/2017 14:06 | #


La fenêtre du programme BIDE.jar n’apparaît qu'une fraction de seconde quand je lance BIDE.jar !? je suis en W7 pro

L'expérience des autres, c'est comme une chandelle que l'on tient allumée dans son dos par une nuit de tempête !
Breizh_craft En ligne Modérateur Points: 1172 Défis: 7 Message

Citer : Posté le 23/02/2017 14:13 | #


Il faut lancer le programme via l'invite de commande.
Breizh.pm – Un adminsys qui aime les galettes.
Cakeisalie5 Hors ligne Ancien administrateur Points: 1966 Défis: 11 Message

Citer : Posté le 23/02/2017 14:27 | #


Tu aurais pu préçiser que les sources étaient sur la forge.
http://git.planet-casio.com/Zezombye/BIDE
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Fabcvlr Hors ligne Membre Points: 2275 Défis: 41 Message

Citer : Posté le 23/02/2017 16:09 | #


Breizh_craft a écrit :
Il faut lancer le programme via l'invite de commande.

Merci Breizh j'avais compris, j'avais juste mal expliqué mon bug. Le prog se lance et s’arrête dans la foulée. J'ai juste le temps de voir la fenêtre de l'éxecution s'envoler vers le haut de l'écran puis RIEN
L'expérience des autres, c'est comme une chandelle que l'on tient allumée dans son dos par une nuit de tempête !
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 23/02/2017 16:14 | #


Ah il connait pas non plus la function memory fn
ERROR: Unknown opcode f91b
Je continue ?
1, 2, 3, 4, 5 Suivante

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 65 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