Wicri:Catalogue Köchel

De Wicri Musique

Cette page introduit un programme de filtrage d'un document ISTEX avec le Catalogue Köchel

logo travaux en cours de rédaction
%{
 char *key;
 int start;
 char *w;
%}
%START KOCHEL
%START BEFORE_ANALYTIC
%START ANALYTIC
%START TITLE
%START END_HEADER
%START BEFORE_FRONT
%START BEFORE_FULL_TEXT_TEI
%START ABS
%START BEFORE_BODY
%START BODY
%%
^[0-9A-Za-z]+\t      {strcpy(key, yytext); BEGIN BEFORE_ANALYTIC;}
<BEFORE_ANALYTIC>"<analytic>"  BEGIN ANALYTIC;
<ANALYTIC>"<title"[^<]*">"     {BEGIN TITLE; start=TITLE; w="4";}
<TITLE>"</title>"               BEGIN END_HEADER;
<END_HEADER>"</teiHeader>"      BEGIN BEFORE_FRONT;
<BEFORE_FRONT>"</TEI>"          BEGIN BEFORE_FULL_TEXT_TEI;
<BEFORE_FRONT>"<front>"         {BEGIN ABS;start=ABS;w="2";}
<ABS>"</front>"                 {BEGIN BEFORE_FULL_TEXT_TEI;ECHO;}
<BEFORE_FULL_TEXT_TEI>"<istex:fulltextTEI"    {BEGIN BEFORE_BODY;ECHO;}
<BEFORE_BODY>"<body"            {BEGIN BODY;start=BODY;w="1"; ECHO;}
<BODY>"</body"                  BEGIN 0;
<TITLE,ABS,BODY>"K."[ ]*/[0-9]+      BEGIN KOCHEL;
<KOCHEL>[0-9]+       {printf("KV. %s\t%s\t%s\n", yytext, w, key); BEGIN start;}
.  ;
\n ;
%%
int main()
{
   key=malloc(100);
   yylex();
}