Cup etJFlex
Introduction
Téléchargement
•CUP
http://www2.cs.tum.edu/projects/cup/java‐cup‐11b.jar
•Jflex +Documentation
http://jflex.de/jflex‐1.5.1.zip
Documentationenligne
•Cup
http://www2.cs.tum.edu/projects/cup/manual.html
•JFlex
http://jflex.de/manual.html
Compilation
java‐jarjava‐cup‐11b.jarparse0.cup
Résultat:
sym.java:latabledessymbolescontenantlesterminaux
parser.java
CUP
Structured’unfichierCUP
UnfichierCUP(extension:.cup)estcomposédequatresectionsquidoivent
êtredansl’ordresuivant:
•déclarationspréliminaires(sectionnonobligatoire)
•Codeutilisateur (sectionnonobligatoire)
•Définitiondesterminauxetdesnonterminaux.
•Précédenceetassociativitédesterminaux.(nonobligatoire)
•Lagrammaire.
1. Lapremièresectionpeutcontenir:
•lenomdupackagedelaclasseparser.java(classegénéréeparCUP).
•Importsdepackagesjava.
•Exemple:package lir;
import java_cup.runtime.*;
2. Codeutilisateur
Cettepeutcontenirducodejavaquiserainclusdansleparseur,
parser code{:
Lecontenuserainclusdanslaclasseparse.
:};
3. Déclarationdeterminaux
Syntaxe:terminal[Type]T1[,T2…];
nonterminal [Type]n1[,n2…];
4. Précédenceetassociativitédesterminaux
precedence left T1[,T2...];
precedence rightT1[,T2...];
precedence nonassoc T1[,T2...];
5. Lagrammaire
pardéfautl’axiomeestlenonterminaldelapartiegauchedelapremièreproduction. La
directive«startwith N;»permetdedéfinirl’axiome.
lagrammaireestdéfinieparunelistedeproductions,exempled’uneproduction
instruction::=affectation|affichage;
onpeutaussiexécuterdesactionssémantiquesécritesenJavasilaproductionestutilisée,
exemple:
expression::=expression:e1ADDexpression:e2{:RESULT=newInteger(e1.intValue()+
e2.intValue());:}
RESULTdésignetoujourslenonterminaldelapartiegauche.
•Exécution:java‐jarchemin/java‐cup‐11b.jarlir.cup.
•Résultat:
•parser.java:implémentationduparseur
•sym.java:contientlesconstantesquireprésententlesterminaux.
1 / 11 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!