Tokenization de code java

sylla - Modifié le 18 déc. 2023 à 20:07
mamiemando Messages postés 33084 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 avril 2024 - 18 déc. 2023 à 20:00

Bonjour

J'ai un devoir en théorie de langage que je ne peux pas résoudre depuis 1 mois, j'ai besoin d'aide .

Écrire un programme python avec interface graphique qui contient :

  • une zone de texte où l'on doit saisir un code source java,
  • un bouton, qui une fois cliqué déclenche l'analyse syntaxique.

S'il y'a une erreur de syntaxe le programme affiche le numéro de la ligne avec un message explicite.

A voir également:

4 réponses

mariam-j Messages postés 1039 Date d'inscription mercredi 9 mars 2022 Statut Membre Dernière intervention 29 avril 2024
Modifié le 18 déc. 2023 à 11:19

Bonjour,

Soit tu adapte l'analyse au bout de code saisi (dont tu connais la syntaxe), par comparaison de chaines.

Soit tu fais un analyseur syntaxique "générique" (pour le langage saisi)

Mais là,c'est une autre paire de manches...

Cela dépend du cours auquel ça se rapporte.

0

La peut être j'ai mal formulé 

C'est ce le code source qui sera saisi est du langage Java.maintenant si dans le code source il y'a des erreurs syntaxiques dés que j'appuie sur le button il affiche la ligne qui contient l'erreur et explique l'erreur ou les erreurs syntaxiques repérées 

0
mariam-j Messages postés 1039 Date d'inscription mercredi 9 mars 2022 Statut Membre Dernière intervention 29 avril 2024
Modifié le 18 déc. 2023 à 16:19

ça ne change rien à ma réponse.

Après, tu peux toujours vérifier que la machine "Java" (qui doit bien comporter son analyseur syntaxique, débugueur) est présente sur le pc, et faire un appel Python à l'analyseur de la machine "Java". (élégant mais pas facile)

Sinon, c'est la méthode "bourrin" (qui ne fera pas plaisir à ton prof) de la première option de ma première réponse (qui relève de l'illusionnisme)

0
mamiemando Messages postés 33084 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 avril 2024 7 749
Modifié le 18 déc. 2023 à 20:08

Bonjour,

En python il existe un modèle spécifiquement dédié à l'analyse syntaxique, c'est le module ast, qui s'appuie sur un fichier qui spécifie la grammaire du langage (voir ici). Par exemple, pour python, la grammaire est spécifiée dans les sources de python (e.g. /usr/src/python3.12/Parser/Python.asdl
sous Linux). Malheureusement, c'est le seul fichier asdl livré avec python. Toute la difficulté sera donc de trouver un fichier asdl pour java si tu souhaites utiliser ce module.

Une autre piste consiste à  regarder certains module python dédiés à la tokenization de code java, notamment antlrsctokenizer ou code-tokenizer

En outre, le dépôt d'antlr pointe vers ce dossier qui rassemble les grammaires de nombreux langages de programmation (au format g4 donc vraisemblablement propre à antlr), dont java. À défaut d'utiliser antlr, je suppose que ça pourrait être un point de départ pour écrire la grammaire au format asdl.

Bonne chance

0