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)
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 :
> | 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();
}