Bull. Soc. sci. Nancy (1898) Millot/Outils : Différence entre versions

De Wicri Nancy
imported>Jacques Ducloy
(Le programme lex)
imported>Jacques Ducloy
(Récupération des tableaux)
 
(23 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
Cette page montre une utilisation de l'analyseur lexical lex pour faciliter la conversion des tableaux.
+
Cette page montre les outils utilisés pour traiter les données relatives à l'article [[Bull. Soc. sci. Nancy (1898) Millot|Températures extrêmes de 1878 à 1893 à Nancy]].
==Les données==
 
===février===
 
<pre>
 
cat <<... > fevrier.text
 
1 — 15°0 1895 12°3 1885 27°3
 
2 — 16°8 1895 15°0 1885 31°8
 
3 — 11°4 1895 10°0 1897 21°4
 
4 — 11°0 1895 10°3 1887 21°3
 
5 — 10°8 1880 9°2 1881 20°0
 
6 — 13°2 1895 9°2 1894 22°4
 
7 — 15°6 1895 9°4 1892 25°0
 
8 — 15°0 1895 11°0 1879 26°0
 
9 — 15°0 1895 14°4 1879 29°4
 
10 — 14°4 1895 13°0 1879 27°4
 
11 —13°4 1895 12°6 1894 26°0
 
12 — 8°S 1889 12°2 1879 21°0
 
13 —12°4 1889 12°1 1882 24°5
 
14 —17°0 1895 11°0 1897 28°0
 
15. —17°0 1895 11°6 1893 28°6
 
16 . —13°6 > 1895 15°8 1878 29°4
 
17. — 12°2 1887 17°0 1885 29°2
 
18 . . . . . . —12°0 1887 13°4 1878 25°4
 
19. . . . . . . — 9°0 1892 12°4 1878 21°4
 
20 — 7°4 1888 et 1894 13°6 1880 21°0
 
21. —11°0 1895 12°0 1884 23°0
 
22 —10°2 1895 14°0 1881 24°2
 
23 — 8°2 1889 13°0 1878 21°2
 
24 — 8°1 1886 15°2 1885 23°3
 
25. —10°2 1888 16°2 1885 26°4
 
26. . . . . — 9°0 1882 et 1896 16°0 1885 25°0
 
27. . . . . . . . — 8°0 1896 17°2 1885 25°2
 
28. . . . . . . — 7°2 1889 13°8 1878 21°0
 
...
 
</pre>
 
  
===Mars===
+
==Génération des tableaux mensuels==
  
<pre>
+
L'analyseur lexical lex est ici utilisé pour faciliter la conversion des tableaux.
cat <<... > mars.text
 
1 — 11°4 1890 13°6 1891 25°0
 
9 — 9°6 1890 . 14°0 1887 - 23°6
 
3 —10°4 1890 13°2 1878 23°6
 
4 — 9°2 1889 15°2 1887 24°4
 
5 — 9°8 1889 et 1892 16°0 1887 25°8
 
6 . — 12°4 1895 15°2 1881 27°6
 
7. . . . . . . —13°6 1895 17°0 1881 30°6
 
8 —12°6 1895 14°4 1880 27°0
 
9 — 9°1 1886 15°4 1880 24°5
 
10 — 9°2 1886 18°2 1880 27°4
 
11 —10°0 1880 . 18°6 1880 28°6
 
12 — 8°1 1886 18°8 1880 27°2
 
13 — 8°3 1887 17°8 1893 26°1
 
14 — 8°2 1887 17°3 1884 25°5
 
15 —11°2 1887 19°3 1884 30°5
 
16 —10°4 1889 19°2 1884 29°6
 
17. . . . . . . — 9°4 1889 19°3 1884 28°7
 
18 —11°0 1887 20°1 1884 31°1
 
19 —15°0 1887 20°0 1884 35°0
 
20 — 9°4 1887 19°0 1882 28°4
 
21 — 4°4 1888 18°0 1896 22°4
 
22 — 5°6 1888 19°8 1896 25°4
 
23 . — 7°2 1883 20°4 1896 27°6
 
24 — 6°6 1891 21°6 1897 28°2
 
25 . . — 8°2 1885 20°8 1896 29°0
 
26 — 3°2 1883 18°0 1897 21°2
 
27 — 2°3 1885 19°4 1886 21°7
 
28 — 2°4 1883 21°8 1890 24°2
 
29 - 3°8 1889 22°2 1890 26°0
 
30 . — 2°6 1892 22°0 1890 24°6
 
31 — 4°4 1887 22°4 1890 26°8
 
...
 
</pre>
 
  
 
==Le programme lex==
 
==Le programme lex==
Ligne 82 : Ligne 14 :
 
^[1-9][0-9]*      {printf("|-\n|%s\n|&nbsp;", yytext); BEGIN TEMP; zone=2;}
 
^[1-9][0-9]*      {printf("|-\n|%s\n|&nbsp;", yytext); BEGIN TEMP; zone=2;}
 
<TEMP>"—"            printf("-");
 
<TEMP>"—"            printf("-");
<TEMP>[1-9]"°"[0-9]*  {printf("0%s\n", yytext); zone++;  BEGIN AN;}
+
<TEMP>[0-9]"°"[0-9]*  {printf("0%s\n", yytext); zone++;  BEGIN AN;}
<TEMP>[1-9][0-9]"°"[0-9]*  {printf("%s\n", yytext); zone++;  BEGIN AN;}
+
<TEMP>[0-9][0-9]"°"[0-9]*  {printf("%s\n", yytext); zone++;  BEGIN AN;}
 
<AN>18[0-9][0-9]      {printf("|%s\n|", yytext); zone++; BEGIN TEMP; }
 
<AN>18[0-9][0-9]      {printf("|%s\n|", yytext); zone++; BEGIN TEMP; }
 
<AN>18[0-9][0-9][ ]*"et"[ ]*18[0-9][0-9]      {printf("|%s\n|", yytext); zone++; BEGIN TEMP; }
 
<AN>18[0-9][0-9][ ]*"et"[ ]*18[0-9][0-9]      {printf("|%s\n|", yytext); zone++; BEGIN TEMP; }
 +
<AN>18[0-9][0-9][ ]*","[ ]*[0-9][0-9]*[ ]*"et"[ ]*[0-9][0-9]*    {printf("|%s\n|", yytext); zone++; BEGIN TEMP; }
 
. ;
 
. ;
 
\n BEGIN 0;
 
\n BEGIN 0;
Ligne 108 : Ligne 41 :
 
==Récupération des tableaux==
 
==Récupération des tableaux==
  
<source lang-"sh">
+
<source lang="sh">
 +
WicriGetPage -l wicri-nancy.fr -p "Bull. Soc. sci. Nancy (1898) Millot/Tableaux mensuels"
 +
</source>
 +
 
 +
<source lang="sh">
 +
cat <<... > consolide.c
 +
#include "SxmlNode.h"
 +
main()
 +
{
 +
  SxmlNode *docu;
 +
  char *c1, *c2, *c3, *c4, *c5, *mois, *an ;
 +
  mois=malloc(10);
 +
  an=malloc(10);
 +
  while((docu=SxmlInputGetDocumentElement()))
 +
    {
 +
      c1=SxmlLeafText(SxmlFirstChild(SxmlGetFirstChildByTagName(docu,"c1")));
 +
      c2=SxmlLeafText(SxmlFirstChild(SxmlGetFirstChildByTagName(docu,"c2")));
 +
      if (strcmp(c1, "mois")==0) {strcpy(mois, c2); continue;}
 +
      c3=SxmlLeafText(SxmlFirstChild(SxmlGetFirstChildByTagName(docu,"c3")));
 +
      printf("|-\n|");
 +
      if(strlen(c3) > 4) {strncpy(an,c3,4); printf ("%s\n", an); }
 +
      else printf ("%s\n", c3);
 +
      printf("|%s/%s\n", mois, c1);
 +
      printf("|%s\n", c2);
 +
      c4=SxmlLeafText(SxmlFirstChild(SxmlGetFirstChildByTagName(docu,"c4")));
 +
      c5=SxmlLeafText(SxmlFirstChild(SxmlGetFirstChildByTagName(docu,"c5")));
 +
      if(strlen(c5) > 4) {strncpy(an,c5,4); printf ("|%s\n", an); }
 +
      else printf ("|%s\n", c5);
 +
      printf("|%s/%s\n", mois, c1);
 +
      printf("|%s\n", c4);
 +
    }
 +
}
 +
...
 +
 
 +
gcc consolide.c $DILIB_CC -o consolide
 +
 
 
</source>
 
</source>

Version actuelle datée du 2 mars 2020 à 10:35

Cette page montre les outils utilisés pour traiter les données relatives à l'article Températures extrêmes de 1878 à 1893 à Nancy.

Génération des tableaux mensuels

L'analyseur lexical lex est ici utilisé pour faciliter la conversion des tableaux.

Le programme lex

cat <<... > convertTab.lex
 int zone;
%START TEMP
%START AN
%%
^[1-9][0-9]*       {printf("|-\n|%s\n|&nbsp;", yytext); BEGIN TEMP; zone=2;}
<TEMP>"—"             printf("-");
<TEMP>[0-9]"°"[0-9]*  {printf("0%s\n", yytext); zone++;  BEGIN AN;}
<TEMP>[0-9][0-9]"°"[0-9]*  {printf("%s\n", yytext); zone++;  BEGIN AN;}
<AN>18[0-9][0-9]      {printf("|%s\n|", yytext); zone++; BEGIN TEMP; }
<AN>18[0-9][0-9][ ]*"et"[ ]*18[0-9][0-9]      {printf("|%s\n|", yytext); zone++; BEGIN TEMP; }
<AN>18[0-9][0-9][ ]*","[ ]*[0-9][0-9]*[ ]*"et"[ ]*[0-9][0-9]*     {printf("|%s\n|", yytext); zone++; BEGIN TEMP; }
. ;
\n BEGIN 0;
%%
int main()
{
    printf("{| class=\"wikitable sortable\"\n");
    printf("|-\n!jour\n!minimum\n!année\n!maximum\n!année\n!différence\n");
    yylex();
    printf("|-\n|}\n");
}
...

lex convertTab.lex

gcc lex.yy.c -ll -o convertTab

./convertTab < fevrier.text

Récupération des tableaux

WicriGetPage -l wicri-nancy.fr -p "Bull. Soc. sci. Nancy (1898) Millot/Tableaux mensuels"
cat <<... > consolide.c
#include "SxmlNode.h"
main()
{
  SxmlNode *docu;
  char *c1, *c2, *c3, *c4, *c5, *mois, *an ;
  mois=malloc(10);
  an=malloc(10);
  while((docu=SxmlInputGetDocumentElement()))
    {
       c1=SxmlLeafText(SxmlFirstChild(SxmlGetFirstChildByTagName(docu,"c1")));
       c2=SxmlLeafText(SxmlFirstChild(SxmlGetFirstChildByTagName(docu,"c2")));
       if (strcmp(c1, "mois")==0) {strcpy(mois, c2); continue;}
       c3=SxmlLeafText(SxmlFirstChild(SxmlGetFirstChildByTagName(docu,"c3")));
       printf("|-\n|");
       if(strlen(c3) > 4) {strncpy(an,c3,4); printf ("%s\n", an); }
       else printf ("%s\n", c3);
       printf("|%s/%s\n", mois, c1);
       printf("|%s\n", c2);
       c4=SxmlLeafText(SxmlFirstChild(SxmlGetFirstChildByTagName(docu,"c4")));
       c5=SxmlLeafText(SxmlFirstChild(SxmlGetFirstChildByTagName(docu,"c5")));
       if(strlen(c5) > 4) {strncpy(an,c5,4); printf ("|%s\n", an); }
       else printf ("|%s\n", c5);
       printf("|%s/%s\n", mois, c1);
       printf("|%s\n", c4);
    }
}
...

gcc consolide.c $DILIB_CC -o consolide