#
# Copyright (C) 2016 and later: Unicode, Inc. and others.
# License & terms of use: http://www.unicode.org/copyright.html#License

# Copyright (c) 2016, International Business Machines Corporation and others. All Rights Reserved.
# file: sentence.txt

type = sentence;      # one of grapheme | word | line | sentence
locale = en;

CR        = [\p{Sentence_Break = CR}];
LF        = [\p{Sentence_Break = LF}];
Extend    = [\p{Sentence_Break = Extend}];
Sep       = [\p{Sentence_Break = Sep}];
Format    = [\p{Sentence_Break = Format}];
Sp        = [\p{Sentence_Break = Sp}];
Lower     = [\p{Sentence_Break = Lower}];
Upper     = [\p{Sentence_Break = Upper}];
OLetter   = [\p{Sentence_Break = OLetter}];
Numeric   = [\p{Sentence_Break = Numeric}];
ATerm     = [\p{Sentence_Break = ATerm}];
SContinue = [\p{Sentence_Break = SContinue}];
STerm     = [\p{Sentence_Break = STerm}];
Close     = [\p{Sentence_Break = Close}];

ParaSep   = [Sep CR LF];
SATerm    = [STerm ATerm];
ExtFmt    = [Extend Format];

# SB2:  ÷  eot
#       Conventional regular expression matching for '$' as end-of-text also matches
#       at a line separator just preceding the physical end of text.
#       Instead, use a look-ahead assertion that there is no following character.
SB2:    . ÷ (?!.);

SB3:    CR LF;
SB4:    ParaSep ÷;

# SB5: ignore Format and Extend characters.

SB6:    ATerm ExtFmt* Numeric;
SB7:    (Upper | Lower) ExtFmt* ATerm ExtFmt* Upper;
SB8:    ATerm ExtFmt* (Close ExtFmt*)* (Sp ExtFmt*)* ([^OLetter Upper Lower ParaSep SATerm ExtFmt] ExtFmt *)* Lower;
SB8a:   SATerm ExtFmt* (Close ExtFmt*)* (Sp ExtFmt*)* (SContinue | SATerm);

SB9:    SATerm ExtFmt* (Close ExtFmt*)* (Sp ExtFmt*)* (CR LF | ParaSep)? ÷;
        # Also covers SB10, SB11.

SB12:   . ExtFmt* [^ExtFmt]?;