π
<-

[Projet] Underbasic

Assembleur, Axe, C/C++, ICE...

Votre avis

Ce projet est intéressant
9
50%
Ce projet est inutile
4
22%
J'aimerais prendre part au projet
2
11%
Je n'ai pas tout compris
2
11%
L'UnderBasic est trop complexe pour moi
1
6%
 
Total votes : 18

[Projet] Underbasic

Unread postby Clément.7 » 19 Sep 2015, 15:19

Bonjour à tous !
Il y a un an de cela, j'avais débuté un projet nommé Ace Script. Pour diverses raisons et à cause de mon disque dur (interne) qui a rendu l'âme, j'ai perdu toute trace du projet et je n'ai pas pu le mener à terme.
En lisant le sujet de Wistaro sur son Convertisseur TI couleur/monochrome, j'ai appris qu'Adriweb avait commencé à coder un [dé]tokenizer pour calculatrices TI.

Show/Hide spoilerAfficher/Masquer le spoiler
Qu'est-ce qu'un tokenizer ?
Pour ceux qui ne connaissent pas, le tokenizer est l'outil qui va convertir le code que vous tapez sur votre ordi en format binaire. En gros, si vous tapez "Disp A+B*2", le tokenizer va transformer ce texte en caractères spéciaux illisibles par un humain. Ce format est nommé binaire et est le seul que comprennent les machines.
Le détokenizer est le programme qui va convertir un fichier binaire en texte lisible pas un humain.

