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

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

Define UNIMPLEMENTED [ "" ] ;
Define AnyChar [ ? ] ;
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 [? - [Whitespace|"<"|">"]] ;
Define NS [ NST ] ;
Define NSTagComma [? - [Whitespace|"<"|">"|","]] ;
Define NSHash [? - [Whitespace|"#"|"<"|">"]] ;
Define NSDash [? - [Whitespace|"-"|"<"|">"]] ;
Define NSColon [? - [Whitespace|":"|"<"|">"]] ;
Define NSDashColon [? - [Whitespace|":"|"-"|"<"|">"]] ;
Define NoTag [? - ["\n"|"<"|">"]] ;
Define NoTags [ NoTag+ ] ;
Define NoQuote [? - ["\n"|"\""|"'"|"´"|"«"|"»"|"<"|">"]] ;
Define NoDQuote [? - ["\""|"\n"|"<"|">"]] ;
Define NoQuoteVbar [? - ["\n"|"\""|"'"|"|"|"´"|"«"|"»"|"<"|">"]] ;
Define NoQuoteHash [? - ["\n"|"\""|"'"|"´"|"#"|"«"|"»"|"<"|">"]] ;
Define NoQuoteHashVbar [? - ["\n"|"\""|"'"|"´"|"#"|"|"|"«"|"»"|"<"|">"]] ;
Define NoComma [? - ["\n"|","|"<"|">"]] ;
Define NoCommaPeriod [? - ["\n"|","|"."|"<"|">"]] ;
Define NoLPar [? - ["\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 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>} [? - "<"]* {</Except>}
       | {<} [{Ena} | {Nu} | {Ti}] {mex} Alpha+ {>} [? - "<"]+ {</}
         [{Ena} | {Nu} | {Ti}] {mex} Alpha* {>} ] ;

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

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

!# 
!# 	File: LocStr.ll				
!# 	Author: Dimitrios Kokkinakis			
!# 	version: 100127				
!# 	Finds a variety of STR-Locations using pattern matching	
!# 

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

!#  EXCEPTIONS 

!R "\<ENAMEX TYPE\="\"(TRM|EVN|LOC|MSR|OBJ|ORG|PRS|WRK|TME)"\" SBT\=\""(ANM|ARL|AST|ATH|ATL|CLC|CLT|CLU|CMP|CRP|DAT|DEN|EDU|FIN|FNC|FWP|GPL|HPL|HUM|MDC|MDO|MDD|MDA|MDI|MDS|MTH|PER|PLT|PPL|PRD|PRJ|PSS|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 "\<TIMEX TYPE\="\"TME"\" SBT\=\""DAT\"\>[^\n\<]+\<\/NUMEX\>
!A {ECHO;}
!I Ignored exception rule

!#  STREETS 

!R "Manic Street Preachers"
!A {ECHO;}

Define Except001 [ {Manic Street Preachers} ] ; 1

!#  MOD (Jyrki Niemi): Corrected "E Steet Band" 

!R "E Street Band"
!A {ECHO;}

Define Except002 [ {E Street Band} ] ; 2

!R "Back Street Boys"
!A {ECHO;}

Define Except003 [ {Back Street Boys} ] ; 3

!R "Wall Street Journal"
!A {ECHO;}

Define Except004 [ {Wall Street Journal} ] ; 4

!R True(" "{U}[^\n ]+)+
!A {ECHO;}

Define Except005 [ {True} [{ } CapWord2]+ ] ; 5

!R \-Spårvägen" "[0-9]+
!A {ECHO;}

Define Except006 [ {-Spårvägen } Nums ] ; 6

!R Spårvägen
!A {ECHO;}

Define Except007 [ {Spårvägen} ] ; 7

!R "stjärnan Picabo Street"
!A {ECHO;}

Define Except008 [ {stjärnan Picabo Street} ] ; 8

!R "Swedish Street Rod Nationals"
!A {ECHO;}

Define Except009 [ {Swedish Street Rod Nationals} ] ; 9

!R "Hill Street Blues"
!A {ECHO;}

Define Except010 [ {Hill Street Blues} ] ; 10

!R "Spanarna på Hill Street"
!A {ECHO;}

Define Except011 [ {Spanarna på Hill Street} ] ; 11

!R "på Hill Street"
!A {ECHO;}

Define Except012 [ {på Hill Street} ] ; 12

!R "Spridningsvägen"
!A {ECHO;}

Define Except013 [ {Spridningsvägen} ] ; 13

!R Vintergatan
!A {ECHO;}

Define Except014 [ {Vintergatan} ] ; 14

!R Överväg
!A {ECHO;}

Define Except015 [ {Överväg} ] ; 15

!#  MULTI STREETS 

!R Gare(" "de[^\n ]*)?(" "{U}[^\n ]+)+
!A {printSTR(yytext,0);}

Define EnamexLocStr001a [ {Gare} ({ de} NS*) [{ } CapWord2]+ ] ;
Define EnamexLocStr001 [ EnamexLocStr001a   EndTag(EnamexLocStr) ] ; 16

!R (Via|Maria)" "(della|del)" "{U}[^\n ]+
!A {printSTR(yytext,0);}

Define EnamexLocStr002a
     [ [{Via} | {Maria}] { } [{della} | {del}] { } CapWord2 ] ;
Define EnamexLocStr002 [ EnamexLocStr002a   EndTag(EnamexLocStr) ] ; 17

!R "Via "("Appia Antica"|Appia|Felicati|Roma|Marmorata|Dolorosa|Monte[^\n ]+)
!A {printSTR(yytext,0);}

Define EnamexLocStr003a
     [ {Via }
       [{Appia Antica} | {Appia} | {Felicati} | {Roma} | {Marmorata}
          | {Dolorosa} | {Monte} Word] ] ;
Define EnamexLocStr003 [ EnamexLocStr003a   EndTag(EnamexLocStr) ] ; 18

!R [Bb]oulevard" "(d[eui]" ")?{U}[^\n ]+(" "{U}[^\n ]+)*
!A {printSTR(yytext,0);}

Define EnamexLocStr004a
     [ Bb {oulevard } ({d} ["e"|"u"|"i"] { }) CapWord2 [{ } CapWord2]* ] ;
Define EnamexLocStr004 [ EnamexLocStr004a   EndTag(EnamexLocStr) ] ; 19

!R ([^\n ]*[Rr]iks|[Ll]ands|uropa|[Ll]äns)vägarna" "[A-Z0-9]+(\/|" och ")[A-Z0-9]+
!A {printSTR(yytext,0);}

Define EnamexLocStr005a
     [ [NS* Rr {iks} | Ll {ands} | {uropa} | Ll {äns}] {vägarna } UpperDigit+
       [{/} | { och }] UpperDigit+ ] ;
Define EnamexLocStr005 [ EnamexLocStr005a   EndTag(EnamexLocStr) ] ; 20

!R ([^\n ]*[Rr]iksväg|Interstate|Route|[Ll]andsväg|Europaväg|[Ll]änsväg|[Hh]uvudväg)" "[A-Z0-9]+
!A {printSTR(yytext,0);}

Define EnamexLocStr006a
     [ [NS* Rr {iksväg} | {Interstate} | {Route} | Ll {andsväg}
          | {Europaväg} | Ll {änsväg} | Hh {uvudväg}]
       { } UpperDigit+ ] ;
Define EnamexLocStr006 [ EnamexLocStr006a   EndTag(EnamexLocStr) ] ; 21

!R [0-9\-]+" "{U}[^\n ]+" "Street
!A {printSTR(yytext,0);}

Define EnamexLocStr007a [ DigitDashes { } CapWord2 { Street} ] ;
Define EnamexLocStr007 [ EnamexLocStr007a   EndTag(EnamexLocStr) ] ; 22

!R ([0-9]+" ")?(Park|Pennsylvania|Hart|Florence|Madison|Lenox|Julian|Olive|Third|Fifth|Gasoline|Lexington|Beeches|Chicago|Addison|Colorado|Rockingham|Auburn|Beach|Upper|Downing|Bourbon|"Ban Co"|Carnaby|Fleet|Oldham|Pusher|South|Broad|Princes|Filbert|Bond|Market|"Kensington High"|{U}[^\n ]+" "House|[^\n ]+th|[^\n ]+nd)" "(Avenue|Street)
!A {printSTR(yytext,0);}

Define EnamexLocStr008a
     [ (Nums { })
       [{Park} | {Pennsylvania} | {Hart} | {Florence} | {Madison} | {Lenox}
          | {Julian} | {Olive} | {Third} | {Fifth} | {Gasoline} | {Lexington}
          | {Beeches} | {Chicago} | {Addison} | {Colorado} | {Rockingham}
          | {Auburn} | {Beach} | {Upper} | {Downing} | {Bourbon} | {Ban Co}
          | {Carnaby} | {Fleet} | {Oldham} | {Pusher} | {South} | {Broad}
          | {Princes} | {Filbert} | {Bond} | {Market} | {Kensington High}
          | CapWord2 { House} | Word {th} | Word {nd}]
       { } [{Avenue} | {Street}] ] ;
Define EnamexLocStr008 [ EnamexLocStr008a   EndTag(EnamexLocStr) ] ; 23

!R Aven[a-z]+" "[Dd][esai](" "{U}[^\n ]+)+
!A {printSTR(yytext,0);}

Define EnamexLocStr009a
     [ {Aven} LowerWord { } Dd ["e"|"s"|"a"|"i"] [{ } CapWord2]+ ] ;
Define EnamexLocStr009 [ EnamexLocStr009a   EndTag(EnamexLocStr) ] ; 24

!R St" "[^\n ]+" Road"
!A {printSTR(yytext,0);}

Define EnamexLocStr010a [ {St } Word { Road} ] ;
Define EnamexLocStr010 [ EnamexLocStr010a   EndTag(EnamexLocStr) ] ; 25

!R (Sankt|S:t|Västra|Norra|Östra|Södra|Yttre|Danska)" "([^\n\< ]+gata|[^\n\< ]*[Vv]äge)n(" "[0-9]+" \- "[0-9]+|" "[0-9]+)?
!A {printSTR(yytext,0);}

Define EnamexLocStr011a
     [ [{Sankt} | {S:t} | {Västra} | {Norra} | {Östra} | {Södra} | {Yttre}
          | {Danska}]
       { } [Word {gata} | NS* Vv {äge}] {n} ({ } NumsSpRange | { } Nums) ] ;
Define EnamexLocStr011 [ EnamexLocStr011a   EndTag(EnamexLocStr) ] ; 26

!R ([Dd]rottning|[Pp]rinsessan)" "[A-Z][^\n ]+s" väg"
!A {printSTR(yytext,0);}

Define EnamexLocStr012a
     [ [Dd {rottning} | Pp {rinsessan}] { } AZ Word%_s { väg} ] ;
Define EnamexLocStr012 [ EnamexLocStr012a   EndTag(EnamexLocStr) ] ; 27

!R ([0-9]+" ")?([Aa]venue|[Bb]oulevard|[Rr]ue)(" de"|" de la"|" "des|" "d\&#x2019;|" du")?(" "{U}[^\n ]+)+
!A {printSTR(yytext,0);}

Define EnamexLocStr013a
     [ (Nums { }) [Aa {venue} | Bb {oulevard} | Rr {ue}]
       ({ de} | { de la} | { des} | { d&#x2019;} | { du}) [{ } CapWord2]+ ] ;
Define EnamexLocStr013 [ EnamexLocStr013a   EndTag(EnamexLocStr) ] ; 28

!R ([Aa]venue|[Bb]oulevard|[Rr]ue)(" de"|" de la"|" "des|" "d\&#x2019;|" du")" "[0-9]+
!A {printSTR(yytext,0);}

Define EnamexLocStr014a
     [ [Aa {venue} | Bb {oulevard} | Rr {ue}]
       [{ de} | { de la} | { des} | { d&#x2019;} | { du}] { } Nums ] ;
Define EnamexLocStr014 [ EnamexLocStr014a   EndTag(EnamexLocStr) ] ; 29

!R ([Ll]illa|[Ss]tora)" "{U}[^\n ]+gränd
!A {printSTR(yytext,0);}

Define EnamexLocStr015a [ [Ll {illa} | Ss {tora}] { } CapWord2 {gränd} ] ;
Define EnamexLocStr015 [ EnamexLocStr015a   EndTag(EnamexLocStr) ] ; 30

!R (åt|[Bb]ortre|[Ff]rån|[Gg]enom|[Ii]|[Ii]genom|[Kk]ring|[Ll]ängs|[Mm]ot|[Nn]ära|[Pp]å|[Rr]unt|[Uu]ppför|[Uu]tmed|[Vv]ia|[Vv]id|[Öö]ver|berömda|korsar|till)" "([0-9]+th" "|[0-9]+" ")?[^\n ]*(Strasse|Road|Avenue|Boulevard|Street|Row)
!A {printSTR(yytext,1);}

Define EnamexLocStr016a
     [ (Nums {th } | Nums { }) NS*
       [{Strasse} | {Road} | {Avenue} | {Boulevard} | {Street} | {Row}] ] ;
Define EnamexLocStr016
     [ LC([{åt} | Bb {ortre} | Ff {rån} | Gg {enom} | Ii | Ii {genom}
             | Kk {ring} | Ll {ängs} | Mm {ot} | Nn {ära} | Pp {å} | Rr {unt}
             | Uu {ppför} | Uu {tmed} | Vv {ia} | Vv {id} | ["Ö"|"ö"] {ver}
             | {berömda} | {korsar} | {till}]
          { })
       EnamexLocStr016a
       EndTag(EnamexLocStr) ] ; 31

!R (åt|[Bb]ortre|[Ff]rån|[Gg]enom|[Ii]genom|[Kk]ring|[Ll]ängs|[Mm]ot|[Nn]ära|[Pp]å|[Rr]unt|[Uu]ppför|[Uu]tmed|[Vv]ia|[Vv]id|[Öö]ver|berömda|korsar|till)" "([A-Z][^\n\< ]+" ")?[^\n ]*([Ss]trasse|[Rr]oad|[Aa]venue|[Bb]oulevard|[Ss]treet)
!A {printSTR(yytext,1);}

Define EnamexLocStr017a
     [ (AZ Word { }) NS*
       [Ss {trasse} | Rr {oad} | Aa {venue} | Bb {oulevard} | Ss {treet}] ] ;
Define EnamexLocStr017
     [ LC([{åt} | Bb {ortre} | Ff {rån} | Gg {enom} | Ii {genom}
             | Kk {ring} | Ll {ängs} | Mm {ot} | Nn {ära} | Pp {å} | Rr {unt}
             | Uu {ppför} | Uu {tmed} | Vv {ia} | Vv {id} | ["Ö"|"ö"] {ver}
             | {berömda} | {korsar} | {till}]
          { })
       EnamexLocStr017a
       EndTag(EnamexLocStr) ] ; 32

!R [Pp]"å "({U}[^\n ]+" ")+Road
!A {printSTR(yytext,1);}

Define EnamexLocStr018a [ [CapWord2 { }]+ {Road} ] ;
Define EnamexLocStr018
     [ LC(Pp {å })
       EnamexLocStr018a
       EndTag(EnamexLocStr) ] ; 33

!R ([Ll]ängs|[Pp]å|afikerade)" väg "[A-Z0-9]+
!A {printSTR(yytext,1);}

Define EnamexLocStr019a [ {väg } UpperDigit+ ] ;
Define EnamexLocStr019
     [ LC([Ll {ängs} | Pp {å} | {afikerade}] { })
       EnamexLocStr019a
       EndTag(EnamexLocStr) ] ; 34

!R [^\n ]+(gata|gatan|stråket)(" la")?(" "{U}[^\n ]+)+
!A {printSTR(yytext,1);}

Define EnamexLocStr020a [ ({la }) CapWord2 [{ } CapWord2]* ] ;
Define EnamexLocStr020
     [ LC(Word [{gata} | {gatan} | {stråket}] { })
       EnamexLocStr020a
       EndTag(EnamexLocStr) ] ; 35

!R [0-9]+"\:e gatan"
!A {printSTR(yytext,0);}

Define EnamexLocStr021a [ Nums {:e gatan} ] ;
Define EnamexLocStr021 [ EnamexLocStr021a   EndTag(EnamexLocStr) ] ; 36

!R {U}[^\n ]*gatan\/{U}[^\n ]*vägen
!A {printSTR(yytext,0);}

Define EnamexLocStr022a [ CapWord {gatan/} CapWord {vägen} ] ;
Define EnamexLocStr022 [ EnamexLocStr022a   EndTag(EnamexLocStr) ] ; 37

!R {U}[^\n ]*sgata(n)?\-({U}[^\n ]*" ")?{U}[^\n ]*gata(n)?
!A {printSTR(yytext,0);}

Define EnamexLocStr023a
     [ CapWord {sgata} ({n}) {-} (CapWord { }) CapWord {gata} ({n}) ] ;
Define EnamexLocStr023 [ EnamexLocStr023a   EndTag(EnamexLocStr) ] ; 38

!R ({U}[^\n ]+" ")?{U}[^\n ]*(avenyn|gracht|grasse|[Ss]trasse|gata|[Gg]atan|[Vv]ägen|väg)(" "[0-9\-]+)?(" "[A-Z])?
!A {printSTR(yytext,0);}

Define EnamexLocStr024a
     [ (CapWord2 { }) CapWord
       [{avenyn} | {gracht} | {grasse} | Ss {trasse} | {gata} | Gg {atan}
          | Vv {ägen} | {väg}]
       ({ } DigitDashes) ({ } AZ) ] ;
Define EnamexLocStr024 [ EnamexLocStr024a   EndTag(EnamexLocStr) ] ; 39

!R ({U}[^\n ]*" ")?{U}[^\n ]+"s väg "[0-9]+(\-[0-9]+)?(" "[A-Z])?
!A {printSTR(yytext,0);}

Define EnamexLocStr025a
     [ (CapWord { }) CapWord2s { väg } Nums ({-} Nums) ({ } AZ) ] ;
Define EnamexLocStr025 [ EnamexLocStr025a   EndTag(EnamexLocStr) ] ; 40

!R ({U}[^\n ]+" ")?{U}[^\n ]+"ns Gata "[0-9]+(\-[0-9]+)?(" "[A-Z])?
!A {printSTR(yytext,0);}

Define EnamexLocStr026a
     [ (CapWord2 { }) CapWord2 {ns Gata } Nums ({-} Nums) ({ } AZ) ] ;
Define EnamexLocStr026 [ EnamexLocStr026a   EndTag(EnamexLocStr) ] ; 41

!R [^\n ]+rvägen(" "{U}[^\n ]*)+
!A {printSTR(yytext,1);}

Define EnamexLocStr027a [ CapWord [{ } CapWord]* ] ;
Define EnamexLocStr027
     [ LC(Word {rvägen })
       EnamexLocStr027a
       EndTag(EnamexLocStr) ] ; 42

!R [Aa]"dressen "[0-9]+(" "{U}[^\n ]*)+
!A {printSTR(yytext,1);}

Define EnamexLocStr028a [ Nums [{ } CapWord]+ ] ;
Define EnamexLocStr028
     [ LC(Aa {dressen })
       EnamexLocStr028a
       EndTag(EnamexLocStr) ] ; 43

!R [Ll]ängs" med "[A-Z0-9]+
!A {printSTR(yytext,2);}

Define EnamexLocStr029a [ UpperDigit+ ] ;
Define EnamexLocStr029
     [ LC(Ll {ängs med })
       EnamexLocStr029a
       EndTag(EnamexLocStr) ] ; 44

!R ([Ll]ängs|utmed|på|av)" "E(" ")?[1-9][0-9]?(\:an)?
!A {printSTR(yytext,1);}

Define EnamexLocStr030a [ {E} ({ }) Num19x ({:an}) ] ;
Define EnamexLocStr030
     [ LC([Ll {ängs} | {utmed} | {på} | {av}] { })
       EnamexLocStr030a
       EndTag(EnamexLocStr) ] ; 45

!R ([Ii]ntill|[Ii])" "{U}[^\n ]+" "{U}[^\n ]+gränd
!A {printSTR(yytext,1);}

Define EnamexLocStr031a [ CapWord2 { } CapWord2 {gränd} ] ;
Define EnamexLocStr031
     [ LC([Ii {ntill} | Ii] { })
       EnamexLocStr031a
       EndTag(EnamexLocStr) ] ; 46

!R [Pp]å" "("E 18"|"E 6"|E18|E6|E6:an)
!A {printSTR(yytext,1);}

Define EnamexLocStr032a [ {E 18} | {E 6} | {E18} | {E6} | {E6:an} ] ;
Define EnamexLocStr032
     [ LC(Pp {å })
       EnamexLocStr032a
       EndTag(EnamexLocStr) ] ; 47

!R "E 4\/E 20"
!A {printSTR(yytext,0);}

Define EnamexLocStr033a [ {E 4/E 20} ] ;
Define EnamexLocStr033 [ EnamexLocStr033a   EndTag(EnamexLocStr) ] ; 48

!R [0-9]" "[A-Z][^\n ]*" "{U}[^\n ]+street
!A {printSTR(yytext,0);}

Define EnamexLocStr034a [ Num { } AZ NS* { } CapWord2 {street} ] ;
Define EnamexLocStr034 [ EnamexLocStr034a   EndTag(EnamexLocStr) ] ; 49

!R ({U}[^\n ][^\n ][^\n ]+" ")?{U}[^\n ]+s" "(allé|väg)" "[0-9]+[A-Z]?
!A {printSTR(yytext,0);}

Define EnamexLocStr035a
     [ (CapWord4 { }) CapWord2s { } [{allé} | {väg}] { } Nums (AZ) ] ;
Define EnamexLocStr035 [ EnamexLocStr035a   EndTag(EnamexLocStr) ] ; 50

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

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

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

Define TOP
     [ LC(WordBoundary)
       [ IgnoreTagged | Except001 | Except002 | Except003 | Except004
       | Except005 | Except006 | Except007 | Except008 | Except009 | Except010
       | Except011 | Except012 | Except013 | Except014 | Except015
       | EnamexLocStr001 | EnamexLocStr002 | EnamexLocStr003 | EnamexLocStr004
       | EnamexLocStr005 | EnamexLocStr006 | EnamexLocStr007 | EnamexLocStr008
       | EnamexLocStr009 | EnamexLocStr010 | EnamexLocStr011 | EnamexLocStr012
       | EnamexLocStr013 | EnamexLocStr014 | EnamexLocStr015 | EnamexLocStr016
       | EnamexLocStr017 | EnamexLocStr018 | EnamexLocStr019 | EnamexLocStr020
       | EnamexLocStr021 | EnamexLocStr022 | EnamexLocStr023 | EnamexLocStr024
       | EnamexLocStr025 | EnamexLocStr026 | EnamexLocStr027 | EnamexLocStr028
       | EnamexLocStr029 | EnamexLocStr030 | EnamexLocStr031 | EnamexLocStr032
       | EnamexLocStr033 | EnamexLocStr034 | EnamexLocStr035 ] ] ;
