Parser ou tokenizer ?
mikis69
Messages postés
168
Date d'inscription
Statut
Membre
Dernière intervention
-
mikis69 Messages postés 168 Date d'inscription Statut Membre Dernière intervention -
mikis69 Messages postés 168 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous et à toutes,
Je vous expose un peu mon problème car actuellement, je suis étudiant en dernière année d'informatique et je dois réaliser un travail de fin d'étude.
Ce travail est un outil de détection de code clone que je dois coder en java.. mais pour le commencer, il faudrait que je sois certain de m'orienter dans la bonne direction..
En gros pour la détection de code clone entre un fichier et d'autres, je dois créer un arbre des suffixes pour le premier fichier et ensuite le comparer avec les autres (ce n'est pas très important cette partie)
L'important ici est la partie avant de créer l'arbre des suffixes :
Pour créer l'arbre des suffixes, j'ai besoin d'un 'token', surement composé de caractères et se terminant par '$' et où les caractères représenteraient les instructions du fichier à comparer.
Exemple :
Si j'ai un fichier java avec ce code
j'aurai besoin d'un token avec abcddefghd ... $ pour créer mon arbre des suffixes.
où a = le if, b = (, c = nom de variable, d = '=', e = ), f = un int, g = {, h = un nom de variable
Comment obtenir ce token maintenant ? Avec l'aide de quels outils ? Y a t il des libraires qui font ce travail ? Personnellement, j'étais parti pour utiliser un parseur mais je ne comprend pas trop leur fonctionnement car il ne renvoie pas de tokens..
Résumé :
Je prend un fichier (admettons java) et je le lis mot par mot. Et pour chaque mot lu, je demande à un 'outil' de me renvoyer le caractère correspondant afin de construire mon token pour le fichier.
Autre remarque :
Il faudrait que je puisse également lire un fichier (qui n'est pas en java) et créer également un token pour ce fichier qui est d'un autre langage..
J'espère que c'est assez clair, si pas, je répondrai volontiers à vos question.
Merci pour votre aide et votre temps,
Mikis
Je vous expose un peu mon problème car actuellement, je suis étudiant en dernière année d'informatique et je dois réaliser un travail de fin d'étude.
Ce travail est un outil de détection de code clone que je dois coder en java.. mais pour le commencer, il faudrait que je sois certain de m'orienter dans la bonne direction..
En gros pour la détection de code clone entre un fichier et d'autres, je dois créer un arbre des suffixes pour le premier fichier et ensuite le comparer avec les autres (ce n'est pas très important cette partie)
L'important ici est la partie avant de créer l'arbre des suffixes :
Pour créer l'arbre des suffixes, j'ai besoin d'un 'token', surement composé de caractères et se terminant par '$' et où les caractères représenteraient les instructions du fichier à comparer.
Exemple :
Si j'ai un fichier java avec ce code
if(nombre == 1) { flag = true; } else { flag = false; }
j'aurai besoin d'un token avec abcddefghd ... $ pour créer mon arbre des suffixes.
où a = le if, b = (, c = nom de variable, d = '=', e = ), f = un int, g = {, h = un nom de variable
Comment obtenir ce token maintenant ? Avec l'aide de quels outils ? Y a t il des libraires qui font ce travail ? Personnellement, j'étais parti pour utiliser un parseur mais je ne comprend pas trop leur fonctionnement car il ne renvoie pas de tokens..
Résumé :
Je prend un fichier (admettons java) et je le lis mot par mot. Et pour chaque mot lu, je demande à un 'outil' de me renvoyer le caractère correspondant afin de construire mon token pour le fichier.
Autre remarque :
Il faudrait que je puisse également lire un fichier (qui n'est pas en java) et créer également un token pour ce fichier qui est d'un autre langage..
J'espère que c'est assez clair, si pas, je répondrai volontiers à vos question.
Merci pour votre aide et votre temps,
Mikis
1 réponse
Bonjour,
Déjà concernant les Tokenizer, ils sont dépréciés depuis Java 4, et devraient être remplacés par l'usage d'expressions régulières.
Quant aux parsers, c'est assez vague, puisque l'on pourrait considérer que toute manipulation de String est du parsing...
Sinon, ce que tu veux faire c'est l'analyse grammaticale du langage Java, c'est le travail que fait notamment le compilateur, mais le nombre de règles à prendre en compte est très important.
Voir les spécifications Java, notamment les chapitres 2 et 3.
Déjà concernant les Tokenizer, ils sont dépréciés depuis Java 4, et devraient être remplacés par l'usage d'expressions régulières.
Quant aux parsers, c'est assez vague, puisque l'on pourrait considérer que toute manipulation de String est du parsing...
Sinon, ce que tu veux faire c'est l'analyse grammaticale du langage Java, c'est le travail que fait notamment le compilateur, mais le nombre de règles à prendre en compte est très important.
Voir les spécifications Java, notamment les chapitres 2 et 3.
Et donc il n existe aucun outil (une grammaire java par exemple?) Permettant de reprendre tout les termes spécifiques à un langage (ici java) et me permettre de construire mon token ?