1 CSI3525: Concepts des Languages de Programmation Notes # 3: Description Syntaxique des Languages
2 Pourquoi Decrire les Languages de Programmation? Et Comment? n Les languages de programmation sont implementes et utilises par un grand nombre de personnes. Ils doivent donc etre compris par toutes ces personnes, avant meme quils nexistent ou quils soient utilises. n La clarite et la precision de la description sont tres intimement lies au succes dun nouveau language. n La description dun language se divise en deux parties: description syntaxique et description semantique. n La syntaxe correspond a la description de la forme des expressions, instructions et unites de programmes. n La semantique correspond a leur signification. n La syntaxe est plus facile a descrire que la semantique.
3 La Description Syntaxique: Definitions n Les languages sont des chaines de caracteres provenant dun alphabet. n Chaque chaine represente une phrase. n Il existe de petites unites syntaxiques appelees des lexemes. n Les tokens dun language representent des categories de lexemes. Certains tokens ne representent quun seul lexeme, mais dautres en representent plusieurs. n Les languages peuvent etre decrits de deux facons distinctes: reconnaissance ou generation.
4 Reconaisseur de Languages n Etant donne un language L qui utilise lalphabet, on peut construire un mechanisme de reconnaissance R capable de reconnaitre les chaines de caracteres de lalphabet. n R doit indiquer si une chaine qui lui est donnee apartient ou non au language. En dautre termes, il va accepter ou rejeter cette chaine. n De facon pratique, dans un compilateur, lanalyse syntaxique est faite par un systeme de reconnaissance.
5 Generateur de Languages n Un generateur de language genere des phrase dun language. n De facon pratique, un generateur peut sembler peu utile en tant que descripteur de language, mais en fait, il est tres utile car il permet une description facile a lire et a comprendre. n En fait, un generateur est beaucoup plus utile quun reconaisseur quant a la description du language.
6 Methodes Formelles de Description Syntaxique: Generalites n Les mecanismes formels de generation de language sappellent des grammaires. n Les grammaires les plus utiles pour les languages de programmation sont les grammaires libres de contexte (context-free) n La notation utilisee pour specifier de telles grammaires sappelle la forme Backus-Naur. (BNF). n BNF est une forme tres naturelle de description syntaxique. Elle est en fait tres proche de la technique utilisee par Panini des centaines dannees avant Jesus- Christ.
7 Methodes Formelles de Description Syntaxique: Fondations n Un metalanguage est un language destine a decrire dautres languages. BNF est un metalaguage pour les languages de programmation. n BNF definit les structures syntaxiques du language en utilisant des regles (ou productions). n Le Left-Hand-Side (LHS) dune regle BNF ne contient quun symbole non-terminal, alors que le Right-Hand-Side peut contenir des symboles terminaux ou non. n Un non-terminal peut avoir plusieures definitions. n Une regle peut aussi etre recursive.
8 Methodes Formelles de Description Syntaxique: Definitions n Les phrases dun language sont generees par lapplication en sequence des regles de la grammaire. n La generation dune phrase ou dun programme entiersappelle une derivation et elle commence au symbole de depart. n Sil y a plusieurs non-terminaux dans une regle et que la derivation etend le non-terminal le plus a gauche avant les autres, on parle de leftmost derivation. n Un avantage des grammaires est quelles decrivent naturellement la structure syntaxique hierarchique des phrases des languages quelles decrivent. Ces structures hierarchiques sappellent des parse trees.
9 Methodes Formelles de Description Syntaxique: Considerations n Une grammaire qui peut generer une phrase ayant deux ou plus de deux parse trees distincts est une grammaire ambigue. n Lambiguite syntaxique est un probleme dans les languages de programmation car la semantique est basee sur la syntaxe et la signification dune phrase doit etre unique. n Une grammaire peut-etre ecrite de maniere a implementer la precedence des operateurs, et leur associativite,.
10 EBNF: Une extension de la BNF n Il existe certaines extensions de la form Backus-Naur qui netendent pas le pouvoir descriptif du meta- language, mais plutot, en etend sa lisibilite et sa facilite decriture. n 3 extensions sont utilisees couramment: – Lutilization de [ ] --> Option (oui/non) – Lutilization de { } --> Iteration – Lutilization de | --> Option a choix multiple – Lutilization de + --> repetition unique ou multiple
11 Parse Trees n Le processus appele parsing consiste a construire un parse tree pour la phrase ou le programme ecrits dans le language. n Parsing peut-etre fait du haut en bas ou du bas en haut. n Parsing peut-etre fait assez facilement si la grammaire du language est definie de maniere appropriee (voir livre pp ). En particulier, il est important pour cette grammaire de ne pas avoir de recursion a gauche.
12 Grammaires a Attributs: Generalites n Une grammaire a attributs est un mecanisme qui permet de decrire une plus grande partie de la structure dun language que nest possibleavec une grammaire libre de contexte. n En particulier, une telle grammaire permet la definition de certaines regles du language tels que la compatibilite des types. n En general, la catecory de regles du language qui ne peuvent pas etre definies en BNF sappelle la semantique statique de ce language.
13 Grammaires a Attributs: Definitions n Une grammaire a attribut est une grammaire avec les additions suivantes: – Chaque symbole de la grammaire est associe a un ensemble dattributs divise en deux sous- ensembles: les attributs synthetises, qui passent linformation semantique vers le haut de larbre; et les attributs inherites, qui la passent vers le bas. – Chaque regle de grammaire est associee a un ensemble de fonctions semantiques et, peut-etre, un ensemble de fonctions prediquees. n Un attribut intrinsique est un attribut synthetise qui appartient a une feuille darbre et dont la valeur est determinee a lexterieur de larbre.