π
<-
Chat plein-écran
[^]

Analyse lexicale et syntaxique -nouveau langage oncalc ti83p

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

Re: Analyse lexicale et syntaxique -nouveau langage oncalc t

Unread postby rentech7289 » 20 Sep 2021, 01:52

Par vraiment lexique = orthographe, syntaxe = grammaire. En un mot comment conjuguer un "verbe" si ça n'en n'est pas un ? Exemple: foire est un nom, mais envoyé à un conjugateur qui n'a pas de liste de verbe ça renvoie une conjugaison d'un verbe ayant une terminaison en -oire. Ici le premier thread reconnaîtra les commandes avant de pouvoir vérifier si elles écrites conformément à la grammaire du langage. Ensuite les données sont transférées à un second thread qui lui devra la priorité des calculs, c'est-à-dire gérer la structure des données. Ce qui, il me semble, est la manière la plus rapide de traiter le problème.
La méthode à deux passes, à savoir une première lecture pour vérifier l'orthographe, suivie d'une seconde pour vérifier la syntaxe, en impose au moins une autre pour construire la structure de données, à savoir mettre les calculs dans l'ordre...
User avatar
rentech7289
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 66.4%
 
Posts: 107
Joined: 16 Aug 2021, 02:40
Location: Lorraine luxembourgeoise
Gender: Male
Calculator(s):

Re: Analyse lexicale et syntaxique -nouveau langage oncalc t

Unread postby newprog_creator » 21 Sep 2021, 23:19

Je souhaiterai vous poser une question concernant le formatage de texte sur Ti83 pce. Je me demande s'il existe des programmes, des fonctions des librairies C qui convertissent des programmes/textes de l'éditeur oncalc standard de la calculatrice en pur ascii.
En effet, comme dit plus haut, je développe un compilateur en C pour un nouveau langage de programmation et je commence les tests dans cygwin (sur PC). Je l'adapterai pour qu'il fonctionne sur calculatrice (heureusement, je pense que la conversion sera assez aisée). Pour le lexeur, comme je suis sur PC, c'est du code ascii. Mais je me suis aperçu que ce n'était pas identique dans les fichiers .8xp (en utilisant un éditeur hexadécimal). Pour qu'il y ait compatibilité, il faudrait que je convertisse le programmme source (.8xp depuis l'éditeur de programmes oncalc) en pur ascii. Vous avez une idée ?
Pendant que j'y suis et je tiens à préciser que je suis un newbie sur ti83 pce, dans l'éditeur de programme natif, comment fait ton pour récupérer les caractères typiques du C (soit du ascii) comme par exemple : | ~ &. Mon langage utilisant une syntaxe souvent proche du C, du moins pour les opérateurs; cela sera nécessaire. Si ce n'est pas possible, existe til des programmes oncalc qui permettent l'édition de tels fichiers textes.
Vous l'aurez deviné, les mots clés tel que 'if' sera écrit en deux caractères et non par le raccourci de l'éditeur de programmes oncalc.
Merci par avance
User avatar
newprog_creator
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 14.1%
 
Posts: 47
Joined: 29 Mar 2014, 19:07
Gender: Not specified
Calculator(s):
Class: bac+13

Re: Analyse lexicale et syntaxique -nouveau langage oncalc t

Unread postby Adriweb » 21 Sep 2021, 23:40

Sauf si j'ai pas bien compris, j'ai une lib qui fait ça (dans les 2 sens): https://github.com/adriweb/tivars_lib_cpp :)
Tu peux regarder le fichier de tests pour un exemple d'usage, et le TypeHandler tokenized pour l'implémentation.

Pour info, cette lib est utilisé dans le petit CLI qui est fourni avec, mais aussi dans CEmu (directement en C++) et dans différents outils web (backend c++ ou front end en JS avec le build wasm de la lib grace a emscripten)
Image
MyCalcs
: Help the community's calculator documentations by filling out your calculator info!
MyCalcs
: Aidez la communauté à documenter les calculatrices en donnant des infos sur votre calculatrice ![/url]
Inspired-Lua.org
: All about TI-Nspire Lua programming
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 58.7%
 
Posts: 13611
Images: 1101
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Twitter: adriweb
GitHub: adriweb

Re: Analyse lexicale et syntaxique -nouveau langage oncalc t

Unread postby newprog_creator » 21 Sep 2021, 23:53

Merci pour la réponse. Le lien que tu me donnes est intéressant du coté PC.
Mais du coté oncalc, existe til quelque chose de comparable ?
User avatar
newprog_creator
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 14.1%
 
Posts: 47
Joined: 29 Mar 2014, 19:07
Gender: Not specified
Calculator(s):
Class: bac+13

Re: Analyse lexicale et syntaxique -nouveau langage oncalc t

Unread postby Adriweb » 22 Sep 2021, 00:08

Ah ben oui j'aurais du mieux lire, côté calculatrice il faudra chercher moins complexe (pas de STL ni exceptions disponible pour le C++, dans la toolchain communautaire actuellement).
Il existe des éditeurs de programmes Basic alternatifs, donc ils doivent j'imagine s'occuper de (de)tokenization, tu devrais pouvoir t'en inspirer :) me semble qu'il y a des fonctions systèmes pour récupérer les tokens
Image
MyCalcs
: Help the community's calculator documentations by filling out your calculator info!
MyCalcs
: Aidez la communauté à documenter les calculatrices en donnant des infos sur votre calculatrice ![/url]
Inspired-Lua.org
: All about TI-Nspire Lua programming
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 58.7%
 
Posts: 13611
Images: 1101
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Twitter: adriweb
GitHub: adriweb

Re: Analyse lexicale et syntaxique -nouveau langage oncalc t

Unread postby rentech7289 » 22 Sep 2021, 03:42

Je me demande s'il existe des programmes, des fonctions des librairies C qui convertissent des programmes/textes de l'éditeur oncalc standard de la calculatrice en pur ascii.

Le python standard est nativement au standard utf-8, c'est-à-dire compatible ASCII. Il te suffit donc de copier le contenu de tes fichiers de la TI-83 depuis l'éditeur oncalc dans un éditeur python pour vérifier leur cohérence. Dès qu'un caractère ne correspond plus, tu n'aura plus qu'à utiliser les fonctions natives python ord et chr, qui correspondent respectivement aux fonctions ord et char de chez Texas. Il se peut que ait à écrire un programme de conversion. Le plus simple étant de créer un dictionnaire contenant les valeurs ord des caractères mal interprétés de la TI-83 en tant que clés et de leur associer directement le caractère alphanumérique au autre correspondant en tant que valeur.
Pour aller de python vers la TI-83, il te suffira de faire l'inverse en suivant la même procédure: vérifier que ton fichier python s'affiche à l'identique sur la TI-83. Il te faudra peut-être alors un autre dictionnaire avec les valeurs ord de python et pour les valeurs c'est là que ma solution bloque: je n'ai pas de TI-83. Je ne sais pas comment terminer cette partie mas il faut comprendre que les valeurs associées aux clés à python doivent correspondre aux caractères de la TI-83.
Utiliser les valeurs des ord de la TI-83 serait une solution, mais il faut ensuite reconstituer les chaînes de caractères dans la TI-83. Je pense que la meilleure solution serait d'utiliser le caractère python correspondant au ord du caractère de la TI-83. Le problème est que ce caractère pourrait ne pas être reconnu par la TI-83 et je ne sais pas comment sont stockées les caractères dans une TI-83. Je ne dit pas que c'est impossible mais qui ne tente rien...
User avatar
rentech7289
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 66.4%
 
Posts: 107
Joined: 16 Aug 2021, 02:40
Location: Lorraine luxembourgeoise
Gender: Male
Calculator(s):

Re: Analyse lexicale et syntaxique -nouveau langage oncalc t

Unread postby Adriweb » 22 Sep 2021, 05:09

Je crois qu'il parle des programmes Basic, pas de scripts Python, mais bref imaginons.

Pour les programmes Basic, c'est du tokenizé donc il faut s'occuper des tokens dans les 2 sens, cf le code de a lib C++ (et autres implémentations et docs disponibles sur le net). Il faut lire le fichier, faire du maximal munch (a partir de la liste des tokens connus) sur les caractères pour trouver le bon match, et convertir. Bref, rien de très compliqué, mais ce n'est pas un simple mapping 1-1 entre caractères, donc.

Pour les scripts Python, le code est directement en texte UTF8 dans l'appvar, donc c'est tres simple. Cf aussi le code de ma lib pour le read/write si jamais ca intéresse quelqu'un.
Image
MyCalcs
: Help the community's calculator documentations by filling out your calculator info!
MyCalcs
: Aidez la communauté à documenter les calculatrices en donnant des infos sur votre calculatrice ![/url]
Inspired-Lua.org
: All about TI-Nspire Lua programming
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 58.7%
 
