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 » Forum Ti68K » Projets » GFA Basic oncalc (128 réponse(s))
./REPRISE DU POST PRECEDENT (post n°38)   Marquer comme non lu.
geogeo Ecrit le: Vendredi 16 juillet 2004 à 12:15 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


LOL
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°39   Marquer comme non lu.
Ephyx Ecrit le: Vendredi 16 juillet 2004 à 12:18 Déconnecté(e)    Voir le profil de Ephyx Envoyer un email à Ephyx Visiter le site WEB de Ephyx Envoyer un message privé à Ephyx  


Excellent %)
Lemuria & Sirius-B, chouette :D
    
./Post n°40   Marquer comme non lu.
Sasume Ecrit le: Vendredi 16 juillet 2004 à 14:11 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

:(
    
./Post n°41   Marquer comme non lu.
geogeo Ecrit le: Samedi 17 juillet 2004 à 00:27 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Voici une première version qui ne fait pas grand chose, l'interpréteur est capable d'effectuer un calculer mathématique sans fonction. Calcul qui peut se faire avec flottants et entiers.

Sur la première ligne s'affiche le temps d'execution et en dessous le résultat en entier et en flottant.

Télécharger le programme

Le fonctionnement est simple, il suffit d'envoyer l'executable sur la TI puis le fichier TEXT test.xxt

De taper la ligne gfabasic("test") et le résultat s'affiche à l'écran sous forme d'entier et de flottant.
A savoir que l'interpréteur analyse chaque ligne donc il faut mieux entrer un seul calcul. Pour l'instant il ne reconnait pas les variables. Juste de simple opérations mathématiques avec parenthèses.

[EDIT] Pour les sources je dois faire des optimisations principalement sur les conditions... mais je préfère faire ça à la fin quand le langage sera totalement défini...
-Edité le Samedi 17 juillet 2004 à 00:28 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°42   Marquer comme non lu.
Sasume Ecrit le: Samedi 17 juillet 2004 à 09:26 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Mais pourquoi le langage n'est-il pas encore bien défini ?
    
./Post n°43   Marquer comme non lu.
Lionel Debroux Ecrit le: Samedi 17 juillet 2004 à 09:38 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

Sasume a raison: il vaut mieux définir bien le langage avant de coder, en se mettant à plusieurs si nécessaire (pour essayer d'oublier aussi peu de choses que possible).
Lionel Debroux - membre de TICT.
    
./Post n°44   Marquer comme non lu.
Sasume Ecrit le: Samedi 17 juillet 2004 à 10:20 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Mais en fait, je pensais surtout que le langage existait déjà donc était bien défini, non ?
    
./Post n°45   Marquer comme non lu.
Thor Ecrit le: Samedi 17 juillet 2004 à 10:23 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Non je pense qu'il voulez dire : quand son langage sera bien défini c'est à dire quand toute le langage sera "programmé" sur Ti il débutera à modifié et amélioré les conditions
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°46   Marquer comme non lu.
geogeo Ecrit le: Samedi 17 juillet 2004 à 12:02 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


C'est ça en effet. :)
Et oui le langage existe vraiment et est clairement défini. :)
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°47   Marquer comme non lu.
geogeo Ecrit le: Samedi 17 juillet 2004 à 20:03 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Définition des régles du langage:

Les opérateurs:

On distingue les opérations numériques et les opérations entre chaînes de caractères, selon que le résultat est un nombre ou une chaîne de caractères (string).

Opérateurs sur les chaînes de caractères:

  • La concaténation de chaînes de caractères par l'opérateur + :

    Les chaînes de caractères sont mises à la suite les unes des autres pour n'en former plus qu'une.

    Exemple:
    A$="Basic"
    B$="-"
    C$="GFA"

    Les 3 chaînes donne: A$+B$+C$ = "Basic-GFA"

  • Les fonctions sur les chaînes de caractères:

    Left$, Right$, Mid$, Space$, String$, Str$


    Les opérateurs numériques:

    Il y a 4 types d'opérateurs numériques:
  • Opérateurs arithmétiques
  • Opérateurs de comparaison
  • Opérateurs logiques
  • Fonctions numériques



    I- Opérateurs numériques:

    Le Basic GFA connait les opérations arithmétiques suivantes (opérations de calcul) :


    ^          Puissance
    (-)         Signe négatif
    *           Multiplication
    /           Division
    MOD      Modulo, reste de la division entière soit 3.7 MOD 0.7 = 0.2
    +          Addition
    -           Soustraction



    II- Opérateurs de comparaison:

    Les opérateurs de comparaison s'appliquent à deux expressions numériques ou à deux chaînes de caractères.

    Suivant la valeur booléenne prise par le résultat (vrai ou faux), on attribut à ce résultat la valeur -1 (vrai) ou 0 (faux) (comme ce résultat est dans tous les cas un nombre, la comparaison de deux chaînes de caractères est aussi considérée comme une opération numérique).


    =          Egal
    >          Supérieur
    <          Inférieur
    <>        Différent de
    >=        Supérieur ou égal
    <=        Inférieur ou égal


    La comparaison entre deux chaînes de caractères obéit aux régles suivantes:

  • Deux chaînes de caractères sont égales, si elles sont rigoureusement identiques (tous les caractères sont pris en compte, même les espaces et la ponctuation).
  • Pour la comparaison de deux chaînes de caractères, l'interpréteur procéde de la manière suivante:

    L'interpréteur compare les valeurs des codes ASCII des deux premiers caractères des deux chaînes. Si ces valeurs sont différentes, alors la chaîne avec le code ASCII le plus élevé est 'supérieur' à l'autre.

    Si les valeurs sont identiques, on compare les deux codes ASCII des deux caractères suivants, et ainsi, de suite jusqu'à ce que ou bien les deux caractères sont différents, ou bien la fin d'une des deux chaînes a été atteinte. Dans ce dernier cas la chaîne la plus longue est la plus 'grande'.


    III- Opérateurs logiques:

    Les opérateurs logiques permettent de relier entre elles des expressions ou des relations entre expressions.

    En régles générale, les opérateurs logiques s'appliquent à des variables booléennes (une variable booléenne peut prendre deux valeurs: Vrai ou Faux) et donne un résultat également booléen. De plus, on attribue à toute expression numérique différente de 0 la valeur Vrai et à toute valeur numérique égale à 0 la valeur faux.


    AND     ET logique
    OR       OU logique inclusif
    XOR     OU logique exclusif
    NOT     NON logique
    IMP      Implication
    EQV     Equivalence


    Les opérateurs logiques sont principalement utilisés pour les conditions qui permettent différents branchements.


    IV- Priorité des opérateurs:


    ()                                    Les parenthèses sont prioritaires sur tout le reste. 
    Elles permettent de réaliser n'importe quelle opération.
    ^                                    Puissance
    (-)                                  Signe négatif
    *. /                                 Multiplication et division
    MOD                                Modulo
    +, -                                 Addition et soustraction
    =, <>, <, >, <=, >=        Opérations de comparaison
    NOT, AND, OR, XOR, IMP, EQV Opérations logiques

    -Edité le Samedi 17 juillet 2004 à 20:04 par geogeo-
    -Edité le Samedi 17 juillet 2004 à 20:38 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°48   Marquer comme non lu.
    Sasume Ecrit le: Samedi 17 juillet 2004 à 20:09 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

    Pour l'affectation, tu utilises quoi ?

    Comment comptes-tu gérer les opérations de concaténation sur les chaines ? Il te faudra faire une gestion de variables assez sophistiquée, non ?
        
    ./Post n°49   Marquer comme non lu.
    Kevin Kofler Ecrit le: Samedi 17 juillet 2004 à 20:19 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


    Et il faudrait des types différents pour entiers et flottants, pas juste "numérique".
    Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
    Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
    Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

    Participez à la reprise de Ti-Gen!
        
    ./Post n°50   Marquer comme non lu.
    geogeo Ecrit le: Samedi 17 juillet 2004 à 20:30 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


    Grammaire du langage:

    Ordre des TAGS avec combinaison précédente possible:

    Variable (TAG_VAR):

    TAG_SIGN
    TAG_COMPARE
    TAG_NEGATIF
    TAG_PARENTH_OPEN 
    TAG_PARENTH_CLOSE  (Ajouter TAG_MUL)


    Nombre (TAG_NUMBER):

    TAG_SIGN
    TAG_COMPARE
    TAG_NEGATIF
    TAG_PARENTH_OPEN 
    TAG_PARENTH_CLOSE (Ajouter TAG_MUL)


    Signes (+, -, *, /, ^) (TAG_SIGN):

    TAG_VAR
    TAG_NUMBER
    TAG_PARENTH_OPEN
    TAG_PARENTH_CLOSE


    Comparaison (TAG_COMPARE):

    TAG_VAR
    TAG_NUMBER
    TAG_PARENTH_OPEN
    TAG_PARENTH_CLOSE


    Signe négatif (TAG_NEGATIF):

    TAG_SIGN
    TAG_COMPARE
    TAG_PARENTH_OPEN
    TAG_PARENTH_CLOSE (Ajouter TAG_MUL)


    Espace (TAG_SPACE):

    TAG_VAR
    TAG_NUMBER
    TAG_PARENTH_CLOSE


    Parenthèse ouverte (TAG_PARENTH_OPEN)

    TAG_VAR (Ajouter TAG_MUL)
    TAG_NUMBER (Ajouter TAG_MUL)
    TAG_SIGN
    TAG_COMPARE
    TAG_NEGATIF
    TAG_PARENTH_OPEN
    TAG_PARENTH_CLOSE (Ajouter TAG_MUL)


    Parenthèse fermée (TAG_PARENTH_CLOSE)

    TAG_VAR
    TAG_NUMBER
    TAG_PARENTH_OPEN
    TAG_PÄRENTH_CLOSE


    Fin de ligne (TAG_EOFLINE):

    TAG_VAR
    TAG_NUMBER
    TAG_PARENTH_CLOSE

    -Edité le Dimanche 18 juillet 2004 à 00:04 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°51   Marquer comme non lu.
    geogeo Ecrit le: Samedi 17 juillet 2004 à 20:37 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


    Pour l'affectation, tu utilises quoi ?

    Comment comptes-tu gérer les opérations de concaténation sur les chaines ? Il te faudra faire une gestion de variables assez sophistiquée, non ?


    Le signe =, déterminer si c'est une affectation ou comparaison se fait dans la pile triée.

    Comment comptes-tu gérer les opérations de concaténation sur les chaines ? Il te faudra faire une gestion de variables assez sophistiquée, non ?


    Il suffira juste de changer les TAGS, la grammaire du langage difinira les possibilités de calculs ainsi l'expression tokenisée donne.

    TAG_STRING, TAG_VAR, TAG_ADDSTRING pour "toto"+variable
    ou encore
    TAG_STRING, TAG_STRING, TAG_EGALSTRING pour "toto"="tat"

    En bref vous avez une aperçu juste des TAGS de traitements et non des tokens qui serviront à l''execution du code.


    Et il faudrait des types différents pour entiers et flottants, pas juste "numérique".


    La phase d'optimisation je ne peux pas malheuresement.
    Mais par contre le type de la variable donnera les tokens et donc les opérations à effectuer, soit avec flottants soit avec entiers soit avec booléans. Il faut que je réfléchi à ça plus en détails. :)
    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°52   Marquer comme non lu.
    Sasume Ecrit le: Dimanche 18 juillet 2004 à 00:42 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

    Pour la concaténation des chaines, je parlais de l'exécution du programme, pas de l'analyse syntaxique.

    Enfin, tu dois pouvoir te débrouiller avec des realloc tout bêtes, mais ça risque d'être bien lent...
    Et il te faudra libérer l'espace pris par tes variables également, lorsqu'elles seront détruites.
        
    ./Post n°53   Marquer comme non lu.
    geogeo Ecrit le: Dimanche 18 juillet 2004 à 01:18 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


    Ah c'est au gestionnaire de mémoire de faire ça. :)
    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°54   Marquer comme non lu.
    Sasume Ecrit le: Dimanche 18 juillet 2004 à 09:58 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

    Et il compte se débrouiller comment, ce gestionnaire ?
        
    ./Post n°55   Marquer comme non lu.
    geogeo Ecrit le: Dimanche 18 juillet 2004 à 12:10 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


    Tables de variables avec un index. Un bloc d'origine de 2 Ko, parcours de la table et recherche d'un espace mémoire pour mettre une chaîne, si cet espace est trop petit on agrandi le bloc de 2 Ko, si on doit redimensionner une chaîne il y a 2 solutions, soit on déplace tout ou soit on change l'adresse et on fait come si on ajouté une nouvelle chaîne de caractères. La première solution permet d'avoir un bloc parfait non fragmenté mais c'est assez lent, l'autre on a un bloc fragmenté et dans ce cas il faut une routine de Garbage collect... Mais je suis loin de cette partie, il faut que j'y travail.
    A savoir qu'avant execution du programme toutes les variables sont connues, donc pas de problèmes pour les variables type entier, flottant ou booléenne.
    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°56   Marquer comme non lu.
    naPO Ecrit le: Dimanche 18 juillet 2004 à 12:28 Déconnecté(e)    Voir le profil de naPO Envoyer un email à naPO Visiter le site WEB de naPO Envoyer un message privé à naPO  


    Hummmm un remake du Basic Locomotive j'adore #love# !!!!
    Tel un automate, le dinosaure noir s'avance vers le chef des toutous-bombes et dit : "SCHNAAA SCHNAAA SCHNAPPI ! SCHNAPPI-SCHNAPPI-SCHNAPP !!!!!!" (en attendant une meilleure signature)


    Avec de vrais morceaux de pattes d'eph :
    http://gilou82.free.fr/Vrac/KSO-BAN.png
        
    ./Post n°57   Marquer comme non lu.
    geogeo Ecrit le: Lundi 19 juillet 2004 à 00:21 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


    Une autre version qui a été très optimisé principalement sur la gestion de l'analyseur syntaxique de base.

    Il y a une ébauche de gestion des variables.

    Télécharger le programme

    Pour l'instant il est incapable d'effectuer un calcul avec des variables juste avec des nombres (entier ou virgule flottante).

    Les signes reconnus sont:
    +, -, *, /, ^, (, ), (-), AND, OR, XOR, IMP, EQV
    Les commentaires avec '

    Le programme affiche le temps d'execution et le contenu de la pile triée est correcte.
    Ca serait sympa de tester le programme avec des calculs complexes et voir si le résultat est correct et vérifier qu'il n'y a qu'un seul élément dans la pile soit le résultat.

    Pour tester il suffit d'envoyer le programme puis de créer un fichier TEXT soit par exemple test, d'écrire sur la première ligne un calcul et d'executer dans l'écran home: gfabasic("test").
    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 » Forum Ti68K » Projets » GFA Basic oncalc (128 réponse(s))
    Pages : 3/7     « 1 2 [3] 4 5 6 7 » »|

    .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 63.83ms avec 18 requetes