Wicri:Dilib source, module MediaWiki, MediaWikiExtractSources

De Wicri Outils

Cette page introduit les sources relatifs à la commande MMediaWikiExtractSources du module MediaWiki.

Fichier MediaWikiExtractSources.lex

Code source

Attention : Ce code pose une difficulté syntaxique par la présence de balise « source » qui ne doivent pas être codées explicitement pour ne pas être analysées comme telles par le parser MediaWiki.
/*   -*- coding: utf-8 -*-  */
/*
  Dilib Version :
  Date : V0.5.46 (7 septembre 2013
  Module MediaWiki, 
  Commande : MediaWikiExtractSources
  Fichier source géré par Wicri/Outils, page : 
       Wicri:Dilib source, module MediaWiki, MediaWikiExtractSources
*/

%START JUMP
%START WIKI
%START SOURCE_TAG
%START FILE_NAME
%START COPY

 int getopt();
 extern char *optarg;

 char *root;

%%
<JUMP>.                             ;
<JUMP>\n                            ;
<JUMP>"\n<?dilib start wiki ?>\n"   {BEGIN WIKI;}
<WIKI>.                             ;
<WIKI>\n                            ;
<WIKI>"\n<source"                   {BEGIN SOURCE_TAG;}
<WIKI>"<?dilib start wiki ?>"       BEGIN JUMP;
<SOURCE_TAG>">"                     BEGIN WIKI;
<SOURCE_TAG>.                       ;
<SOURCE_TAG>"dilib:file="[\"]       {printf("<?dilib  file=\"%s", root); BEGIN FILE_NAME;}
<FILE_NAME>[\"].+\n                 {printf("\" ?>\n"); BEGIN COPY;}
<FILE_NAME>.                        ECHO;
<COPY>^"</"source">"[ ]*\n          BEGIN WIKI;
<COPY>.                             ECHO;
<COPY>\n                            ECHO;            
%%
main(int argc, char **argv)
{
  int cod_arg;

  root="";

  while ((cod_arg = getopt(argc,argv,"r:"))!=EOF)
    {
      switch(cod_arg) 
	{
	case 'r':
	  root=optarg;
	  break;
	}
    }

  BEGIN JUMP;
  yylex();
  exit (0);
}

Test

Jeu de test

Ce jeu présente une difficulté syntaxique matérialisée par quelques remplacement de caractères « < » par des séquences « <= ».

<=page>
    <title>Wicri:Dilib source, module CharSet</title>
<=?dilib start wiki ?>
Cette page introduit les sources du module [[Dilib, module CharSet]].
<=source lang="make">
#
#   Module  : CharSet
#   Fichier : CharSet.mk
<=/source>
[[Catégorie:Dilib source]]
<<!-- -->?dilib end wiki ?>
</text>
</revision>
<=/page>