Étant donné que créer un tokenizer TI est très complexe (d'autant plus qu'il ne s'agit pas seulement de convertir le texte en binaire mais aussi de rajouter certaines informations au fichier), je compte utiliser celui qu'Adriweb est en train de créer.


L'autre jour en programmant sur ma TI je me suis dit qu'il sera quand même vachement plus simple de pouvoir définir des fonctions en TI-Basic et d'avoir quelques fonctionnalités supplémentaires pour effectuer certaines tâches.
J'ai donc décidé de créer un nouveau langage de programmation, l'UnderBasic. Pourquoi ce nom ? Eh bien tout simplement parce qu'il est converti en TI-Basic !

Ce langage permets, entre autre, de :

  • Définir des fonctions
  • Utiliser des variables avec des noms
  • Programmer avec une syntaxe plus simple
  • Avoir accès à une bibliothèque de fonctions

Mais, puisque l'UnderBasic est converti en TI-Basic, comment cela va-t-il fonctionner, me direz-vous ? En fait c'est très simple.
Prenons ce code :

Code: Select all
nom is Str1

function direBonjour (personne) {
    print("Bonjour " + personne)
}

input(nom, "Nom ? ")
direBonjour(nom)


sera converti en :

Code: Select all
Input "Nom ?",Str1
Disp "Bonjour " + Str1


Alors certes, vu comme ça, c'est une pure perte de temps puisque le code UnderBasic est plus long et complexe que le code TI-Basic. Mais imaginez avec des programmes beaucoup plus longs... Pouvoir utiliser des variables avec de "vrais" noms et définir des fonctions serait beaucoup plus pratique !

L'UnderBasic, pour pouvoir être converti, a besoin de certaines informations. Par exemple, il ne sait pas à quoi correspond la variable nom. Il va donc falloir lui lui dire qu'elle fait référence à la variable Str1 de la calculatrice. Pour cela, on utilise l'instruction :

Code: Select all
nom is Str1


Pour les fonctions, je ne pense pas avoir vraiment besoin d'expliquer :)
Sachez seulement que le compilateur est intelligent et ne se contente pas de convertir bêtement le code. Cela lui permets de comprendre que, dans le code que j'ai cité en exemple, l'argument personne fait en fait référence à la variable nom, faisant elle-même référence à Str1. En d'autre termes, lorsque le code situé dans le fonction va appeler la variable personne, le compilateur va remplacer cela par Str1.

Exemple : La suite de Fibonacci

Code: Select all
i is A
suite is _SUITE

suite = [0, 1]
for(i, 3, 18) {
    suite[i] = suite[i - 2] + suite[i - 1]
    print suite[i]
}


Code: Select all
{0, 1}->LSuite
For(A,3,18)
LSUITE(A-2)+LSUITE(A-1)->LSUITE(A)
Disp LSUITE(A)
End


N.B. : Les "L" correspondent au caractère "petit L" pour les listes en TI-Basic.

Voilà ! On voit bien que la premier code est plus lisible que le second puisqu'il est indentable et espaçable.

À noter qu'il est possible d'omettre les parenthèses lorsque l'on utilise une fonction.

Voici un aperçu des possibilités en UnderBasic :

Code: Select all
#icon 0F2A6F542C8D2F6F
#description UnderBasic test
#import generic

explicit X,Y
explicit list map

input map, "Map : "
displayMap (map, X, Y, " +-*")
pause


Code: Select all
:"UnderBasic test
:"0F2A6F542C8D2F6F
Input "Map : ",LMAP
ClrHome
For(Y,1,8)
For(X,1,16)
Output(Y,X,sub(" +-*", LMAP(16Y+X-16)-1,1))
End
End
Pause


Là, on voit bien que le premier code est plus simple à utiliser. Mais comment ça fonctionne ?
Une ligne commençant par un # est appelée directive.

La directive description permets d'associer une description à un programme, lisible par les Shell comme DoorsCS.
La directive icon permets d'associer une icône à un programme, lisible par les Shell comme MirageOS ou DoorsCS.
La directive import permets d'importer une bibliothèque depuis un paquet de bibliothèque. En l’occurrence, c'est la bibliothèque generic qui est importée. C'est notamment elle qui permets d'utiliser la fonction displayMap

Le mot-clé explicit indique que la variable a une référence explicite. Par exemple, explicit X signifie que, lorsque l'on utilisera la variable X, on fera bien référence à la variable X de la calculatrice.

Voilà ! Dites-moi ce que vous pensez du projet ! Si vous avez des suggestions, n'hésitez pas !
Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
User avatar
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 29.5%
 
Posts: 348
Joined: 12 Jun 2013, 15:02
Location: Près de Nantes
Gender: Male
Calculator(s):
MyCalcs profile
Class: IUT Informatique en 2017-2019
GitHub: ClementNerma

Re: [Projet] Underbasic

Unread postby GalacticPirate » 19 Sep 2015, 15:42

Excellent projet, qui du même coup rendrait le Basic encore plus accessible aux élèves et apprentis programmeurs ! Je te tire mon chapeau !

EDIT: Comment ça se fait que l'éditeur de code détecte le langage comme "UNDERBASIC" ? Critor a déjà référencé ce langage ? :p
Mon profil TI-PlanetDevenez premium !
ImageImage
Modérateur de TI-Planet.org depuis décembre 2015, et membre de la communauté depuis Mai 2015.Cliquez ci-dessus pour faire un don à TI-Planet.org via PayPal et devenir Donateur ou Premium (à partir de 3€) ! Vous aurez accès à des générations illimitées et prioritaires avec Mviewer GX Creator, ainsi qu'au forum secret ! :bj: En plus, vous pourrez être orange sur le chat :troll:

Image
User avatar
GalacticPirateModo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 1.3%
 
Posts: 1156
Images: 2
Joined: 23 May 2015, 10:36
Location: Hauts-de-Seine, France
Gender: Male
Calculator(s):
MyCalcs profile
Class: M2

Re: [Projet] Underbasic

Unread postby Epharius » 19 Sep 2015, 16:00

Pas mal, mais je ne comprend pas le choix de le convertir en Ti-basic et pas en assembleur : Est-ce pour pouvoir modifier le code généré ? Parce que c'est plus compliqué ? Ou est-ce parce que le langage ne vise pas les programmes rapides ? De plus, cela pourrait permettre plus de possibilité au langage comme la gestion de la mémoire etc...

J'aime beaucoup (même si ce n'est pas fait exprès) cette ressemblance avec le C ou le java, cela rend le langage plus "professionnel" avec entre autre les fonctions et les directives.

J'aimerais te dire bonne chance et si tu as besoin d'aide, n'hésite pas ;)
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
User avatar
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 8%
 
