Bonsoir,
j'ai un projet à faire qui est : programmer un analyseur lexical en java de la grammaire définie ci-dessous. Mais je n'ai pas la moindre idée sur comment je dois procéder pour y arriver. :?
Pièce jointe 163659
Version imprimable
Bonsoir,
j'ai un projet à faire qui est : programmer un analyseur lexical en java de la grammaire définie ci-dessous. Mais je n'ai pas la moindre idée sur comment je dois procéder pour y arriver. :?
Pièce jointe 163659
La pièce jointe, c'est casse-pied. Fait un résumé concis et précis sur ton premier point de blocage.
Parce que, franchement, je ne sais pas pourquoi tu a mis une pièce jointe en docx pour ça :weird:Citation:
Déclaration de variables*:
Ident2Var {«*,*» Ident2Var} «*:*» Ident2Type «*;*»
Déclaration de constantes*:
Ident2Constante «*=*» Valeur «*;*»
Bloc = «*Debut*» Instruction {«*;*» Instruction} «*Fin*»
Instruction = Affectation |Alt | IterationWhile | IterationDo |
IterationFor | Bloc.
Affectation = Ident2Var «*<-*» Expression.
Alt = AltSimple | AltComplete.
AltSimple = «*=>*» Expression «*:*» Instruction.
AltComplete = «*==>*» Expression «*:*» Instruction «*::*» Instruction.
IterationWhile = «*<=>*» Expression «*:*» Instruction.
IterationDo = «*<==>*» Instruction «*:*» Expression.
IterationFor = «*<=*:=>*» IdentVar ValInitiale ValFinale ValeurPas «*:*»
Instruction.
Hell O everybody,
En général, les analyseurs lexicaux sont souvent formés d'une structure sous la forme d'arbre.
Tes feuilles sont tes expressions.
Un conseil : fais un dessin des composants que tu souhaites représenter.
Ensuite, imagine une structure algorithmique pour les représenter.
Enfin, pisses le code qu'il faut.
Bonne chance
si tu veux/peux , regarde du cote de ANTLR , tu écris ta grammaire et l'outil génère le code Java pour faire le traitement
Il me semble que j'avais utilisé JFlex/Cup pour faire ce genre de chose, ça marchait plutôt bien
Effectivement, il est préférable d'utilisé JFlex ou JCup pour ce genre de chose.
Question de ne pas réinventé la roue et tout.
Cordialement,
Patrick Kolodziejczyk.