Page 3 sur 6

Re: [Projet] Underbasic

Message non luPosté: 25 Sep 2015, 20:30
de Clément.7
@Epharius : Ça m'intéresserait effectivement mais lorsque j'aurais plus avancé dans le projet. Après l'un des principaux objectifs du projet c'est d'être accessible aux débutants alors on compilera en passant par les paramètres par exemple...

Re: [Projet] Underbasic

Message non luPosté: 01 Oct 2015, 17:52
de Clément.7
UPDATE !

- Added optional arguments
- Added default value for optional arguments
- Added assignment support (e.g. "A = 3" become "3->A")
- Added assignment checker to verify if an assignment is valid
- Translation packages can translate functions' name
- Translated function's name can be "un-camel-cased" (e.g. "inverserPixel" become "inverser_pixel")
- Improved translation system : Make a translation pack is easier now (using a simple parameters system)
- Added #unquote directive to remove the quotes at the beginning and the end of a string to include it in another string without using concatenation
Misc. improvements
- Added notices to check problems encountered during compilation
- Fixed bug : Bug in errors display for "Missing argument for function..."


En français :

- Les fonctions acceptent désormais des arguments optionnels (c'est-à-dire que vous n'êtes pas obligé de les passer à la fonction). Dans ce cas-là, vous pouvoir choisir ou non d'inclure une portion de code selon si tel argument a bien été spécifié.
- Les arguments optionnels peuvent avoir une valeur par défaut. Cela signifie que si vous ne les spécifiez pas, la valeur par défaut sera attribuée à l'argument. Cependant, vous pourrez toujours ou non inclure certaines lignes selon si l'argument a été spécifié.
- Support des assignements : Le code 'A = 2' sera converti en '2->A'. Le compilateur vérifiera également que vous n'assignez pas une liste à un nombre, par exemple.
- Les noms des fonctions peuvent être traduites dans le pack de traduction
- Les noms de fonctions traduites peuvent être dé-camel-case-ée, c'est à dire que 'inverserPixel' deviendra 'inverser_pixel' ce qui permets une meilleur lisibilité dans certains cas.
- La création d'un pack de traduction est désormais plus facile grâce à leur nouveau format.
- La directive #unquote a été rajoutée pour enlever les guillemets d'une variable :

Code: Tout sélectionner
function hello(string name) {
    print "Bonjour "+{{name}}
}
hello("Jacques")

devient
Code: Tout sélectionner
function hello(string name) {
    #unquote name
    print "Bonjour {{name}}"
}
hello("Jacques")

1 - Ça permets d'avoir un code plus clair
2 - Le compilateur sortira "Bonjour Jacques" au lieu de "Bonjour "+"Jacques", ce qui permets de gagner quelques octets ^^

P.S. : Je ferai un tutoriel sur ce langage, sur les bases et les manipulations avancées, lorsque j'aurai terminé le compilateur (ce qui est presque le cas)

Re: [Projet] Underbasic

Message non luPosté: 01 Oct 2015, 19:01
de Clément.7
[Désolé je fais un double post pour plus de lisibilité]

Bon la version bêta 0.5 est finie également :) !

- Added multiple files support
- Added auto-save feature
- Added mini-config editor ('#' icon in the toolbar)
- Added #include directive to include an other file
Misc. improvements
- Fixed bug : Due v0.4, functions' name were no longer translated
- Removed unused CodeMirror's files


Et en français :

- Ajout du support des fichiers : Vous pouvez maintenant, via une barre d'outils, créer et supprimer des fichiers. En cliquant sur le nom de l'un d'eux, vous accédez à son contenu. Le tout est sauvegardé en mémoire en temps réel.
- Ajout d'un auto-sauveur : Par défaut, lorsque vous modifiez n'importe quel fichier, son contenu est sauvegardé en temps réel sur votre ordinateur, si votre navigateur supporte localStorage, ce qui est le cas de tous les navigateurs récents
- Ajout de la directive #include : Vous pouvez inclure le contenu d'un fichier dans un autre en utilisant la directive #include. Par exemple, dans le fichier main, si vous mettez '#include test' le contenu du fichier 'test' sera importé à cet endroit.
- Suppression de fichiers inutiles, correction d'un bug...

Re: [Projet] Underbasic

Message non luPosté: 02 Oct 2015, 15:22
de Clément.7
Le compilateur est en ligne, à la dernière version (v0.5 beta) : Compilateur UnderBasic

