Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » GFA-Basic TI68K » News » Développement du futur GFA-Basic (59 réponse(s))
./REPRISE DU POST PRECEDENT (post n°19)   Marquer comme non lu.
geogeo Ecrit le: Dimanche 30 juillet 2006 à 19:27 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Le tokeniseur est terminé, j'arrive petit à petit à la phase de création des tokens d'exécution et donc à une version utilisable et diffusable.
-Edité le Dimanche 30 juillet 2006 à 19:27 par geogeo-
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°20   Marquer comme non lu.
geogeo Ecrit le: Dimanche 20 août 2006 à 19:05 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Une version stable et définitive approche.
Des optimisations ont été effectuées depuis mon retour de vacances.
Le scanner et le tokeniseur sont totalement terminée.
J'attaque à partir de maintenant l'étape constitant à réorganiser les tokens pour qu'il soit supportés par GFA-TEM.
Dans premier temps le tokeniseur de GFA Basic v2 sera compatible avec GFA-TEM v1 mais petit à petit GFA-TEM subira de nettes optimisations. Par exemple les paramètres relatifs à une fonction ne seront plus vérifiés lors de l'interprétation (cela permet un gain important pour l'ensemble du langage). J'estime qu'une boucle FOR vide de 10 000 cycles mettera moins de 20 ms pour s'exécuter. (d'après des tests effectués avec GFA-TEM v1 et le nouveau tokeniseur).
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°21   Marquer comme non lu.
tama Ecrit le: Mercredi 23 août 2006 à 11:13 Déconnecté(e)    Voir le profil de tama Envoyer un email à tama Envoyer un message privé à tama  

une date de sortie ? :)
    
./Post n°22   Marquer comme non lu.
geogeo Ecrit le: Mercredi 23 août 2006 à 11:51 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Disons avant la rentrée dans le meilleur des cas.
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°23   Marquer comme non lu.
tama Ecrit le: Jeudi 24 août 2006 à 10:10 Déconnecté(e)    Voir le profil de tama Envoyer un email à tama Envoyer un message privé à tama  

et dans le pire des cas ?
    
./Post n°24   Marquer comme non lu.
geogeo Ecrit le: Jeudi 24 août 2006 à 12:31 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Fin septembre.
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°25   Marquer comme non lu.
geogeo Ecrit le: Vendredi 8 septembre 2006 à 23:59 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Une release approche et je voudrais constituer un groupe de travail dans le but de collecter les bugs, de soumettre des améliorations et de standardiser en quelque sorte le langage.
Le nouveau GFA Basic au niveau du parser est indéfiniment plus rapide que l'ancienne version. Le code est orienté objet et est donc bien plus maintenable.
Comme je l'ai déjà dit la première release se basera sur l'actuel GFA Tem donc aucune différence au niveau des fonctionnalités et de la vitesse d'exécution mais petit à petit GFA Tem passera à la version 2. L'ensemble des tokens seront améliorés et l'étape consistant à analyser l'ensemble des paramètres d'une fonction sera omise (ainsi un gain important sera perceptible).
GFA Basic dans sa version de base n'excédera pas 25 Ko (je parle ici que de GFA Tem et des bibliothèques indispensables) et dans sa version complète moins 64 Ko.
Une extension TI-Basic ainsi que la gestion des ROM_CALLS ont été introduites mais il faudra attendre GFA Tem v2 pour pouvoir pleinement les utiliser.
Concernant l'utilisation même de GFA Basic, les fonctions ont été mieux adaptée à GFA Editor et petit à petit il sera possible d'installer uniquement sur sa machine un seul executable contenant à la fois GFA Editor, le parser et GFA Tem pour une taille qui n'excédera pas 64 Ko.
Le nouveau parser comporte de nombreuses nouveautés, il reste malheureusement encore à faire notamment améliorer GFA Tem et GFA Editor pour voir je pense d'ici Janvier 2007 une version finale et stable.

Donc je recherche des personnes disponibles pour tester les releases avant diffusion et compléter une sorte de liste de bugs et de suggestions sur le site de GFA Basic (http://www.tigen.org/gfabasic)
De plus si certains membres ayant de bonnes connaissances en C ou en ASM veulent participer au projet, qu'ils n'hésitent pas.
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°26   Marquer comme non lu.
tama Ecrit le: Samedi 9 septembre 2006 à 13:07 Déconnecté(e)    Voir le profil de tama Envoyer un email à tama Envoyer un message privé à tama  

pas de problème pour tester :) mais j'ai pas de connaissances sur le C ou sur l'ASM...
    
