| 
 | 
| Postscript, PDF | Didier Rémy | Polytechnique, INRIA | 
| 
 | 

| 
 | 
| 
 | 
| · | d'expliquer le fonctionnement des analyseurs de façon à pouvoir écrire soi-même des analyseurs lexicaux ou grammaticaux. | 
| · | de se familiariser aussi avec les expressions régulières et les automates, car on les retrouve ensuite fréquemment en informatique. | 
| 
 | 
| 
 | 
| 
 | 
| · | Une lettre de l'alphabet a désigne le langage {a}. | 
| · | Epsilon: e désigne le langage {e}. | 
| · | Concaténation: M · N désigne le langage [[M]] [[N]]. | 
| · | Alternative: M | N désigne le langage [[M]] È [[N]]. | 
| · | Répétition: M* désigne le langage [[M]] *. | 
| · | [abc] pour (a | b | c) et [a1-a2] pour {c Î S, a1 £ c Ù c £ a2}, (on suppose ici que l'alphabet est ordonné) | 
| · | M? pour M | e et M+ pour M M*. | 
| 
 | 
"let", "in"
['a'-'z']+ ['0'-'9']*
['0'-'9']+
'(', ')', '+', '*', '='
(' ' | '\n')
| type token = LET | IN | .. (* mots clés *) | VAR of string (* variables *) | INT of int (* entiers *) | LPAREN | RPAREN | PLUS | TIMES | EQUAL (* symboles *) | 
| 
 | 
| · | prend une suite de caractère | 
| · | la transforme en une suite de lexème, et retourne les caractères non reconnus. | 
| · | letpourrait être reconnu comme une variable. | 
| · | lettrepourrait aussi être reconnu comme la séquenceLET; VAR "tre"ou encoreVAR "let"; VAR "tre" | 
| 
 | 
let lettre = 3 in 1 + fin produit la suite de
lexèmes:
LET; VAR "lettre"; EQUAL; IN; INT 1; PLUS; VAR "fin"
| 
 | 
Lexing.lexeme lexbuf. Attention: le nom de la variable 
lexbuf est fixé par convention.
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| ocamllex essai.mll | 
| ocamlc -c essai.ml | 
| 
 | 
token lexbuf pour une production vide. | 
 | 
| 
 | 
| · | La position du dernier lexème dans le flux d'entrée est déterminée par Lexing.lexeme_start lexbufetLexing.lexeme_end lexbuf. | 
| · | La sous-chaîne correspondante est (Lexing.lexeme lexbuf). | 
| 
 | 
| 
 | 
| · | S est un alphabet; | 
| · | Q est un ensemble fini d'états; | 
| · | d : Q × S ® Q est la fonction (partielle) de transition; | 
| · | q0 est l'état initial; | 
| · | F est un ensemble d'états finaux. | 
| ì í î | 
 | 
| 
 | 

| · | S = {a,b} | 
| · | Q = {q0, q1, q2, q3, F} | 
| · | d = {(q0, a) |® q1, (q0, b) |® q2, (q1, a) |® q3, (q2, b) |® q3, (q3, b) |® F} | 
| · | État initial q0 et un seul état final F. | 
| 
 | 
| ì ï í ï î | 
 | 
| 
 | 
| · | [[a]] = ({s, f}, {s |®a f}, s, {f}) | 
| · | [[e]]= ({s, f}, {s |®ef}, s, {f}) | 
| · | [[M | M']] = (Q È Q' È {s''}, d È d' È { s'' |®es, s'' |®es' }, s'', F È F') | 
| · | [[M · M']] = (Q È Q', d È d' È {f |®es', f Î F}, s, F') | 
| · | [[M*]] = (Q, d È {f |®es, f Î F}, s, {s}) | 
| 
 | 


| 
 | 
| d' (q', a) = fermeture | ( | 
 | d (q, a)) | 
| 
 | 
| " q Î Q, " w Î S *, | ì í î | 
 | 
| 
 | 
| 
 | 


| 
 | 

| 
 | 
| 
 | 
| 
 | 
a et b. Par convention, l'état
initial est 0. Dans la table -1 représente une transition interdite.
| 
 | 
| 
 | 
| 
 
 | 
| 
 | 
| 
 | 
| Q =def | Èi Î I Qi È q0 È {pi, i Î I} | 
| d =def | Èi Î I di È {q0 |®eqi | i Î I} È {q |®pi qF | q Î Fi, i Î I} | 
| type état = int (* on numérote les règles *) type rule = int (* on numérote les états *) type automat= { final : rule option array; delta : état array array; };; | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| 
 | 
| · | Les blancs (blanc, tabulation, retour à la ligne) | ||||||
| · | Les mots clés: 
{} var,alloc,false,true,read,write,writeln,array,of,do,begin,end,if,then,else,while,type,function,procedure,integer,boolean,program.· | les entiers | · | les identificateurs (composés de caractères alphabétiques (mininuscule ou
majuscules et terminant éventellement par des chiffres. | · | les lexèmes: | ;;:=<><=>=<>; ~:=-+*/()[]. | 
| En travaux dirigé, suivre l'énoncé détaillé de Luc Maranget. | 
< et >).
On pourra considérer que ces caractères n'apparaissent nulle part ailleurs. 
A. | · | Les chaînes ne contiennent pas la clé href. | 
| · | Les chaînes ne contiennent pas le caractère '"'. | 
IMG. | · | en utilisant un lexeur, | 
| · | en utilisant la librairie des str des expressions régulières. | 
This document was translated from LATEX by HEVEA and HACHA.