Tapez votre code dans le cadre de gauche et il sortira, compilé, dans le cadre de droite. Vous pouvez quitter la page à n'importe quel moment sans copier votre code, lorsque vous y reviendrez le code que vous aviez saisi sera restauré (tant que vous utilisez un navigateur récent)

EDIT : J'essaye actuellement d'implémenter un émulateur de TI dans le site, mais j'ai quelques problèmes. Je posterais à nouveau ici quand j'aurais terminé !

Re: [Projet] Underbasic

Message non luPosté: 17 Avr 2016, 18:57
de Clément.7
Après 6 mois d'arrêt, le projet reprend ! J'ai décidé de continuer ce compilateur et d'y implémenter de nouvelles choses.
Au programme :
- Une bibliothèque de fonctions
- Ajouter l'utilisation "naturelle" des variables (ex: Disp test) qui n'est pour l'instant pas supporté

À propos de la compilation : Est-il possible de convertir un programme TI-Basic z80 (texte) en fichier .8xp en passant par Ti-Planet ? (via de l'Ajax par exemple)

Re: [Projet] Underbasic

Message non luPosté: 17 Avr 2016, 21:56
de Adriweb
Clément.7 a écrit:À propos de la compilation : Est-il possible de convertir un programme TI-Basic z80 (texte) en fichier .8xp en passant par Ti-Planet ? (via de l'Ajax par exemple)

Pas directement.

Cependant, il est relativement simple de faire ça en JS pur, si ça t'intéresse.
( https://github.com/adriweb/tivars_lib_cpp se compile en C++ ; particulièrement je pourrais faire juste la partie qui serait requise ici, en JS emscripten )

Le problème éternel reste cependant quel formatage on veut utiliser, pour les tokens non représentables textuellement directement - et encore, il reste des ambiguités compliquées à gérer sans un input parfaitement speccé en amont ; critor me citait l'exemple du 'r²', interprétable de 3 façon différentes: lettre 'r' au carré (erreur de syntaxe, certes, mais techniquement valide), symbole 'r' (statistique) au carré, symbole 'r²' (statistique))
En effet, côté utilisateur, c'est ""simple"" de mettre en place une interface pour choisir exactement les bons tokens pour lever les ambiguités, mais sous une API, c'est déjà plus compliqué (du moins, il faut avoir fait le travail de désambiguitéifications (joli mot) en amont)

Re: [Projet] Underbasic

Message non luPosté: 18 Avr 2016, 07:52
de Clément.7
Pour ce qui est dans ambiguïtés, je me base sur la syntaxe de TokenIDE.
Exemples : LSUITE correspond à la liste "SUITE" (donc le L est le petit L de liste).

Tu penses qu'il est possible de faire ça en JS pur ? Il y a de la manipulation de données hexa et de tokens, tout de même. En PHP ça doit pouvoir se faire en tout cas. Si tu penses pouvoir porter l'outil en JS ça m'aiderait beaucoup en effet :)

Re: [Projet] Underbasic

Message non luPosté: 18 Avr 2016, 17:16
de Adriweb
Logiquement, si l'utilisateur utilise bien tous les tokens spéciaux et leur bonne représentation, ca devrait être bon...

Mais bref, sinon oui, en JS pur c'est faisable (y compris télécharger le fichier généré, avec les nouveaux APIs HTML5).
Je te dirai quand j'aurais une version utilisable (bientôt, espérons :P)

Pour du PHP, j'ai ça aussi: https://github.com/adriweb/tivars_lib

Re: [Projet] Underbasic

Message non luPosté: 18 Avr 2016, 19:45
de Clément.7
Pour télécharger le fichier j'ai déjà une petite fonction toute prête qui utilise l'API Blob (code piqué sur StackOverflow :p).
Emscripten me semble bien compliqué à utiliser donc j'utilisais cette fameuse API que tu développes :)
En attendant je vais sans doute utiliser du bon vieux PHP pour convertir les codes ;)

Re: [Projet] Underbasic

Message non luPosté: 18 Avr 2016, 19:49
de Adriweb
Emscripten, ce serait moi qui m'en occupe (pas compliqué une fois qu'on sait l'utiliser :P), au final ca devrait être relativement petit et simple à utiliser quand j'aurais fait les bons bindings/APIs.

Et en effet, c'est via des Blob, pour les téléchargements.