Posts: 1160
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: [Projet] Underbasic

Unread postby Bisam » 19 Sep 2015, 16:02

@StarTrekVoyager :
On peut spécifier n'importe quel nom de langage dans la balise code. Certains mots clé seront tout de même détectés car supposés exister dans tout langage.
Code: Select all
#Commentaire
for chou in choucroute
   print saucisse
   if saucisse > chou
       cuire(saucisse)
   else
       manger(saucisse)
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Re: [Projet] Underbasic

Unread postby Hayleia » 19 Sep 2015, 16:04

Clément.7 wrote:Bonjour à tous !
Show/Hide spoilerAfficher/Masquer le spoiler
Qu'est-ce qu'un tokenizer ?
Pour ceux qui ne connaissent pas, le tokenizer est l'outil qui va convertir le code que vous tapez sur votre ordi en format binaire. En gros, si vous tapez "Disp A+B*2", le tokenizer va transformer ce texte en caractères spéciaux illisibles par un humain. Ce format est nommé binaire et est le seul que comprennent les machines.
Le détokenizer est le programme qui va convertir un fichier binaire en texte lisible pas un humain.

Étant donné que créer un tokenizer TI est très complexe (d'autant plus qu'il ne s'agit pas seulement de convertir le texte en binaire mais aussi de rajouter certaines informations au fichier), je compte utiliser celui qu'Adriweb est en train de créer.

Bon, on va dire que ce passage était pour les noobs et que ce n'est pas grave s'il n'est pas exactement rigoureux même s'il n'est pas non plus faux :P

Sinon, je suis d'accord avec Epharius. C'est dommage de faire un nouveau langage et de ne pas lui donner la puissance maximale lorsqu'on a le choix de la sortie du compilateur. Mais bon, je suppose que c'est parce que Clément.7 n'a pas les connaissances requises pour faire un compilateur vers de l'assembleur.

Image
ImageImageImage
Pokemon Topaze (Axe) discussion and download links here
(19:29:36) noelnadal: plus sérieusemen​t, j'ai très peu de problèmes
(22:45:44) Clifward: J'aime rire du malheur des autres :troll:

(2017.11.18 - 17:07:12) Fireworks: Hayleia !!!!!
(2017.11.18 - 17:07:19) TI-Bot: Fireworks has been logged out (Kicked).
(2017.11.18 - 17:07:22) TI-Bot: Ban of user Fireworks revoked.
(2017.11.18 - 17:07:25) TI-Bot: Fireworks logs into the Chat.
(2017.11.18 - 17:07:28) Fireworks: <3
(2017.11.18 - 17:07:31) Fireworks: 208
User avatar
HayleiaGénéreux
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Level up: 43.8%
 
Posts: 2509
Images: 2
Joined: 30 Aug 2011, 08:22
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Templar

Re: [Projet] Underbasic

Unread postby Epharius » 19 Sep 2015, 16:11

Justement Hayleia, c'est ce que je ne comprend pas. A partir du moment où tu sais gérer les programmes, les supprimer, les éditer en assembleur, tu en sais assez pour créer un programme assembleur à la place de programme basic. A mon avis ce n'est pas un problème de connaissances. Après c'est sûr que ça demande plus de travail, ça c'est incontournable.
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
User avatar
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 8%
 
Posts: 1160
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: [Projet] Underbasic

Unread postby Hayleia » 19 Sep 2015, 16:14

Oui, c'est ce que je me disais aussi, que le plus compliqué dans un compilateur c'est pas le langage cible, c'est la grammaire, les environnements, etc. Mais je pense qu'il a pensé au Basic tout de suite juste parce qu'il connaît. Mais oui, on est d'accord que c'est pas là le coeur du problème, et que le fait de changer en assembleur rajoutera certes un peu de travail mais sera incroyablement plus bénéfique...

Image
ImageImageImage
Pokemon Topaze (Axe) discussion and download links here
(19:29:36) noelnadal: plus sérieusemen​t, j'ai très peu de problèmes
(22:45:44) Clifward: J'aime rire du malheur des autres :troll:

(2017.11.18 - 17:07:12) Fireworks: Hayleia !!!!!
(2017.11.18 - 17:07:19) TI-Bot: Fireworks has been logged out (Kicked).
(2017.11.18 - 17:07:22) TI-Bot: Ban of user Fireworks revoked.
(2017.11.18 - 17:07:25) TI-Bot: Fireworks logs into the Chat.
(2017.11.18 - 17:07:28) Fireworks: <3
(2017.11.18 - 17:07:31) Fireworks: 208
User avatar
HayleiaGénéreux
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Level up: 43.8%
 
Posts: 2509
Images: 2
Joined: 30 Aug 2011, 08:22
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Templar

Re: [Projet] Underbasic

Unread postby Clément.7 » 19 Sep 2015, 17:04

Effectivement je n'ai pas les connaissances requises pour faire un compilateur assembleur. En fait je sais a peine programmer assembleur !
Là au moins la conversion en TI-Basic permets de modifier le programme on-calc.

L'UnderBasic est un langage simplifié pour les débutants ou ceux qui veulent repousser la syntaxe du TI-Basic plus loin...

Si j'avais tenté de faire un langage compilable en assembleur, le résultat aurait été un échec pur et simple comme pour tous mes précédents projets...

Après quand j'aurais fini le compilateur (qui n'a même pas commencé ^^) si quelqu'un est assez motivé pour faire un second compilo en asm tant mieux, mais je ne pourrais pas y participer.
Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
User avatar
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 29.5%
 
