! -*- coding: utf-8 -*-

Define AnyChar [Alpha|Num|Punct|Whitespace|"­"] ;

Define Boundary [" " | #] ;

Define TagName [{Ena} | {Nu} | {Ti}] {mex} Alpha* ;

Define WordPartSep ["-"|"/"] ;
Define NST [AnyChar - [Whitespace|"<"|">"]] ;
Define NSTWordPartSep [NST - WordPartSep] ;
Define PrefixWord [UppercaseAlpha NSTWordPartSep+] ;
Define Suffix ["s" | ":" LowercaseAlpha+] ;

! Skip already tagged names
Define SkipTagged ["<" TagName ">" [AnyChar - "<"]+ {</} TagName ">"] ;

Define EnamexEvnAtl @bin"gazetteer-pm/EnamexEvnAtl-1.fst" ;
Define EnamexEvnClu @bin"gazetteer-pm/EnamexEvnClu-1.fst" ;
Define EnamexEvnHpl @bin"gazetteer-pm/EnamexEvnHpl-1.fst" ;
Define EnamexEvnRlg @bin"gazetteer-pm/EnamexEvnRlg-1.fst" ;
Define EnamexEvnWth @bin"gazetteer-pm/EnamexEvnWth-1.fst" ;
Define EnamexLocAst @bin"gazetteer-pm/EnamexLocAst-1.fst" ;
Define EnamexLocAstPrsHum @bin"gazetteer-pm/EnamexLocAstPrsHum-1.fst" ;
Define EnamexLocFnc @bin"gazetteer-pm/EnamexLocFnc-1.fst" ;
Define EnamexLocFncLocGpl @bin"gazetteer-pm/EnamexLocFncLocGpl-1.fst" ;
Define EnamexLocFncLocPpl @bin"gazetteer-pm/EnamexLocFncLocPpl-1.fst" ;
Define EnamexLocFncOrgCrp @bin"gazetteer-pm/EnamexLocFncOrgCrp-1.fst" ;
Define EnamexLocFncPrsHum @bin"gazetteer-pm/EnamexLocFncPrsHum-1.fst" ;
Define EnamexLocGpl @bin"gazetteer-pm/EnamexLocGpl-1.fst" ;
Define EnamexLocGplOrgCrp @bin"gazetteer-pm/EnamexLocGplOrgCrp-1.fst" ;
Define EnamexLocGplPrsHum @bin"gazetteer-pm/EnamexLocGplPrsHum-1.fst" ;
Define EnamexLocPpl @bin"gazetteer-pm/EnamexLocPpl-1.fst" ;
Define EnamexLocPplOrgCrp @bin"gazetteer-pm/EnamexLocPplOrgCrp-1.fst" ;
Define EnamexLocPplOrgFin @bin"gazetteer-pm/EnamexLocPplOrgFin-1.fst" ;
Define EnamexLocPplPrsHum @bin"gazetteer-pm/EnamexLocPplPrsHum-1.fst" ;
Define EnamexLocStr @bin"gazetteer-pm/EnamexLocStr-1.fst" ;
Define EnamexObjFwp @bin"gazetteer-pm/EnamexObjFwp-1.fst" ;
Define EnamexObjPrd @bin"gazetteer-pm/EnamexObjPrd-1.fst" ;
Define EnamexObjPrz @bin"gazetteer-pm/EnamexObjPrz-1.fst" ;
Define EnamexObjVha @bin"gazetteer-pm/EnamexObjVha-1.fst" ;
Define EnamexObjVhg @bin"gazetteer-pm/EnamexObjVhg-1.fst" ;
Define EnamexObjVhgOrgCrp @bin"gazetteer-pm/EnamexObjVhgOrgCrp-1.fst" ;
Define EnamexObjVhw @bin"gazetteer-pm/EnamexObjVhw-1.fst" ;
Define EnamexOrgClt @bin"gazetteer-pm/EnamexOrgClt-1.fst" ;
Define EnamexOrgCltOrgCrp @bin"gazetteer-pm/EnamexOrgCltOrgCrp-1.fst" ;
Define EnamexOrgCrp @bin"gazetteer-pm/EnamexOrgCrp-1.fst" ;
Define EnamexOrgCrpOrgFin @bin"gazetteer-pm/EnamexOrgCrpOrgFin-1.fst" ;
Define EnamexOrgCrpOrgPlt @bin"gazetteer-pm/EnamexOrgCrpOrgPlt-1.fst" ;
Define EnamexOrgCrpPrsHum @bin"gazetteer-pm/EnamexOrgCrpPrsHum-1.fst" ;
Define EnamexOrgCrpWrkWaa @bin"gazetteer-pm/EnamexOrgCrpWrkWaa-1.fst" ;
Define EnamexOrgCrpWrkWmd @bin"gazetteer-pm/EnamexOrgCrpWrkWmd-1.fst" ;
Define EnamexOrgEdu @bin"gazetteer-pm/EnamexOrgEdu-1.fst" ;
Define EnamexOrgFin @bin"gazetteer-pm/EnamexOrgFin-1.fst" ;
Define EnamexOrgPlt @bin"gazetteer-pm/EnamexOrgPlt-1.fst" ;
Define EnamexOrgPltPrsHum @bin"gazetteer-pm/EnamexOrgPltPrsHum-1.fst" ;
Define EnamexPrsAnm @bin"gazetteer-pm/EnamexPrsAnm-1.fst" ;
Define EnamexPrsHum @bin"gazetteer-pm/EnamexPrsHum-1.fst" ;
Define EnamexPrsHumWrkWaa @bin"gazetteer-pm/EnamexPrsHumWrkWaa-1.fst" ;
Define EnamexPrsHumWrkWmd @bin"gazetteer-pm/EnamexPrsHumWrkWmd-1.fst" ;
Define EnamexPrsMth @bin"gazetteer-pm/EnamexPrsMth-1.fst" ;
Define EnamexWrkPrj @bin"gazetteer-pm/EnamexWrkPrj-1.fst" ;
Define EnamexWrkWaa @bin"gazetteer-pm/EnamexWrkWaa-1.fst" ;
Define EnamexWrkWao @bin"gazetteer-pm/EnamexWrkWao-1.fst" ;
Define EnamexWrkWmd @bin"gazetteer-pm/EnamexWrkWmd-1.fst" ;
Define TimexTmeDat @bin"gazetteer-pm/TimexTmeDat-1.fst" ;


! Words, optionally ending in a dash plus numbers
Define EnamexEvnAtl1
	[ EnamexEvnAtl ("-" Num+) ]
	EndTag(EnamexEvnAtl) ; 1
Define EnamexEvnClu1
	[ EnamexEvnClu ("-" Num+) ]
	EndTag(EnamexEvnClu) ; 1
Define EnamexEvnHpl1
	[ EnamexEvnHpl ("-" Num+) ]
	EndTag(EnamexEvnHpl) ; 1
Define EnamexEvnRlg1
	[ EnamexEvnRlg ("-" Num+) ]
	EndTag(EnamexEvnRlg) ; 1
Define EnamexEvnWth1
	[ EnamexEvnWth ("-" Num+) ]
	EndTag(EnamexEvnWth) ; 1
Define EnamexLocAst1
	[ EnamexLocAst ("-" Num+) ]
	EndTag(EnamexLocAst) ; 1
Define EnamexLocAstPrsHum1
	[ EnamexLocAstPrsHum ("-" Num+) ]
	EndTag(EnamexLocAstPrsHum) ; 1
Define EnamexLocFnc1
	[ EnamexLocFnc ("-" Num+) ]
	EndTag(EnamexLocFnc) ; 1
Define EnamexLocFncLocGpl1
	[ EnamexLocFncLocGpl ("-" Num+) ]
	EndTag(EnamexLocFncLocGpl) ; 1
Define EnamexLocFncLocPpl1
	[ EnamexLocFncLocPpl ("-" Num+) ]
	EndTag(EnamexLocFncLocPpl) ; 1
Define EnamexLocFncOrgCrp1
	[ EnamexLocFncOrgCrp ("-" Num+) ]
	EndTag(EnamexLocFncOrgCrp) ; 1
Define EnamexLocFncPrsHum1
	[ EnamexLocFncPrsHum ("-" Num+) ]
	EndTag(EnamexLocFncPrsHum) ; 1
Define EnamexLocGpl1
	[ EnamexLocGpl ("-" Num+) ]
	EndTag(EnamexLocGpl) ; 1
Define EnamexLocGplOrgCrp1
	[ EnamexLocGplOrgCrp ("-" Num+) ]
	EndTag(EnamexLocGplOrgCrp) ; 1
Define EnamexLocGplPrsHum1
	[ EnamexLocGplPrsHum ("-" Num+) ]
	EndTag(EnamexLocGplPrsHum) ; 1
Define EnamexLocPpl1
	[ EnamexLocPpl ("-" Num+) ]
	EndTag(EnamexLocPpl) ; 1
Define EnamexLocPplOrgCrp1
	[ EnamexLocPplOrgCrp ("-" Num+) ]
	EndTag(EnamexLocPplOrgCrp) ; 1
Define EnamexLocPplOrgFin1
	[ EnamexLocPplOrgFin ("-" Num+) ]
	EndTag(EnamexLocPplOrgFin) ; 1
Define EnamexLocPplPrsHum1
	[ EnamexLocPplPrsHum ("-" Num+) ]
	EndTag(EnamexLocPplPrsHum) ; 1
Define EnamexLocStr1
	[ EnamexLocStr ("-" Num+) ]
	EndTag(EnamexLocStr) ; 1
Define EnamexObjFwp1
	[ EnamexObjFwp ("-" Num+) ]
	EndTag(EnamexObjFwp) ; 1
Define EnamexObjPrd1
	[ EnamexObjPrd ("-" Num+) ]
	EndTag(EnamexObjPrd) ; 1
Define EnamexObjPrz1
	[ EnamexObjPrz ("-" Num+) ]
	EndTag(EnamexObjPrz) ; 1
Define EnamexObjVha1
	[ EnamexObjVha ("-" Num+) ]
	EndTag(EnamexObjVha) ; 1
Define EnamexObjVhg1
	[ EnamexObjVhg ("-" Num+) ]
	EndTag(EnamexObjVhg) ; 1
Define EnamexObjVhgOrgCrp1
	[ EnamexObjVhgOrgCrp ("-" Num+) ]
	EndTag(EnamexObjVhgOrgCrp) ; 1
Define EnamexObjVhw1
	[ EnamexObjVhw ("-" Num+) ]
	EndTag(EnamexObjVhw) ; 1
Define EnamexOrgClt1
	[ EnamexOrgClt ("-" Num+) ]
	EndTag(EnamexOrgClt) ; 1
Define EnamexOrgCltOrgCrp1
	[ EnamexOrgCltOrgCrp ("-" Num+) ]
	EndTag(EnamexOrgCltOrgCrp) ; 1
Define EnamexOrgCrp1
	[ EnamexOrgCrp ("-" Num+) ]
	EndTag(EnamexOrgCrp) ; 1
Define EnamexOrgCrpOrgFin1
	[ EnamexOrgCrpOrgFin ("-" Num+) ]
	EndTag(EnamexOrgCrpOrgFin) ; 1
Define EnamexOrgCrpOrgPlt1
	[ EnamexOrgCrpOrgPlt ("-" Num+) ]
	EndTag(EnamexOrgCrpOrgPlt) ; 1
Define EnamexOrgCrpPrsHum1
	[ EnamexOrgCrpPrsHum ("-" Num+) ]
	EndTag(EnamexOrgCrpPrsHum) ; 1
Define EnamexOrgCrpWrkWaa1
	[ EnamexOrgCrpWrkWaa ("-" Num+) ]
	EndTag(EnamexOrgCrpWrkWaa) ; 1
Define EnamexOrgCrpWrkWmd1
	[ EnamexOrgCrpWrkWmd ("-" Num+) ]
	EndTag(EnamexOrgCrpWrkWmd) ; 1
Define EnamexOrgEdu1
	[ EnamexOrgEdu ("-" Num+) ]
	EndTag(EnamexOrgEdu) ; 1
Define EnamexOrgFin1
	[ EnamexOrgFin ("-" Num+) ]
	EndTag(EnamexOrgFin) ; 1
Define EnamexOrgPlt1
	[ EnamexOrgPlt ("-" Num+) ]
	EndTag(EnamexOrgPlt) ; 1
Define EnamexOrgPltPrsHum1
	[ EnamexOrgPltPrsHum ("-" Num+) ]
	EndTag(EnamexOrgPltPrsHum) ; 1
Define EnamexPrsAnm1
	[ EnamexPrsAnm ("-" Num+) ]
	EndTag(EnamexPrsAnm) ; 1
Define EnamexPrsHum1
	[ EnamexPrsHum ("-" Num+) ]
	EndTag(EnamexPrsHum) ; 1
Define EnamexPrsHumWrkWaa1
	[ EnamexPrsHumWrkWaa ("-" Num+) ]
	EndTag(EnamexPrsHumWrkWaa) ; 1
Define EnamexPrsHumWrkWmd1
	[ EnamexPrsHumWrkWmd ("-" Num+) ]
	EndTag(EnamexPrsHumWrkWmd) ; 1
Define EnamexPrsMth1
	[ EnamexPrsMth ("-" Num+) ]
	EndTag(EnamexPrsMth) ; 1
Define EnamexWrkPrj1
	[ EnamexWrkPrj ("-" Num+) ]
	EndTag(EnamexWrkPrj) ; 1
Define EnamexWrkWaa1
	[ EnamexWrkWaa ("-" Num+) ]
	EndTag(EnamexWrkWaa) ; 1
Define EnamexWrkWao1
	[ EnamexWrkWao ("-" Num+) ]
	EndTag(EnamexWrkWao) ; 1
Define EnamexWrkWmd1
	[ EnamexWrkWmd ("-" Num+) ]
	EndTag(EnamexWrkWmd) ; 1
Define TimexTmeDat1
	[ TimexTmeDat ("-" Num+) ]
	EndTag(TimexTmeDat) ; 1


! Words with suffixes (genitive suffix "s").
Define EnamexEvnAtl2
	[ @bin"gazetteer-pm/EnamexEvnAtlSuff-1.fst" ]
	EndTag(EnamexEvnAtl) ; 2
Define EnamexEvnClu2
	[ @bin"gazetteer-pm/EnamexEvnCluSuff-1.fst" ]
	EndTag(EnamexEvnClu) ; 2
Define EnamexEvnHpl2
	[ @bin"gazetteer-pm/EnamexEvnHplSuff-1.fst" ]
	EndTag(EnamexEvnHpl) ; 2
Define EnamexEvnRlg2
	[ @bin"gazetteer-pm/EnamexEvnRlgSuff-1.fst" ]
	EndTag(EnamexEvnRlg) ; 2
Define EnamexEvnWth2
	[ @bin"gazetteer-pm/EnamexEvnWthSuff-1.fst" ]
	EndTag(EnamexEvnWth) ; 2
Define EnamexLocAst2
	[ @bin"gazetteer-pm/EnamexLocAstSuff-1.fst" ]
	EndTag(EnamexLocAst) ; 2
Define EnamexLocAstPrsHum2
	[ @bin"gazetteer-pm/EnamexLocAstPrsHumSuff-1.fst" ]
	EndTag(EnamexLocAstPrsHum) ; 2
Define EnamexLocFnc2
	[ @bin"gazetteer-pm/EnamexLocFncSuff-1.fst" ]
	EndTag(EnamexLocFnc) ; 2
Define EnamexLocFncLocGpl2
	[ @bin"gazetteer-pm/EnamexLocFncLocGplSuff-1.fst" ]
	EndTag(EnamexLocFncLocGpl) ; 2
Define EnamexLocFncLocPpl2
	[ @bin"gazetteer-pm/EnamexLocFncLocPplSuff-1.fst" ]
	EndTag(EnamexLocFncLocPpl) ; 2
Define EnamexLocFncOrgCrp2
	[ @bin"gazetteer-pm/EnamexLocFncOrgCrpSuff-1.fst" ]
	EndTag(EnamexLocFncOrgCrp) ; 2
Define EnamexLocFncPrsHum2
	[ @bin"gazetteer-pm/EnamexLocFncPrsHumSuff-1.fst" ]
	EndTag(EnamexLocFncPrsHum) ; 2
Define EnamexLocGpl2
	[ @bin"gazetteer-pm/EnamexLocGplSuff-1.fst" ]
	EndTag(EnamexLocGpl) ; 2
Define EnamexLocGplOrgCrp2
	[ @bin"gazetteer-pm/EnamexLocGplOrgCrpSuff-1.fst" ]
	EndTag(EnamexLocGplOrgCrp) ; 2
Define EnamexLocGplPrsHum2
	[ @bin"gazetteer-pm/EnamexLocGplPrsHumSuff-1.fst" ]
	EndTag(EnamexLocGplPrsHum) ; 2
Define EnamexLocPpl2
	[ @bin"gazetteer-pm/EnamexLocPplSuff-1.fst" ]
	EndTag(EnamexLocPpl) ; 2
Define EnamexLocPplOrgCrp2
	[ @bin"gazetteer-pm/EnamexLocPplOrgCrpSuff-1.fst" ]
	EndTag(EnamexLocPplOrgCrp) ; 2
Define EnamexLocPplOrgFin2
	[ @bin"gazetteer-pm/EnamexLocPplOrgFinSuff-1.fst" ]
	EndTag(EnamexLocPplOrgFin) ; 2
Define EnamexLocPplPrsHum2
	[ @bin"gazetteer-pm/EnamexLocPplPrsHumSuff-1.fst" ]
	EndTag(EnamexLocPplPrsHum) ; 2
Define EnamexLocStr2
	[ @bin"gazetteer-pm/EnamexLocStrSuff-1.fst" ]
	EndTag(EnamexLocStr) ; 2
Define EnamexObjFwp2
	[ @bin"gazetteer-pm/EnamexObjFwpSuff-1.fst" ]
	EndTag(EnamexObjFwp) ; 2
Define EnamexObjPrd2
	[ @bin"gazetteer-pm/EnamexObjPrdSuff-1.fst" ]
	EndTag(EnamexObjPrd) ; 2
Define EnamexObjPrz2
	[ @bin"gazetteer-pm/EnamexObjPrzSuff-1.fst" ]
	EndTag(EnamexObjPrz) ; 2
Define EnamexObjVha2
	[ @bin"gazetteer-pm/EnamexObjVhaSuff-1.fst" ]
	EndTag(EnamexObjVha) ; 2
Define EnamexObjVhg2
	[ @bin"gazetteer-pm/EnamexObjVhgSuff-1.fst" ]
	EndTag(EnamexObjVhg) ; 2
Define EnamexObjVhgOrgCrp2
	[ @bin"gazetteer-pm/EnamexObjVhgOrgCrpSuff-1.fst" ]
	EndTag(EnamexObjVhgOrgCrp) ; 2
Define EnamexObjVhw2
	[ @bin"gazetteer-pm/EnamexObjVhwSuff-1.fst" ]
	EndTag(EnamexObjVhw) ; 2
Define EnamexOrgClt2
	[ @bin"gazetteer-pm/EnamexOrgCltSuff-1.fst" ]
	EndTag(EnamexOrgClt) ; 2
Define EnamexOrgCltOrgCrp2
	[ @bin"gazetteer-pm/EnamexOrgCltOrgCrpSuff-1.fst" ]
	EndTag(EnamexOrgCltOrgCrp) ; 2
Define EnamexOrgCrp2
	[ @bin"gazetteer-pm/EnamexOrgCrpSuff-1.fst" ]
	EndTag(EnamexOrgCrp) ; 2
Define EnamexOrgCrpOrgFin2
	[ @bin"gazetteer-pm/EnamexOrgCrpOrgFinSuff-1.fst" ]
	EndTag(EnamexOrgCrpOrgFin) ; 2
Define EnamexOrgCrpOrgPlt2
	[ @bin"gazetteer-pm/EnamexOrgCrpOrgPltSuff-1.fst" ]
	EndTag(EnamexOrgCrpOrgPlt) ; 2
Define EnamexOrgCrpPrsHum2
	[ @bin"gazetteer-pm/EnamexOrgCrpPrsHumSuff-1.fst" ]
	EndTag(EnamexOrgCrpPrsHum) ; 2
Define EnamexOrgCrpWrkWaa2
	[ @bin"gazetteer-pm/EnamexOrgCrpWrkWaaSuff-1.fst" ]
	EndTag(EnamexOrgCrpWrkWaa) ; 2
Define EnamexOrgCrpWrkWmd2
	[ @bin"gazetteer-pm/EnamexOrgCrpWrkWmdSuff-1.fst" ]
	EndTag(EnamexOrgCrpWrkWmd) ; 2
Define EnamexOrgEdu2
	[ @bin"gazetteer-pm/EnamexOrgEduSuff-1.fst" ]
	EndTag(EnamexOrgEdu) ; 2
Define EnamexOrgFin2
	[ @bin"gazetteer-pm/EnamexOrgFinSuff-1.fst" ]
	EndTag(EnamexOrgFin) ; 2
Define EnamexOrgPlt2
	[ @bin"gazetteer-pm/EnamexOrgPltSuff-1.fst" ]
	EndTag(EnamexOrgPlt) ; 2
Define EnamexOrgPltPrsHum2
	[ @bin"gazetteer-pm/EnamexOrgPltPrsHumSuff-1.fst" ]
	EndTag(EnamexOrgPltPrsHum) ; 2
Define EnamexPrsAnm2
	[ @bin"gazetteer-pm/EnamexPrsAnmSuff-1.fst" ]
	EndTag(EnamexPrsAnm) ; 2
Define EnamexPrsHum2
	[ @bin"gazetteer-pm/EnamexPrsHumSuff-1.fst" ]
	EndTag(EnamexPrsHum) ; 2
Define EnamexPrsHumWrkWaa2
	[ @bin"gazetteer-pm/EnamexPrsHumWrkWaaSuff-1.fst" ]
	EndTag(EnamexPrsHumWrkWaa) ; 2
Define EnamexPrsHumWrkWmd2
	[ @bin"gazetteer-pm/EnamexPrsHumWrkWmdSuff-1.fst" ]
	EndTag(EnamexPrsHumWrkWmd) ; 2
Define EnamexPrsMth2
	[ @bin"gazetteer-pm/EnamexPrsMthSuff-1.fst" ]
	EndTag(EnamexPrsMth) ; 2
Define EnamexWrkPrj2
	[ @bin"gazetteer-pm/EnamexWrkPrjSuff-1.fst" ]
	EndTag(EnamexWrkPrj) ; 2
Define EnamexWrkWaa2
	[ @bin"gazetteer-pm/EnamexWrkWaaSuff-1.fst" ]
	EndTag(EnamexWrkWaa) ; 2
Define EnamexWrkWao2
	[ @bin"gazetteer-pm/EnamexWrkWaoSuff-1.fst" ]
	EndTag(EnamexWrkWao) ; 2
Define EnamexWrkWmd2
	[ @bin"gazetteer-pm/EnamexWrkWmdSuff-1.fst" ]
	EndTag(EnamexWrkWmd) ; 2
Define TimexTmeDat2
	[ @bin"gazetteer-pm/TimexTmeDatSuff-1.fst" ]
	EndTag(TimexTmeDat) ; 2


! Words with suffix ":" plus lowercase
Define EnamexEvnAtl3
	[ EnamexEvnAtl ":" LowercaseAlpha+ ]
	EndTag(EnamexEvnAtl) ; 3
Define EnamexEvnClu3
	[ EnamexEvnClu ":" LowercaseAlpha+ ]
	EndTag(EnamexEvnClu) ; 3
Define EnamexEvnHpl3
	[ EnamexEvnHpl ":" LowercaseAlpha+ ]
	EndTag(EnamexEvnHpl) ; 3
Define EnamexEvnRlg3
	[ EnamexEvnRlg ":" LowercaseAlpha+ ]
	EndTag(EnamexEvnRlg) ; 3
Define EnamexEvnWth3
	[ EnamexEvnWth ":" LowercaseAlpha+ ]
	EndTag(EnamexEvnWth) ; 3
Define EnamexLocAst3
	[ EnamexLocAst ":" LowercaseAlpha+ ]
	EndTag(EnamexLocAst) ; 3
Define EnamexLocAstPrsHum3
	[ EnamexLocAstPrsHum ":" LowercaseAlpha+ ]
	EndTag(EnamexLocAstPrsHum) ; 3
Define EnamexLocFnc3
	[ EnamexLocFnc ":" LowercaseAlpha+ ]
	EndTag(EnamexLocFnc) ; 3
Define EnamexLocFncLocGpl3
	[ EnamexLocFncLocGpl ":" LowercaseAlpha+ ]
	EndTag(EnamexLocFncLocGpl) ; 3
Define EnamexLocFncLocPpl3
	[ EnamexLocFncLocPpl ":" LowercaseAlpha+ ]
	EndTag(EnamexLocFncLocPpl) ; 3
Define EnamexLocFncOrgCrp3
	[ EnamexLocFncOrgCrp ":" LowercaseAlpha+ ]
	EndTag(EnamexLocFncOrgCrp) ; 3
Define EnamexLocFncPrsHum3
	[ EnamexLocFncPrsHum ":" LowercaseAlpha+ ]
	EndTag(EnamexLocFncPrsHum) ; 3
Define EnamexLocGpl3
	[ EnamexLocGpl ":" LowercaseAlpha+ ]
	EndTag(EnamexLocGpl) ; 3
Define EnamexLocGplOrgCrp3
	[ EnamexLocGplOrgCrp ":" LowercaseAlpha+ ]
	EndTag(EnamexLocGplOrgCrp) ; 3
Define EnamexLocGplPrsHum3
	[ EnamexLocGplPrsHum ":" LowercaseAlpha+ ]
	EndTag(EnamexLocGplPrsHum) ; 3
Define EnamexLocPpl3
	[ EnamexLocPpl ":" LowercaseAlpha+ ]
	EndTag(EnamexLocPpl) ; 3
Define EnamexLocPplOrgCrp3
	[ EnamexLocPplOrgCrp ":" LowercaseAlpha+ ]
	EndTag(EnamexLocPplOrgCrp) ; 3
Define EnamexLocPplOrgFin3
	[ EnamexLocPplOrgFin ":" LowercaseAlpha+ ]
	EndTag(EnamexLocPplOrgFin) ; 3
Define EnamexLocPplPrsHum3
	[ EnamexLocPplPrsHum ":" LowercaseAlpha+ ]
	EndTag(EnamexLocPplPrsHum) ; 3
Define EnamexLocStr3
	[ EnamexLocStr ":" LowercaseAlpha+ ]
	EndTag(EnamexLocStr) ; 3
Define EnamexObjFwp3
	[ EnamexObjFwp ":" LowercaseAlpha+ ]
	EndTag(EnamexObjFwp) ; 3
Define EnamexObjPrd3
	[ EnamexObjPrd ":" LowercaseAlpha+ ]
	EndTag(EnamexObjPrd) ; 3
Define EnamexObjPrz3
	[ EnamexObjPrz ":" LowercaseAlpha+ ]
	EndTag(EnamexObjPrz) ; 3
Define EnamexObjVha3
	[ EnamexObjVha ":" LowercaseAlpha+ ]
	EndTag(EnamexObjVha) ; 3
Define EnamexObjVhg3
	[ EnamexObjVhg ":" LowercaseAlpha+ ]
	EndTag(EnamexObjVhg) ; 3
Define EnamexObjVhgOrgCrp3
	[ EnamexObjVhgOrgCrp ":" LowercaseAlpha+ ]
	EndTag(EnamexObjVhgOrgCrp) ; 3
Define EnamexObjVhw3
	[ EnamexObjVhw ":" LowercaseAlpha+ ]
	EndTag(EnamexObjVhw) ; 3
Define EnamexOrgClt3
	[ EnamexOrgClt ":" LowercaseAlpha+ ]
	EndTag(EnamexOrgClt) ; 3
Define EnamexOrgCltOrgCrp3
	[ EnamexOrgCltOrgCrp ":" LowercaseAlpha+ ]
	EndTag(EnamexOrgCltOrgCrp) ; 3
Define EnamexOrgCrp3
	[ EnamexOrgCrp ":" LowercaseAlpha+ ]
	EndTag(EnamexOrgCrp) ; 3
Define EnamexOrgCrpOrgFin3
	[ EnamexOrgCrpOrgFin ":" LowercaseAlpha+ ]
	EndTag(EnamexOrgCrpOrgFin) ; 3
Define EnamexOrgCrpOrgPlt3
	[ EnamexOrgCrpOrgPlt ":" LowercaseAlpha+ ]
	EndTag(EnamexOrgCrpOrgPlt) ; 3
Define EnamexOrgCrpPrsHum3
	[ EnamexOrgCrpPrsHum ":" LowercaseAlpha+ ]
	EndTag(EnamexOrgCrpPrsHum) ; 3
Define EnamexOrgCrpWrkWaa3
	[ EnamexOrgCrpWrkWaa ":" LowercaseAlpha+ ]
	EndTag(EnamexOrgCrpWrkWaa) ; 3
Define EnamexOrgCrpWrkWmd3
	[ EnamexOrgCrpWrkWmd ":" LowercaseAlpha+ ]
	EndTag(EnamexOrgCrpWrkWmd) ; 3
Define EnamexOrgEdu3
	[ EnamexOrgEdu ":" LowercaseAlpha+ ]
	EndTag(EnamexOrgEdu) ; 3
Define EnamexOrgFin3
	[ EnamexOrgFin ":" LowercaseAlpha+ ]
	EndTag(EnamexOrgFin) ; 3
Define EnamexOrgPlt3
	[ EnamexOrgPlt ":" LowercaseAlpha+ ]
	EndTag(EnamexOrgPlt) ; 3
Define EnamexOrgPltPrsHum3
	[ EnamexOrgPltPrsHum ":" LowercaseAlpha+ ]
	EndTag(EnamexOrgPltPrsHum) ; 3
Define EnamexPrsAnm3
	[ EnamexPrsAnm ":" LowercaseAlpha+ ]
	EndTag(EnamexPrsAnm) ; 3
Define EnamexPrsHum3
	[ EnamexPrsHum ":" LowercaseAlpha+ ]
	EndTag(EnamexPrsHum) ; 3
Define EnamexPrsHumWrkWaa3
	[ EnamexPrsHumWrkWaa ":" LowercaseAlpha+ ]
	EndTag(EnamexPrsHumWrkWaa) ; 3
Define EnamexPrsHumWrkWmd3
	[ EnamexPrsHumWrkWmd ":" LowercaseAlpha+ ]
	EndTag(EnamexPrsHumWrkWmd) ; 3
Define EnamexPrsMth3
	[ EnamexPrsMth ":" LowercaseAlpha+ ]
	EndTag(EnamexPrsMth) ; 3
Define EnamexWrkPrj3
	[ EnamexWrkPrj ":" LowercaseAlpha+ ]
	EndTag(EnamexWrkPrj) ; 3
Define EnamexWrkWaa3
	[ EnamexWrkWaa ":" LowercaseAlpha+ ]
	EndTag(EnamexWrkWaa) ; 3
Define EnamexWrkWao3
	[ EnamexWrkWao ":" LowercaseAlpha+ ]
	EndTag(EnamexWrkWao) ; 3
Define EnamexWrkWmd3
	[ EnamexWrkWmd ":" LowercaseAlpha+ ]
	EndTag(EnamexWrkWmd) ; 3
Define TimexTmeDat3
	[ TimexTmeDat ":" LowercaseAlpha+ ]
	EndTag(TimexTmeDat) ; 3


! Names of type X-X or X/X, with only the second part found in the
! database
Define EnamexEvnAtl4
	[ [Ins(PrefixWord) WordPartSep EnamexEvnAtl] (":" LowercaseAlpha+) ]
	EndTag(EnamexEvnAtl) ; 4
Define EnamexEvnClu4
	[ [Ins(PrefixWord) WordPartSep EnamexEvnClu] (":" LowercaseAlpha+) ]
	EndTag(EnamexEvnClu) ; 4
Define EnamexEvnHpl4
	[ [Ins(PrefixWord) WordPartSep EnamexEvnHpl] (":" LowercaseAlpha+) ]
	EndTag(EnamexEvnHpl) ; 4
Define EnamexEvnRlg4
	[ [Ins(PrefixWord) WordPartSep EnamexEvnRlg] (":" LowercaseAlpha+) ]
	EndTag(EnamexEvnRlg) ; 4
Define EnamexEvnWth4
	[ [Ins(PrefixWord) WordPartSep EnamexEvnWth] (":" LowercaseAlpha+) ]
	EndTag(EnamexEvnWth) ; 4
Define EnamexLocAst4
	[ [Ins(PrefixWord) WordPartSep EnamexLocAst] (":" LowercaseAlpha+) ]
	EndTag(EnamexLocAst) ; 4
Define EnamexLocAstPrsHum4
	[ [Ins(PrefixWord) WordPartSep EnamexLocAstPrsHum] (":" LowercaseAlpha+) ]
	EndTag(EnamexLocAstPrsHum) ; 4
Define EnamexLocFnc4
	[ [Ins(PrefixWord) WordPartSep EnamexLocFnc] (":" LowercaseAlpha+) ]
	EndTag(EnamexLocFnc) ; 4
Define EnamexLocFncLocGpl4
	[ [Ins(PrefixWord) WordPartSep EnamexLocFncLocGpl] (":" LowercaseAlpha+) ]
	EndTag(EnamexLocFncLocGpl) ; 4
Define EnamexLocFncLocPpl4
	[ [Ins(PrefixWord) WordPartSep EnamexLocFncLocPpl] (":" LowercaseAlpha+) ]
	EndTag(EnamexLocFncLocPpl) ; 4
Define EnamexLocFncOrgCrp4
	[ [Ins(PrefixWord) WordPartSep EnamexLocFncOrgCrp] (":" LowercaseAlpha+) ]
	EndTag(EnamexLocFncOrgCrp) ; 4
Define EnamexLocFncPrsHum4
	[ [Ins(PrefixWord) WordPartSep EnamexLocFncPrsHum] (":" LowercaseAlpha+) ]
	EndTag(EnamexLocFncPrsHum) ; 4
Define EnamexLocGpl4
	[ [Ins(PrefixWord) WordPartSep EnamexLocGpl] (":" LowercaseAlpha+) ]
	EndTag(EnamexLocGpl) ; 4
Define EnamexLocGplOrgCrp4
	[ [Ins(PrefixWord) WordPartSep EnamexLocGplOrgCrp] (":" LowercaseAlpha+) ]
	EndTag(EnamexLocGplOrgCrp) ; 4
Define EnamexLocGplPrsHum4
	[ [Ins(PrefixWord) WordPartSep EnamexLocGplPrsHum] (":" LowercaseAlpha+) ]
	EndTag(EnamexLocGplPrsHum) ; 4
Define EnamexLocPpl4
	[ [Ins(PrefixWord) WordPartSep EnamexLocPpl] (":" LowercaseAlpha+) ]
	EndTag(EnamexLocPpl) ; 4
Define EnamexLocPplOrgCrp4
	[ [Ins(PrefixWord) WordPartSep EnamexLocPplOrgCrp] (":" LowercaseAlpha+) ]
	EndTag(EnamexLocPplOrgCrp) ; 4
Define EnamexLocPplOrgFin4
	[ [Ins(PrefixWord) WordPartSep EnamexLocPplOrgFin] (":" LowercaseAlpha+) ]
	EndTag(EnamexLocPplOrgFin) ; 4
Define EnamexLocPplPrsHum4
	[ [Ins(PrefixWord) WordPartSep EnamexLocPplPrsHum] (":" LowercaseAlpha+) ]
	EndTag(EnamexLocPplPrsHum) ; 4
Define EnamexLocStr4
	[ [Ins(PrefixWord) WordPartSep EnamexLocStr] (":" LowercaseAlpha+) ]
	EndTag(EnamexLocStr) ; 4
Define EnamexObjFwp4
	[ [Ins(PrefixWord) WordPartSep EnamexObjFwp] (":" LowercaseAlpha+) ]
	EndTag(EnamexObjFwp) ; 4
Define EnamexObjPrd4
	[ [Ins(PrefixWord) WordPartSep EnamexObjPrd] (":" LowercaseAlpha+) ]
	EndTag(EnamexObjPrd) ; 4
Define EnamexObjPrz4
	[ [Ins(PrefixWord) WordPartSep EnamexObjPrz] (":" LowercaseAlpha+) ]
	EndTag(EnamexObjPrz) ; 4
Define EnamexObjVha4
	[ [Ins(PrefixWord) WordPartSep EnamexObjVha] (":" LowercaseAlpha+) ]
	EndTag(EnamexObjVha) ; 4
Define EnamexObjVhg4
	[ [Ins(PrefixWord) WordPartSep EnamexObjVhg] (":" LowercaseAlpha+) ]
	EndTag(EnamexObjVhg) ; 4
Define EnamexObjVhgOrgCrp4
	[ [Ins(PrefixWord) WordPartSep EnamexObjVhgOrgCrp] (":" LowercaseAlpha+) ]
	EndTag(EnamexObjVhgOrgCrp) ; 4
Define EnamexObjVhw4
	[ [Ins(PrefixWord) WordPartSep EnamexObjVhw] (":" LowercaseAlpha+) ]
	EndTag(EnamexObjVhw) ; 4
Define EnamexOrgClt4
	[ [Ins(PrefixWord) WordPartSep EnamexOrgClt] (":" LowercaseAlpha+) ]
	EndTag(EnamexOrgClt) ; 4
Define EnamexOrgCltOrgCrp4
	[ [Ins(PrefixWord) WordPartSep EnamexOrgCltOrgCrp] (":" LowercaseAlpha+) ]
	EndTag(EnamexOrgCltOrgCrp) ; 4
Define EnamexOrgCrp4
	[ [Ins(PrefixWord) WordPartSep EnamexOrgCrp] (":" LowercaseAlpha+) ]
	EndTag(EnamexOrgCrp) ; 4
Define EnamexOrgCrpOrgFin4
	[ [Ins(PrefixWord) WordPartSep EnamexOrgCrpOrgFin] (":" LowercaseAlpha+) ]
	EndTag(EnamexOrgCrpOrgFin) ; 4
Define EnamexOrgCrpOrgPlt4
	[ [Ins(PrefixWord) WordPartSep EnamexOrgCrpOrgPlt] (":" LowercaseAlpha+) ]
	EndTag(EnamexOrgCrpOrgPlt) ; 4
Define EnamexOrgCrpPrsHum4
	[ [Ins(PrefixWord) WordPartSep EnamexOrgCrpPrsHum] (":" LowercaseAlpha+) ]
	EndTag(EnamexOrgCrpPrsHum) ; 4
Define EnamexOrgCrpWrkWaa4
	[ [Ins(PrefixWord) WordPartSep EnamexOrgCrpWrkWaa] (":" LowercaseAlpha+) ]
	EndTag(EnamexOrgCrpWrkWaa) ; 4
Define EnamexOrgCrpWrkWmd4
	[ [Ins(PrefixWord) WordPartSep EnamexOrgCrpWrkWmd] (":" LowercaseAlpha+) ]
	EndTag(EnamexOrgCrpWrkWmd) ; 4
Define EnamexOrgEdu4
	[ [Ins(PrefixWord) WordPartSep EnamexOrgEdu] (":" LowercaseAlpha+) ]
	EndTag(EnamexOrgEdu) ; 4
Define EnamexOrgFin4
	[ [Ins(PrefixWord) WordPartSep EnamexOrgFin] (":" LowercaseAlpha+) ]
	EndTag(EnamexOrgFin) ; 4
Define EnamexOrgPlt4
	[ [Ins(PrefixWord) WordPartSep EnamexOrgPlt] (":" LowercaseAlpha+) ]
	EndTag(EnamexOrgPlt) ; 4
Define EnamexOrgPltPrsHum4
	[ [Ins(PrefixWord) WordPartSep EnamexOrgPltPrsHum] (":" LowercaseAlpha+) ]
	EndTag(EnamexOrgPltPrsHum) ; 4
Define EnamexPrsAnm4
	[ [Ins(PrefixWord) WordPartSep EnamexPrsAnm] (":" LowercaseAlpha+) ]
	EndTag(EnamexPrsAnm) ; 4
Define EnamexPrsHum4
	[ [Ins(PrefixWord) WordPartSep EnamexPrsHum] (":" LowercaseAlpha+) ]
	EndTag(EnamexPrsHum) ; 4
Define EnamexPrsHumWrkWaa4
	[ [Ins(PrefixWord) WordPartSep EnamexPrsHumWrkWaa] (":" LowercaseAlpha+) ]
	EndTag(EnamexPrsHumWrkWaa) ; 4
Define EnamexPrsHumWrkWmd4
	[ [Ins(PrefixWord) WordPartSep EnamexPrsHumWrkWmd] (":" LowercaseAlpha+) ]
	EndTag(EnamexPrsHumWrkWmd) ; 4
Define EnamexPrsMth4
	[ [Ins(PrefixWord) WordPartSep EnamexPrsMth] (":" LowercaseAlpha+) ]
	EndTag(EnamexPrsMth) ; 4
Define EnamexWrkPrj4
	[ [Ins(PrefixWord) WordPartSep EnamexWrkPrj] (":" LowercaseAlpha+) ]
	EndTag(EnamexWrkPrj) ; 4
Define EnamexWrkWaa4
	[ [Ins(PrefixWord) WordPartSep EnamexWrkWaa] (":" LowercaseAlpha+) ]
	EndTag(EnamexWrkWaa) ; 4
Define EnamexWrkWao4
	[ [Ins(PrefixWord) WordPartSep EnamexWrkWao] (":" LowercaseAlpha+) ]
	EndTag(EnamexWrkWao) ; 4
Define EnamexWrkWmd4
	[ [Ins(PrefixWord) WordPartSep EnamexWrkWmd] (":" LowercaseAlpha+) ]
	EndTag(EnamexWrkWmd) ; 4
Define TimexTmeDat4
	[ [Ins(PrefixWord) WordPartSep TimexTmeDat] (":" LowercaseAlpha+) ]
	EndTag(TimexTmeDat) ; 4


Define TOP [ SkipTagged | EnamexEvnAtl1 | EnamexEvnClu1 | EnamexEvnHpl1 | EnamexEvnRlg1 | EnamexEvnWth1 | EnamexLocAst1 | EnamexLocAstPrsHum1 | EnamexLocFnc1 | EnamexLocFncLocGpl1 | EnamexLocFncLocPpl1 | EnamexLocFncOrgCrp1 | EnamexLocFncPrsHum1 | EnamexLocGpl1 | EnamexLocGplOrgCrp1 | EnamexLocGplPrsHum1 | EnamexLocPpl1 | EnamexLocPplOrgCrp1 | EnamexLocPplOrgFin1 | EnamexLocPplPrsHum1 | EnamexLocStr1 | EnamexObjFwp1 | EnamexObjPrd1 | EnamexObjPrz1 | EnamexObjVha1 | EnamexObjVhg1 | EnamexObjVhgOrgCrp1 | EnamexObjVhw1 | EnamexOrgClt1 | EnamexOrgCltOrgCrp1 | EnamexOrgCrp1 | EnamexOrgCrpOrgFin1 | EnamexOrgCrpOrgPlt1 | EnamexOrgCrpPrsHum1 | EnamexOrgCrpWrkWaa1 | EnamexOrgCrpWrkWmd1 | EnamexOrgEdu1 | EnamexOrgFin1 | EnamexOrgPlt1 | EnamexOrgPltPrsHum1 | EnamexPrsAnm1 | EnamexPrsHum1 | EnamexPrsHumWrkWaa1 | EnamexPrsHumWrkWmd1 | EnamexPrsMth1 | EnamexWrkPrj1 | EnamexWrkWaa1 | EnamexWrkWao1 | EnamexWrkWmd1 | TimexTmeDat1 | EnamexEvnAtl2 | EnamexEvnClu2 | EnamexEvnHpl2 | EnamexEvnRlg2 | EnamexEvnWth2 | EnamexLocAst2 | EnamexLocAstPrsHum2 | EnamexLocFnc2 | EnamexLocFncLocGpl2 | EnamexLocFncLocPpl2 | EnamexLocFncOrgCrp2 | EnamexLocFncPrsHum2 | EnamexLocGpl2 | EnamexLocGplOrgCrp2 | EnamexLocGplPrsHum2 | EnamexLocPpl2 | EnamexLocPplOrgCrp2 | EnamexLocPplOrgFin2 | EnamexLocPplPrsHum2 | EnamexLocStr2 | EnamexObjFwp2 | EnamexObjPrd2 | EnamexObjPrz2 | EnamexObjVha2 | EnamexObjVhg2 | EnamexObjVhgOrgCrp2 | EnamexObjVhw2 | EnamexOrgClt2 | EnamexOrgCltOrgCrp2 | EnamexOrgCrp2 | EnamexOrgCrpOrgFin2 | EnamexOrgCrpOrgPlt2 | EnamexOrgCrpPrsHum2 | EnamexOrgCrpWrkWaa2 | EnamexOrgCrpWrkWmd2 | EnamexOrgEdu2 | EnamexOrgFin2 | EnamexOrgPlt2 | EnamexOrgPltPrsHum2 | EnamexPrsAnm2 | EnamexPrsHum2 | EnamexPrsHumWrkWaa2 | EnamexPrsHumWrkWmd2 | EnamexPrsMth2 | EnamexWrkPrj2 | EnamexWrkWaa2 | EnamexWrkWao2 | EnamexWrkWmd2 | TimexTmeDat2 | EnamexEvnAtl3 | EnamexEvnClu3 | EnamexEvnHpl3 | EnamexEvnRlg3 | EnamexEvnWth3 | EnamexLocAst3 | EnamexLocAstPrsHum3 | EnamexLocFnc3 | EnamexLocFncLocGpl3 | EnamexLocFncLocPpl3 | EnamexLocFncOrgCrp3 | EnamexLocFncPrsHum3 | EnamexLocGpl3 | EnamexLocGplOrgCrp3 | EnamexLocGplPrsHum3 | EnamexLocPpl3 | EnamexLocPplOrgCrp3 | EnamexLocPplOrgFin3 | EnamexLocPplPrsHum3 | EnamexLocStr3 | EnamexObjFwp3 | EnamexObjPrd3 | EnamexObjPrz3 | EnamexObjVha3 | EnamexObjVhg3 | EnamexObjVhgOrgCrp3 | EnamexObjVhw3 | EnamexOrgClt3 | EnamexOrgCltOrgCrp3 | EnamexOrgCrp3 | EnamexOrgCrpOrgFin3 | EnamexOrgCrpOrgPlt3 | EnamexOrgCrpPrsHum3 | EnamexOrgCrpWrkWaa3 | EnamexOrgCrpWrkWmd3 | EnamexOrgEdu3 | EnamexOrgFin3 | EnamexOrgPlt3 | EnamexOrgPltPrsHum3 | EnamexPrsAnm3 | EnamexPrsHum3 | EnamexPrsHumWrkWaa3 | EnamexPrsHumWrkWmd3 | EnamexPrsMth3 | EnamexWrkPrj3 | EnamexWrkWaa3 | EnamexWrkWao3 | EnamexWrkWmd3 | TimexTmeDat3 | EnamexEvnAtl4 | EnamexEvnClu4 | EnamexEvnHpl4 | EnamexEvnRlg4 | EnamexEvnWth4 | EnamexLocAst4 | EnamexLocAstPrsHum4 | EnamexLocFnc4 | EnamexLocFncLocGpl4 | EnamexLocFncLocPpl4 | EnamexLocFncOrgCrp4 | EnamexLocFncPrsHum4 | EnamexLocGpl4 | EnamexLocGplOrgCrp4 | EnamexLocGplPrsHum4 | EnamexLocPpl4 | EnamexLocPplOrgCrp4 | EnamexLocPplOrgFin4 | EnamexLocPplPrsHum4 | EnamexLocStr4 | EnamexObjFwp4 | EnamexObjPrd4 | EnamexObjPrz4 | EnamexObjVha4 | EnamexObjVhg4 | EnamexObjVhgOrgCrp4 | EnamexObjVhw4 | EnamexOrgClt4 | EnamexOrgCltOrgCrp4 | EnamexOrgCrp4 | EnamexOrgCrpOrgFin4 | EnamexOrgCrpOrgPlt4 | EnamexOrgCrpPrsHum4 | EnamexOrgCrpWrkWaa4 | EnamexOrgCrpWrkWmd4 | EnamexOrgEdu4 | EnamexOrgFin4 | EnamexOrgPlt4 | EnamexOrgPltPrsHum4 | EnamexPrsAnm4 | EnamexPrsHum4 | EnamexPrsHumWrkWaa4 | EnamexPrsHumWrkWmd4 | EnamexPrsMth4 | EnamexWrkPrj4 | EnamexWrkWaa4 | EnamexWrkWao4 | EnamexWrkWmd4 | TimexTmeDat4 ] LC(Boundary) RC(Boundary) ;
