Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
F 50
par
Michel NAKHLE
Rapport CEA-R-4991
1979
Ni*
SERVICE DE DOCUMENTATION
^ ^ M ^ ^ B ^ ^ H B ^ C.E.N - SACLAY B P n> 2, 91 190 - GIF-sur-YVETTE • France
PLAN DE CLASSIFICATION DES RAPPORTS ET BIBLIOGRAPHIES CEA
(Classification du système international de documentation nucléaire SIDON/INIS)
Rapport CEA-R-4991
en français en anglais
LANGAGES DE PROGRAMMATION PROGRAMMING LANGUAGES
TRAITEMENT DE L'INFORMATION DATA PROCESSING
INFORMATION INFORMATION
CODES POUR ORDINATEURS COMPUTER CODES
LANGAGE PLI PLI LANGUAGE
EQUATIONS DE CINETIQUE DE REACTEUR REACTOR KINETICS EQUATIONS
GENERATEURS DE VAPEUR VAPOR GENERATORS
ORSAY
N° d'ordre
2102 T H E S E
PRESENTEE
A L'UNIVERSITE DE PARIS-SUD
CENTRE D'ORSAY
POUR OBTENIR
Michel NAKHLE
II'
- Rapport CEA-R-4991 -
par
Michel NAKHLE
- Juin 1979 -
I
Je remercie ici tous ceux qui m'ont aidé à la réalisation de ce travail 3 qu'il
3'agisse de la direction des S.E.S. ou de mes collègues dont la présence four-
nit un environnement indispensable et apprécié.
Je voudrais pourtant, en précisant que tous les défauts de ce mémoire sont miens,
témoigner ma reconnaissance d Mademoiselle C. 3UFFET et â zous ceux qui m'ont
aidé en lisant le manuscrit tout en me faisant part de leur critique.
Je suis redevable à mes parents, non seulement des études générales et scienti-
fiques que j'ai pu accomplir, mais encore de leur appui et de leur affection.
Ce sont des remerciements très profonds que je veux leia* adresser dans ce mémoire.
Le service de la doeûmentatzon 'a assuré avec le sciix qui' luï est oout-.jrler } ^a.
publication de cette t^.ese; qu'il en scit ici remercié.
H
TABLE DES MATIERE3
ir.orccuc-icr.
Préliminaires
Chapitre 1 : ::E?TO;IX de
-es equations ?.içrecrc-ai
Chapitre II Etape ce c o - p i l a t i c n , p = 37
Chapitre :îl Etape ce c c n p i l a - i o n , pa r t i e svr.tnese
Chapitre IV Etape d'ordonr.ar.carr.enc-t raduccicr.-crêcc 211
Chapitre V Sxe.T^Ies 259
Conclusion
procrarr-.as -e
CEA-R-4991 - NAKHLE Michel
ETUDE D'UN LANGAGE ET REALISATION D'UN SYSTEME DE SIMULATION NUMERIQUE
MUNI D'UNE DERIVATION FORMELLE - APPLICATION AUX REACTEURS NUCLEAIRES
AU LANGAGE COMMANDE ET AUX RESEAUX F.LECTRONIQUES.
Somma ire. - L'étude en simulation d'un système physique ne peut se
faire que sur le modèle mathématique approchant au mieux ce système
physique. Par ailleurs, l'expérience montre que la plupart des organes
qui constituent les systèmes sont variables avec le temps et non
linéaires. De plus, les Equations décrivant ces organes sont a constantes
de temps très séparées et ont un rang élevé.L'objet de cette étude est
de décrire le langage et le système NEPTUNIX de résolution des systè-
mes algébro-différentiels non linéaires, une partie des algorithmes
utilisés ainsi que certaines applications â la simulation des réacteur*
nucléaires et des systèmes mécaniques. NEPTUNIX admet les équations
du système à simuler sous la forme directe suivante : f (x, *, t) = 0
très proche du langage mathématique. De plus, le calcul du jacobien
associé, nécessaire à l'algorithme d'intégration, est fait automatique-
ment, par dérivation formelle (sous forme symbolique], évitant ainsi,
pour les grands systèmes le calcul du jacobien par differentiation ou
encore le calcul du jacobien de façon manuelle, tâche à la fois fasti-
dieuse et génératrice d'erreurs. Le jacobien ainsi calculé est obtenu
../..
sous forme de " t a b l e a u x c r e u x " , c ' e s t - S - d i r e que s e u l s l e s éléments
non n u l s s o n t pTis en compte. Une h i é r a r c h i e e s t a t t r i b u é e de façon
automatique aux éléments du j a c o b i e n et e x p l o i t é e au niveau de l'exécu-
t i o n . Ce t r a i t e m e n t , pour un modèle topologiquement i n v a r i a n t , n ' e s t
e f f e c t u é qu'une s e u l e f o i s e t sauvegardé s u r un support informatique
convenable, p r ê t il ê t r e u t i l i s é pour p l u s i e u r s s i m u l a t i o n s s u c c e s s i v e s
1979 341 p .
1979 34 1 p .
INTRODUCTION
0 - PRELIMINAIRES
a £ A.
a f A.
B 2 A ou A £ B.
B 3 A ou A C B.
<3
FIG05 GRAPHE PARTIEL FIG 0-6 SOUS-GRAPHE
- 9-
A n B = 0
 = ^ = | x É B | x $ À |.