Posts: 13611
Images: 1101
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Twitter: adriweb
GitHub: adriweb

Re: Analyse lexicale et syntaxique -nouveau langage oncalc t

Unread postby Lionel Debroux » 22 Sep 2021, 07:22

Une nouvelle fois, le Python n'a pas grand chose à faire ici, à la fois pour des raisons de limitation de taille et des questions de réduction de la portabilité - beaucoup de TI-eZ80 ne peuvent pas avoir Python :)
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 9.9%
 
Posts: 6754
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
Class: -
GitHub: debrouxl

Re: Analyse lexicale et syntaxique -nouveau langage oncalc t

Unread postby rentech7289 » 22 Sep 2021, 07:37

Je crois qu'il parle des programmes Basic, pas de scripts Python, mais bref imaginons.

Bonjour Adriweb
Je parle d'utiliser python comme éditeur de contenu d'un fichier de TI-83 puisqu'il est nativement utf-8, par ce biais il est plus facile d'en vérifier les données. Si écriture de script il y aura ce sera uniquement pour corriger les erreurs de lecture.
Par contre, le point sur lequel je ne suis pas convaincu est celui des programmes: pourquoi ne pas les réécrire directement dans le nouveau langage.

ti83 pce, dans l'éditeur de programme natif, comment fait ton pour récupérer les caractères typiques du C (soit du ascii)

Bonjour newprog_creator:
Si tu parles, du programme PC qui reprend les mêmes fonctionnalités que la TI-83 tu as deux fonctions similaires à celles que j'ai évoquées dans mon post au-dessus de Adriweb:
ord qui donne la valeur décimale d'un caractère,
char qui donne le caractère correspondant à une valeur décimale.
NOTA: Ces deux fonctions n'acceptent qu'un caractère ou une valeur à la fois!
Ce qui veut dire que tu dois itérer sur ta chaîne de caractères en envoyant le caractère en paramètre dans ord, en stockant le résultat à chaque boucle dans un tableau ou une liste.
Pour reconstituer la chaîne de caractères, tu itères dans ton tableau ou ta liste avec char en concaténant le résultat avec les caractères précédents, la chaîne de caractère de départ étant une chaîne vide.
PS: Cette partie du message m'avait échappée, le post de Adriweb m'a fait remarquer ce détail en relecture.
User avatar
rentech7289
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 66.4%
 
Posts: 107
Joined: 16 Aug 2021, 02:40
Location: Lorraine luxembourgeoise
Gender: Male
Calculator(s):

Re: Analyse lexicale et syntaxique -nouveau langage oncalc t

Unread postby rentech7289 » 22 Sep 2021, 07:52

Une nouvelle fois, le Python n'a pas grand chose à faire ici, à la fois pour des raisons de limitation de taille et des questions de réduction de la portabilité - beaucoup de TI-eZ80 ne peuvent pas avoir Python

Je suis d'accord avec la fin de votre post mais pas le point de départ: python est la meilleure solution oncalc. Il ne s'agit ici que d'afficher du texte Les dictionnaires sont gérés sur ma nspire, sur TI_83 je sais pas, mais sur PC cette solution est encore plus viable. Je reconnais que j'aurais dû préciser le cadre d'utilisation de python et je n'ai fait qu'évoquer le python standard et un éditeur en python... J'aurais préciser dans mon message sur cette solution était plutôt orientée PC. Je pense que de ce point de vue, nous voyons le même intérêt à l'utilisation de python. Dans le cas contraire, veuillez, s'il-vous-plaît, m'éclairer.
User avatar
rentech7289
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 66.4%
 
Posts: 107
Joined: 16 Aug 2021, 02:40
Location: Lorraine luxembourgeoise
Gender: Male
Calculator(s):

Previous

Return to Langages alternatifs

Who is online

Users browsing this forum: No registered users and 4 guests

-
Search
-
Social
-
Featured topics
Concours de rentrée 2021 - La Geste d'Alrys
Concours de rentrée 2021 - Synchro-donjon !
Comparaisons des meilleurs prix pour acheter sa calculatrice !
25€ remboursés par Casio sur l'achat de ta calculatrice fx-CP400 d'ici le 31 Octobre 2021
Journées APMEP 2021 à l'IUT de Bourges les 24-25 Octobre. Viens rencontrer Casio, NumWorks, TI et Vittascience.
Coque NumWorks édition limitée Octobre 2021 à gagner.
123456
-
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.
544 utilisateurs:
>535 invités
>4 membres
>5 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)