!= ===============================================================
!= HFST Pmatch rule file converted from Flex source file PrsAnm.ll
!= by flex2pmatch.py
!= ===============================================================

!= ===============================================
!= Pmatch shorthand regular expression definitions
!= ===============================================

Define UNIMPLEMENTED [ "" ] ;
Define AnyChar [Alpha|Num|Punct|Whitespace|"­"] ;
Define Upper [UppercaseAlpha|"&"] ;
Define AZ
     ["A"|"B"|"C"|"D"|"E"|"F"|"G"|"H"|"I"|"J"|"K"|"L"|"M"|"N"|"O"|"P"|"Q"|"R"|"S"|"T"|"U"|"V"|"W"|"X"|"Y"|"Z"] ;
Define Az
     ["a"|"b"|"c"|"d"|"e"|"f"|"g"|"h"|"i"|"j"|"k"|"l"|"m"|"n"|"o"|"p"|"q"|"r"|"s"|"t"|"u"|"v"|"w"|"x"|"y"|"z"] ;
Define NST [AnyChar - [Whitespace|"<"|">"]] ;
Define NS [ NST ] ;
Define NSTagComma [AnyChar - [Whitespace|"<"|">"|","]] ;
Define NSHash [AnyChar - [Whitespace|"#"|"<"|">"]] ;
Define NSDash [AnyChar - [Whitespace|"-"|"<"|">"]] ;
Define NSColon [AnyChar - [Whitespace|":"|"<"|">"]] ;
Define NSDashColon [AnyChar - [Whitespace|":"|"-"|"<"|">"]] ;
Define NoTag [AnyChar - ["\n"|"<"|">"]] ;
Define NoTags [ NoTag+ ] ;
Define NoQuote [AnyChar - ["\n"|"\""|"'"|"´"|"«"|"»"|"<"|">"]] ;
Define NoDQuote [AnyChar - ["\""|"\n"|"<"|">"]] ;
Define NoQuoteVbar [AnyChar - ["\n"|"\""|"'"|"|"|"´"|"«"|"»"|"<"|">"]] ;
Define NoQuoteHash [AnyChar - ["\n"|"\""|"'"|"´"|"#"|"«"|"»"|"<"|">"]] ;
Define NoQuoteHashVbar
     [AnyChar - ["\n"|"\""|"'"|"´"|"#"|"|"|"«"|"»"|"<"|">"]] ;
Define NoComma [AnyChar - ["\n"|","|"<"|">"]] ;
Define NoCommaPeriod [AnyChar - ["\n"|","|"."|"<"|">"]] ;
Define NoLPar [AnyChar - ["\n"|"("|"<"|">"]] ;
Define UpperDigit [UppercaseAlpha|Num] ;
Define UpperDigitDash [UppercaseAlpha|Num|"-"] ;
Define Lower [ LowercaseAlpha ] ;
Define LowerDigit [LowercaseAlpha|Num] ;
Define LowerDigitDash [LowercaseAlpha|Num|"-"] ;
Define DigitDash [Num|"-"] ;
Define DigitDashes [ DigitDash+ ] ;
Define DigitComma [Num|","] ;
Define DigitCommas [ DigitComma+ ] ;
Define DigitUscore [Num|"_"] ;
Define DigitUscores [ DigitUscore+ ] ;
Define AsciiAlpha [ AZ | Az ] ;
Define AlphaDigit [Alpha|Num] ;
Define AlphaDigitDash [Alpha|Num|"-"] ;
Define AlphaDigitDashUnder [Alpha|Num|"-"|"_"] ;
Define Num02 ["0"|"1"|"2"] ;
Define Num03 ["0"|"1"|"2"|"3"] ;
Define Num06 ["0"|"1"|"2"|"3"|"4"|"5"|"6"] ;
Define Num12 ["1"|"2"] ;
Define Num19 ["1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"] ;
Define Num13 ["1"|"2"|"3"] ;
Define YearNum [ Num12 Num^3 ] ;
Define Nums6 [ Num^6 ] ;
Define Nums4 [ Num^4 ] ;
Define Nums2 [ Num^2 ] ;
Define Nums [ Num+ ] ;
Define Nums12 [ Num (Num) ] ;
Define Num12DigitDashes [ Num12 DigitDashes ] ;
Define Num01X [ ["0"|"1"] Num ] ;
Define Num02X [ Num02 Num ] ;
Define Num12X [ Num12 Num ] ;
Define Num13X [ Num13 Num ] ;
Define Num19x [ Num19 (Num) ] ;
Define Num19X [ Num19 Num ] ;
Define Num12Nums [ Num12 Nums ] ;
Define NumsDotNums [ Nums {.} Nums ] ;
Define Nums2DotNums2 [ Nums2 {.} Nums2 ] ;
Define NumsColonNums [ Nums {:} Nums ] ;
Define NumDotNums2 [ Num {.} Nums2 ] ;
Define Nums12DotNums2 [ Nums12 {.} Nums2 ] ;
Define NumsSlashNums [ Nums {/} Nums ] ;
Define NumsSlashNums [ Nums {/} Nums ] ;
Define NumsCommaNums [ Nums {,} Nums ] ;
Define NumsCommaNums [ Nums {,} Nums ] ;
Define NumsSpNums [ Nums { } Nums ] ;
Define NumRange [ Nums {-} Nums ] ;
Define Nums2Range [ Nums2 {-} Nums2 ] ;
Define NumsSpRange [ Nums { - } Nums ] ;
Define HhMm [ Num02X {.} Nums2 ] ;
Define CapWord [ Upper NS* ] ;
Define CapWord2 [ Upper NS+ ] ;
Define CapWord3 [ Upper NS^>1 ] ;
Define CapWord4 [ Upper NS^>2 ] ;
Define Word [ NS+ ] ;
Define UpperWord [ Upper+ ] ;
Define LowerWord [ Lower+ ] ;
Define CapWord2iska [ CapWord2 {iska} ] ;
Define CapWord2ska [ CapWord2 {ska} ] ;
Define CapWord2sk [ CapWord2 {sk} ] ;
Define CapWord2s [ CapWord2 {s} ] ;
Define CapWord2Dash [ CapWord2 {-} ] ;
Define WordDash [ Word {-} ] ;
Define Word%_iska [ Word {iska} ] ;
Define Word%_isk [ Word {isk} ] ;
Define Word%_ska [ Word {ska} ] ;
Define Word%_sk [ Word {sk} ] ;
Define Word%_s [ Word {s} ] ;
Define UpperWord%_s [ UpperWord {:s} ] ;
Define LowerWord%_a [ LowerWord {a} ] ;
Define LowerWord%_e [ LowerWord {e} ] ;
Define LowerWord%_s [ LowerWord {s} ] ;
Define EndTagEnamex [ {</ENAMEX>} ] ;
Define StartTagEnamex
     [ {<ENAMEX TYPE=} "\"" UpperWord "\"" { SBT=} "\"" UpperWord "\"" {>} ] ;
