Cup etJFlex
Introduction
léchargement
CUP
http://www2.cs.tum.edu/projects/cup/javacup11b.jar
Jflex +Documentation
http://jflex.de/jflex1.5.1.zip
Documentationenligne
Cup
http://www2.cs.tum.edu/projects/cup/manual.html
JFlex
http://jflex.de/manual.html
Compilation
java‐jarjavacup11b.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
parfautl’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/javacup11b.jarlir.cup.
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 linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !