30

-

31

Euh je vois ce que tu veut dire par #define, tu crois que je veut juste faire:

#define SI if(
#define ALORS ){
#define SINON }else{
#define FINIF }
...

Euh c'est pas mon objectif.
Pour l'instant je vise à faire:

si a est égale à 500 et que v est inférieur à 10 alors
ajouter 5 à x dans y
effacer écran
mettre touche dans k
si k est égale à la touche ESC alors
quitter
sinon
aller au label continuer
fin de la condition
fin de la condition

Après je verrais.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

32

liquid> Je sais pas. C'est vrai que ça paraît pas utile, mais pour toutes les instructions de manipulation de listes, je pense qu'une classe de liste chaînée serait intéressante. Puis je fais ça seulement pour apprendre le C++ donc je m'en fous. ^^
Mais tu voudrais qu'il fasse quoi l'interpréteur? Je connais pas le lisp, je fais juste un truc capable de traiter ce genre d'expression:
"(+ 1 2)" -> "3"
"(* 2 4)" -> "8"
"(/ 2 4)" -> "0"
"(+ (- 3 2) 1)" -> "2"
"(< 1 2 3)" -> "1" (car 1 < 2 et 2 < 3)
"(> 1 2 3)" -> "0" (car on n'a pas 1 > 2)
"(car (1 2 3))" -> "1"
"(cdr (1 2 3))" -> "(2 3)"
"(cdar (1 2 3))" -> "2"
"(cddar (1 2 3))" -> "3"
(Copier/Coller de prologin)
Je pense qu'en lisp on peut déclarer des fonctions, variables, etc. mais là je vais pas le faire.
En revanche, dans la question de prologin sur l'interpréteur RPL, on doit gérer des variables.
Si tu veux, on code ça à deux. (Après la réussite de ****, je suis pas très sûr que ça sortira, mais bon... grin)

geogeo> RPL faut voir ça comme une pile. Dernier élément entré, premier sorti.
Quand on donne un nombre il l'empile, quand on donne un nom de fonction, il dépile les arguments de la fonction de la pile.
Par exemple "2 3 +" ça donne une pile avec un élement, 5.
Si je fais "2 3 + 2 *" ça fera 10.
Il existe en plus quelques fonctions particulières pour gérer la pile, comme DUP pour dupliquer l'élement en haut de la pile, DROP pour le supprimer, ou encore SWAP pour échanger les 2 premiers élements de la pile.
avatar
;)

33

geogeo>

Mais si :

#define _erase_écran clrscr
#define _doas(x,y) ((y)=expr(x))
#define _doop(o,x,y) (expr(x) o expr(y))
#define _doerase(what) _erase_##what()
#define IS_AT_à
#define IS_TOUCHE_touche
#define IS_AU_au
#define IS_LAB_label
#define IS_DE_de
#define IS_LA_la
#define _doat(v,x) IS_AT_##v x
#define _dothe(v,x) IS_TOUCHE_##v x
#define _dogo(au,label,x) goto IS_AU_##au IS_AU_##label x
#define _doend(de,la) IS_DE_##de IS_LA_##la}}}
#define HAS_EXPR_(u) (*(void **)0)
#define HAS_EXPR_touche 1
#define expr_touche kbhit()?ngetchx():0
#define expr(x) (__builtin_constant_p(HAS_EXPR_##)?expr_##x:(x))
#define si _iend if((
#define est +0
#define égal )==_doat(
#define égale égal
#define inférieur )<_doat(
#define et &&
#define que
#define _istart ((void)0
#define _iend );
#define alors ))do{{{{_istart
#define sinon _iend}}}}while(0);else do{{{{_istart
#define ajouter _iend _doas(_doop(+,
#define à ,
#define dans ),
#define effacer _doerase(
#define mettre _doas((
#define la _dothe(
#define ESC ,KEY_ESC)
#define quitter _iend return((void)0
#define fin _iend _doend(
#define condition );}while(0);_istart
#define aller _iend _dogo(


