CON = (96-122|144-171|176-181|192-199|140|172-173|189) % Hebrew letters
;
VWL = (65-72|74-77|182-187) % vowels, excluding holamdot
;
TRP = (209-225|227-239) % trope
;
NUM = (48-57)
;
%% A sequence of 0 or more vowels can be terminated by another
%% consonant, a space, a non-letter, or the end of input.
NL = (33-64|78-81|85|91-95|123-127|139|143|188|208-225|227-239)
; % non-letters
CNL = ({CON}|{NL}) % consonant or non-letter
;
SPACE = 32
;
%% We need to keep track of trope that occurs above/below the
%% letter...
UTRP = (210-213|215-217|220-225|232-233|235-236|238-239) % upper
;
LTRP = (209|214|218-219|227-231|234|237) % lower
;
%% Some upper trope occurs at right edge, and some at left edge...
RTTRP = (221|224) % all upper right tropes
;
LFTTRP = (217|233|238) % all upper left tropes
;
expressions:
%% Apart from the below-named cases, the BHS text is not 100\% consistent
%% in its conventions. Sometimes, an upper trope appears as the first
%% element of a word.
{NL}{UTRP}{CON}{VWL} => \1"\PutUTrpVwl{" \3 "}{" \2 "}{" \4 "}"
;
{NL}{UTRP}{CON} => \1 "\PutUTrp{" \3 "}{" \2 "}"
;
%% Words can also be started by a space.
{SPACE}{UTRP}{CON}{VWL} => \1"\PutUTrpVwl{" \3 "}{" \2 "}{" \4 "}"
;
{SPACE}{UTRP}{CON} => \1 "\PutUTrp{" \3 "}{" \2 "}"
;
%% Here are all the cases to be considered when placing the vowel place-
%% ment macros. One case is C (consonant) followed by no vowel (V) or trope.
%% No markup is necessary for this case.
%% Next,
%% 1. C V LT|UT (LT=lower trope, UT=upper trope)
%% 2. C V
%% 3. C LT|UT V
%% 4. C LT|UT
%% This method is also efficacious because it lets us test the trope
%% separately (in the TeX macro) to see if it is a `right edge' or
%% `left edge' trope. Remember, this information has been encoded in
%% the trope's italic correction.
{CON}{VWL}{UTRP} => "\PutVwlUTrp{" \1 "}{" \2 "}{" \3 "}"
;
{CON}{VWL}{LTRP} => "\PutVwlLTrp{" \1 "}{" \2 "}{" \3 "}"
;
{CON}{VWL} => "\PutVwl{" \1 "}{" \2 "}"
;
{CON}{UTRP}{VWL} => "\PutUTrpVwl{" \1 "}{" \2 "}{" \3 "}"
;
{CON}{LTRP}{VWL} => "\PutLTrpVwl{" \1 "}{" \2 "}{" \3 "}"
;
{CON}{UTRP} => "\PutUTrp{" \1 "}{" \2 "}"
;
{CON}{LTRP} => "\PutLTrp{" \1 "}{" \2 "}"
;
%% In case of unadorned consonants, we surround them with a macro as
%% well..
{CON} => "\PutCon{" \1 "}"
;
{NUM} => "\PutNum{" \1 "}"
;
. => "\PutOther{" \1 "}"
;