Define WordBoundary [ [Whitespace|Punct] - ["<"|">"] | # ] ;
Define Aa ["A"|"a"] ;
Define Bb ["B"|"b"] ;
Define Cc ["C"|"c"] ;
Define Dd ["D"|"d"] ;
Define Ee ["E"|"e"] ;
Define Ff ["F"|"f"] ;
Define Gg ["G"|"g"] ;
Define Hh ["H"|"h"] ;
Define Ii ["I"|"i"] ;
Define Jj ["J"|"j"] ;
Define Kk ["K"|"k"] ;
Define Ll ["L"|"l"] ;
Define Mm ["M"|"m"] ;
Define Nn ["N"|"n"] ;
Define Oo ["O"|"o"] ;
Define Pp ["P"|"p"] ;
Define Qq ["Q"|"q"] ;
Define Rr ["R"|"r"] ;
Define Ss ["S"|"s"] ;
Define Tt ["T"|"t"] ;
Define Uu ["U"|"u"] ;
Define Vv ["V"|"v"] ;
Define Ww ["W"|"w"] ;
Define Xx ["X"|"x"] ;
Define Yy ["Y"|"y"] ;
Define Zz ["Z"|"z"] ;

!= ============================
!= Additional recognition rules
!= ============================

!C Ignore already tagged names and exceptions.
!C Note that this might not always work correctly since Pmatch rules
!C are in principle order-independent.
Define IgnoreTagged
     [ {<Except>} [AnyChar - "<"]* {</Except>}
       | {<} [{Ena} | {Nu} | {Ti}] {mex} Alpha+ {>} [AnyChar - "<"]+ {</}
         [{Ena} | {Nu} | {Ti}] {mex} Alpha* {>} ] ;

!= ==================================================
!= Pmatch definitions for converted Flex source begin
!= ==================================================

!= ==========================================================
!= Pmatch definitions for Flex regular expression definitions
!= ==========================================================

!# 
!# 	File: PRSAnm.ll
!# 	Dimitrios Kokkinakis
!# 	version: 120125
!# 

!= =================================
!= Pmatch definitions for Flex rules
!= =================================

!#  EXCEPTIONS 

!R "\<ENAMEX TYPE\="\"(EVN|LOC|MSR|OBJ|ORG|PRS|WRK|TME|MDC|TRM)"\" SBT\=\""(ANM|ARL|AST|ATH|ATL|CLC|CLT|CLU|CMP|CRP|DAT|DEN|EDU|FIN|FNC|FWP|GPL|HPL|HUM|MDC|MDD|MDA|MDI|MTH|PER|PLT|PPL|PRD|PRJ|PRZ|RLG|RTV|STR|TVR|TRM|VHA|VHG|VHW|WAA|WAO|WMD|WMO|WTH)\"\>[^\n\<]+\<\/ENAMEX\>
!A {ECHO;}
!I Ignored exception rule

!R "\<NUMEX TYPE\="\"MSR"\" SBT\=\""(DGR|VLM|TMP|INX|DST|CUR|DEN|PRC|CMU|WMU|XXX|TEL|LST|AGE|WEB|CVU|CRD|ELU)\"\>[^\n\<]+\<\/NUMEX\>
!A {ECHO;}
!I Ignored exception rule

!R "samtliga domän"
!A {ECHO;}

Define Except001 [ {samtliga domän} ] ; 1

!#  GODS 

!R "Judas Priest"
!A {ECHO;}

Define Except002 [ {Judas Priest} ] ; 2

!R "Jesus And Mary Chain"
!A {ECHO;}

Define Except003 [ {Jesus And Mary Chain} ] ; 3

!R "Jesus Christ Superstar"
!A {ECHO;}

Define Except004 [ {Jesus Christ Superstar} ] ; 4

!R "Flera brister"
!A {ECHO;}

Define Except005 [ {Flera brister} ] ; 5

!R [^\n\t ]*([Kk]entauren|rkeängeln|udinnan|udinna|[Gg]ud|[Gg]uden|[Hh]elgonet|[Vv]ampyren|[Pp]rofeten|[Ää]ngeln)(" "{U}[^\n\t ]+)+
!A {printMTH(yytext,1);}

Define EnamexPrsMth001a [ CapWord2 [{ } CapWord2]* ] ;
Define EnamexPrsMth001
     [ EnamexPrsMth001a
       LC([Kk {entauren} | {rkeängeln} | {udinnan} | {udinna} | Gg {ud}
             | Gg {uden} | Hh {elgonet} | Vv {ampyren} | Pp {rofeten}
             | ["Ä"|"ä"] {ngeln}]
          { })
       EndTag(EnamexPrsMth) ] ; 6

!R "Sankta "{U}[^\n\t ]+" av "{U}[^\n\t ]+
!A {printMTH(yytext,0);}

Define EnamexPrsMth002a [ {Sankta } CapWord2 { av } CapWord2 ] ;
Define EnamexPrsMth002 [ EnamexPrsMth002a   EndTag(EnamexPrsMth) ] ; 7

!#  Gud + {U}sth not Good 

!R [^\n\t ]*[Gg]ud(a|inno)rna(" "{U}[^\n\t ]*)+([ \,]+{U}[^\n\t ]*)*(" "(och|eller)(" "{U}[^\n\t ]*)+)?
!A {printMTH(yytext,1);}

Define EnamexPrsMth003a
     [ CapWord [{ } CapWord]* [[Whitespace|","]+ CapWord]*
       ({ } [{och} | {eller}] [{ } CapWord]+) ] ;
Define EnamexPrsMth003
     [ EnamexPrsMth003a
       LC(Gg {ud} [{a} | {inno}] {rna })
       EndTag(EnamexPrsMth) ] ; 8

!R [^\n\t ]*[Aa]postlar(na)?(" \:")?(" "{U}[^\n\t ]*)+([ \,]+{U}[^\n\t ]*)*(" och"(" "{U}[^\n\t ]*)+)?
!A {printMTH(yytext,0);}

Define EnamexPrsMth004a
     [ NS* Aa {postlar} ({na}) ({ :}) [{ } CapWord]+
       [[Whitespace|","]+ CapWord]* ({ och} [{ } CapWord]+) ] ;
Define EnamexPrsMth004 [ EnamexPrsMth004a   EndTag(EnamexPrsMth) ] ; 9

!R [^\n\t ]*helgon" "S(ankt|ankta|anta|\:t)" "{U}[^\n\t ]+
!A {printMTH(yytext,0);}

Define EnamexPrsMth005a
     [ NS* {helgon S} [{ankt} | {ankta} | {anta} | {:t}] { } CapWord2 ] ;
Define EnamexPrsMth005 [ EnamexPrsMth005a   EndTag(EnamexPrsMth) ] ; 10

!R [^\n\t ]*helgon(et)?" \, "S(ankt|ankta|anta|\:t)" "{U}[^\n\t ]+
!A {printMTH(yytext,0);}

Define EnamexPrsMth006a
     [ NS* {helgon} ({et}) { , S} [{ankt} | {ankta} | {anta} | {:t}] { }
       CapWord2 ] ;
Define EnamexPrsMth006 [ EnamexPrsMth006a   EndTag(EnamexPrsMth) ] ; 11

!R [^\n A-ZÅÄÖ]+" Skaparen"
!A {printMTH(yytext,1);}

Define EnamexPrsMth007a [ {Skaparen} ] ;
Define EnamexPrsMth007
     [ EnamexPrsMth007a
       LC([NS - UppercaseAlpha] { })
       EndTag(EnamexPrsMth) ] ; 12

!R "ridder Sankt "{U}[^\n\t ]+
!A {printMTH(yytext,1);}

Define EnamexPrsMth008a [ {Sankt } CapWord2 ] ;
Define EnamexPrsMth008
     [ EnamexPrsMth008a
       LC({ridder })
       EndTag(EnamexPrsMth) ] ; 13

!R [Kk]entauren" "{U}[^\n\t ]+
!A {printMTH(yytext,1);}

Define EnamexPrsMth009a [ CapWord2 ] ;
Define EnamexPrsMth009
     [ EnamexPrsMth009a
       LC(Kk {entauren })
       EndTag(EnamexPrsMth) ] ; 14

!#  ANIMALS 
!#  <ENAMEX TYPE=&#x201D;PRS&#x201D; SBT=&#x201D;ANM&#x201D;><MTH=&#x201D;PTR&#x201D;/> 

!R "formen \, "
!A {ECHO;}

Define Except006 [ {formen , } ] ; 15

!R " form \, "
!A {ECHO;}

Define Except007 [ { form , } ] ; 16

!R (kel|man)sgrisen(" "{U}[^\n\t ]*)+
!A {ECHO;}

Define Except008 [ [{kel} | {man}] {sgrisen} [{ } CapWord]+ ] ; 17

!R [^\n\t ]*([Dd]elfin|travar|pekinges|[Ss]tartraket|stax|chimpans|[Kk]amel|[Tt]jur|ndulat|[Ll]abrador|[Hh]äst|[Kk]anin|[Kk]att|inosauri|[Ee]lefant|[Ff]isk|[Gg]ris|[Hh]ingst|[Hh]und|valp|[Ss]eriefigur|ulldogg|mpansungen|V75\-favorit|[Ss]treckfavorit|Val)en(" "{U}[^\n\t ]*)+
!A {printANM(yytext,1);}

Define EnamexPrsAnm001a [ CapWord [{ } CapWord]* ] ;
Define EnamexPrsAnm001
     [ EnamexPrsAnm001a
       LC([Dd {elfin} | {travar} | {pekinges} | Ss {tartraket} | {stax}
             | {chimpans} | Kk {amel} | Tt {jur} | {ndulat} | Ll {abrador}
             | Hh {äst} | Kk {anin} | Kk {att} | {inosauri} | Ee {lefant}
             | Ff {isk} | Gg {ris} | Hh {ingst} | Hh {und} | {valp}
             | Ss {eriefigur} | {ulldogg} | {mpansungen} | {V75-favorit}
             | Ss {treckfavorit} | {Val}]
          {en })
       EndTag(EnamexPrsAnm) ] ; 18

!R [^\n\t ]*(pekinges|chimpans|[Kk]amel|[Tt]jur|ndulat|[Ll]abrador|[Hh]äst|[Kk]anin|[Kk]att|[Ee]lefant|[Ff]isk|[Gg]ris|[Hh]ingst|[Hh]und|valp|kalkon)(en)?" som heter"(" "{U}[^\n\t ]*)+
!A {printANM(yytext,3);}

Define EnamexPrsAnm002a [ CapWord [{ } CapWord]* ] ;
Define EnamexPrsAnm002
     [ EnamexPrsAnm002a
       LC([{pekinges} | {chimpans} | Kk {amel} | Tt {jur} | {ndulat}
             | Ll {abrador} | Hh {äst} | Kk {anin} | Kk {att} | Ee {lefant}
             | Ff {isk} | Gg {ris} | Hh {ingst} | Hh {und} | {valp} | {kalkon}]
          ({en}) { som heter })
       EndTag(EnamexPrsAnm) ] ; 19

!R [^\n\t ]*([Tt]våårsstjärnan|[Ff]ormtoppade|honan|jöodjuret|grodan|settern|[Rr]åttan|[Pp]onnyn|matörtränade|allblodskung|sagoväsen|paddan|spanieln|chowen|[Ff]ölet|settern|stallstjärnan|kennel|[Kk]ossan|[Tt]igern|ängurun|[Ll]ammet|[Ff]året|[Mm]ammoth|[Pp]udeln|stoet|chnauzern|häststjärnan|arsvinet|hund|ccéhäst|hingst|ställningskon)(" "{U}[^\n\t ]+)+
!A {printANM(yytext,1);}

Define EnamexPrsAnm003a [ CapWord2 [{ } CapWord2]* ] ;
Define EnamexPrsAnm003
     [ EnamexPrsAnm003a
       LC([Tt {våårsstjärnan} | Ff {ormtoppade} | {honan} | {jöodjuret}
             | {grodan} | {settern} | Rr {åttan} | Pp {onnyn} | {matörtränade}
             | {allblodskung} | {sagoväsen} | {paddan} | {spanieln} | {chowen}
             | Ff {ölet} | {stallstjärnan} | {kennel} | Kk {ossan}
             | Tt {igern} | {ängurun} | Ll {ammet} | Ff {året} | Mm {ammoth}
             | Pp {udeln} | {stoet} | {chnauzern} | {häststjärnan}
             | {arsvinet} | {hund} | {ccéhäst} | {hingst} | {ställningskon}]
          { })
       EndTag(EnamexPrsAnm) ] ; 20

!R [^\n\t ]+(almatiner|[Aa]lligator|[Åå]sna|ckerspaniel|päckhuggare|collie|[Ss]jöko|[Tt]errier|ungsboa|eopardgecko)(n)?(" "{U}[^\n\t ]+)+
!A {printANM(yytext,1);}

Define EnamexPrsAnm004a [ CapWord2 [{ } CapWord2]* ] ;
Define EnamexPrsAnm004
     [ EnamexPrsAnm004a
       LC(Word
          [{almatiner} | Aa {lligator} | ["Å"|"å"] {sna} | {ckerspaniel}
             | {päckhuggare} | {collie} | Ss {jöko} | Tt {errier} | {ungsboa}
             | {eopardgecko}]
          ({n}) { })
       EndTag(EnamexPrsAnm) ] ; 21

!R [^\n\t ]*(sagoväsen|paddan|spanieln|chowen|settern|stallstjärnan|terriern|kennel|[Kk]ossan|ängurun|[Ll]ammet|[Ff]året|[Mm]ammoth|[Pp]udeln|[Ss]eriefigur)" "(\"|\´|\'|\'\')(" "[^\n\"\'|\´]+)+" "(\"|\´|\'|\'\')
!A {printANM(yytext,1);}

Define EnamexPrsAnm005a
     ["\"" | {´} | {'} | {''}] [{ } NoQuoteVbar+]+ { }
     ["\"" | {´} | {'} | {''}] ;
Define EnamexPrsAnm005
     [ EnamexPrsAnm005a
       LC([{sagoväsen} | {paddan} | {spanieln} | {chowen} | {settern}
             | {stallstjärnan} | {terriern} | {kennel} | Kk {ossan}
             | {ängurun} | Ll {ammet} | Ff {året} | Mm {ammoth} | Pp {udeln}
             | Ss {eriefigur}]
          { })
       EndTag(EnamexPrsAnm) ] ; 22

!R " formen \, "
!A {ECHO;}

Define Except009 [ { formen , } ] ; 23

!R " form \, "
!A {ECHO;}

Define Except010 [ { form , } ] ; 24

!R [^\n\t ]*(mussla|[Ss]chäfer|cocker|padda|spaniel|chowen|setter|stallstjärna|terrier|kennel|[Kk]ossa|[Kk]änguru|[Ll]ammet|[Ff]året|[Mm]ammoth|[Pp]udel|orm|pekinges|[Ss]tartraket|stax|chimpans|[Kk]amel|[Tt]jur|ndulat|[Ll]abrador|[Hh]äst|[Kk]anin|[Kk]att|[Dd]inosauri|[Ee]lefant|[Ff]isk|[Gg]ris|[Hh]ingst|[Hh]und|[Vv]alp)(en|n)?" \,"(" "{U}[^\n\t ]*)+" \,"
!A {printANM(yytext,2);}

Define EnamexPrsAnm006a [ CapWord [{ } CapWord]* { ,} ] ;
Define EnamexPrsAnm006
     [ EnamexPrsAnm006a
       LC([{mussla} | Ss {chäfer} | {cocker} | {padda} | {spaniel}
             | {chowen} | {setter} | {stallstjärna} | {terrier} | {kennel}
             | Kk {ossa} | Kk {änguru} | Ll {ammet} | Ff {året} | Mm {ammoth}
             | Pp {udel} | {orm} | {pekinges} | Ss {tartraket} | {stax}
             | {chimpans} | Kk {amel} | Tt {jur} | {ndulat} | Ll {abrador}
             | Hh {äst} | Kk {anin} | Kk {att} | Dd {inosauri} | Ee {lefant}
             | Ff {isk} | Gg {ris} | Hh {ingst} | Hh {und} | Vv {alp}]
          ({en} | {n}) { , })
       EndTag(EnamexPrsAnm) ] ; 25

!R [^\n\t ]*(grisa|dalmatine|[Hh]ästa|[Hh]unda|[Kk]atte)rna(" "{U}[^\n\t ]*)+([ \,]+{U}[^\n\t ]*)*(" "och(" "{U}[^\n\t ]*)+)?
!A {printANM(yytext,1);}

Define EnamexPrsAnm007a
     [ CapWord [{ } CapWord]* [[Whitespace|","]+ CapWord]*
       ({ och} [{ } CapWord]+) ] ;
Define EnamexPrsAnm007
     [ EnamexPrsAnm007a
       LC([{grisa} | {dalmatine} | Hh {ästa} | Hh {unda} | Kk {atte}] {rna })
       EndTag(EnamexPrsAnm) ] ; 26

!R [^\n\t ]*[Gg]"alopp för \( "[0-9]+" \)"(" "{U}[^\n\t ]+)+
!A {printANM(yytext,5);}

Define EnamexPrsAnm008a [ CapWord2 [{ } CapWord2]* ] ;
Define EnamexPrsAnm008
     [ EnamexPrsAnm008a
       LC(Gg {alopp för ( } Nums { ) })
       EndTag(EnamexPrsAnm) ] ; 27

!R [^\n\t ]*("sin häst"|"ans häst"|[Gg]"alopp för"|"ennes häst"|"sina hästar"|"sina topphästar")(" "{U}[^\n\t ]+)+
!A {printANM(yytext,2);}

Define EnamexPrsAnm009a [ CapWord2 [{ } CapWord2]* ] ;
Define EnamexPrsAnm009
     [ EnamexPrsAnm009a
       LC([{sin häst} | {ans häst} | Gg {alopp för} | {ennes häst}
             | {sina hästar} | {sina topphästar}]
          { })
       EndTag(EnamexPrsAnm) ] ; 28

!R ({U}[^\n\t ]*" ")+"vinner Elitlopp"
!A {printANM(yytext,20);}

Define EnamexPrsAnm010a [ [CapWord { }]* CapWord ] ;
Define EnamexPrsAnm010
     [ EnamexPrsAnm010a
       RC({ vinner Elitlopp})
       EndTag(EnamexPrsAnm) ] ; 29

!R "Hästen gallopera"
!A {ECHO;}

Define Except011 [ {Hästen gallopera} ] ; 30

!R " \, rygg och "
!A {ECHO;}

Define Except012 [ { , rygg och } ] ; 31

!R ^{U}[^\n\t ]+(" "{U}[^\n\t ]+)?" \, "(ägare|rygg|startgalopp|galopp)
!A {printANM(yytext,20);}

Define EnamexPrsAnm011a [ # CapWord2 ({ } CapWord2) ] ;
Define EnamexPrsAnm011
     [ EnamexPrsAnm011a
       RC({ , } [{ägare} | {rygg} | {startgalopp} | {galopp}])
       EndTag(EnamexPrsAnm) ] ; 32

!R ^{U}[^\n\t ]+" "{U}[^\n\t ]+" \( "[0-9]" \) rygg"
!A {printANM(yytext,40);}

Define EnamexPrsAnm012a [ # CapWord2 { } CapWord2 ] ;
Define EnamexPrsAnm012
     [ EnamexPrsAnm012a
       RC({ ( } Num { ) rygg})
       EndTag(EnamexPrsAnm) ] ; 33

!R ^{U}[^\n\t ]+" "{U}[^\n\t ]+" "(rygg|lopp|tränas)
!A {printANM(yytext,10);}

Define EnamexPrsAnm013a [ # CapWord2 { } CapWord2 ] ;
Define EnamexPrsAnm013
     [ EnamexPrsAnm013a
       RC({ } [{rygg} | {lopp} | {tränas}])
       EndTag(EnamexPrsAnm) ] ; 34

!R ({U}[^\n\t ]*" ")+(var|är)" "[a-zåäö]+" "(bästa|bra)" häst"
!A {printANM(yytext,40);}

Define EnamexPrsAnm014a [ [CapWord { }]* CapWord ] ;
Define EnamexPrsAnm014
     [ EnamexPrsAnm014a
       RC({ } [{var} | {är}] { } LowerWord { } [{bästa} | {bra}] { häst})
       EndTag(EnamexPrsAnm) ] ; 35

!R ({U}[^\n\t ]*" ")+("\, unghäststjärna"|"är amatörtränad"|"har galopperat")
!A {printANM(yytext,20);}

Define EnamexPrsAnm015a [ [CapWord { }]* CapWord ] ;
Define EnamexPrsAnm015
     [ EnamexPrsAnm015a
       RC({ } [{, unghäststjärna} | {är amatörtränad} | {har galopperat}])
       EndTag(EnamexPrsAnm) ] ; 36

!R ({U}[^\n\t ][^\n\t ][^\n\t ]+" ")+[a-zåäö]+" min "(hund|häst|katt)
!A {printANM(yytext,30);}

Define EnamexPrsAnm016a [ [CapWord4 { }]* CapWord4 ] ;
Define EnamexPrsAnm016
     [ EnamexPrsAnm016a
       RC({ } LowerWord { min } [{hund} | {häst} | {katt}])
       EndTag(EnamexPrsAnm) ] ; 37

!# skällde ut => HUM 

!R ({U}[^\n\t ][^\n\t\<\> ][^\n\t\<\> ]*" ")+(morra|galoppera|skäll)(r|t|de)
!A {printANM(yytext,10);}

Define EnamexPrsAnm017a [ [Upper NS NS NS* { }]* Upper NS NS NS* ] ;
Define EnamexPrsAnm017
     [ EnamexPrsAnm017a
       RC({ } [{morra} | {galoppera} | {skäll}] [{r} | {t} | {de}])
       EndTag(EnamexPrsAnm) ] ; 38

!R ({U}[^\n\t ]*" ")+"spurtade "(fram|fint|duktigt|vasst|frenetiskt|rejält)
!A {printANM(yytext,20);}

Define EnamexPrsAnm018a [ [CapWord { }]* CapWord ] ;
Define EnamexPrsAnm018
     [ EnamexPrsAnm018a
       RC({ spurtade }
          [{fram} | {fint} | {duktigt} | {vasst} | {frenetiskt} | {rejält}])
       EndTag(EnamexPrsAnm) ] ; 39

!#  MOD (Jyrki Niemi): Added missing space after "mycket" 

!R ({U}[^\n\t ]*" ")+"spurtade mycket "(fint|duktigt|vasst|frenetiskt|rejält|bra)
!A {printANM(yytext,30);}

Define EnamexPrsAnm019a [ [CapWord { }]* CapWord ] ;
Define EnamexPrsAnm019
     [ EnamexPrsAnm019a
       RC({ spurtade mycket }
          [{fint} | {duktigt} | {vasst} | {frenetiskt} | {rejält} | {bra}])
       EndTag(EnamexPrsAnm) ] ; 40

!R ({U}[^\n\t ]*" ")+"\( avd "[0-9]
!A {printANM(yytext,30);}

Define EnamexPrsAnm020a [ [CapWord { }]* CapWord ] ;
Define EnamexPrsAnm020
     [ EnamexPrsAnm020a
       RC({ ( avd } Num)
       EndTag(EnamexPrsAnm) ] ; 41

!R [^\n\t ]*(katt|pudel|hund|boxer|björn|uggla)" vid namn"(" "{U}[^\n\t ]+)+
!A {printANM(yytext,3);}

Define EnamexPrsAnm021a [ CapWord2 [{ } CapWord2]* ] ;
Define EnamexPrsAnm021
     [ EnamexPrsAnm021a
       LC([{katt} | {pudel} | {hund} | {boxer} | {björn} | {uggla}]
          { vid namn })
       EndTag(EnamexPrsAnm) ] ; 42

!R (Hästar" som "[^\n\t ]+ske|"Struken \: "[0-9]+)(" "{U}[^\n\t ]+)+
!A {printANM(yytext,3);}

Define EnamexPrsAnm022a [ CapWord2 [{ } CapWord2]* ] ;
Define EnamexPrsAnm022
     [ EnamexPrsAnm022a
       LC([{Hästar som } Word {ske} | {Struken : } Nums] { })
       EndTag(EnamexPrsAnm) ] ; 43

!R {U}[^\n\t ]*"\-hästar : "{U}[^\n\t ]+" "{U}[^\n\t ]+([ \,]+{U}[^\n\t ]*)*
!A {printANM(yytext,2);}

Define EnamexPrsAnm023a
     [ CapWord2 { } CapWord2 [[Whitespace|","]+ CapWord]* ] ;
Define EnamexPrsAnm023
     [ EnamexPrsAnm023a
       LC(CapWord {-hästar : })
       EndTag(EnamexPrsAnm) ] ; 44

!R (Avd|LOPP)" "[0-9]+" \: "[0-9]+" \)"(" "{U}[^ \n\(]+)+
!A {printANM(yytext,5);}

Define EnamexPrsAnm024a [ Upper [NS - {(}]+ [{ } Upper [NS - {(}]+]* ] ;
Define EnamexPrsAnm024
     [ EnamexPrsAnm024a
       LC([{Avd} | {LOPP}] { } Nums { : } Nums { ) })
       EndTag(EnamexPrsAnm) ] ; 45

!R LOPP" "[0-9]+" "V[0-9\-]+" \: "[0-9]+" \)"(" "{U}[^ \n\(]+)+
!A {printANM(yytext,6);}

Define EnamexPrsAnm025a [ Upper [NS - {(}]+ [{ } Upper [NS - {(}]+]* ] ;
Define EnamexPrsAnm025
     [ EnamexPrsAnm025a
       LC({LOPP } Nums { V} DigitDashes { : } Nums { ) })
       EndTag(EnamexPrsAnm) ] ; 46

!R [1-9]" "[0-9]+" \: "[0-9]+" \)"(" "{U}[^ \n\(]+)+
!A {printANM(yytext,5);}

Define EnamexPrsAnm026a [ Upper [NS - {(}]+ [{ } Upper [NS - {(}]+]* ] ;
Define EnamexPrsAnm026
     [ EnamexPrsAnm026a
       LC(Num19 { } Nums { : } Nums { ) })
       EndTag(EnamexPrsAnm) ] ; 47

!R [1-9]" \) Royal "{U}[^ \n\(]+
!A {printANM(yytext,2);}

Define EnamexPrsAnm027a [ {Royal } Upper [NS - {(}]+ ] ;
Define EnamexPrsAnm027
     [ EnamexPrsAnm027a
       LC(Num19 { ) })
       EndTag(EnamexPrsAnm) ] ; 48

!R "populära figuren Bamse"
!A {printANM(yytext,1);}

Define EnamexPrsAnm028a [ {figuren Bamse} ] ;
Define EnamexPrsAnm028
     [ EnamexPrsAnm028a
       LC({populära })
       EndTag(EnamexPrsAnm) ] ; 49

!R ("S\:t Bernhardshundar"|"Gidde Palema"|"Victory Tilly"|smurf|"Snurre Sprätt"|"Kalle Anka"|"Nalle Puh"|"Peter Pan")
!A {printANM(yytext,0);}

Define EnamexPrsAnm029a
     [ {S:t Bernhardshundar} | {Gidde Palema} | {Victory Tilly} | {smurf}
       | {Snurre Sprätt} | {Kalle Anka} | {Nalle Puh} | {Peter Pan} ] ;
Define EnamexPrsAnm029 [ EnamexPrsAnm029a   EndTag(EnamexPrsAnm) ] ; 50

!#  check: Det var en annan häst 
!# Tidsaspekten är en kvalificerad uppskattning&#x2026;

!R "är en "[^\n ]+" uppskattning"
!A {ECHO;}

Define Except013 [ {är en } Word { uppskattning} ] ; 51

!R ([A-CE-Z][^\n\t\<\> ]+" ")+(var|är)" "(en|den)" "([^\n\t\<\> ]*" ")?[^\n\t ]*hundra
!A {ECHO;}

Define Except014
     [ [["A"|"B"|"C"|"E"|"F"|"G"|"H"|"I"|"J"|"K"|"L"|"M"|"N"|"O"|"P"|"Q"|"R"|"S"|"T"|"U"|"V"|"W"|"X"|"Y"|"Z"]
         Word { }]+
       [{var} | {är}] { } [{en} | {den}] { } (NS* { }) NS* {hundra} ] ; 52

!#  MOD (Jyrki Niemi): Rule was split into two based on right
!# 	   context length. They could be recombined in Pmatch rules.
!# 	   ([A-CE-Z][^\n\t\<\> ]+" ")+(var|är)" "(en|den)" "([^\n\t\<\> ]*" ")?(häst|hund|katt)(en)?			{printANM(yytext,30);}
!# 	 

!R ([A-CE-Z][^\n\t\<\> ]+" ")+(var|är)" "(en|den)" "(häst|hund|katt)(en)?
!A {printANM(yytext,30);}

Define EnamexPrsAnm030a
     [ [["A"|"B"|"C"|"E"|"F"|"G"|"H"|"I"|"J"|"K"|"L"|"M"|"N"|"O"|"P"|"Q"|"R"|"S"|"T"|"U"|"V"|"W"|"X"|"Y"|"Z"]
         Word { }]*
       ["A"|"B"|"C"|"E"|"F"|"G"|"H"|"I"|"J"|"K"|"L"|"M"|"N"|"O"|"P"|"Q"|"R"|"S"|"T"|"U"|"V"|"W"|"X"|"Y"|"Z"]
       Word ] ;
Define EnamexPrsAnm030
     [ EnamexPrsAnm030a
       RC({ } [{var} | {är}] { } [{en} | {den}] { }
          [{häst} | {hund} | {katt}])
       EndTag(EnamexPrsAnm) ] ; 53

!R ([A-CE-Z][^\n\t\<\> ]+" ")+(var|är)" "(en|den)" "[^\n\t\<\> ]*" "(häst|hund|katt)(en)?
!A {printANM(yytext,40);}

Define EnamexPrsAnm031a
     [ [["A"|"B"|"C"|"E"|"F"|"G"|"H"|"I"|"J"|"K"|"L"|"M"|"N"|"O"|"P"|"Q"|"R"|"S"|"T"|"U"|"V"|"W"|"X"|"Y"|"Z"]
         Word { }]*
       ["A"|"B"|"C"|"E"|"F"|"G"|"H"|"I"|"J"|"K"|"L"|"M"|"N"|"O"|"P"|"Q"|"R"|"S"|"T"|"U"|"V"|"W"|"X"|"Y"|"Z"]
       Word ] ;
Define EnamexPrsAnm031
     [ EnamexPrsAnm031a
       RC({ } [{var} | {är}] { } [{en} | {den}] { } NS* { }
          [{häst} | {hund} | {katt}])
       EndTag(EnamexPrsAnm) ] ; 54

!R [^\n\t ]+osauros" "[^\n\t ]*([Rr]ex|[Tt]orosus|phagus)
!A {printANM(yytext,0);}

Define EnamexPrsAnm032a
     [ Word {osauros } NS* [Rr {ex} | Tt {orosus} | {phagus}] ] ;
Define EnamexPrsAnm032 [ EnamexPrsAnm032a   EndTag(EnamexPrsAnm) ] ; 55

!R [^\n\t ]*([Ss]tallstjärna|[Tt]errier|[Kk]ossa|[Kk]änguru|[Ll]ammet|[Ff]året|[Pp]udel|[Tt]jur|[Hh]äst|[Kk]anin|[Kk]att|[Ee]lefant|[Ff]isk|[Gg]ris|[Hh]ingst|[Hh]und)(en|n)?" heter"(" "{U}[^\n\t ]*)+
!A {printANM(yytext,2);}

Define EnamexPrsAnm033a [ CapWord [{ } CapWord]* ] ;
Define EnamexPrsAnm033
     [ EnamexPrsAnm033a
       LC([Ss {tallstjärna} | Tt {errier} | Kk {ossa} | Kk {änguru}
             | Ll {ammet} | Ff {året} | Pp {udel} | Tt {jur} | Hh {äst}
             | Kk {anin} | Kk {att} | Ee {lefant} | Ff {isk} | Gg {ris}
             | Hh {ingst} | Hh {und}]
          ({en} | {n}) { heter })
       EndTag(EnamexPrsAnm) ] ; 56

!R (Jet|Matador|Laser)" "Håleryd
!A {printANM(yytext,0);}

Define EnamexPrsAnm034a [ [{Jet} | {Matador} | {Laser}] { Håleryd} ] ;
Define EnamexPrsAnm034 [ EnamexPrsAnm034a   EndTag(EnamexPrsAnm) ] ; 57

!R ("Ideal du Gazeau"|"Napoleon Gothia"|"Delila Safir"|"Ken Bros"|"Loch Ness\-odjuret"|"Remington Crown"|"Running Sea"|"Kanaloa Sea"|"Mignon Amandla")
!A {printANM(yytext,0);}

Define EnamexPrsAnm035a
     [ {Ideal du Gazeau} | {Napoleon Gothia} | {Delila Safir} | {Ken Bros}
       | {Loch Ness-odjuret} | {Remington Crown} | {Running Sea} | {Kanaloa Sea}
       | {Mignon Amandla} ] ;
Define EnamexPrsAnm035 [ EnamexPrsAnm035a   EndTag(EnamexPrsAnm) ] ; 58

!R [^\n\t ]*(andra|dressyr|par|\-|otto|ung|tjänste|stjärn|första|favorit|tränings|kanon|fjord)häst(" "{U}[^\n\t ]+)+
!A {printANM(yytext,1);}

Define EnamexPrsAnm036a [ CapWord2 [{ } CapWord2]* ] ;
Define EnamexPrsAnm036
     [ EnamexPrsAnm036a
       LC([{andra} | {dressyr} | {par} | {-} | {otto} | {ung} | {tjänste}
             | {stjärn} | {första} | {favorit} | {tränings} | {kanon}
             | {fjord}]
          {häst })
       EndTag(EnamexPrsAnm) ] ; 59

!R hundar" \, "{U}[^\n\t ]+" \, "{U}[^\n\t ]+" och "{U}[^\n\t ]+
!A {printANM(yytext,1);}

Define EnamexPrsAnm037a [ {, } CapWord2 { , } CapWord2 { och } CapWord2 ] ;
Define EnamexPrsAnm037
     [ EnamexPrsAnm037a
       LC({hundar })
       EndTag(EnamexPrsAnm) ] ; 60

!R "poutses mble"
!A {printf("XXXXX");}

!W Warning: Flex action did not produce any tags:
!A {printf("XXXXX");}

Define Notags001 [ {poutses mble} ] ;

!R \n
!A {ECHO;}
!I Ignored exception rule

!R .
!A {ECHO;}
!I Ignored exception rule

!= ======================
!= Pmatch top definitions
!= ======================

Define TOP
     [ IgnoreTagged | Except001 | Except002 | Except003 | Except004
       | Except005 | EnamexPrsMth001 | EnamexPrsMth002 | EnamexPrsMth003
       | EnamexPrsMth004 | EnamexPrsMth005 | EnamexPrsMth006 | EnamexPrsMth007
       | EnamexPrsMth008 | EnamexPrsMth009 | Except006 | Except007 | Except008
       | EnamexPrsAnm001 | EnamexPrsAnm002 | EnamexPrsAnm003 | EnamexPrsAnm004
       | EnamexPrsAnm005 | Except009 | Except010 | EnamexPrsAnm006
       | EnamexPrsAnm007 | EnamexPrsAnm008 | EnamexPrsAnm009 | EnamexPrsAnm010
       | Except011 | Except012 | EnamexPrsAnm011 | EnamexPrsAnm012
       | EnamexPrsAnm013 | EnamexPrsAnm014 | EnamexPrsAnm015 | EnamexPrsAnm016
       | EnamexPrsAnm017 | EnamexPrsAnm018 | EnamexPrsAnm019 | EnamexPrsAnm020
       | EnamexPrsAnm021 | EnamexPrsAnm022 | EnamexPrsAnm023 | EnamexPrsAnm024
       | EnamexPrsAnm025 | EnamexPrsAnm026 | EnamexPrsAnm027 | EnamexPrsAnm028
       | EnamexPrsAnm029 | Except013 | Except014 | EnamexPrsAnm030
       | EnamexPrsAnm031 | EnamexPrsAnm032 | EnamexPrsAnm033 | EnamexPrsAnm034
       | EnamexPrsAnm035 | EnamexPrsAnm036 | EnamexPrsAnm037 | Notags001
       LC(WordBoundary) ] ;