./Post n°27   Marquer comme non lu.
geogeo Ecrit le: Samedi 9 septembre 2006 à 14:51 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Merci pour ta participation. :)
Inutile d'avoir des connaissances en C ou en ASM pour dénicher les bugs...
-Edité le Samedi 9 septembre 2006 à 14:52 par geogeo-
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°28   Marquer comme non lu.
tama Ecrit le: Dimanche 10 septembre 2006 à 00:20 Déconnecté(e)    Voir le profil de tama Envoyer un email à tama Envoyer un message privé à tama  

:)
je commence quand ? :D
    
./Post n°29   Marquer comme non lu.
geogeo Ecrit le: Dimanche 10 septembre 2006 à 12:19 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Je te ferais signe dans peu de temps, juste avant le lancement de la release.
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°30   Marquer comme non lu.
tama Ecrit le: Dimanche 10 septembre 2006 à 12:56 Déconnecté(e)    Voir le profil de tama Envoyer un email à tama Envoyer un message privé à tama  

ok :)
    
./Post n°31   Marquer comme non lu.
tama Ecrit le: Dimanche 10 septembre 2006 à 12:56 Déconnecté(e)    Voir le profil de tama Envoyer un email à tama Envoyer un message privé à tama  

euh tu peux faire vite fait une liste de ce qu'il y a de nouveau dans cette version ?
    
