Parser ou tokenizer ?

Fermé
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019 - 6 févr. 2017 à 17:17
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019 - 6 févr. 2017 à 19:34
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

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

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
6 févr. 2017 à 19:26
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.
0
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019
6 févr. 2017 à 19:34
Merci beaucoup pour ta réponse,

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 ?
0