!= ===============================================================
!= HFST Pmatch rule file converted from Flex source file LocAst.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: LocAst.ll
!# 	Author: Dimitrios Kokkinakis
!# 	version: 071129
!# 

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

!#  EXCEPTIONS 

!R "\<ENAMEX TYPE\="\"(EVN|LOC|MSR|OBJ|ORG|PRS|WRK|TME|MDC)"\" SBT\=\""(ANM|ARL|AST|ATH|ATL|CLC|CLT|CLU|CMP|CRP|DAT|DEN|EDU|FIN|FNC|FWP|GPL|HPL|HUM|MDD|MDO|MDI|MDC|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

!#  MULTI AREAS - AST 
!#  ASTRAL 
!#  TAG: <ENAMEX TYPE="LOC" SBT="AST"></ENAMEX> 

!R ("Planet Hollywood"|"Planet Prize"|Lyngalax|Lyngalaxen)
!A {ECHO;}

Define Except001
     [ {Planet Hollywood} | {Planet Prize} | {Lyngalax} | {Lyngalaxen} ] ; 1

!R "Venus , Mars"
!A {printf("<ENAMEX TYPE=\"LOC\" SBT=\"AST\">Venus</ENAMEX> , <ENAMEX TYPE=\"LOC\" SBT=\"AST\">Mars</ENAMEX>");}

Define EnamexLocAst001
     [ {Venus}
         EndTag(EnamexLocAst) ]
     { , }
     [ {Mars}
         EndTag(EnamexLocAst) ] ; 2

!R [^\n ]*([Ll]iv" "på|[Vv]atten" "på|aketen" till"|andskapet" "på|bana" runt"|bilderna" "av|fara" "till|farkoster" "på|flytta" "till|flög" "förbi|färd[enrna]*" till"|iltur" på"|jorden" "på|kanalerna" "på|kurs" mot"|landa" "på|landa[adet]*" "på|landning" "på|liv" "på|markprov" "från|ner" på"|planet" "efter|prov" "på|resa" "till|resa" kring"|resan" till"|reser" "till|resorna" "till|riktning" "mot|sidan" "av|sond" "till|starkare" "än|stor" "som|tmosfären" "på|bild" "a[vf]|del" "av|trafik" "till|vintern" "på|vståndet" till"|väg" till"|vägen" "till|strålning" "från|väg" "mot|fart" "mot)" "(Neptunus|Lyran|Månen|Enceladus|Mercurius|Saturnus|Uranus|Mars|Titan|Venus|Pluto|Jupiter)
!A {printASTR(yytext,2);}

Define EnamexLocAst002a
     [ {Neptunus} | {Lyran} | {Månen} | {Enceladus} | {Mercurius} | {Saturnus}
       | {Uranus} | {Mars} | {Titan} | {Venus} | {Pluto} | {Jupiter} ] ;
Define EnamexLocAst002
     [ EnamexLocAst002a
       LC([Ll {iv på} | Vv {atten på} | {aketen till} | {andskapet på}
             | {bana runt} | {bilderna av} | {fara till} | {farkoster på}
             | {flytta till} | {flög förbi}
             | {färd} ["e"|"n"|"r"|"n"|"a"]* { till} | {iltur på}
             | {jorden på} | {kanalerna på} | {kurs mot} | {landa på}
             | {landa} ["a"|"d"|"e"|"t"]* { på} | {landning på} | {liv på}
             | {markprov från} | {ner på} | {planet efter} | {prov på}
             | {resa till} | {resa kring} | {resan till} | {reser till}
             | {resorna till} | {riktning mot} | {sidan av} | {sond till}
             | {starkare än} | {stor som} | {tmosfären på}
             | {bild a} ["v"|"f"] | {del av} | {trafik till} | {vintern på}
             | {vståndet till} | {väg till} | {vägen till} | {strålning från}
             | {väg mot} | {fart mot}]
          { })
       EndTag(EnamexLocAst) ] ; 3

!R (lysande|kring|nå|[Ii]|skönja|På)" "(Mer[ck]urius|Saturnus|Uranus|Venus|Lyran|Pluto|Jupiter|Neptunus)
!A {printASTR(yytext,1);}

Define EnamexLocAst003a
     [ {Mer} ["c"|"k"] {urius} | {Saturnus} | {Uranus} | {Venus} | {Lyran}
       | {Pluto} | {Jupiter} | {Neptunus} ] ;
Define EnamexLocAst003
     [ EnamexLocAst003a
       LC([{lysande} | {kring} | {nå} | Ii | {skönja} | {På}] { })
       EndTag(EnamexLocAst) ] ; 4

!R (Mercuriu|Saturnu|Uranu|Mar|Venu|Pluto|Jupiter|Neptunu)s" "("tunna "atmosfär|atmosfär|bana)
!A {printASTR(yytext,0);}

Define EnamexLocAst004a
     [{Mercuriu} | {Saturnu} | {Uranu} | {Mar} | {Venu} | {Pluto}
        | {Jupiter} | {Neptunu}]
     {s } [{tunna atmosfär} | {atmosfär} | {bana}] ;
Define EnamexLocAst004 [ EnamexLocAst004a   EndTag(EnamexLocAst) ] ; 5

!#  MOD (Jyrki Niemi): Corrected context direction 

!R (utforska|På)" Mars"
!A {printASTR(yytext,1);}

Define EnamexLocAst005a [ {Mars} ] ;
Define EnamexLocAst005
     [ EnamexLocAst005a
       LC([{utforska} | {På}] { })
       EndTag(EnamexLocAst) ] ; 6

!R (Mercuriu|Saturnu|Uranu|Mar|Venu|Pluto|Jupiter)s" "(poler|magnetfält|yta)
!A {printASTR(yytext,11);}

Define EnamexLocAst006a
     [ [{Mercuriu} | {Saturnu} | {Uranu} | {Mar} | {Venu} | {Pluto}
          | {Jupiter}]
       {s} ] ;
Define EnamexLocAst006
     [ EnamexLocAst006a
       RC({ } [{poler} | {magnetfält} | {yta}])
       EndTag(EnamexLocAst) ] ; 7

!R Sedna" "kretsar
!A {printASTR(yytext,11);}

Define EnamexLocAst007a [ {Sedna} ] ;
Define EnamexLocAst007
     [ EnamexLocAst007a
       RC({ kretsar})
       EndTag(EnamexLocAst) ] ; 8

!R Hale\-Bopp\-kometen
!A {printASTR(yytext,0);}

Define EnamexLocAst008a [ {Hale-Bopp-kometen} ] ;
Define EnamexLocAst008 [ EnamexLocAst008a   EndTag(EnamexLocAst) ] ; 9

!R (Vintergatan|Hale\-Bopp)(s)?(" svans"|" komet")?
!A {printASTR(yytext,0);}

Define EnamexLocAst009a
     [ [{Vintergatan} | {Hale-Bopp}] ({s}) ({ svans} | { komet}) ] ;
Define EnamexLocAst009 [ EnamexLocAst009a   EndTag(EnamexLocAst) ] ; 10

!R ([Gg]atu|[Bb]örs|[Hh]it)kometen(" "{U}[^\n ]*)+
!A {ECHO;}

Define Except002
     [ [Gg {atu} | Bb {örs} | Hh {it}] {kometen} [{ } CapWord]+ ] ; 11

!R [Aa]steroid(en)?" "[0-9]+" "[A-Z0-9]+
!A {printASTR(yytext,1);}

Define EnamexLocAst010a [ Nums { } UpperDigit+ ] ;
Define EnamexLocAst010
     [ EnamexLocAst010a
       LC(Aa {steroid} ({en}) { })
       EndTag(EnamexLocAst) ] ; 12

!R (grann)?(Stjärnan|[Kk]omet|[Ss]tjärnbild|[Pp]lanet|[Aa]steroid)(en|er|erna)?(" "{U}[^\n ]+)+
!A {printASTR(yytext,1);}

Define EnamexLocAst011a [ CapWord2 [{ } CapWord2]* ] ;
Define EnamexLocAst011
     [ EnamexLocAst011a
       LC([{Stjärnan} | Kk {omet} | Ss {tjärnbild} | Pp {lanet}
             | Aa {steroid}]
          ({en} | {er} | {erna}) { })
       EndTag(EnamexLocAst) ] ; 13

!R [Pp]laneterna(" "{U}[^ \n]*)+([ \,]+{U}[^ \n]*)*(" och"(" "{U}[^ \n]*)+)?
!A {printASTR(yytext,1);}

Define EnamexLocAst012a
     [ CapWord [{ } CapWord]* [[Whitespace|","]+ CapWord]*
       ({ och} [{ } CapWord]+) ] ;
Define EnamexLocAst012
     [ EnamexLocAst012a
       LC(Pp {laneterna })
       EndTag(EnamexLocAst) ] ; 14

!R (Århundradets|En|Ett|Årets|stads)" komet"
!A {ECHO;}

Define Except003
     [ [{Århundradets} | {En} | {Ett} | {Årets} | {stads}] { komet} ] ; 15

!R "komet \,"(" "{U}[^\n ]*)+
!A {printASTR(yytext,2);}

Define EnamexLocAst013a [ CapWord [{ } CapWord]* ] ;
Define EnamexLocAst013
     [ EnamexLocAst013a
       LC({komet , })
       EndTag(EnamexLocAst) ] ; 16

!R {U}[^\n ]+" komet"
!A {printASTR(yytext,0);}

Define EnamexLocAst014a [ CapWord2 { komet} ] ;
Define EnamexLocAst014 [ EnamexLocAst014a   EndTag(EnamexLocAst) ] ; 17

!R ("rymdsond till"|"meteorit kallad")(" "{U}[^\n ]*)+
!A {printASTR(yytext,2);}

Define EnamexLocAst015a [ CapWord [{ } CapWord]* ] ;
Define EnamexLocAst015
     [ EnamexLocAst015a
       LC([{rymdsond till} | {meteorit kallad}] { })
       EndTag(EnamexLocAst) ] ; 18

!R {U}[^\n ]+meteoriten
!A {printASTR(yytext,0);}

Define EnamexLocAst016a [ CapWord2 {meteoriten} ] ;
Define EnamexLocAst016 [ EnamexLocAst016a   EndTag(EnamexLocAst) ] ; 19

!R Marsmånen" "{U}[^\n ]+
!A {printASTR(yytext,0);}

Define EnamexLocAst017a [ {Marsmånen } CapWord2 ] ;
Define EnamexLocAst017 [ EnamexLocAst017a   EndTag(EnamexLocAst) ] ; 20

!R {U}[^\n ]+galax(en)?(" "{U}[^\n ]+)*
!A {printASTR(yytext,0);}

Define EnamexLocAst018a [ CapWord2 {galax} ({en}) [{ } CapWord2]* ] ;
Define EnamexLocAst018 [ EnamexLocAst018a   EndTag(EnamexLocAst) ] ; 21

!R [^\n ]*(piralgalax|[Gg]alaxhop|[Ss]tjärnhop)en(" "{U}[^\n ]+)+
!A {printASTR(yytext,0);}

Define EnamexLocAst019a
     [ NS* [{piralgalax} | Gg {alaxhop} | Ss {tjärnhop}] {en} [{ } CapWord2]+ ] ;
Define EnamexLocAst019 [ EnamexLocAst019a   EndTag(EnamexLocAst) ] ; 22

!R [^\n ]*[Gg]alaxen" "[A-Z][^\n ]+(" "[0-9]+)?
!A {printASTR(yytext,0);}

Define EnamexLocAst020a [ NS* Gg {alaxen } AZ Word ({ } Nums) ] ;
Define EnamexLocAst020 [ EnamexLocAst020a   EndTag(EnamexLocAst) ] ; 23

!R {U}[^\n ][^\n ]+" "(galax|Centauri)
!A {printASTR(yytext,0);}

Define EnamexLocAst021a [ CapWord3 { } [{galax} | {Centauri}] ] ;
Define EnamexLocAst021 [ EnamexLocAst021a   EndTag(EnamexLocAst) ] ; 24

!R ([Hh]ela|att|tidiga|[Ii])" Universum"
!A {printASTR(yytext,1);}

Define EnamexLocAst022a [ {Universum} ] ;
Define EnamexLocAst022
     [ EnamexLocAst022a
       LC([Hh {ela} | {att} | {tidiga} | Ii] { })
       EndTag(EnamexLocAst) ] ; 25

!R "ljusa stjärnan"(" "{U}[^\n ]*)+
!A {printASTR(yytext,2);}

Define EnamexLocAst023a [ CapWord [{ } CapWord]* ] ;
Define EnamexLocAst023
     [ EnamexLocAst023a
       LC({ljusa stjärnan })
       EndTag(EnamexLocAst) ] ; 26

!R "närmaste stjärnan \,"(" "{U}[^\n ]*)+
!A {printASTR(yytext,3);}

Define EnamexLocAst024a [ CapWord [{ } CapWord]* ] ;
Define EnamexLocAst024
     [ EnamexLocAst024a
       LC({närmaste stjärnan , })
       EndTag(EnamexLocAst) ] ; 27

!R [Ss]"tjärnan i Orion"
!A {printASTR(yytext,0);}

Define EnamexLocAst025a [ Ss {tjärnan i Orion} ] ;
Define EnamexLocAst025 [ EnamexLocAst025a   EndTag(EnamexLocAst) ] ; 28

!R [^\n ]*"estbilden på "[Ss]"tjärnan"(" "{U}[^\n ]*)+
!A {printASTR(yytext,2);}

Define EnamexLocAst026a [ Ss {tjärnan} [{ } CapWord]+ ] ;
Define EnamexLocAst026
     [ EnamexLocAst026a
       LC({estbilden på })
       EndTag(EnamexLocAst) ] ; 29

!R ("stjärnorna i"|"närheten av"|"stjärnan i")" "Karlavagnen
!A {printASTR(yytext,2);}

Define EnamexLocAst027a [ {Karlavagnen} ] ;
Define EnamexLocAst027
     [ EnamexLocAst027a
       LC([{stjärnorna i} | {närheten av} | {stjärnan i}] { })
       EndTag(EnamexLocAst) ] ; 30

!R [A-Z][^\n\< ]+planetens" magra "marker
!A {printASTR(yytext,0);}

Define EnamexLocAst028a [ AZ Word {planetens magra marker} ] ;
Define EnamexLocAst028 [ EnamexLocAst028a   EndTag(EnamexLocAst) ] ; 31

!R {U}[^\n ]+"s måne "{U}[^\n ]+
!A {printASTR(yytext,0);}

Define EnamexLocAst029a [ CapWord2s { måne } CapWord2 ] ;
Define EnamexLocAst029 [ EnamexLocAst029a   EndTag(EnamexLocAst) ] ; 32

!R {U}[^\n ]+" som kretsar kring "{U}[^\n ]+
!A {printASTR(yytext,0);}

Define EnamexLocAst030a [ CapWord2 { som kretsar kring } CapWord2 ] ;
Define EnamexLocAst030 [ EnamexLocAst030a   EndTag(EnamexLocAst) ] ; 33

!R {U}[^\n ]+"s måne"(" \, "|" "){U}[^\n ]+
!A {printASTR(yytext,0);}

Define EnamexLocAst031a [ CapWord2s { måne} [{ , } | { }] CapWord2 ] ;
Define EnamexLocAst031 [ EnamexLocAst031a   EndTag(EnamexLocAst) ] ; 34

!R {U}[^\n ]+" \, som är "{U}[^\n ]+"s måne"
!A {printASTR(yytext,0);}

Define EnamexLocAst032a [ CapWord2 { , som är } CapWord2s { måne} ] ;
Define EnamexLocAst032 [ EnamexLocAst032a   EndTag(EnamexLocAst) ] ; 35

!R {U}[^\n ]+" , "{U}[^\n ]+"s stora måne"
!A {printASTR(yytext,0);}

Define EnamexLocAst033a [ CapWord2 { , } CapWord2s { stora måne} ] ;
Define EnamexLocAst033 [ EnamexLocAst033a   EndTag(EnamexLocAst) ] ; 36

!R "månarna kring"(" "{U}[^\n ]*)+
!A {printASTR(yytext,2);}

Define EnamexLocAst034a [ CapWord [{ } CapWord]* ] ;
Define EnamexLocAst034
     [ EnamexLocAst034a
       LC({månarna kring })
       EndTag(EnamexLocAst) ] ; 37

!R "månar \, som "{U}[^\n ]*
!A {printASTR(yytext,3);}

Define EnamexLocAst035a [ CapWord ] ;
Define EnamexLocAst035
     [ EnamexLocAst035a
       LC({månar , som })
       EndTag(EnamexLocAst) ] ; 38

!R "mångrannar \, "{U}[^\n ]*" och "{U}[^\n ]*
!A {printASTR(yytext,2);}

Define EnamexLocAst036a [ CapWord { och } CapWord ] ;
Define EnamexLocAst036
     [ EnamexLocAst036a
       LC({mångrannar , })
       EndTag(EnamexLocAst) ] ; 39

!R [Mm]eteorit(en)?" "{U}[A-Z0-9]+
!A {printASTR(yytext,1);}

Define EnamexLocAst037a [ Upper UpperDigit+ ] ;
Define EnamexLocAst037
     [ EnamexLocAst037a
       LC(Mm {eteorit} ({en}) { })
       EndTag(EnamexLocAst) ] ; 40

!R [Pp]å" Jorden"
!A {printASTR(yytext,1);}

Define EnamexLocAst038a [ {Jorden} ] ;
Define EnamexLocAst038
     [ EnamexLocAst038a
       LC(Pp {å })
       EndTag(EnamexLocAst) ] ; 41

!R [Ss]tjärnsystem(et)?" "{U}[A-Z0-9]+
!A {printASTR(yytext,1);}

Define EnamexLocAst039a [ Upper UpperDigit+ ] ;
Define EnamexLocAst039
     [ EnamexLocAst039a
       LC(Ss {tjärnsystem} ({et}) { })
       EndTag(EnamexLocAst) ] ; 42

!R i" Castor"
!A {printASTR(yytext,1);}

Define EnamexLocAst040a [ {Castor} ] ;
Define EnamexLocAst040
     [ EnamexLocAst040a
       LC({i })
       EndTag(EnamexLocAst) ] ; 43

!R Jupiter" och "Io
!A {printf("<ENAMEX TYPE=\"LOC\" SBT=\"AST\">Jupiter</ENAMEX> och <ENAMEX TYPE=\"LOC\" SBT=\"AST\">Io</ENAMEX>");}

Define EnamexLocAst041
     [ {Jupiter}
         EndTag(EnamexLocAst) ]
     { och }
     [ {Io}
         EndTag(EnamexLocAst) ] ; 44

!R Merkurius" och "Venus
!A {printf("<ENAMEX TYPE=\"LOC\" SBT=\"AST\">Merkurius</ENAMEX> och <ENAMEX TYPE=\"LOC\" SBT=\"AST\">Venus</ENAMEX>");}

Define EnamexLocAst042
     [ {Merkurius}
         EndTag(EnamexLocAst) ]
     { och }
     [ {Venus}
         EndTag(EnamexLocAst) ] ; 45

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

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

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

Define TOP
     [ IgnoreTagged | Except001 | EnamexLocAst001 | EnamexLocAst002
       | EnamexLocAst003 | EnamexLocAst004 | EnamexLocAst005 | EnamexLocAst006
       | EnamexLocAst007 | EnamexLocAst008 | EnamexLocAst009 | Except002
       | EnamexLocAst010 | EnamexLocAst011 | EnamexLocAst012 | Except003
       | EnamexLocAst013 | EnamexLocAst014 | EnamexLocAst015 | EnamexLocAst016
       | EnamexLocAst017 | EnamexLocAst018 | EnamexLocAst019 | EnamexLocAst020
       | EnamexLocAst021 | EnamexLocAst022 | EnamexLocAst023 | EnamexLocAst024
       | EnamexLocAst025 | EnamexLocAst026 | EnamexLocAst027 | EnamexLocAst028
       | EnamexLocAst029 | EnamexLocAst030 | EnamexLocAst031 | EnamexLocAst032
       | EnamexLocAst033 | EnamexLocAst034 | EnamexLocAst035 | EnamexLocAst036
       | EnamexLocAst037 | EnamexLocAst038 | EnamexLocAst039 | EnamexLocAst040
       | EnamexLocAst041 | EnamexLocAst042
       LC(WordBoundary) ] ;
