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

Define Boundary [" " | #] ;

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

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

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

@{Define ${tag} $fst ;
}@

! Words, optionally ending in a dash plus numbers
@{Define +${tag}1
	[ $tag ("-" Num+) ]
	EndTag($tag) ; 1
}@

! Words with suffixes (genitive suffix "s").
@{Define +${tag}2
	[ $fstsuff ]
	EndTag($tag) ; 2
}@

! Words with suffix ":" plus lowercase
@{Define +${tag}3
	[ $tag ":" LowercaseAlpha+ ]
	EndTag($tag) ; 3
}@

! Names of type X-X or X/X, with only the second part found in the
! database
@{Define +${tag}4
	[ [UppercaseAlpha NSTWordPartSep+ WordPartSep $tag]
	  (":" LowercaseAlpha+) ]
	EndTag($tag) ; 4
}@

Define TOP [ @@ ] LC(Boundary) RC(Boundary) ;