Posts: 348
Joined: 12 Jun 2013, 15:02
Location: Près de Nantes
Gender: Male
Calculator(s):
MyCalcs profile
Class: IUT Informatique en 2017-2019
GitHub: ClementNerma

Re: [Projet] Underbasic

Unread postby Hayleia » 19 Sep 2015, 17:06

Sauf que tu n'as pas lu ce qu'on a dit :P
Un compilateur, c'est très dur, et le fait de compiler en Basic ou en assembleur, c'est vraiment une partie infime du boulot ;)

Donc bon, ok, si tu n'as vraiment pas envie de le faire en assembleur, personne ne se plaint, mais ça serait bien que ton compilateur soit bien propre pour que la cible puisse être modifiée facilement ;)

Image
ImageImageImage
Pokemon Topaze (Axe) discussion and download links here
(19:29:36) noelnadal: plus sérieusemen​t, j'ai très peu de problèmes
(22:45:44) Clifward: J'aime rire du malheur des autres :troll:

(2017.11.18 - 17:07:12) Fireworks: Hayleia !!!!!
(2017.11.18 - 17:07:19) TI-Bot: Fireworks has been logged out (Kicked).
(2017.11.18 - 17:07:22) TI-Bot: Ban of user Fireworks revoked.
(2017.11.18 - 17:07:25) TI-Bot: Fireworks logs into the Chat.
(2017.11.18 - 17:07:28) Fireworks: <3
(2017.11.18 - 17:07:31) Fireworks: 208
User avatar
HayleiaGénéreux
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Level up: 43.8%
 
Posts: 2509
Images: 2
Joined: 30 Aug 2011, 08:22
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Templar

Re: [Projet] Underbasic

Unread postby Clément.7 » 19 Sep 2015, 17:09

Quand je parle du 'compilateur' je parle du programme qui transcrit l'UnderBasic en un autre langage... Je ne comprends pas bien ta remarque.

Le compilateur convertisseur sera bien propre, commente et sans doute orienté objet. Il sera fait en JavaScript je pense. De toute façon j'ai pas pour habitude de faire un code sale dans mes amplis web :p
Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
User avatar
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 29.5%
 
Posts: 348
Joined: 12 Jun 2013, 15:02
Location: Près de Nantes
Gender: Male
Calculator(s):
MyCalcs profile
Class: IUT Informatique en 2017-2019
GitHub: ClementNerma

Next

Return to Langages alternatifs

Who is online

Users browsing this forum: ClaudeBot [spider] and 2 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
810 utilisateurs:
>754 invités
>45 membres
>11 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)