Tableau périodique des éléments

De Wicri Outils
Révision datée du 13 janvier 2011 à 22:49 par imported>Jacques Ducloy (Le code source)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Un utilitaire est en cours de réalisation pour automatiser partiellement l'adaptation anglaise des modèles mis au point autour des éléments chimiques et de leur classification.

Il s'agit d'un petit utilitaire assez démonstratif de ce qu'il est possible de faire avec l'analyseur lexicographique lex.

Les objets à traduire

Il s'agit de traduire une table périodique qui se présente ainsi :


Tableau périodique des éléments
> 1
I A
2
II A
3
III B
4
IV B
5
V B
6
VI B
7
VII B
8
VIII B
9
VIII B
10
VIII B
11
I B
12
II B
13
III A
14
IV A
15
V A
16
VI A
17
VII A
18
VIII A
V
1 1
H

2
He
2 3
Li
4
Be

5
B
6
C
7
N
8
O
9
F
10
Ne
3 11
Na
12
Mg

13
Al
14
Si
15
P
16
S
17
Cl
18
Ar
4 19
K
20
Ca
21
Sc
22
Ti
23
V
24
Cr
25
Mn
26
Fe
27
Co
28
Ni
29
Cu
30
Zn
31
Ga
32
Ge
33
As
34
Se
35
Br
36
Kr
5 37
Rb
38
Sr
39
Y
40
Zr
41
Nb
42
Mo
43
Tc
44
Ru
45
Rh
46
Pd
47
Ag
48
Cd
49
In
50
Sn
51
Sb
52
Te
53
I
54
Xe
6 55
Cs
56
Ba
*
72
Hf
73
Ta
74
W
75
Re
76
Os
77
Ir
78
Pt
79
Au
80
Hg
81
Tl
82
Pb
83
Bi
84
Po
85
At
86
Rn
7 87
Fr
88
Ra
**
104
Rf
105
Db
106
Sg
107
Bh
108
Hs
109
Mt
110
Ds
111
Rg
112
Cn
113
Uut
114
Uuq
115
Uup
116
Uuh
117
Uus
118
Uuo
 
* Lanthanides 57
La
58
Ce
59
Pr
60
Nd
61
Pm
62
Sm
63
Eu
64
Gd
65
Tb
66
Dy
67
Ho
68
Er
69
Tm
70
Yb
71
Lu
** Actinides 89
Ac
90
Th
91
Pa
92
U
93
Np
94
Pu
95
Am
96
Cm
97
Bk
98
Cf
99
Es
100
Fm
101
Md
102
No
103
Lr


La page modèle contient des lignes de script wiki telles que :

|style="text-align:center;background-color:{{Élément/Couleur gaz nobles}};color:red;border:2px solid #888888;"|2<br /><big><b>[[Hélium|He]]</b></big>

Le code source

Deux programmes s'enchaînent. Le premier converti les appels de modèle, le suivant le texte.

/*   -*- coding: utf-8 -*-  */
%START TEMPLATE
%%
\[\["Modèle:"                        {printf("\[\[Template:"); BEGIN TEMPLATE;}
\{\{                                 {ECHO;BEGIN TEMPLATE;}
 \{\{m\|                              {printf("\{\{Tl|");BEGIN TEMPLATE;}
<TEMPLATE>"Élément"                                 printf("Element");
<TEMPLATE>"/Couleur métaux alcalino-terreux"        printf("/Alkaline earth metals color");
<TEMPLATE>"/Couleur actinides"                      printf("/Actinides color");
<TEMPLATE>"/Couleur lanthanides"                    printf("/Lanthanides color");
<TEMPLATE>"/Couleur halogènes"                      printf("/Halogens color");
<TEMPLATE>"/Couleur métalloïdes"                    printf("/Metalloids color");
<TEMPLATE>"/Couleur non-métaux"                     printf("/Nonmetals color");
<TEMPLATE>"/Couleur gaz nobles"                     printf("/Noble gases color");
<TEMPLATE>"/Couleur métaux alcalins"                printf("/Alkali metals color");
<TEMPLATE>"/Couleur métaux de transition"           printf("/Transition metals color");
<TEMPLATE>"/Couleur métaux pauvres"                 printf("/Poor metals color");
<TEMPLATE>.                          {ECHO;BEGIN 0;}
%%
main()
{
 yylex();
}


/*   -*- coding: utf-8 -*-  */
%START TEMPLATE
%%
"hydrogène"                           printf("hydrogen");
"Hydrogène"                           printf("Hydrogen");
"Hélium"                              printf("Helium");
"Césium"                              printf("Caesium");
"Chlore"                              printf("Chlorine");
"Métaux alcalins"                     printf("Alkali metals");
"Métaux alcalino-terreux"             printf("Alkaline earth metals");
"Métaux de transition"                printf("Transition metals");
"Halogène"                            printf("Halogen");
"Tableau périodique des éléments"     printf("Periodic table");
%%
main()
{
 yylex();
}