Bien sûr, ce n'est pas franchement personnalisable gni Mais au moins ça prouve qu'on peut le faire. On peut même faire des messages de diagnostic un peu plus évolués, du style : "'de' attendu", avec __builtin_constant_p smile

EDIT : pendant que j'y suis,
#define IS_DU_du
#define IS_PROG_programme
#define _dobegin(du,prog) IS_DU_##du IS_PROG_##prog void _main() {{{ _istart
#define OK_FIN_de_la
#define OK_FIN_du_programme
#define _doend(de_du,la_prog) OK_FIN_##de_du##_##la_prog }}}

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

34

Je répéte ce n'est pas mon objectif. roll
Bref je vais voir et essayer de faire un interpreteur.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

35

Pour l'instant je vise à faire:

si a est égale à 500 et que v est inférieur à 10 alors
ajouter 5 à x dans y
effacer écran
mettre touche dans k
si k est égale à la touche ESC alors
quitter
sinon
aller au label continuer
fin de la condition fin de la condition


Bah quoi, mon code est censé marcher avec ce prog tongue

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

36

Ouai mais si je fait ça:

si a=500 and v<10 then
x+5->y
EraseScreen
GetKey->k
if k=ESC then
endprgm
else
goto continuer
endif
endif

Tes defines ne fonctionne plus et tu doit tout redéfinir pour que ce code soit valide.

Mon but et à partir d'un fichier de données qui définie le comprotement du traducteur de traduire le code en langage personnalisé en langage C et ce pour permettre au débutant ne connaissant rien à la syntaxe du C et encore moins les porcessus de programmation, de programmer des logiciels puissant et 'rapidement'.
Bien sûr tout est relatif et ce genre de langage n'arrivera pas à la cheville du C et sera limité.

Je pense aussi que ça facilitera la programmation de logiciel de mathématiques...
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

37

Evidemment, si tu rajoutes des symboles ça ne marche plus, à moins de rajouter un préprocesseur spécial qui transforme "=" en " __égal__ ". Et effectivement c quasi-impossible à personnaliser, mais c'est juste pour montrer que c'est possible smile

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

38

Je vais voir ou j'arrive. On verra bien ce que ça donne. smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

39

BiHi> en gros le lisp c un langage assez simple a apprendre mais assez dur a maitriser, il y a des tonnes de fctions primitives a coder, je vais gerer le systeme de variable et essayer de coder un max de primitives. SI j'y arrive ça sera deja tres bien
avatar
納 豆パワー!
I becamed a natto!!!1!one!

40

Pollux :
#define égal )==_doat(
#define égale égal

Erf, si tu te mets à prendre en compte les fautes d'orthographe de geogeo, on n'est pas sortis de l'auberge grin
avatar
I'm on a boat motherfucker, don't you ever forget

41

lol, y a pire que moi alors arrête. tongue
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

42

Ça me paraît très difficilement réalisable, geogeo, sans vouloir te décourager.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

43

Surtout je vois mal comment l'utilisateur va rentrer son langage roll Tu auras de toutes façons d'une sorte de "langage primaire", même si tu fais un Wizard pour faire un langage. Sans parler des conflits qui ne manqueront pas d'arriver parce que l'utilisateur n'a pas une vue gloable du langage...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

44

Si tu tiens vraiment a faire quelque chsoe, essaye de faire un interpreteur Lisp on calc (ça peut être amusant smile)
http://membres.lycos.fr/pingooz/
Un cafe et deux sucres

45

à propos vous avez des URLS pour le lisp ?

46

avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

47

je sais pas trop si ce projet est hyper utile et si il vaut vraiment le coup d'être programmé... roll sad
en tt cas courage et bonne chance qd même...
avatar

48

Malheuresment l'utilitée sur TI c'est?
Mais pour le club robotique c'est très important. grin
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

49

moi ça me serait utile de faire du lisp sur TI, et puis ça doit etre interessant a coder
avatar
納 豆パワー!
I becamed a natto!!!1!one!

50

merci Kevin smile