Tokenization de code java

sylla -  
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   -

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 1599 Date d'inscription   Statut Membre Dernière intervention   36
 

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
Ousmane
 

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 1599 Date d'inscription   Statut Membre Dernière intervention   36
 

ç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 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879
 

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