1 / 13

CSI3525: Concepts des Languages de Programmation

CSI3525: Concepts des Languages de Programmation. Notes # 3: Description Syntaxique des Languages. Pourquoi Decrire les Languages de Programmation? Et Comment?.

monte
Download Presentation

CSI3525: Concepts des Languages de Programmation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSI3525:Concepts des Languages de Programmation Notes # 3: Description Syntaxique des Languages

  2. Pourquoi Decrire les Languages de Programmation? Et Comment? • 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 qu’ils n’existent ou qu’ils soient utilises. • La clarite et la precision de la description sont tres intimement lies au succes d’un nouveau language. • La description d’un language se divise en deux parties: description syntaxique et description semantique. • La syntaxe correspond a la description de la forme des expressions, instructions et unites de programmes. • La semantique correspond a leur signification. • La syntaxe est plus facile a descrire que la semantique.

  3. La Description Syntaxique: Definitions • Les languages sont des chaines de caracteres provenant d’un alphabet. • Chaque chaine represente une phrase. • Il existe de petites unites syntaxiques appelees des lexemes. • Les tokens d’un language representent des categories de lexemes. Certains tokens ne representent qu’un seul lexeme, mais d’autres en representent plusieurs. • Les languages peuvent etre decrits de deux facons distinctes: reconnaissance ou generation.

  4. Reconaisseur de Languages • Etant donne un language L qui utilise l’alphabet , on peut construire un mechanisme de reconnaissance R capable de reconnaitre les chaines de caracteres de l’alphabet . • R doit indiquer si une chaine qui lui est donnee apartient ou non au language. En d’autre termes, il va accepter ou rejeter cette chaine. • De facon pratique, dans un compilateur, l’analyse syntaxique est faite par un systeme de reconnaissance.

  5. Generateur de Languages • Un generateur de language genere des phrase d’un language. • 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. • En fait, un generateur est beaucoup plus utile qu’un reconaisseur quant a la description du language.

  6. Methodes Formelles de Description Syntaxique: Generalites • Les mecanismes formels de generation de language s’appellent des grammaires. • Les grammaires les plus utiles pour les languages de programmation sont les grammaires libres de contexte (context-free) • La notation utilisee pour specifier de telles grammaires s’appelle la forme Backus-Naur. (BNF). • BNF est une forme tres naturelle de description syntaxique. Elle est en fait tres proche de la technique utilisee par Panini des centaines d’annees avant Jesus-Christ.

  7. Methodes Formelles de Description Syntaxique: Fondations • Un metalanguage est un language destine a decrire d’autres languages. BNF est un metalaguage pour les languages de programmation. • BNF definit les structures syntaxiques du language en utilisant des regles (ou productions). • Le Left-Hand-Side (LHS) d’une regle BNF ne contient qu’un symbole non-terminal, alors que le Right-Hand-Side peut contenir des symboles terminaux ou non. • Un non-terminal peut avoir plusieures definitions. • Une regle peut aussi etre recursive.

  8. Methodes Formelles de Description Syntaxique: Definitions • Les phrases d’un language sont generees par l’application en sequence des regles de la grammaire. • La generation d’une phrase ou d’un programme entiers’appelle une derivation et elle commence au symbole de depart. • S’il 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”. • Un avantage des grammaires est qu’elles decrivent naturellement la structure syntaxique hierarchique des phrases des languages qu’elles decrivent. Ces structures hierarchiques s’appellent des “parse trees”.

  9. Methodes Formelles de Description Syntaxique: Considerations • Une grammaire qui peut generer une phrase ayant deux ou plus de deux parse trees distincts est une grammaire ambigue. • L’ambiguite syntaxique est un probleme dans les languages de programmation car la semantique est basee sur la syntaxe et la signification d’une phrase doit etre unique. • Une grammaire peut-etre ecrite de maniere a implementer la precedence des operateurs, et leur associativite,.

  10. EBNF: Une extension de la BNF • Il existe certaines extensions de la form Backus-Naur qui n’etendent pas le pouvoir descriptif du meta-language, mais plutot, en etend sa lisibilite et sa facilite d’ecriture. • 3 extensions sont utilisees couramment: • L’utilization de “[“ “]” --> Option (oui/non) • L’utilization de “{“ “}” --> Iteration • L’utilization de “|” --> Option a choix multiple • L’utilization de “+” --> repetition unique ou multiple

  11. Parse Trees • Le processus appele “parsing” consiste a construire un “parse tree” pour la phrase ou le programme ecrits dans le language. • Parsing peut-etre fait du haut en bas ou du bas en haut. • Parsing peut-etre fait assez facilement si la grammaire du language est definie de maniere appropriee (voir livre pp.123-125). En particulier, il est important pour cette grammaire de ne pas avoir de recursion a gauche.

  12. Grammaires a Attributs: Generalites • Une grammaire a attributs est un mecanisme qui permet de decrire une plus grande partie de la structure d’un language que n’est possibleavec une grammaire libre de contexte. • En particulier, une telle grammaire permet la definition de certaines regles du language tels que la compatibilite des types. • En general, la catecory de regles du language qui ne peuvent pas etre definies en BNF s’appelle la semantique statique de ce language.

  13. Grammaires a Attributs: Definitions • Une grammaire a attribut est une grammaire avec les additions suivantes: • Chaque symbole de la grammaire est associe a un ensemble d’attributs divise en deux sous-ensembles: les attributs synthetises, qui passent l’information semantique vers le haut de l’arbre; 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. • Un attribut intrinsique est un attribut synthetise qui appartient a une feuille d’arbre et don’t la valeur est determinee a l’exterieur de l’arbre.

More Related