A x B = |(a,b) | a £ A et b 6 B|.
0-2 QUELQUES CONCEPTS DE LA THEORIE DES GRAPHES [B4o) [B4I] [kl Ô] (~H11] .
G = (X, f )
T„x= T x n E V x Ê E .
a
r x = Tx n E VXÉE.
E
La f i g u r e 0-8 r e p r é s e n t e un s o u s - a r b r e de l ' a r b r e de l a f i g u r e 0 - 7 -
0-3 LES SYSTEMES PHYSIQUES ET LEUR DESCRIPTION PAR DES SYSTEMES
D'EQUATIONS ALGEBRO-DIFFERENTIELLES.
Une c l a s s e i m p o r t a n t e de p r o c e s s u s p h y s i q u e s p e u t ê t r e r e p r é -
s e n t é e p a r un modèle mathématique du t y p e ( 3 . 1 ) »
k = £(£. *) (3-1)
où x est vecteur de dimension n, f est un vecteur fonction et t est
une variable indépendante (le temps par exemple). Le système (3.1 )
est appelé système d'équations différentielles EXPLICITES.
En automatique, l'étude théorique des problèmes de stabilité
et d'optimisation est abordée sur des modèles de la forme (3-2).
x = f(x, e, t)
(3.2)
1 =fi(x.t)
h(x, x, t) = 0 (3.3)
Ce système inclut non seulement des équations du type (3.1), mais aussi
les équations algébriques et finalement l'ensemble mixte d'équations
différentielles et algébriques.
^1 •Si
*PI pn
12" 2
a
22* 2
(VI)
et „ jt„ -r a_„x_ v . , . f a x. = y
7
ni 1 n2 2 nn n n
M • | x 1 »! y |
t t
où | x | = (x , x
1 2 x ) et | y | = (y , y , .... y ) sont des vec-
n 1 £ n
z .<-'> = (1, 2, n)
k=1
Ainsi, le problème du calcul des éléments de la matrice in-
verse [ A J ~ est équivalent au problème de la résolution du système
d'équations (3.1) pour des membres de droite arbitraires y-,y » ...,y 9
r i-1 n
ail*! + ^
a-n xn = '1
y„
1 2
a< >x a< >x = ('!
a
22 2 X +
2n n '2 y
(4.2)
a X
,(D. „<D
n2 2
a a
(1) n (1) n
•• = a. . a, ., y; ' = y. - -=- y. L (i, j = 2, ...
0 > A l o r s
2. Supposons &P2 ^ » éliminons x„ de la même façon des n-2
dernières équations du système (4.2). Nous obtenons le système :
15
1n n " '1
1
22 2 + a x i<
L
2n>xn X
a X 2 3 3
*2
- (3) (*.3)
a
33 3 3n n 3
y y
2 2 2
( >x„ + ... • a< >x = y< >
n3 "3 nn n 'n y
a x + a X a X + + a x
l1 1 2 ' 3 • 13 3
3 ••• 1n n
, _ x + a. x + ... + a. x - y„
"22 "2 "23 3
2 2
«"33
i 2 > «"3, + . . . + a< >s =y< > (4.4)
3n n 'n
(n-O (n-D
v
a x = v
nn n •n
C e t t e r é d u c t i o n ne p e u t ê t r e e f f e c t u é e que s i , e t seulement
si, dans l e p r o c e s s u s d é c r i t :
a a< > 1
a (n-2)
a
a
11 ' 22 ' a n - 1 , n-1
X x x
M V 2 n> " ° ^
f
2<*1> 2 X
*n> = °
(3.1) !
f x x
n<*1' 2 n> " °
t
x = (x,, x , .... x )g n
v - /v{p)
x(p) - x x
1 ,„(p)
x , . . .V (, Px) / ; .
2 n
p
où g} * p
= (e5 ', £^ p
, .... £^ ') p
est l'erreur sur la solution.
- 17 -
1
Portons (5.2) dans (5-1 )» nous obtenons :
( p ) ( p )
f(x + S ) = 0 (5.3)
f(x ( p )
+ £ ( p )
) = f(x ( p )
) + f'(x ( p )
) £ ( p )
= 0 (5.1*)
f a f
s f
1 * i l
•*s. ÎX. ' ' î xn
1 2
f i f
» ? P a
? f
1
J x ,2 ' ' 3X
n
f'(x) = J(x) =
Ôf Bf •èf
n n n
«1 SI, ' * ^x
- 18 -
= (P) 1
J - ^ ' ) £(>>)
[ 0 )
J<x) « J(x ).
nans ce* conditio"?, la concurrence â.\i processus de résolution est
considérablement ralentie.
- 19 -
exhaustive.
Introduisons enfin trois symboles de base particuliers que
nous désignons par ALGORITHME, PROCEDURE et PROBLEME.
Une PROCEDURE est une suite d'instructions machine qui, si
on admet une limite de temps supérieure (cette limite étant par essence
raisonnablement finie) se termine par l'analyse de la dernière donnée
ou bien s'arrête sur une instruction d'arrêt conséquence d'un certain
nombre d'erreurs.
Un ALGORITHME est une procédure ou un ensemble de procédures
permettant de traiter une suite de données.
Un PROBLEME est une assertion fonction d'un certain nombre
d'inconnues. En règle générale, il constitue une question ou une suite
de questions dont on souhaite connaître la réponse. Cette réponse peut
toujours se ramener à une variable logique booléenne à deux états :
1
'VRAI , si l'assertion est exacte, TAUX', si elle ne l'est pas.
- 20 -
1.11. Généralités.
Rappels :
L-*M <p ,p
& J
M ^L —*- M
K
•ch~ ?. —3?..
Jl L A
Il est bien entendu que le langage K peut être un autre langage évolué
ou un langage d'assemblage.
- 25 -
Interpréteur
Un interpréteur produit un langage-objet exécuté au fur et à
mesure de la progression de la traduction. En règle générale, il prend
en charge un langage "conversationnel" ; ce terme souligne le fait que
le programme s'exécute sous le contrôle d'un utilisateur conversant
avec l'ordinateur au travers d'une console de style télétype ou autre.
Compilateur
Un compilateur ou traducteur génératif produit un programme-
objet susceptible d'être placé sur un support convenable permettant de
multiples utilisations successives.
Nous avons représenté figure 1-1 le passage d'un programme
en machine.
f(x,x,t) = 0 (1)
COMPILATEUR
Z
Programme en
langage-objet
EDITEUR DE
LIENS
Programmes
requis en L.O. z
Image-mémoire
(bibliothèque,
translatable
variables,
PROGRAMME LEXICO-
utilisateur fonctions,
GRAPHIQUE
constantes,...
t 1
SYNTAXIQUE et
SEMANTIQUE OUTILS :
jeu de carac-
teres, tables
mêlées,...
* V
SYNTHESE: DESCRIPTION
au problème ••
PRETRAITEMENT
DES CODES paramètres de
INTERNES
i\ + (integration,
ORDONNANCEMENT
TRADUCTION en PUT et
PRECOMPILATION
O
INTEGRATION
k fois
Le symbole e est réservé pour la CHAINE VIDE.
Formellement, une chaîne sur l'alphabet Z est définie de la
manière suivante :
1) e est une chaîne sur 2
2) si x est une chaîne sur J et a est un élément de Z alors xa
est une chaîne sur Z
3) y est une chaîne sur Z asi (si et seulement si) sa définition
obéit à (1) et (2).
Rappelons enfin que si x et y sont deux chaînes, la chaîne xy
est la chaîne obtenue en concatenant les symboles contenus dans y avec
ceux contenus dans x. Par exemple si x=ab et y=cd
xy=abcd
Propriété.
xe=ex=x
1.213- Vocabulaire.
îîous avons défini au paragraphe 1.11 le vocabulaire termi-
nal I .
Désignons par y le VOCABULAIHE XOX TERMINAL groupant les
ELEMENTS SYNTAXIQUES.
- 31 -
Conventions d'écriture,
- les lettres minuscules a,b,c et d servent pour désigner les éléments
de I ;
- les lettres majuscules A,B,C,D et S désigneront des éléments de N ;
- les lettres U,V,ff,X,Y,Z désignent indifféremment des éléments de Z et
de N ;
- les lettres grecques désignent des chaînes constituées de symboles
terminaux et de symboles non terminaux Î
- les lettres u v,w,x,y,z sont réservées pour désigner des chaînes ne
f
*f — • V (2.1)
s'il existe une séquence (TQ, ce.. , . . , , Œ de (n+1 ) chaînes, non nécessai-
rement distinctes, et telle que les chaînes vérifient :
v
1-1 i x ' ^
•t *„ = p
I.215• Grammaire,
+
V* N(V*) x V
G = (N,I,P,S) (2.4)
Remarque
Lorsqu'il n'y a pas de confusion possible nous utilisons
G(S) pour parler de la grammaire admettant 5 pour axiome.
r •*
I.215•1• Classification des grammaires proposée par Chomsky .C30j ,
(C3lj .
Soit •& un élément séparateur appartenant à V.
Une grammaire G = (N,I,P,S) est dite de Chomsky, si la rela-
tion (2.1) satisfait aux quatre conditions suivantes :
1 ) Ct -r* &• : la relation n est pas reflexive
r
2) A <= S ssi
3 « j3 et TS 6 V
t I OA7 —> û£7
3) 3 a,3 et r e v I a -*• f3#tf
- 33 -
+
It) I _>_, , 0 , ) ... ( 0 C , 3 ) . avec a
n n ± £ V e t p e V* V i ,
± H i f a
I V >f i V Y : if —>• Y
ssi
Remarque s
"• • ^ et H> peuvent être vides.
2. Les oc. ou les p. peuvent être égaux.
Exemple 0
Soit V = I U N U | # | = | a,b,c | U | S,A,B,c| U | 3 |
Considérons l'ensemble suivant des couples de mots :
vient :
SAbB —* SbBCbB
N'ous remarquons sur cet exemple que, selon les valeurs de y> et de tf> ,
nous avons eu à choisir une règle ou une autre. Par ailleurs, dans le
cas 2, pour <X.~S, nous avons pris le seul couple possible.
Grammaire de type 0
C'est une grammaire qui satisfait aux quatre conditions énon-
cées ci-dessus.
- 34 -
Grammaire de type 1.
<f = OA0
m = awp
où (a,(3) i.v* x v* A s s et <u e v*
Exemple 1
Considérons S —*• aSBC \ abC
CB —>• BC
bB — * bb
bC —>-bc
CC —>• ce
Grammaire de type 2.
C'est une grammaire à INDEPENDANCE CONTEXTUELLE (CONTEXT-FREE).
Elle satisfait aux quatre conditions de Chomslcy et est décrite
par des règles de production du type de la relation (2.1) avec :
f = A A € N
V = <" ai 6 V*
Une grammaire de type 2 est souvent appelée C-grammaire.
- 35 -
Exemple 2
S o i t l a grammaire G(E) J
G(B) = ( | E , T , p | , | a , + , * , ( , ) | ,P,E)
1 . E — E+T 2. E -» T
3. T -* T*F 4. T -• F
5. F -• (E) 6. F — a
Un exemple de d é r i v a t i o n dans G(E) e s t donné p a r :
E=i> E+T
=>T+T
=>F+T
=>a+T
=> a+T*F
=>a+F*F
=> a+a*F
=> a+a*a
Grammaire de t y p e 3 .
C ' e s t une grammaire REGULIERE.
E l l e s a t i s f a i t aux q u a t r e c o n d i t i o n s de Chomsky e t l e s règles
de p r o d u c t i o n q u i l a d é c r i v e n t s o n t de l a forme ( 2 . 1 ) avec :
tf = A A € N
r*
V=x ou <f = xB x e i et BfeN
Exemple 3
Soit la grammaire G(E) Î
E •» 0|1 | ...|9
- 36 -
Remarque s
1. Toute K-grammaire est une C-grammaire. Mais la réciproque n'est pas
vraie.
2. Toute C-grammaire ne contenant pas la chaîne vide forme un sous-
ensemble des grammaires à dépendance contextuelle.
3. Lorsqu'une C-grammaire contient la production vide,
A —»• e
Définition 1-12 : une PHRASE SIMPLE est une phrase telle que la
dérivation
p — s
soit directe.
(1) a =b
si A * Oa7b(3 4 P
avec A £ N a,b 6 Z a,,3 Ê N et ï s S u | e|
(2) a <.b
si A > OaBS 6P
et si B ===^ 7b 6
- 38 -
(3) a .> b
si A —*• 0Sbf3 é P
et si B = > S a$
si S ^=> Va.CC
(5) a .> $
si S ==> CCaTT
Exemple de GPO
(2) X = Y
si 3 P è P | A -^ 0CCÏÏ3
(3) X o a
E T F [THES a I ) + * 1
= •II
= <• <•
< • <• <• <• < <• <•
Remarques
1. .> est définie sur l'ensemble VxX . En effet le symbole le plus à
droite de la forme phrasée est toujours un symbole terminal.
2. L'analyse fondée sur la technique de la precedence simple utilise
les trois relations précédentes afin d'isoler la gerbe dans une
forme phrasée Of3w. Si (3 est la gerbe, alors
a - l'une des deux relations, <• ou =, doit être vraie entre tout
couple quelconque de symboles constituant la chaine CC
b - <. doit être vraie entre le symbole le plus à droite de tt et
le symbole le plus, à gauche de (3
c - = doit être vraie entre tout couple quelconque de symboles
constituant la chaîne (3
d - .> doit être vraie entre le symbole le plus à droite de 6 et
le symbole le plus à gauche de w.
Définition
Une GPO est une GRAMMAIRE A SIMPLE PRECEDENCE (GPS) si quel
que soit le symbole X et quel que soit le symbole y susceptible de le
suivre dans l'une quelconque des règles de production (X et Y £ V ) ,
une et une seule des relations de precedence est vraie. De plus deux
règles de productions ne doivent pas posséder le même membre de droite
et la grammaire ne doit pas être ambiguë.
(2.5)
1 . d = min i (g | X i p > X i + 1 )
2. g = m a X j < d (j | _,<
Xj X.) (2.6)
Exemple de GPS
G s = (|E,T,F,[T],CE)] | , | a, + , * ,(,)|,P,E)
Définition
Une C-graramaire ne contenant pas de production vide est une
GPF si les trois conditions suivantes sont satisfaites.
1. La relation .> n'est pas vraie entre deux symboles quelconques re-
liés par une des deux relations <. ou =
Propriétés
Nous énonçons deux propriétés des GPF démontrées par Ichbiah
et Morse [l3o].
1. Toute GPS est une GPP
2. Une GPF peut engendrer un langage jouissant des propriétés de la
precedence simple.
Exemple de GPF
G p = (|E,T,p| |a, + ,*,(,)(, P,E)
f
(1 ) E -* T (2) E •* + T
(3) E -• E + T {h) T -* F
(5) T -»-T * F (6) F -*• a
(7) F -> (E)
E T F Q ( ) + * 3
r =
•> •> = • >
1.215*5» Conclusions.
Puisque nous nous intéressons à la recherche de la grammaire
du langage NEPTUNIX, nous disposons à présent de plusieurs outils per-
mettant de la définir. Abordons succinctement le problème de l'analyse
d'une phrase d'un langage engendré par une GPF ; il sera traité plus
en détail au chapitre II,
La relation •> nous permet de localiser la queue de la
gerbe. Les membres de droite des productions peuvent être consultés
pour localiser la tête de la gerbe et trouver la production adéquate.
Cette consultation n'est pas plus longue que dans le cas d'une GPS.
En effet, dans une GPS, une fois la gerbe isolée, nous avons toujours
besoin de consulter les productions pour choisir celle effectuant la
réduction convenable. Dans les deux cas, il y a analyse de symboles
et de règles de production.
Pour que la méthode d'analyse soit efficace, nous devons dé-
cider quelle production utiliser dans le cas où le membre de droite
d'une production est la queue d'un membre de droite d'une autre produc-
tion. Prenons par exemple une forme phrasée KJ3ÏW. Supposons que la ger-
be est à localiser entre V et W. Si C •*• ~$ et D -»• pTS" 50111 deux pro-
ductions, il faut décider laquelle des deux productions s'applique.
On démontre qu'il faut appliquer la production la plus longue.
1.215.6. Remarques.
1. Les relations de precedence que nous avons définies entre
symboles peuvent être étendues à des chaînes de m et n symboles. Dans
ces conditions, on construit (m,n) relations de precedence. Les gram-
maires sont alors appelées grammaires à relations de precedence éten-
dues ( G R P B ) . (AIO] , Q>4o]
2. Dans le cas des GFP, nous citons pour mémoire, une s^us-
classe de grammaires (dites à statégie de precedence mixte (G3PM)) dans
lesquelles une consultation d'un seul symbole suffit pour décider de la
production à appliquer quand on est en présence de productions ayant
même membre de droite.
I
Grammaires LU
^** Grammaires LL
I
G.R.F.2. ou Grammaires à Relations de Precedence 2tendues
Exemple
Soit V = j œ.p.s|
Selon la définition donnée au paragraphe 1.213. le vocabu-
V est l'ensemble V* :
v* = | e,a,p,ac:,aS,aû£, ... I .
1
La p h r a s e 'ûXCp e s t un élément de X(G) .
- 47 -
Remarques
1. La classification des grammaires proposées par Chomsky est aussi
valable pour les langages engendrés par ces grammaires.
2. Par abus de langage, nous parlons par la suite de langage à précé
dence simple (LPS) pour désigner un langage engendré par une GPS
ou une GPF.
V T = X = | A , B , C , * , / . + .- |
VN=N= < vari able >, < op.mult. >, <.op.add.>, <iterme>, <• exp. arithm. > I
Désignons par <.E.A.> l'axiome (abréviation de <, exp. arithm. > ) . La gram-
maire que nous utilisons pour définir des expressions du type 'A/B-C'
admet l'ensemble des productions suivantes :
1.222. 5eprésentation_à_l^aide_d^un^graphe.
1.231• Exposé_du_groblème.
Le problème qui nous intéresse est de définir un langage
simple engendré par une grammaire à indépendance contextuelle, au sens
de Chomsky, de façon à ce que la mise en oeuvre de l'analyseur qui le
traite soit la moins compliquée et la plus efficace possible.
k9 -
B D
2 f<ter t>\
m I <*•*» s , \Op. adds» < lerme>
A a c # /
m + ... + m
H
1 n
et l'équation :
A = m. + ... + m
1 n
où les symboles non terminaux sont considérés comme des "variables"
prenant leur "valeur" dans l'er.semble des parties de X*.
Exemple 1
Considérons la grammaire G admettant les règles de produc-
tions suivantes ;
C :: =Cd | .3C TJ ï
D ::=bC|JblJDb )
- 51 -
C=Cd+DC+b
D=bC+Cb+CDb-
/d b+Db \
(C D) = (C D ) + (b bC)
\ 0 O /
£(Z) J X ( I ) - * i ( Z )
{L , L") — * LL' = | x y I x Ê L et y € L ' J.
, <«1>
S =m. + ... + m ,
n in nlcn /
1 , Vii k. » 1
' 1,S. .. . , S I.
J.J 1f ni
Théorème de SchLltzenberger.
Une grammaire algébrique propre, G(>T,I) admet une solution
et une seule. C ' est le n-uplet <.L(G, S. ) , ..«, L(G,S )>.
Exemple 2
Considérons le système d'équations algébriques suivant :
M=M R + N.
t- *
ou R et R sont respectivement la fermeture transitive et reflexive
et la fermeture transitive de R.
S +
i = «H-il •" ^"ild
où a. s I et m. .ê N*.
Définition 1-21
—-
: soit M„
S.j_»a
= l
m± j. ê N I a.=a|
j I
.
Une grammaire en forme normale de Greibach est simple si l'en-
semble M- est réduit à un seul élément, c'est-à-dire :
V eZ
a et V S Ê N *B,«-|»s, |- a
L(G,m) = L.
B - Remarque s
D - Conclusions.
1 . L'utilité de la représentation algébrique des grammairi
est de nous permettre de travailler avec les grammaires à indépendance
contextuelle, de la même manière qu'avec les grammaires régulières. Xoi
savons par ailleurs qu'un langage est régulier si et seulement si il e
reconnu par un automate fini. Nous exposerons plus en détail, au cliapi
tre II, les automates et leurs relations avec les langages.
- 55 -
1
Nous avons résumé sous la rubrique "conditions d acceptabi-
lité" les différentes transformations qu'a subies la grammaire du lan-
gage ÎIEPTUNIX. En effet, pour des raisons d'efficacité, il est nécessai-
re de minimiser le nombre d'éléments syntaxiques de la grammaire, le
but final étant une économie de temps et d'espace pour l'analyseur.
I l e s t a i s é de t r o u v e r :
a„) A„ = A LI l x 6 X I x -»• CC avec a £ A' I
3 1 o i o '
a^) A = A U | y é N I y -> g avec
2 1 (3 fe A* |
Dans c e s c o n d i t i o n s , i l e x i s t e un e n t i e r m (m $ k a v t c k l e nombre
d ' é l é m e n t s s y n t a x i q u e s ) t e l que i
a.) A m = 1.
p' m
- 56 -
3a et M V* I x ^ £Xyj3.
Nous noterons cette propriété : x $ y.
Si nous avons x — C£y(3, x sera dit SUCCESSEUR IMMEDIAT de y ei
nous écrirons x $ Y>
Q
I(G' ) = V» - | y e V 1 <PROGRA> $ y L
2. S r s = <P si ry*s.
|L B
h - " W n ' V a i ' ••• n m
(2.10'
n 1 1n' 2 2n ' n n
A ± — Ljtt (2.11)
(2.12)
S |B .X,.
rs rt ts
(2.13)
•* s „
1. S — X 2. X - - AB/AC
1 , .
La grammaire G-(S) suivante est une grammaire équivalente permettant
une analyse plus efficace :
1. S — X 2 . X - A.JAB 3. B - BC
4. C — BlD .
1 . S — X 2. X — AZ 3. Z - e|B
4. Y -, XC 5- C — B|D .
1 .S - A 2. A - Xlï 3 . X - B(LX
3. Y ->• C|LY .
1 . S —A 2. A-B1CILYILX 3 . X—BlLX
4 . Y - C|LY .
1. S — A 2. A - BlCILZ 3. Z — X l Y
4. X - BlLX
1.31. Introduction,
X = FONCTION(X,Y) ;
£{x,x,t)=0 (3.2)
1.321. Le_jeu_de_caractères.
- le symbole d'exponentiation |
- le symbole spécifiant le facteur de cadrage
d'une constante " (un seul caractère)
1.323. Le commentaire.
Les commentaires sont permis chaque fois qu'un blanc est au-
torisé dans les données. Leur format général est le suivant :
a - pour le début : le mot 'COMMENTAIRE' ou l'abréviation 'COMMENT',
b - pour le texte : n'importe quel caractère excepté le point-virgule,
c - pour la fin : le point-virgule ';',
Un commentaire peut être codé sui une ou plusieurs cartes.
Ce sont :
- le mot COMMENTAIRE
- les noms des blocs : SYSTEME, DECLARATIONS, LINEAIRE, NONLXMEAI
et PIN.
Les noms de bloc sont pris en compte lorsqu'ils sont précédés du carac
tère spécial ï .
1.33- Le programme «
t 1) <SDCLION> :
<SYSTEHE>
( 21 := PAS
INTERVALLE
PAS <SDCL!Otl>
< 3) := PRECISION
FPECISIOtl
TOLERATE
<VALEUR>
t 4i ;= TCLERAIKE
INTERVALLE
<SDCLUN$>
( 5) := OPTIONS
OPTIONS
<SDCLUH>
( 6) «VALEUR> ::= ENTIER
EUT1ER
<S0CL5US>
<SDCLSU>
(
(
7)
SI
:: = = DECIMAL
DECIMAI <SDCIUK> : HOTCLE
<SCCLTE> 1 91 := <S0CLUIÎ>
<5DC10R$>
I 10) <S0CLUN> : := <S0CIU1Î> = <VALEUR>
<5DCL03>
<SDCIBL>
I 111 <SDCLS'JS> J :; == <SDCUIH>
TïOÏCLE ( 12) <SDCLSUS>
:: = , <SDCLUH>
<SDCLGRt>
FOIHTEX ( 13) <sacisu> <SDCLSU»>
DEEBL
<SDCLGR>
( 14) <SDCLTE> ; := <EDCLICfl>
FIliBL ( 15) <£DCIQRÎ> : ;= <S0CLTE> <SOCLSU>
DEBGR ( 16) <SDCICR> ::r:= <SDCL0R»> ;
SUIGR ( 17) <SDCLBL> : DE6EL <SDCLGR>
FIHGH ( IS) <S0CLGRS> : := <SDCLDL>
FIKBL
Axiome <SYSTEME>
l 11 <DCLIO> : VARIABLE
<DECIAR» ( 2) t SORTIE
<QCUE> t Si s TEMPS
<DClGRt> t 41 S UOHLIHEAIRE
<DCLGR> 1 51 s IHIÎÏAÎ.E3
-DCtons ( 61 s FONCTION
<ocisu> ( 71 <VALEU«> s NOMBRE
<QCLSUS> 1 SI <VAiEUS> HOMERE
*VÀLEU5> ( 91 <VALEU> : » <VALEUÎ> ,
<ocuim>
<G£UCH*>
( 101
t 111
«3A.UCUO : a = (
1 <G*UCUS> <VALEU> t
FOIHIEX <VALEU> ( 12 1 <CAUCH> l «
s
s
<GAUCHS>
ÏOOlï <OCUÛ> * 13» <0CIUH*> i IQEIIÎ
<DClOL> I 141 i s <0CLUHS> s <GMJCH>
HÏBIEBE
<CCLIRI> ( 151 <DCLUM> : •s <DCIUM5>
«GSUCÏt* <DCLSUS» : s
D£B8l
<DCLDRt>
i n» <DCIUII>
( 171 <0CLSU*> <0CLU)l>
PINBl
OSEGH (
t
H t
191
<0EISU> =
a <octsos> ,
î
<0CLTE> <DCLÏO>
SUIGR
flIiGR ( £01 «OCICRO ' r = <QCUE> <6CLSU> i
VARUBIE t 21) <OCtOR > n~ <DCLDH$>
( 221 <0CtBL> : 0EB9L «0CLOH> fWBL
SORTIE
leurs 1 S3Ï *DCIGR*> J s « -'BClBt>
NU! IL INC AIRE 1 24) S <DCLGR$> SUIGR *DCLBL>
INITIALES < 2S1 .a <BCIG8$> FIHGR
fOiKTIOli
Axiome : <DECLAR> f 24» <DCLGR> : S. <DCtGR*>
I £71 <DECUR> : s DEBGR <DCLG9> POINTEX
! LINEAIRE ou INONLINEAIRE
n. : expression k ;
n. : expression j ;
(IL ,...,n.) sont des entiers attribuant un numéro aux équations décrit*
(un numéro ne peut, en aucun cas, dépasser l'ordre du système) et
expression décrit le premier membre de l'égalité :
f(x,i,t) = 0
1.334. Exemple_simplifié.
Y=cost
<5EC0UD>
<
1
201
21) -
<EXP5II1*>
«
<T£HHE>
<TERHE>
DEDE1U <EXP5in*>
FIIIECU <EXPCKEH>
<
t
22)
23Ï <EXF5IH> <EXPSIH4> -
IDENT JACOBI
1
<
24)
25)
<PARAME>
<OOUQLE*> «PARAFE> , *PARAtlE>
«DOUBLE*>
t
(
26 >
27) 'DOW)LE> <CCUBLE*> ,
t 291 <*PHSUÏ> <10F0tIC> • <ÛQUBU> 1
1 29) <EXPRES» «expsim
1 SO) <APFOUT>
t SI) <COnE']iJ> «EXPRES>
Axiome : <PROGRA> C 32 1 <EC1UAT> NUMERO ; <CQ9E<W>
t 331 *UH££qU> <£qU*F>
( 3*1 <B10EQU»> <UI!EEQU>
( 3SI <BLOEQU*> SUIIIOtl <W(EEQU>
1 3*) <8L0EGUÎ> FIHHCH
( 371 <BLOEQU> «Btaeou4>
t 38Î <PSQGH*> ÛEEtiQH <StOEQU> FOÏHTEX
/*J0B=t1ICHELH.*^
//TEST JOB TIKE=lO.36>iMS3LÉVcL=U,lJ,EXCP=10a,SYSGUT=200OO
/»FROC DSN=SES.5ERF.NAKHLE.PR
//COHPIl EXEC NPTXlCOI.CARTs'/HC'.OECKSKD
//CDMP.SÏSIN 00 •»
la suite d'apparition des numéros des équations n'est pas nécessairement croissante.
le point final termine le programme.
'SYSTEME
ItfTERVALL£:MINirjK=0,HAXIK'JMs3]..416;
,,
PAS:HINIWM=l••-4,flSWrcJM=5'•-3,0EKt*RAGE=l
PRECISION:l"-3;
OPTIONS :CWCRE=S,tJUH=7S, EDITION CCUPSES;
!FIH
•DECURATICMS
VÀff:X,Y,Z,;fTCeT5,A.fCHTC;
SCSiX.Y.Z.JMWTS.^RTC;
INITlALISiriCN:X=f0,1),ï=(1,0),Z=f1,-11,
AKO3T5=(0,U,AHOBTC=ll,-lJî
!F:H
!HLÏH
2!Y**X;
l:X'-Y;
<*:,SK0<!TS-X>»Z;
5UMO;ITC-Y*Z;
1.41. Introduction.
I.k23- Etage_d^ordonnancement-traduction-précompilation.
EDITCHA
EDITERR sous-programmes LOADASM
EDITGEN
EDITNON d'édition.
EDITSOU
CONVDEC ERREURI
ERREUR s.p. d'analyse
HASHING CALDERI ENCODER
INCREME lexicographique UNEDER FINTRTT
LECTURE NONDERI FIPUNCH
LINSCAN et utilitaires.
NOMBRE
TRTVARl
Etape d'analyses syntaxique et sémantique- Etape de calcul Etape de fin de Etape d'appel dynamique
du jacoblen. traitementsclas- de l'assembleur traduction
sification et sau- du s.p. d'extension de
vegarde des la bibliothèque des fonctions.
quadruplets.
V
f DEBUT \ - 75 -
Initialisation
fin normale?
< ~£~5ûT~
>
Dérivation formelle et calcul du Jaco-
bien. Génération de code sous forme de
quadruplets ordonnés.
édition du pro-
<
fin normale ?
y gramme-source
et des messages
d'erreur.
Traitement et classification des
quadruplets engendrés.
sauvegarde demandéeTs
<
jr~-—
Sauvegarde de tous les résultats de
la compilation sur cartes.
extension bibliothèque
<
i oui
P
Appel dynamique de l'Assembleur : tra-
duction du s.p. SSIBUO d'extension de
la bibliothèque des fonctions
IBISLIO engendré parle comp.NEPTUNIX pour résoudre tes CENTRAD centralisateur delà traduction des quadruplets en un
adresses des fonctions utilisées programme PLff équivalent
SDESfNT centralise les diagnostics et les traitements en cas PLITRAD traducteur en langage PL/1
d'interruption ou de fin anormale
IEXN ensemble des fondions math, incorporées
ITRADUC prog, d'aide au diagnostic d'erreur
A5MXEQ2 e.écution des quadruplets
ASCEND classement des tables par Inde» pour l'ordonnancement
CALFONC centralise l'exécution des quadruplets
CHAINER outil pour l'ordonnancement
FILCOPY perforation des fichiers nécessaires pour l'étape d'intégration
LIBER libération des zones de travail
LINK prétraitement pour l'ordonnancement
MIZVAL interface entre l'ordonnancement et l'exécution des quadruplets
MIZAD outil pour l'ordonnancement
MNYORDN centralise l'étape d'ordonnance <•; -
ORDROPT prog. d'ordonnancement de h .r-alrlc'e jacobienne
PIVGOSS choix des pivots
PREGOS choix des pivots
PRECOMPILATION
Récupérer les paramètres du passage tians-
mis par langage de commande(JCL).
I
Matrice singulière ?
Messages
d'erreur
<. >
traduction-précompilation ? ^ N -
oul
T
FIN
MOTTNCN
: t e^a ti
1.425. ?ïâSî--ii S' ® ' 25• I
I
1.43. Moyens de communication entre programmes du compilateur.
- DONNEES
- ERREUR
- TEMPREC : fichier à accès direct permettant un déroulement effi-
cace de la phase de synthèse et de dérivation formelle.
2. Les fichiers propres au compilateur at passés à l'étape d'ordon-
nancement-traduction-précompilation. Sont groupés dans cette catégorie
les fichiers suivants :
- CINITIA : fichier des conditions initiales.
- CODOBJT : un fichier pe;mettant les liaisons entre les diffé-
rents fichiers.
- FONCTION : description des fonctions de l'utilisateur.
- GENERAT : quadruplets d'exécution.
- MATRICE : description de la matrice jacobienne sous forme
"creuse", selon le modèle exposé paragraphe I.45.
- PERPO : fichier de recopie sur cartes lorsque l'option OBJET
du compilateur est utilisée.
- SYSPRINT : fichier de sortie sur imprimante.
3. Les fichiers correspondant à l'appel dynamique de l'assembleur.
Ce sont les fichiers suivants :
Fichiers passés au» Fichiers temporaires
étapes suivantes
^INITIA
ANALYSE
et
^~~^kk£gfi£y£j^
DERIVATION FORMELLE
TEMPREC
-^k£«çwn?0
APPEL DYNAMIQUE de
^ASSEMBLEUR
APPEL DYNAMIQUE du
COMPILATEUR PL/1
traduction-précompilation
sa -
a
1.442. Fichiers utilisés à l^étape_d2_ordonnancemen^2tî; duction-préconi-
pilation.
Les indices de colonnes sont donnés par Cl(K) pour K variant de RP(l) à
Rp(l+1). La valeur V T ( K ) est 3 ai l'élément est invariant, 5 si cet élé-
ment est fonction de la variable indépendante ou 6 si ce dernier est non
linéaire.
Par souci de réduction de l'encombrement des vecteurs SP et
S, les conventions suivantes sont adoptées :
S(1) =1
s(a) = - i
S(3) = a avec <X=-COEFALF/HPAS (coefficient de d i s c r é t i s a t i o n de
l a méthode d ' i n t é g r a t i o n à pas et ordre variables r>I30j ) .
s{k) = -a.
- 86
x x x x x x x x
X X
X X
X X
X X
X X
X X
RP a VT SP
0 0 0
1 6 5
2 S 6
3 e 7
4 6 a
5 6 9
S 6 10
7 6 11
8 e 12
1 3 13
2 5 14
1 3 15
3 5 16
1 3 17
4 i It
I 3 19
5 i 20
; 3 21
6 5 22
} 3 23
7 5 24
0 s 2ii
i
I
- 89 -
11.11. Introduction.
11.12. Exemple.
Soit la grammaire :
1. 1 = | A, .... Z, 0 9, + , - , * , /, *', . , ( , ), I , -|
2. N - I «.opérateur d ' a d d i t i o n > , < expression arithmétique >,
^ i n s t r u c t i o n d ' a f f e c t a t i o n > , -cpartie fractionnaire;»,
inombre décimal>, <chiffre>, < p a r t i e exposant>, ^facteur>,
<:identificateur > < e n t i e r > , ^ l e t t r e ; » , < p a r t i e gauche;»,
r
3. P
<lettre s := A
:= Z
< chiffres := 0
f
<opérateur d addition s
^opérateur de m u l t i p l i c a t i o n s
/
< p a r t i e exposant s " * entier >
<partie fractionnaire > - . i. e n t i e r sans s i g n e >
< primaire s = ( < e x p r e s s i o n arithmétiques)
= «nombre sans s i g n e s
= 4 identificateurs
< expression simple > = <opérateur d ' a d d i t i o n s <• termes
1
<entiers = •£ opérateur d a d d i t i o n s < e n t i e r sans
signe>
= < en tier sans signes
4 expression arithmétiques = <expression simples
= •£ expression arithmétiques
<expression simples
= •£ terme s
<nombre décimal s = ^partie fractionnaires
= rentiers
= < entier s « partie fractionnaires
<entier sans signe s = «i entier sans signe>< chiffre >
= « chiffre s
!= <facteur>
:= * t e r m e x opérateur de multiplieation>
<facteur>
< b ^ * * f tUn^.>
« Utnfc. >
<Utfcrt >
t
F d / r B c )
mnu-zizi
C )
ElSILSS.IZzî
»'
93 -
« Itrnt >
t t t
F A / ( B c ;
ZIS£L&K-LZ-ï
«inttc 4'*f[«tt«ti«n9
lI.avRE.ll-±
- 94 -
£Ifi23£-£I=S
I •
«p«fbtig«Mfc«> «frll^ln»
:Utu
ricBSS-i^ii
I.
- 95
ZL2U.U-LLz.l
< ttifttr. *A'*ffMfc*U««n t
C )
Lisass-i
- 96 -
11.131. Le_transducteur.
Un transducteur est un système composé de trois parties essen-
tielles :
1. une "bande d'entrée"
2. une fonction de contrôle
3. une mémoire auxiliaire.
La façon dont opère un transducteur est schématisée fig. H . 9 .
•h "bande d'entrée"
pointeur d'entrée
Ponction de
transition
1. L'état actuel.
2. Le contenu de la bande d'entrée et la position du pointeur
d'entrée.
3. Le contenu de la mémoire.
La transition peut être effectuée compte tenu des deux critè-
res suivants :
1. A partir d'une configuration, le transducteur n'opère qu'un
mouvement et un seul. Le transducteur est alors dit
DETERMINISTE.
2. A partir d'une configuration, le transducteur opère un mou-
vement choisi dans un ensemble autorisé de mouvements. Le
transducteur est alors dit NON DETERMINISTE.
La CONFIGURATION INITIALE est définie par un état initial,
une position du pointeur d'entrée en début de la bande d'entrée et un
contenu initial de la mémoire.
La CONFIGURATION FINALE est définie par un état appartenant à
un enser -'T d'états terminaux, le pointeur d'entrée étant arrivé en fin
de la t i d'entrée et la mémoire devant contenir des informations
consta que l'analyse est terminée.
- 98 -
1.3- La mémoire.
Nous supposons que l'alphabet est un ensemble fini et que la
mémoire contient un certain nombre de symboles de cet alphabet organi-
sés selon un certain mode. De plus, bien que cette mémoire puisse évo-
luer au cours de l'analyse, nous supposons que le contenu de la mémoi-
re peut être décrit de façon finie.
On dé.rit cette mémoire, par deux fonctions :
1. Une FONCTION de RECHERCHE qui est une correspondance entre
les différentes configurations de la mémoire et un ensemble
fini de symboles pouvant être l'alphabet de la grammaire,
2. Une FONCTION de SORTES qui est une correspondance entre les
différentes configurations de la mémoire et une chaîne
d'états-mémoire. Cette fonction a pour but de modifier le
contenu de la mémoire.
En général le nom du transducteur est défini par la connais-
sance du mode d'organisation de la mémoire. Far exemple un transducteur
dont la mémoire est une pile à entrée et sortie par le sommet est cou-
ramment appelé transducteur- à pile à entrée et sortie par le sommet.
II.132. Machine_de_Turing.
Une machine de Turing est un quintuplet
M - ( Q , Z , t , q , F)
Q
où
- Q est un-ensemble fini d'états
- Z est l'ensemble des entrées, appelé couramment "bande d'entrée"
- Z est une fonction de transition produisant des transferts d'informa-
tion dans l'unité opératoire Z : Q x X —** 0. x I x D,G | . I D,G j
constitue une notation condensée de l'éventualité D pour droite ou
G- pour gauche
- q îst 1•état- initial
Q
Tr s e u m
II. 133 - 22 ^ïï£* . £-2S2_lé!ËSE2iSiSÈ--ii22âi£î £2-_È2ESi*
C'est un transducteur dont la mémoire est une bande de machi-
ne de Turing initialement mise à blanc et se suffisant de l'espace ini-
tial à tout moment.
II.134. Ensembles_réguliers.
Soit I un alphabet fini et soit £ e X la chaîne vide.
Un ensemble régulier sur I est défini de la façon recursive
suivante :
1. 0, 1'ensemole vide, est un ensemble régulier sur^-
2. J£t est un ensemble régulier sur £•
x x e s t L U 1 e n s e r a D l e
3. V 6 ^'| | régulier sur I.
4. Si A et B sont deux ensembles réguliers sur £, il en est de
même de A U B , AB et A*.
5. Aucun autre ensemble régulier ne peut âtre défini sur Z.
- 100 -
en
11.135* ^ïï*22â*â_£iSi_S2ïï-ËÉÈSESi2iSÎS ( abrégé AFN).
Un automate fini non déterministe est un quintuplet
M - (Q, Z,t , q , P)
Q
où
-" Q est un ensemble fini, d'états
- Z est un ensemble fini de symboles d'entrée autorisés
- Z est une fonction de transition
- q est un état initial
- F S Q est l'ensemble des états de sortie.
Remarques :
La fonction de transition d'un AFN est une application qui,
au couple : (état actuel, symbole d'entrée actuel), associe l'ensemble
des états accessibles à l'état actuel.
Le comportement de cet automate est à cnaque instant défini
par un couple (q,W) où q est l'état actuel et V est la chaîne consti-
tuée par le symbole sur lequel pointe le pointeur d'entrée et les sym-
boles à droite de ce pointeur dans la bande d'entrée.
H.137• Automate_à_gile_à_entrée_et_sortie_gar_le_sommet
( en abrégé AFESS ).
Un automate à pile à entrée et sortie par le sommet (APESS)
est un AFN à une seule direction.
La mémoire illimitée dont il dispose est une pile à entrée
et sortie par le sommet.
Un scbéma représentatif en est donné figure H.10.
- 101 -
:Qx(XUJ£ j )xT — • Q x r
- q € û est un état initial
^o
- Z 6 T est le symbole de début de pile
- F ç Q est un ensemble d'états terminaux.
bande d'entrée
(mode lecture)
pointeur d'entrée
fonction
de
transition
z
i Mémoire :
Z
2 pile à entrée et sortie
par le sommet
Z
3
Z
P
1
q est le nouvel état,
? est le nouveau contenu de la pile.
Remarques :
Soit : a e 2 u I£ I •
1. Si a r £ le symbole courant d'entrée est a* le symbole en som-
met de pile est Z. L'automate évolue alors vers l'état suivant
q', le pointeur d'entrée est incrémenté d'un symbole et TS de-
vient le nouveau contenu de la pile.
Si V = t, 1'opération sur la pile s'appelle VIDAGE de la pile.
2. Si a = Ê. la pile est supposée vide.
De plus le nouveau symbole d'entrée est éliminé. Le pointeur
d'entrée ne bouge pas.
e
H . 138. ^25 SEI55âi£î2--ï-^ .iiS5-Σâ25-lî£ÎSSiES *
-
i. NOMBRE SANS SIGNE > = Chiffre< RESTE DU NOMBRE SANS SIGNE >
= . < FRACTION IECIMALE ?
= " < PARTIE EXPOSANT?
PRESTE DU NOMBRE SANS SIGNE? = Chiffre <• RESTE DU NOMBRE SANS SIGNE ?
= . « FRACTION DECIMALE?
= " i PARTIE EXPOSANT?
= -A.
(11.23)
- 106 -
( fitbutius.^. " \
UN3CAN J
INITIALISATIONS
LKCTuac
I
PllSETKB
BLOC.A
-/ ft i t n n ? \
•L0C.6 I AlaulLLMiE i
_/«OM» 7~\_ J
Fin 4 u
LINSCAN
AN J
(
BLOC-A
MlCsaUBSTR(LI5HE,7C0«W(H),4)
INV, F1X66(UNJMC(.
MIC»
Isa.REFÇlNX)
3 a 4S ? « .
bUnc?
XNCREME
INCBSME
- - « ^ /-..••
aLoc.a f RETOUK J
Mic=su8smcu6Ne,Tconn(b)^ )
INVs FIXB0(.UNSP6CCMIC^)
I = * _ REFtlNV)
INCRÊME
I
'connetmii»' ?
won, \ *j.«»ol?
tiUb
RETOUR
)
ENTREE de la boucle
INSTRUCTIONS du CORPS
de la boucle
INITIALISATIONS
ne-ru =. i
_/ RMftsl ? \
a L
^> ^<
/ Emit* >ntit\__
CMl iSMBSTfl(SYM.eoM,0
Z3
' ^—^-»—-^^*^
/iwrnsUV
EMTieflï£NTIEPl»W+3.1
vrnaoissvn.cou
«MTien : o
EitReunut.sfnBOL)
3 •TRACTION DECIMALE» 4
4 «RESTE DE LA FRACTION DECIMALE > 4 5 SORTIE
5 «PARTIE EXPOSANT» 7 6
6 «ENTIER EXPOSANT» 7
7 <RESTE DE L'ENTIER EXPOSANT» 7 SORTIE
TABLEAU H-15
1 7 2
2 • 3
3 4 4
4 2 4
4 X SORTIE
TABLEAU II-16
- 113 -
Elément syntaxique c II +
TABLEAU II-17
- 114 -
Un identificateur peut :
1. débuter un commentaire. S'il en est ainsi, lors de la résolu-
tion des symboles, le texte compris entre le mot-clé
COMMENTAIRE et le ';' est ignoré.
2. constituer le nom d'un bloc. Dans ces conditions, c'est le
moniteur qui le reconnaît et appelle l'analyseur concerné.
3. être un mot-clé. Ce sont les analyseurs syntaxiques qui. le
reconnaissent. Le traitement adéquat est alors effectué.
4. représenter le nom d'un paramètre, celui d'une fonction ou
celui d'une variable.
Le traitement des variables est centralisé au niveau du sous-
programme TRTVARI. Toutes les variables sont sauvegardées dans la table
NOMUJENT. Lors de la phase de construction ou de consultation de cette
dernière, deux indicateurs (TC0KPl(49) et TC0MP1(50)) sont utilisés
comme moyen de transfert de l'information entre l'AS et l'AL.
Avant toute introduction ou toute consultation, une fonction
d'adresse associée à l'identificateur est calculée. La méthode d'accès
à la table NOMEDENÎ se fait à l'aide d'une table mêlée par la technique
de dispersion avec règlement des débordements par chaînage.
i
-<£> C: chiffre
Sortie
DES NOMBRES
- 116 -
A(N,M) = 1 + —• .
Valeur résultat
du calcul de la
fonction
1
d adresse
Table "NOMIDENT."
1
2 var. 2
3
28
30 far. 30
31
32
1 . PAS
2. INTERVALLE
3 . PRECISION
4. TOLERANCE
5. OPTIONS
A l'intérieur de certaines rubriques, d'autres mots-clés sont
possibles ; on peut reconnaître les mots-clés MAXIMUM, MINIMUM et
DEMARIiAGE pour la rubrique PAS, MAXIMUM et MINIMUM pour la rubrique
INTERVALLE et neuf mots-clés pour la rubrique OPTIONS. La liste de ces
derniers et le rôle de chacun d'eux ont été donnés lors de la descrip-
tion du langage.
119
\VMwmi nmituaaty
INITIALISATIONS
JM COMMONS «t
«U L'ANALYSÉ SYNTAXIQUE
ANASYST
I
PRist £H c o n f i e d u
OPTIONS.
f M M I S R Ï S ALLOCATIONS
* t 2 0 N I 3 cLt TRAVAIL
AiNADECL
PRISE EN COMPTE a u
DONNEES A u P R O B L i M Ê .
AUTRES ALLOCATIONS
H2 I r a n A'ANAIY.
H 4 N eaUATIOMl
NONSEMA
ÏOINT F I N A L »
Ntn X >
/fntUUPHMI " \
( OTMMITM tTNTAXlQOiJ
GCNC-i-IS
^
Tut» wlinyWiM d w w d f n
<,6tHC.»«miH.I? > -
1 outu«nit>>tiimim
iSm«timJ.UUUi<U
11 UIWICMT
b i i h n M {«War UtMIT /
<E
. -4
( Fi* - U . . | . . N
ANAVtVT j
< fit>~
^»wt
~*~>Ml
^VQMHOIOtHtlH —
X
isoeNS
I
| | tlNSCAN
T»IL«HlV>L
^
J **
r»m : * m . M i ( K )
I I EWBCUH I |
Hi
AOaK.»«W»H»UL
| ticiw i - » m n |
| | BKWtUW. I
I I UNICAW I
( Fin Au ».(,.
VAUUR.
\
)
I ANAMCL J
INITIALISATIONS CT AFPECTATIOHJ
D U VMIkM.ES D« TRAVAIL
E c t l K v t t Àuk 3iMutnmcj
SIXICUT •I'EikuniMjaU./
TRI t U T A k L H > U I f P U
I PAU 0 R 1 M CKsiUAHT
S « u m « » « l i d u ûiultat» i U /
I'aitttniL iur U <[iihln, /
CSMilT /
<i
initUu J.X1I trnWAuf /
bJi<W CINITIA
LIICKATION t i t l M H M TRAVAIL,
ANP.S6CL )
BOUCLE i » 0
G
CTAT = 0
s.iri&ictst. aoucLi-l
/TJk»Ll(lHt>ICt)
<î" . T*eU(INOICt«t)
SAUVEGAHtlE * T A » L £ ( X N « I C l )
T»*Lt(ZN»lttt*TA>liUNMCt+< )
TfcBLClXNHUtl) : SMJVÏ6MMS
ETKTiINilCi
BOUCLt i «TAT 4
oui / . c M . , x l \
r
Ç SORTIE J MON
0 U I
, /serie.^lViiiVGENe^oy UNSCM»
POINT, TAUXi'o'B
S SUT
LINSCAN -
—r
LINSCKN EMUuH
. / N O U U K I M M S K ^ WM.<ae.soKTit(«nNUMMM —4 '
/ T S M P S ? \ * AMM.1St.SOKTlï(T«nfS>>
^KUIMIMNIM»* AHALftt-XKnifc
/ FAUX ?
CRUUN. _ • FMMi'l'S .
1 (&cr ^ («*
2 lie- => PS*
3 T*Po-A =? T r i
4 Po-A =^ TS-Û
5 T*Ao- => I j r i
10 Aa- => wû
TABLEAU II-26
Aa+b*(c+d)+e H
10 I- I A +b*(c+d)+e -|
2 I- P+ A b*(c+d)+e -i
4 t- T+ A b»(c+d)+e H
7 I- E+ A b*(c+d)+e H
S h E+I A *(o+d)+e -1
2 I- E+P* & (c+d)+e -|
4 h E+T* A (c+d)+e -t
5 I- E+T#( A c+d)+e H
1 h-E+T»(l A +d)+o —t
2 h E+T*(P+ A d)+e -1
4 I- E+T*(T+ A d)+e -1
7 h E+T*(E+ A d)+e-i
8 H- E+T*(E+I A .)+e -1
2 I- E+T#(E+P) A +e -1
4 |- E+T*(E+T) A +e-f
6 l-E+T*(E) A +e H
9 h-E+T*P+ A e -H
3 I-E+T+ A e—i
6 hE+ A e-<
8 l-E+I H
2 l-E+PH
4 I-E+T-*
6 l-E -1
11 Sortie
TABLEAU 1 1 - 2 7
- 129 -
1 (Ao- =* (o-A 1
7 To-A ^ Eo-A 8
TABLEAU 11-28
* Etiquette> : a t a -*• {3 1 < action > # < étiquette suivante > (H.32)
Exemple
W V
Remarques.
a. Deux métasymboles particuliers sont utilisés dans l'ensemble des
productions définissant la description de la fonction de transition
du transducteur de la grammaire G( < PROGRA > ) :
1 . *»S>0' : Il a pour effet de faire ignorer une position. Par exem-
ple l'instruction (il.3*0 a pour effet d'effectuer un branche-
ment à l'instruction d'étiquette L_ si le second symbole de la
pile est 5
L 3 :Ss>oa|a«a I L ? (H.34)
L : #6*|*=>ï> | z W (11.35)
1. Construction_des_groductions_de_leetur^ .
Les actions de lecture sont :
z:+ |( — (I. * z(
Ia — a| * Za
Z(: l( — (| * Z(
| a —<• a| * Za
I [ erreur
Z+,Z( : l( — ( | * Z(
| a -* a| * Za
| I erreur
ZE : | ( -«- ( | * Z(
| + —*• +1 * Z+
SaSO |$ I accepter
| | erreur
Xci le symbole >as3> ' indique n'importe quel caractère. XI est intro*
duit en sommet de pile au lieu de 'E' qui est le vrai sommet dans l'es-
poir de pouvoir le mélanger avec d'autres productions.
E : î= E + T
::= T
ZT I * • »
* z*
RT ! B + T I aasi ssss ST
+ T | sas Eaa2 ST
T I ass Baas ST
ST LT
LT
LT
erreur
LT [aaa Z#5
(
3. Optimisât!on_de_la "taiii©_de_l analyseur.
L'algorithme est le suivant :
Un graphe est associé à la matrice de precedence pour les conditions
de vérification correspondant à la relation '>'. A ce stade toutes
les lignes ne présentant pas la relation <>< sont ignorées. Sont
enfin considérées comma une seule et même ligne celles ayant des
entrées identiques.
Un noeud dans le graphe est associé à chacune des rangées qui restent
dans la matrice et un noeud zéro est en outre introduit.
Soient alors deux noeuds distincts A et B. L'arc allant de A vers B
est tracé si toutes les entrées dans la rangée B sont incluses dans
celles de A. De plus un coût est affecté à cet arc ; il correspond
au nombre d'entrées de A qui ne sont pas dans 5.
Une minimisation du coût est alors obtenue en engendrant seulement
les A-productions qui ne sont pas dans B et les B-productions, au
lieu de toutes les productions pour A et B. Cela revient donc à
obtenir :
coût (A,B) + coût (B,0)
au lieu de :
coût (A,0) + coût (B,0)
Pour chaque noeud nous ne conservons qu'un arc de coût minimum quit-
tant ce noeud. Il faut partir d'un n.oeud sans arc rentrant et passer
à travers tous les noeuds. Le graphe ainsi obtenu est un arbre ayant
0 pour racine. C'est l'arbre de coût minimum associé au graphe.
- 135 -
b. Ce que nous venons de faire pour les entrées 'vérification' peut aussi
être fait pour les entrées 'lecture'.
c. Des rangées fictives sont introduites au besoin afin de permettre de
nouvelles diminutions du nombre de productions.
Exemple :
Considérons la -matrice de precedence de la figure XX-Z9 où
seules les colonnes relatives aux symboles terminaux et les entrées de
lecture sont représentées. Le graphe associé à cette matrice est donné
figure H - 3 0 et l'arbre de coût minimum obtenu à partir de ce graphe
est représenté figure II-31.
S
1 H S
3
s
6 S
7 S
8 S
9
S
2 <
S
3
i. 4. A. £. <. 4.
s
k ^ £ 4. <
s
6
< i <.
S
8 < i. i •C
S • < A.
9
FIG II-29
Nous verrons plus loin ^-f paragraphe II.k) qu'à chaque règle
reconnue est associé un programme définissant l'action devant être pri-
se lors de la reconnaissance. Par exemple si nous considérons la struc-
ture simplifiée des expressions arithmétiques du paragraphe 11.3^1•»
une chaîne suffixe peut ôtre produite en sortie si la règle 2 enchaîne
la sortie de l'identificateur adéquat et les règles 3 et 6 les sorties
respectives * et + . L'expression arithmétique a+b*(c+d)+e produit
dans ces conditions :
abcd+*+e+.
Outre les optimisations décrites précédemment, le sous-pro-
gramme NONSEMA a bénéficié d'une minimisation du nombre de tests en ce
qui concerne l'apparition d'un non-terminal donné comme membre droit
dans un certain nombre de productions. Ce résultat a été atteint par
un arrangement préalable des productions de Ployd-Evans relatives à la
grammaire G(<PROGRA>).
H . jhZ. Orga^sation^de^l^ana^yseur^ONSEMA.
IniUalûaksns '
. Vart«UuT«âlu
. AlnitucL* wpinflNt
PTKf>ILio f 3IOU&0
P1LI»)xVTtltSH0N
JkBLOtQUf
BOUCLE PRINCIPAL!
( Fin «U ».|,. \
'KnJUUIOUCLtN
-i H»MO«l
2
C MtlNCIPAtt <Ux.y j
NowstnA y
| pmM»pititPtwpif>
I •»»«" I > ;l
X
PP.truvN6.MJ
^GMJCHt
PMPUVKW?
, 4 . f PKIK1NR£ JS/wuïTvNpâxK
< PMn.^wMP? > - - q fruprou-T
^ ^_ f txMmirruatM j^pptnsvNEiuX 3J
•< nun » SJ> -p||»T«*W* | ^
- » | | «00111810
I nan.
\J SRtCHcncHS y
i
l0m»U'SUR»&
< !>
LINKMtli
__/ BunvMy.-itnr»!^^_
< VAIUMU s r m n t ! \ -
fiMCTYVS
TKVMiTYDta D
PAIWMSTRe t
SyntMtaWCMIH! FONCTIIN*'* A
< UTNUfUr
LINÎCAN Nttau.'C»
urnun *o
POtNTiVfi
eswtvt's
UNSCAN
-*'+• Z3~~
0
ÀM, him&umink
I i w ii
*EXPSIMS:PROC;
IP a d d i t i o n _ b i n a i r e THEN DO;
CALL INSERER(genre_addition) ;
CALL «GAUCHE! ;
END;
ELSE IP s o u s t r a c t i o n _ b i n a i r e THEN EO;
CALL INSERER(genre_sou5tract±on) ;
CALL *GAUCHE1 ;
END;
ELSE IP (#PHEMIER=VNEXS) THEN #PREMXER=VNEXP ;
ELSE CALL #GAUCHE;
END #EXPSIM3;
*BLOEQ:PROC;
IP (^SECONDiVTDBBNON) THEN CALL REMPLACER(2, VNNON) ;
END «BLOEQU;
#EXPSIM;PROC;
— IP parentaèse^fermante THEN CALL EfSERER( genre_parenth_fermante ) ;
ELSE IF (?ÎFHEMIER*VNEXP) THEN Î&REMXER-VNEXR;
END SSEXPSIM;
SCEXPCOU ; PROC ;
IP (5feECOND=VNDOt7)&(#TROISIEME=VNIDF) THEN CALL
REMPLACER^,VNAPF) ;
ELSE IP (#SECOND«VKEXP) THEN
IF (ffeTROXSIEME=VNIDF) I (#TROISIEME=VINGAU) THEN
CALL REMPLACER(a,VNPRl);
END SCEXFDOtJ;
•EXPRESS: PROC;
IF p o i n t _ v i r g u l e THEN #PREMIER=VNCOR;
ELSE IP (!fe>REMIER«genre_parenth_feniiante) THEN
CALL ÏCEXPDOC;
END «EXPRES;
#TJNEEC}U:PROC;
IF (5feECOND