./Post n°32   Marquer comme non lu.
geogeo Ecrit le: Dimanche 10 septembre 2006 à 14:16 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Je tiens à préciser que les améliorations concernes seulement le programme gfabasic (qui s'occupe d'analyser le texte et de le tokeniser pour qu'il soit exploitable par GFA Tem) et que donc il n'y a pas à l'heure actuelle de nouvelle fonction, le support des niveaux de gris... Il faudra attendre GFA Tem v2.


- Possibilité d'écrire plusieurs instructions sur une même ligne avec le signe :.
- Meilleur gestion des commentaires avec les signes ' ! et REM.
- Possibilité de suffixé un nombre et donc d'optimiser de façon générale un programme. (Genre 1542& sera stocké sur 16 Bits). Très pratique pour l'instruction DATA
- Ajout de la gestion des variables sur 16 Bits, 8 Bits ainsi que des canaux (utile pour gérer des fichiers). Ex: myvar| est une variable contenant un entier sur 8 Bits compris entre 0 et 255. Cela permet d'optimiser de façon générale un programme.
- Ajout du support de librairies, ainsi il est possible d'inclure dans son programme une bibliothèque spécialiser dans la compression, dans le son et donc d'ajouter de nouvelles fonctions directement codées en ASM ou C.
- Meilleure gestion de la mémoire (gestionnaire capable de déterminer les leaks de mémoire et de restaurer l'ensemble des ressources facilement...).
- Meilleure gestion des fichiers en ouverture comme en écriture.
- Ajout du signe d'affectation par la droite ->, permet ainsi de créer des conditions complexes.
- Syntaxe plus permissive ainsi ce code est valide mais certe très peu compréhensible:
If ((5a,4*+)->a) Then:Print 8;''''',,,;:Exit If (a Not),5 And:EndIf


Pourquoi ce genre de chose est valide? Car tout simplement j'ai préféré minimiser le code du vérificateur syntaxique. Du temps que le code écrit soit valide pour GFA Tem, aucune erreur de syntaxe n'est détecter. Certains pourront ainsi optimiser à l'extrême la taille de leur programme mais aussi produire des sources incompréhensibles au détriment des futurs mises à jours.
Ce code pourra ainsi être invalide. Mais néanmoins il montre le fonctionnement du parseur de GFA Basic.

- Meilleure conversion du signe - en négation (-).
- Possibilité d'ajouter facilement de nouvelles fonctionnalités syntaxiques au langage.
- Meilleure gestion de la structure If (peut avoir un comporte pure Basic c'est à dire que l'ensemble de la condition est évaluée ou tout simplement si par avance on sait que l'évaluation d'une instruction force la condition a être validée, l'ensemble des instructions du if ne sont pas toutes testées.
- Possibilité d'écrire entièrement son code avec des variables non suffixées mais de type long (entier sur 32 Bits).
- Avant tokenisation finale, chaque instruction est examinée notamment les paramètres relatifs à une fonction, ainsi inutile pour GFA Tem de vérifier les arguments avant exécution du code. (Quantité de tests sont économisés et ainsi l'exécution d'un programme sera bien plus rapide).
- Support de communication intégrée avec le TI Basic. Il est possible d'inclure directement du code en TI Basic qui sera directement tokenisé dans les programmes et donc directement exécuté.
Ce genre de chose est possible:

TIBASIC
  0->b
  For (a,1,1000)
    Disp "Toto"
    (b+Cos(a/1000))->b
  EndFor
END
ImportVar "b", b#


Ou encore:

  CLS
  A = Cos(0.56)
  B = Log(A)
  C = Sin(B)
  ' Peut se simplifier en
  C = Sin(Log(Cos(0.56)->A)->B)
  ExportVar "a", a, "b", b, "c", c
  TIBASIC
     Disp a, b, c
  END


- Les tokens d'exécution sont mieux organisés et optimisés. De plus ils permetteront pour plus tard d'exécuter du code mi ASM mi tokens de GFA Basic.


Le programme gfabasic ne semble pas être important mais c'est lui en quelque sorte qui dirige le comportement et les focntionnalités de GFA Tem. Ceci n'est rien d'autre qu'une première étape vers une amélioration significative des programmes en GFA Basic sur TI68K.
-Edité le Dimanche 10 septembre 2006 à 14:17 par geogeo-
-Edité le Dimanche 10 septembre 2006 à 17:07 par geogeo-
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°33   Marquer comme non lu.
Pollux Ecrit le: Dimanche 10 septembre 2006 à 16:24 Déconnecté(e)    Voir le profil de Pollux Envoyer un email à Pollux Envoyer un message privé à Pollux  

geogeo :
- Syntaxe plus permissive ainsi ce code est valide mais certe très peu compréhensible:
If ((5a,4*+)->a) Then:Print 8;''''',,,;:Exit If (a Not),5 And:EndIf

Ce serait quoi l'intérêt ? A mon avis ça va complexifier ton parseur et surtout limiter les extensions de langages dont tu pourrais avoir envie plus tard (ça t'empêcherait de rajouter des opérateurs du style de <<, ça t'empêche d'avoir des versions unaires postfixes de tes opérateurs), et je ne parle même pas de la complexité du parsing : a,b+-expressiontrèslongue * = a*(b+-expressiontrèslongue), alors que a,b+-expressiontrèslongue = (a+b) - expressiontrèslongue : le sens que prendra + dépend de ce qui se passe après expressiontrèslongue (i.e. est-ce que l'étoile est présente), autrement dit tu auras besoin d'une mémoire non bornée pour construire l'arbre syntaxique -- c'est généralement quelque chose qu'on essaye d'éviter...
    
./Post n°34   Marquer comme non lu.
geogeo Ecrit le: Dimanche 10 septembre 2006 à 17:06 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Bien entendu je ne conseil pas d'écrire un code comme exposé ci-dessus pour les raisons que tu viens de citer (possibilité d'étendre la syntaxe du langage). Ce code risque bien sûr d'être invalide si par exemple j'ajoute * pour gérer les pointeurs. Néanmoins ce code montre le fonctionnement du parseur comparé à l'ancienne version.
De plus pour obtenir une notation postfixée je me passe d'un arbre syntaxique certe ça me pose des contraintes mais ça me permet de générer ma pile rapidement.
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°35   Marquer comme non lu.
Pollux Ecrit le: Lundi 11 septembre 2006 à 03:00 Déconnecté(e)    Voir le profil de Pollux Envoyer un email à Pollux Envoyer un message privé à Pollux  

ah tiens j'avais pas lu le petit paragraphe après le code dans ton premier post où tu dis qu'il ne faut pas l'utiliser... mais même au niveau vitesse je ne comprends toujours pas l'intérêt d'autoriser du code invalide comme ça #confus# (surtout pour un langage "basic" censé être moins casse-gueule que du C...)

au nom de quoi est-ce que tu serais obligé d'accepter le symbole "*" quand tu parses "2,3*" ? pourquoi est-ce que ça ralentirait si tu refusais simplement de le parser ?!
    
./Post n°36   Marquer comme non lu.
geogeo Ecrit le: Lundi 11 septembre 2006 à 12:59 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Si je détecte le cas de * je dois faire de même pour les autres symbols. De plus ce genre de code Print abs(a)Timer*cos(4) n'est pas syntaxiquement correct à l'état brute mais le symbol * d'après l'expression de gauche et droite est valide. C'est donc à l'utilisateur d'éviter les plus grosses erreurs de syntaxe (mais encore une fois tant que le parser ne renvoit pas d'erreur cela signifie qu'il n'y aura aucun pb d'exécution). Ce code n'est donc pas invalide pour GFA Tem. Il faut bien voir que dans l'exemple donné il n'y a que ce type de code qui est valide pour le parseur ce que je veux dire par là c'est qu'il faut vraiment le faire exprès pour sortir du code comme ça et être sûr de comment il va être interprété.
Je veux pouvoir ajouter facilement plus tard de nouvelles fonctionnalités par exemple * a le sens d'un pointeur et là nous seront d'accord le code 2,3* sera invalide pour le parseur. Si on regarde le TI Basic des TI-Z80 certains tests ont été évités, par exemple le parseur ne regarde pas la correspondance entre parenthèses ouvrantes et fermantes...

DelVar BDelVar CDelVar D
Text(-1,0,90," "
output(1,1,"
sub(Str6,12(int(L1(...))-12,12
[B](A,(B+8)/8 > D

  :{Ans,0
  :Repeat Ans(1
  :{Ans(1)-1,Ans(2)+1/(4Ans(1)-3)-1/(4Ans(1)-1
  :End
  :Disp Ans

Pxl-Change(A+int(.2Ans),B+5fPart(.2Ans
Ans(2){1,fPart(Ans(1)/Ans(2
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°37   Marquer comme non lu.
Pollux Ecrit le: Lundi 11 septembre 2006 à 14:54 Déconnecté(e)    Voir le profil de Pollux Envoyer un email à Pollux Envoyer un message privé à Pollux  

mais ça n'a rien à voir #confus#
le parseur des z80 ferme automatiquement les parenthèses non fermées, c'est pas ambigu du tout et ça ne changera pas dans les versions futures...

et je comprends *vraiment* pas comment ton parseur pourrait être organisé pour pas être capable de faire la distinction entre le * invalide de x,y* et le * valide de x*y : je veux dire, le * doit bien savoir si tous ses arguments sont déjà sur la pile (notation RPN, que tu pourrais alors rejeter) ou si il en attend encore un (notation infixe, valide) #confus#
    
./Post n°38   Marquer comme non lu.
geogeo Ecrit le: Lundi 11 septembre 2006 à 15:23 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


L'algo que j'utilise (l'algorithme de l'aiguillage (shunting algorithm) de Dijkstra) pour passer de la notation infixe à la notation postfixe se présente en gros de cette façon:
Dès que je vois un nombre, une variable, une chaîne de caractères, les signes spécifiques aux instructions Print et Input ou encore un marqueur End Tag. Ils sont directement mis dans la pile d'opérandes. La virgule est ignoré donc 5,4 revient au même que 5 4. Dès que je rencontre le signe * par exemple je regardes la pile d'opérateurs pour savoir si * à une priorité élevé qui lui permet d'être extrait de suite par rapport à un autre opérateur. Admettons que * est extrait. Dans ce cas je vérifie si la pile d'opérandes contient 2 opérandes valides...
Bien sûr il y a un moyen de vérifier que * est valide ou non syntaxiquement mais vérifier ceci durant la phase de création de la notation postfixe risque de compliquer l'algo pour pas grand chose.
Je peux bien entendu auparavant détecter les erreurs de syntaxe mais je devrais tenir compte des opérateurs unaires des exceptions et franchement d'après l'expérience de GFA Basic v1 cela demande pas mal de tests... sachant que nous sommes sur une plateforme limité en mémoire et notamment avec un processeur avec une fréquence assez faible, ma stratégie est de founir un parseur le plus compact et le plus rapide possible et un interpréteur respectant les mêmes conditions au détriment de certaines régles syntaxique.
Encore une fois le code que j'ai exposé représente le seule et unique cas d'acceptation de code mal organisé.


-Edité le Lundi 11 septembre 2006 à 15:24 par geogeo-
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
  :: Index » GFA-Basic TI68K » News » Développement du futur GFA-Basic (59 réponse(s))
Pages : 2/4     « 1 [2] 3 4 » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 181.44ms avec 18 requetes