Wicri:Catalogue Köchel
De Wicri Musique
Cette page introduit un programme de filtrage d'un document ISTEX avec le Catalogue Köchel
%{
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();
}