use std::sync::LazyLock;
use regex::Regex;
use super::types::PosTag;
struct PatternEntry {
regex: Regex,
tag: PosTag,
}
pub(super) struct CompiledPatterns {
patterns: Vec<PatternEntry>,
}
impl CompiledPatterns {
fn from_raw_patterns(raw_patterns: &[(String, PosTag)]) -> Self {
let patterns = raw_patterns
.iter()
.map(|(regex_str, tag)| PatternEntry {
regex: Regex::new(regex_str)
.unwrap_or_else(|e| panic!("Failed to compile regex '{}': {}", regex_str, e)),
tag: *tag,
})
.collect();
Self { patterns }
}
pub(super) fn match_token(&self, value: &str) -> PosTag {
for entry in &self.patterns {
if entry.regex.is_match(value) {
return entry.tag;
}
}
PosTag::Nn
}
}
static RAW_PATTERNS: LazyLock<Vec<(String, PosTag)>> = LazyLock::new(build_pattern_list);
#[cfg(test)]
pub(super) static COMPILED_PATTERNS: LazyLock<CompiledPatterns> =
LazyLock::new(|| CompiledPatterns::from_raw_patterns(RAW_PATTERNS.as_slice()));
thread_local! {
static THREAD_LOCAL_COMPILED_PATTERNS: CompiledPatterns =
CompiledPatterns::from_raw_patterns(RAW_PATTERNS.as_slice());
}
pub(super) fn match_token_thread_local(value: &str) -> PosTag {
THREAD_LOCAL_COMPILED_PATTERNS.with(|patterns| patterns.match_token(value))
}
fn build_pattern_list() -> Vec<(String, PosTag)> {
let year = r"(19[6-9][0-9]|20[0-9][0-9]|20[0-9][xX])";
let year_short = r"([6-9][0-9]|[0-2][0-9])";
let year_year = &format!(
r"(({yr}[\.,\-])+[6-9][0-9]|({yr}[\.,\-])+[0-9]|({yr}[\.,\-])+[0-2][0-9]|({yr}[\.,\-])+{yr}|({yr}[\.,\-])+{yr}x|({yr}[\.,\-])+{yr}a)",
yr = year
);
let punct = r##"([!"#$%&'()*+,\-./:;<=>?@\[\\\]^_`{|}~i]|\\ )*"##;
let year_punct = &format!("{}{}", year, punct);
let year_year_punct = &format!("{}{}", year_year, punct);
let year_short_punct = &format!("{}{}", year_short, punct);
let year_or_year_year = &format!("({}|{})", year_punct, year_year_punct);
let year_then_short = &format!("({}({})*)", year_or_year_year, year_short_punct);
let year_dash_present = &format!(r"{}[\-~]? ?[Pp]resent\.?,?", year);
let mut patterns: Vec<(String, PosTag)> = Vec::with_capacity(1200);
let mut add = |regex: &str, tag: PosTag| {
patterns.push((regex.to_string(), tag));
};
add(r"^Copyright\.txt$", PosTag::Nn);
add(r"^copyright\.\)?$", PosTag::Nn);
add(r"^[Cc]opyrighted[\.,\)]$", PosTag::Nn);
add(r"^[Cc]opyrights[\.,\)]$", PosTag::Nn);
add(r"^COPYRIGHTS[\.,\)]$", PosTag::Nn);
add(r"^COPYRIGHTED[\.,\)]$", PosTag::Nn);
add(r"^[\(\.@_\-\#\):]*[Cc]opyrights?:?$", PosTag::Copy);
add(r"^[\(\.@_]*COPYRIGHT[sS]?:?$", PosTag::Copy);
add(r"^[\(\.@]*[Cc]opyrighted?:?$", PosTag::Copy);
add(r"^[\(\.@]*COPYRIGHTED?:?$", PosTag::Copy);
add(r"^[\(\.@]*CopyRights?:?$", PosTag::Copy);
add(r"^Copyrighy$", PosTag::Copy);
add(r"^Copyirght$", PosTag::Copy);
add(r"^Bundle-Copyright", PosTag::Copy);
add(r"(?i)^\(c\)opy(rights?|righted|left)$", PosTag::Copy);
add(
r"(?i)^opy(rights?|righted|left|lefted)[\.,]?$",
PosTag::Copy,
);
add(r"^//opylefted$", PosTag::Copy);
add(r"^c'opylefted$", PosTag::Copy);
add(r"^[Cc]ppyright[\.,]?$", PosTag::Copy);
add(r"^Copyright,$", PosTag::Copy);
add(r"^[Cc]opyright'>$", PosTag::Copy);
add(r"^@[Cc]opyrights?:?$", PosTag::Copy);
add(r"^\(C\),?$", PosTag::Copy);
add(r"^\(c\),?$", PosTag::Copy);
add(r"^COPR\.?$", PosTag::Copy);
add(r"^copr\.?$", PosTag::Copy);
add(r"^Copr\.?$", PosTag::Copy);
add(r"[A-Za-z0-9]+['\x22>]+[Cc]opyright", PosTag::Copy);
add(r"^AssemblyCopyright.?$", PosTag::Copy);
add(r"^AppCopyright?$", PosTag::Copy);
add(r"^[A-Z]Copyright?$", PosTag::Copy);
add(
r"^[Ss][Pp][Dd][Xx]-(?:[Ff]ile|[Ss]nippet)[Cc]opyright[Tt]ext",
PosTag::Copy,
);
add(
r"^[Ss][Pp][Dd][Xx]-[Ff]ile[Cc]ontributor",
PosTag::SpdxContrib,
);
add(r"^All$", PosTag::Nn);
add(r"^all$", PosTag::Nn);
add(r"^ALL$", PosTag::Nn);
add(r"^NO$", PosTag::Nn);
add(r"^Some$", PosTag::Nn);
add(r"^[Rr]ights?$", PosTag::Right);
add(r"^RIGHTS?$", PosTag::Right);
add(r"^[Rr]eserved[\.,]*$", PosTag::Reserved);
add(r"^RESERVED[\.,]*$", PosTag::Reserved);
add(r"^[Rr]eversed[\.,]*$", PosTag::Reserved);
add(r"^REVERSED[\.,]*$", PosTag::Reserved);
add(r"^[Aa]lle$", PosTag::Nn);
add(r"^[Rr]echte$", PosTag::Right);
add(r"^[Vv]orbehalten[\.,]*$", PosTag::Reserved);
add(r"^[Tt]ous$", PosTag::Nn);
add(r"^[Dd]roits?$", PosTag::Right);
add(r"^[Rr]éservés[\.,]*$", PosTag::Reserved);
add(r"^[Rr]eserves[\.,]*$", PosTag::Reserved);
add(r"^[Rr]eservados[\.,]*$", PosTag::Reserved);
add(r"^[Tt]odos$", PosTag::Nn);
add(r"^[Ll]os$", PosTag::Nn);
add(r"^[Dd]erechos$", PosTag::Right);
add(r"^[Rr]echten$", PosTag::Right);
add(r"^[Vv]oorbehouden[\.,]*$", PosTag::Reserved);
add(r"^is$", PosTag::Is);
add(r"^are$", PosTag::Is);
add(r"^held$", PosTag::Held);
add(r"^NOTICE$", PosTag::Notice);
add(r"^NOTICES?[\.,]$", PosTag::Junk);
add(r"^[Nn]otice$", PosTag::Notice);
add(r"^[Nn]otices?[\.,]$", PosTag::Junk);
add(r"^[Nn]otices?$", PosTag::Junk);
add(r"^OF$", PosTag::Of);
add(r"^of$", PosTag::Of);
add(r"^Of$", PosTag::Of);
add(r"^De$", PosTag::Of);
add(r"^DE$", PosTag::Of);
add(r"^Di$", PosTag::Of);
add(r"^di$", PosTag::Of);
add(r"^in$", PosTag::In);
add(r"^en$", PosTag::In);
add(r"^by$", PosTag::By);
add(r"^BY$", PosTag::By);
add(r"^By$", PosTag::By);
add(r"^and$", PosTag::Cc);
add(r"^And$", PosTag::Cc);
add(r"^AND$", PosTag::Cc);
add(r"^and/or$", PosTag::Cc);
add(r"^&$", PosTag::Cc);
add(r"^at$", PosTag::Cc);
add(r"^et$", PosTag::Cc);
add(r"^Et$", PosTag::Cc);
add(r"^ET$", PosTag::Cc);
add(r"^Und$", PosTag::Cc);
add(r"^und$", PosTag::Cc);
add(r"^,$", PosTag::Cc);
add(r"^[Oo]ther?s[\.,]?$", PosTag::Oth);
add(r"^et\. ?al[\.,]?$", PosTag::Oth);
add(r"^-$", PosTag::Dash);
add(r"^--$", PosTag::Dash);
add(r"^/$", PosTag::Dash);
add(r"^to$", PosTag::To);
add(r"[Pp]ortions?|[Pp]arts?$", PosTag::Portions);
add(r"^(([Vv][ao]n)|[Dd][aeu])$", PosTag::Van);
add(r"^aan$", PosTag::Of);
add(r"^van$", PosTag::Van);
add(r"^Van$", PosTag::Van);
add(r"^von$", PosTag::Van);
add(r"^Von$", PosTag::Van);
add(r"^Da$", PosTag::Van);
add(r"^da$", PosTag::Van);
add(r"^Du$", PosTag::Van);
add(r"^du$", PosTag::Van);
add(r"^20[0-9][0-9]\+$", PosTag::YrPlus);
add(
&format!(
r"^{}{}+({}|{})*$",
punct, year_or_year_year, year_or_year_year, year_then_short
),
PosTag::Yr,
);
add(
&format!(
r"^{}{}+({}|{}|{})*$",
punct, year_or_year_year, year_or_year_year, year_then_short, year_short_punct
),
PosTag::Yr,
);
add(&format!(r"^({})+$", year_year), PosTag::Yr);
add(&format!(r"^({})+$", year_dash_present), PosTag::Yr);
add(
&format!(r"^{}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])$", year),
PosTag::Yr,
);
add(r"^[8-9][0-9],$", PosTag::Yr);
add(r"^[8-9][0-9]$", PosTag::BareYr);
add(r"^(0?[1-9]|1[012])/[6-9][0-9][\.,]?$", PosTag::Yr);
add(r"today.year", PosTag::Yr);
add(r"(?i)^current_year$", PosTag::Yr);
add(r"^\$?LastChangedDate\$?$", PosTag::Yr);
add(r"^\$?date-of-software$", PosTag::Yr);
add(r"^\$?date-of-document$", PosTag::Yr);
add(r"^[0-3]?[0-9]?[\.,]?$", PosTag::Cds);
add(r"^-?[0-9]+(.[0-9]+)?[\.,]?$", PosTag::Cd);
add(r"^following$", PosTag::Following);
add(r"^([Hh]olders?|HOLDERS?)\.?,?$", PosTag::Holder);
add(r"^(Feb|Mar|Apr|Jul|Aug|Sep|Oct|Nov|Dec),?$", PosTag::Month);
add(
r"^([Mm]onday|[Tt]uesday|[Ww]ednesday|[Tt]hursday|[Ff]riday|[Ss]aturday|[Ss]unday),?$",
PosTag::Day,
);
add(r"^MIT,$", PosTag::Caps);
add(r"^MIT\.?$", PosTag::Mit);
add(r"^Linux$", PosTag::Linux);
add(r"^[\(\)]$", PosTag::Parens);
add(r"^AT$", PosTag::At);
add(r"^DOT$", PosTag::Dot);
add(r"^dot$", PosTag::Dot);
add(r"^OU$", PosTag::Ou);
add(r"^Special$", PosTag::Nn);
add(r"^Member\(s\)[\.,]?$", PosTag::Nnp);
add(r"^__authors?__$", PosTag::Auths);
add(r"^__contributors?__$", PosTag::Auths);
add(r"^Author\(s\)[\.,:]?$", PosTag::Auths);
add(r"^[A-a]ffiliate\(s\)[\.,:]?$", PosTag::Comp);
add(r"ApS$", PosTag::Comp);
add(r"^[A-Z][0-9]$", PosTag::Nn);
add(r"^[BEFHJMNPQRTUVW][a-z]$", PosTag::Nn);
add(r"^dead_horse$", PosTag::Nn);
add(r"^A11yance", PosTag::Nnp);
add(r"^Fu$", PosTag::Nnp);
add(r"^W3C\(r\)$", PosTag::Comp);
add(r"^TeX$", PosTag::Nnp);
add(
r"^(?:OpenStreetMap|AliasDotCom|AllThingsTalk).?$",
PosTag::Nnp,
);
add(r"^Re-Creating$", PosTag::Junk);
add(r"^[Nn]o$", PosTag::Junk);
add(r"^Earth$", PosTag::Nn);
add(r"^Maps/Google$", PosTag::Nn);
add(r"^\*$", PosTag::Junk);
add(r"^TinCanTools$", PosTag::Nnp);
add(r"^SoftwareBitMaker$", PosTag::Nnp);
add(r"^NetCommWireless$", PosTag::Nnp);
add(r"^([A-Z][a-z]+){3,}$", PosTag::Junk);
add(r"^((\w+-){3,}\w+)$", PosTag::Junk);
add(r"^[^\\/]+[\\/][^\\/]+[\\/].*$", PosTag::Junk);
add(r"^([A-Z][a-z]+){3,20}[A-Z]+[0-9]*,?$", PosTag::Junk);
add(r"^.*\(.*\).*\(.*\).*$", PosTag::Junk);
add(r"^\(([abdefghi\d]|ii|iii)\)$", PosTag::Junk);
add(r"^@?link:?$", PosTag::Junk);
add(r"@license:?$", PosTag::Junk);
add(r"(?i)^@remark:?$", PosTag::Junk);
add(r"^0x[a-fA-F0-9]+", PosTag::Junk);
add(r"^O=$", PosTag::Junk);
add(r"^OU=?$", PosTag::Junk);
add(r"^XML$", PosTag::Junk);
add(r"^Parser$", PosTag::Junk);
add(r"^Dual$", PosTag::Junk);
add(r"^Crypto$", PosTag::Junk);
add(r"^PART$", PosTag::Junk);
add(r"^[Oo]riginally?$", PosTag::Junk);
add(r"^[Rr]epresentations?\.?$", PosTag::Junk);
add(r"^works,$", PosTag::Junk);
add(r"^grant$", PosTag::Junk);
add(r"^Refer$", PosTag::Junk);
add(r"^Apt$", PosTag::Junk);
add(r"^Agreement$", PosTag::Junk);
add(r"^Usage$", PosTag::Junk);
add(r"^Please$", PosTag::Junk);
add(r"^\(?Based$", PosTag::Junk);
add(r"^Upstream$", PosTag::Junk);
add(r"^Files?$", PosTag::Junk);
add(r"^Filename:?$", PosTag::Junk);
add(r"^Description:?$", PosTag::Junk);
add(r"^[Pp]rocedures?$", PosTag::Junk);
add(r"^You$", PosTag::Junk);
add(r"^Everyone$", PosTag::Junk);
add(r"^[Ff]unded$", PosTag::Junk);
add(r"^Unless$", PosTag::Junk);
add(r"^rant$", PosTag::Junk);
add(r"^Subject$", PosTag::Junk);
add(r"^Acknowledgements?$", PosTag::Junk);
add(r"^Derivative$", PosTag::Junk);
add(r"^[Ll]icensable$", PosTag::Junk);
add(r"^[Ss]ince$", PosTag::Junk);
add(r"^[Ll]icen[cs]e[\.d]?$", PosTag::Junk);
add(r"^[Ll]icen[cs]ors?$", PosTag::Junk);
add(r"^under$", PosTag::Junk);
add(r"^TCK$", PosTag::Junk);
add(r"^Use$", PosTag::Junk);
add(r"^[Rr]estrictions?$", PosTag::Junk);
add(r"^[Ii]ntrodu`?ction$", PosTag::Junk);
add(r"^[Ii]ncludes?$", PosTag::Junk);
add(r"^[Vv]oluntary$", PosTag::Junk);
add(r"^[Cc]ontributions?$", PosTag::Junk);
add(r"^[Mm]odifications?$", PosTag::Junk);
add(r"^Company:$", PosTag::Junk);
add(r"^For$", PosTag::Junk);
add(r"^File$", PosTag::Junk);
add(r"^Last$", PosTag::Junk);
add(r"^[Rr]eleased?$", PosTag::Junk);
add(r"^[Cc]opyrighting$", PosTag::Junk);
add(r"^[Aa]uthori.*$", PosTag::Junk);
add(r"^such$", PosTag::Junk);
add(r"^[Aa]ssignments?[\.,]?$", PosTag::Junk);
add(r"^[Bb]uild$", PosTag::Junk);
add(r"^[Ss]tring$", PosTag::Junk);
add(r"^Implementation-Vendor$", PosTag::Junk);
add(r"^dnl$", PosTag::Junk);
add(r"^ifndef$", PosTag::Junk);
add(r"^as$", PosTag::Nn);
add(r"^[Vv]isit$", PosTag::Junk);
add(r"^rem$", PosTag::Junk);
add(r"^REM$", PosTag::Junk);
add(r"^Supports$", PosTag::Junk);
add(r"^Separator$", PosTag::Junk);
add(r"^\.byte$", PosTag::Junk);
add(r"^Idata$", PosTag::Junk);
add(r"^[Cc]ontributed?$", PosTag::Junk);
add(r"^[Ff]unctions?$", PosTag::Junk);
add(r"^[Mm]ust$", PosTag::Junk);
add(r"^ISUPPER?$", PosTag::Junk);
add(r"^ISLOWER$", PosTag::Junk);
add(r"^AppPublisher$", PosTag::Junk);
add(r"^DISCLAIMS?$", PosTag::Junk);
add(r"^SPECIFICALLY$", PosTag::Junk);
add(r"^identifying", PosTag::Junk);
add(r"^IDENTIFICATION$", PosTag::Junk);
add(r"^WARRANTIE?S?$", PosTag::Junk);
add(r"^WARRANTS?$", PosTag::Junk);
add(r"^WARRANTYS?$", PosTag::Junk);
add(r"^Row\(", PosTag::Junk);
add(r"^hispagestyle$", PosTag::Junk);
add(r"^Generic$", PosTag::Junk);
add(r"^generate-", PosTag::Junk);
add(r"^Change$", PosTag::Junk);
add(r"^Add$", PosTag::Junk);
add(r"^Average$", PosTag::Junk);
add(r"^Taken$", PosTag::Junk);
add(r"^design$", PosTag::Junk);
add(r"^Driver$", PosTag::Junk);
add(r"^[Cc]ontribution\.?", PosTag::Junk);
add(r"DeclareUnicodeCharacter$", PosTag::Junk);
add(r"^Language-Team$", PosTag::Junk);
add(r"^Last-Translator$", PosTag::Junk);
add(r"^Translated$", PosTag::Junk);
add(r"^OMAP730$", PosTag::Junk);
add(r"^dylid$", PosTag::Junk);
add(r"^BeOS$", PosTag::Junk);
add(r"^Generates?$", PosTag::Junk);
add(r"^Thanks?$", PosTag::Junk);
add(r"^therein$", PosTag::Junk);
add(r"^their$", PosTag::Junk);
add(r"^var$", PosTag::Junk);
add(r"^[Tt]his$", PosTag::Junk);
add(r"^thats?$", PosTag::Junk);
add(r"^xmlns$", PosTag::Junk);
add(r"^[Aa]sync$", PosTag::Junk);
add(r"^Keyspan$", PosTag::Junk);
add(r"^grunt.template", PosTag::Junk);
add(r"^else", PosTag::Junk);
add(r"^constructor.$", PosTag::Junk);
add(
r"^(if|elsif|elif|self|catch|this|else|switch|type|typeof|case|pos|break|[Nn]one|null|var|return|def|function|method|var).?$",
PosTag::Junk,
);
add(
r"^.?(null|function|try|catch|except|throw|typeof|catch|switch).?$",
PosTag::Junk,
);
add(
r"^.*[\.:](?:value|ref|key|case|type|typeof|props|state|error|null)$",
PosTag::Junk,
);
add(r"^[a-z]{0,5}\[!?]+", PosTag::Junk);
add(r"^\w{2,6}\([a-z, ]{1,6}\)", PosTag::Junk);
add(r"^neither$", PosTag::Junk);
add(r"^nor$", PosTag::Junk);
add(r"^data-.*$", PosTag::Junk);
add(r"^providing$", PosTag::Junk);
add(r"^Execute$", PosTag::Junk);
add(r"^passes$", PosTag::Junk);
add(r"^Should$", PosTag::Junk);
add(r"^[Ll]icensing\@?$", PosTag::Junk);
add(r"^Disclaimer$", PosTag::Junk);
add(r"^Directive.?$", PosTag::Junk);
add(r"^LAWS\,?$", PosTag::Junk);
add(r"^me$", PosTag::Junk);
add(r"^Derived$", PosTag::Junk);
add(r"^Limitations?$", PosTag::Junk);
add(r"^Nothing$", PosTag::Junk);
add(r"^Policy$", PosTag::Junk);
add(r"^available$", PosTag::Junk);
add(r"^Recipient\.?$", PosTag::Junk);
add(r"^LICEN[CS]EES?\.?$", PosTag::Junk);
add(r"^[Ll]icen[cs]ees?,?$", PosTag::Junk);
add(r"^Application$", PosTag::Junk);
add(r"^Receiving$", PosTag::Junk);
add(r"^Party$", PosTag::Junk);
add(r"^interfaces$", PosTag::Junk);
add(r"^owner$", PosTag::Junk);
add(r"^Sui$", PosTag::Junk);
add(r"^Generis$", PosTag::Junk);
add(r"^Conditioned$", PosTag::Junk);
add(r"^Warranty$", PosTag::Junk);
add(r"^Configure$", PosTag::Junk);
add(r"^Excluded$", PosTag::Junk);
add(r"^Represents$", PosTag::Junk);
add(r"^Sufficient$", PosTag::Junk);
add(r"^Each$", PosTag::Junk);
add(r"^Partially$", PosTag::Junk);
add(r"^Limitation$", PosTag::Junk);
add(r"^Liability$", PosTag::Junk);
add(r"^Named$", PosTag::Junk);
add(r"^defaults?$", PosTag::Junk);
add(r"^Use.$", PosTag::Junk);
add(r"^EXCEPT$", PosTag::Junk);
add(r"^OWNER\.?$", PosTag::Junk);
add(r"^Comments\.?$", PosTag::Junk);
add(r"^you$", PosTag::Junk);
add(r"^means$", PosTag::Junk);
add(r"^information$", PosTag::Junk);
add(r"^[Aa]lternatively.?$", PosTag::Junk);
add(r"^[Aa]lternately.?$", PosTag::Junk);
add(r"^INFRINGEMENT.?$", PosTag::Junk);
add(r"^Install$", PosTag::Junk);
add(r"^Updates$", PosTag::Junk);
add(r"^Record-keeping$", PosTag::Junk);
add(r"^Privacy$", PosTag::Junk);
add(r"^within$", PosTag::Junk);
add(r"^official$", PosTag::Junk);
add(r"^duties$", PosTag::Junk);
add(r"^civil$", PosTag::Junk);
add(r"^servants?$", PosTag::Junk);
add(r"^Copyleft$", PosTag::Junk);
add(r"^LegalCopyright$", PosTag::Junk);
add(r"^Report$", PosTag::Junk);
add(r"^Available$", PosTag::Junk);
add(r"^true$", PosTag::Junk);
add(r"^false$", PosTag::Junk);
add(r"^node$", PosTag::Junk);
add(r"^jshint$", PosTag::Junk);
add(r"^node':true$", PosTag::Junk);
add(r"^node:true$", PosTag::Junk);
add(r"^this$", PosTag::Junk);
add(r"^Act,?$", PosTag::Junk);
add(r"^[Ff]unctionality$", PosTag::Junk);
add(r"^bgcolor$", PosTag::Junk);
add(r"^F+$", PosTag::Junk);
add(r"^Rewrote$", PosTag::Junk);
add(r"^Much$", PosTag::Junk);
add(r"^remains?,?$", PosTag::Junk);
add(r"^earlier$", PosTag::Junk);
add(r"^Law[\.,]?$", PosTag::Nn);
add(r"^laws?[\.,]?$", PosTag::Junk);
add(r"^Laws[\.,]?$", PosTag::Junk);
add(r"^LAWS?[\.,]?$", PosTag::Junk);
add(r"^LAWS?$", PosTag::Nn);
add(r"^taken$", PosTag::Nn);
add(r"^Insert$", PosTag::Junk);
add(r"^url$", PosTag::Junk);
add(r"^file$", PosTag::Junk);
add(r"^file\.$", PosTag::Junk);
add(r"^[Ss]ee$", PosTag::Junk);
add(r"^[Pp]ackage\.?$", PosTag::Junk);
add(r"^Covered$", PosTag::Junk);
add(r"^date$", PosTag::Junk);
add(r"^practices$", PosTag::Junk);
add(r"^[Aa]ny$", PosTag::Junk);
add(r"^ANY$", PosTag::Junk);
add(r"^fprintf.*$", PosTag::Junk);
add(r"^CURDIR$", PosTag::Junk);
add(r"^Environment/Libraries$", PosTag::Junk);
add(r"^Environment/Base$", PosTag::Junk);
add(r"^Violations\.?$", PosTag::Junk);
add(r"^Owner$", PosTag::Junk);
add(r"^behalf$", PosTag::Junk);
add(r"^know-how$", PosTag::Junk);
add(r"^[Ii]nterfaces?,?$", PosTag::Junk);
add(r"^than$", PosTag::Junk);
add(r"^whom$", PosTag::Junk);
add(r"^Definitions?$", PosTag::Junk);
add(r"^However,?$", PosTag::Junk);
add(r"^[Cc]ollectively$", PosTag::Junk);
add(r"^[Cc]onfig$", PosTag::Junk);
add(r"^ExifVersion$", PosTag::Junk);
add(r"^FlashpixVersion$", PosTag::Junk);
add(r"^.+ArmsAndLegs$", PosTag::Junk);
add(r"^HOLDER\(S\)$", PosTag::Junk);
add(r"^width$", PosTag::Junk);
add(r"^[Oo]wnership\.?$", PosTag::Junk);
add(r"^Title:?$", PosTag::Junk);
add(r"^Debianized-By:?$", PosTag::Junk);
add(r"^[Dd]ebianized$", PosTag::Junk);
add(r"^Upstream-Maintainer:?$", PosTag::Junk);
add(r"^Content", PosTag::Junk);
add(r"^Upstream-Author:?$", PosTag::Junk);
add(r"^Packaged-By:?$", PosTag::Junk);
add(r"^Windows$", PosTag::Junk);
add(r"^XP$", PosTag::Junk);
add(r"^SP1$", PosTag::Junk);
add(r"^SP2$", PosTag::Junk);
add(r"^SP3$", PosTag::Junk);
add(r"^SP4$", PosTag::Junk);
add(r"^assembly$", PosTag::Junk);
add(r"^example\.com$", PosTag::Junk);
add(r"^:Licen[cs]e$", PosTag::Junk);
add(r"^Agent\.?$", PosTag::Junk);
add(r"^[aA]nyone$", PosTag::Junk);
add(r"^FROM$", PosTag::Junk);
add(r"^CREATE$", PosTag::Junk);
add(r"^\+0$", PosTag::Junk);
add(r"^ToUpper$", PosTag::Junk);
add(r"^\+$", PosTag::Junk);
add(r"^.*Servlet,?$", PosTag::Junk);
add(r"^class$", PosTag::Junk);
add(r"^template$", PosTag::Junk);
add(r"^struct$", PosTag::Junk);
add(r"^typedef$", PosTag::Junk);
add(r"^type$", PosTag::Junk);
add(r"^next$", PosTag::Junk);
add(r"^typename$", PosTag::Junk);
add(r"^namespace$", PosTag::Junk);
add(r"^type_of$", PosTag::Junk);
add(r"^begin$", PosTag::Junk);
add(r"^end$", PosTag::Junk);
add(r"^Batch$", PosTag::Junk);
add(r"^Axes", PosTag::Junk);
add(r"^LastModified$", PosTag::Junk);
add(r"^Lucida$", PosTag::Junk);
add(r"^CVS$", PosTag::Junk);
add(r"^EN-IE$", PosTag::Junk);
add(r"^Info$", PosTag::Junk);
add(r"^GA$", PosTag::Junk);
add(r"^unzip$", PosTag::Junk);
add(r"^EULA", PosTag::Junk);
add(r"^Terms?[\.,]?$", PosTag::Junk);
add(r"^Non-Assertion$", PosTag::Junk);
add(r"^Coproduct,?[,\.]?$", PosTag::Junk);
add(r"^CONTRIBUTORS?[,\.]?$", PosTag::Junk);
add(r"^OTHERS?[,\.]?$", PosTag::Junk);
add(r"^Contributors?\:[,\.]?$", PosTag::Junk);
add(r"^\(?Version$", PosTag::Junk);
add(r"^x1b|1H$", PosTag::Junk);
add(r"^[a-z]{3,10}[A-Z][a-z]{3,10}$", PosTag::Junk);
add(r"^\$?Guid$", PosTag::Junk);
add(r"^implementing$", PosTag::Junk);
add(r"^Unlike$", PosTag::Junk);
add(r"^using$", PosTag::Junk);
add(r"^new$", PosTag::Junk);
add(r"^param$", PosTag::Junk);
add(r"^which$", PosTag::Junk);
add(r"^[A-Z]([a-zA-Z]*[0-9]){2,}[a-zA-Z]+[\.,]?", PosTag::Junk);
add(r"^([a-z]{2,}[A-Z]){2,}[a-z]+[\.,]?", PosTag::Junk);
add(r"^[a-z].+\(s\)[\.,]?$", PosTag::Junk);
add(r"^[a-zA-Z]+[\)\(]+,?[\)\(]?[a-zA-Z]+[\.,]?$", PosTag::Junk);
add(r"^\.$", PosTag::Junk);
add(r"PaX$", PosTag::Nn);
add(r"[A-Z][a-z][A-Z]$", PosTag::Junk);
add(r"^Tokenizers?$", PosTag::Junk);
add(r"^Analyzers?$", PosTag::Junk);
add(r"^PostingsFormats?$", PosTag::Junk);
add(r"^Comment[A-Z]", PosTag::Junk);
add(r"^fall$", PosTag::Junk);
add(r"^[Aa]nother$", PosTag::Junk);
add(r"^[Aa]acute", PosTag::Junk);
add(r"^[Aa]circumflex", PosTag::Junk);
add(r"^[Kk]eywords?", PosTag::Junk);
add(r"^comparing$", PosTag::Junk);
add(r"^[Ee]mail", PosTag::Junk);
add(r"^[A-Z][a-z]+Name", PosTag::Junk);
add(r"^[Yy]ourself", PosTag::Junk);
add(r"^parties$", PosTag::Junk);
add(r"^\(?names?\)?$", PosTag::Junk);
add(r"^[Bb]oolean$", PosTag::Nn);
add(r"^private$", PosTag::Junk);
add(r"^[MmNn]odules?[,\.]?$", PosTag::Junk);
add(r"^[Rr]eturned$", PosTag::Junk);
add(r"^False.?$", PosTag::Junk);
add(r"^True.?$", PosTag::Junk);
add(r"^high$", PosTag::Junk);
add(r"^low$", PosTag::Junk);
add(r"^on$", PosTag::Junk);
add(r"^imports?$", PosTag::Junk);
add(r"^[Ww]arnings?$", PosTag::Junk);
add(r"^[Ww]hether$", PosTag::Junk);
add(r"^[Bb]oth$", PosTag::Junk);
add(r"^[Cc]aller$", PosTag::Junk);
add(r"^E-?[Mm]ail:?$", PosTag::Junk);
add(r"^URL:?$", PosTag::Junk);
add(r"^url:?$", PosTag::Junk);
add(r"^[a-zA-Z]+\(\)$", PosTag::Junk);
add(
r"^[\:,\)]+[a-z]+[\:,]+[a-z]+[\:,\)]+[a-z\:,\)]*$",
PosTag::Junk,
);
add(r"^[Ss]tatements?.?$", PosTag::Junk);
add(r"^issues?.?$", PosTag::Junk);
add(r"^retain?.?$", PosTag::Junk);
add(r"^Sun3x$", PosTag::Junk);
add(r"^FSFE?[\.,]?$", PosTag::Nnp);
add(r"^This_file_is_part_of_KDE$", PosTag::Nnp);
add(r"^K.K.,?$", PosTag::Comp);
add(r"^MIT$", PosTag::Nn);
add(r"^YEAR", PosTag::Yr);
add(r"^Activation\.?$", PosTag::Nn);
add(r"^Act[\.,]?$", PosTag::Nn);
add(r"^Added$", PosTag::Nn);
add(r"^added$", PosTag::Junk);
add(r"^As$", PosTag::Nn);
add(r"^I$", PosTag::Nn);
add(r"^Additional$", PosTag::Nn);
add(r"^Are$", PosTag::Nn);
add(r"^AST$", PosTag::Nn);
add(r"^AGPL.?$", PosTag::Nn);
add(r"^Agreements?\.?$", PosTag::Nn);
add(r"^AIRTM$", PosTag::Nn);
add(r"^Angular$", PosTag::Nn);
add(r"^Component[A-Z]", PosTag::Nn);
add(r"^Function[A-Z]", PosTag::Nn);
add(r"^Android$", PosTag::Nn);
add(r"^Any$", PosTag::Nn);
add(r"^Appropriate$", PosTag::Junk);
add(r"^Expander$", PosTag::Nn);
add(r"^Archiver$", PosTag::Nn);
add(r"^APPROPRIATE", PosTag::Nn);
add(r"^Asset$", PosTag::Nn);
add(r"^Assignment?s$", PosTag::Nn);
add(r"^Atomic$", PosTag::Nn);
add(r"^Attribution\.?$", PosTag::Nn);
add(r"^[Aa]uthored$", PosTag::Nn);
add(r"^Baslerstr\.?$", PosTag::Nn);
add(r"^Before$", PosTag::Nn);
add(r"^Message$", PosTag::Nn);
add(r"^BitLen$", PosTag::Junk);
add(r"^BSD$", PosTag::Nn);
add(r"^BUT$", PosTag::Nn);
add(r"^But$", PosTag::Nn);
add(r"^Builders?\.?$", PosTag::Nn);
add(r"^Cacute$", PosTag::Nn);
add(r"^CD$", PosTag::Junk);
add(r"^Cell.$", PosTag::Nn);
add(r"^Change\.?[lL]og$", PosTag::Nn);
add(r"^CHANGElogger$", PosTag::Nn);
add(r"^CHANGELOG$", PosTag::Nn);
add(r"^CHANGES$", PosTag::Nn);
add(r"^Cap$", PosTag::Nn);
add(r"^Cases$", PosTag::Nn);
add(r"^Category$", PosTag::Nn);
add(r"^Code$", PosTag::Nn);
add(r"^Collators?$", PosTag::Nn);
add(r"^Commercial", PosTag::Nn);
add(r"^Commons?$", PosTag::Nn);
add(r"^Compilation", PosTag::Nn);
add(r"^Contact", PosTag::Nn);
add(r"^Contracts?$", PosTag::Nn);
add(r"^Convention$", PosTag::Nn);
add(r"^Copying", PosTag::Nn);
add(r"^COPYING", PosTag::Nn);
add(r"^Customer", PosTag::Nn);
add(r"^Custom$", PosTag::Nn);
add(r"^Data$", PosTag::Nn);
add(r"^Date$", PosTag::Nn);
add(r"^DATED$", PosTag::Nn);
add(r"^Delay", PosTag::Nn);
add(r"^Derivative", PosTag::Nn);
add(r"^Direct$", PosTag::Nn);
add(r"^DISCLAIMED", PosTag::Nn);
add(r"^Docs?$", PosTag::Nn);
add(r"^DOCUMENTATION", PosTag::Nn);
add(r"^Download", PosTag::Junk);
add(r"^DOM$", PosTag::Nn);
add(r"^Do$", PosTag::Nn);
add(r"^DoubleClick$", PosTag::Nn);
add(r"^Education$", PosTag::Nn);
add(r"^Extended", PosTag::Nn);
add(r"^Every$", PosTag::Nn);
add(r"^EXHIBIT$", PosTag::Junk);
add(r"^Exhibit$", PosTag::Junk);
add(r"^Digitized", PosTag::Nn);
add(r"^OPENING", PosTag::Junk);
add(r"^[Ds]istributed?.?$", PosTag::Nn);
add(r"^Distributions?", PosTag::Nn);
add(r"^Multiply$", PosTag::Nn);
add(r"^Convert$", PosTag::Nn);
add(r"^Compute$", PosTag::Nn);
add(r"^\(Computer$", PosTag::Junk);
add(r"^Programs\)", PosTag::Junk);
add(r"^Regulations", PosTag::Junk);
add(r"^message\.", PosTag::Junk);
add(r"^Case$", PosTag::Nn);
add(r"^Hessian$", PosTag::Nn);
add(r"^Include", PosTag::Nn);
add(r"^Downstream", PosTag::Nn);
add(r"^Volumes?", PosTag::Nn);
add(r"^Manuals?.?", PosTag::Nn);
add(r"^Update.?", PosTag::Nn);
add(r"^[Ff]ormatting.?", PosTag::Junk);
add(r"^Lexers?.?", PosTag::Nn);
add(r"^Symbols?.?", PosTag::Nn);
add(r"^Tokens?.?", PosTag::Nn);
add(r"^Initial", PosTag::Nn);
add(r"^END$", PosTag::Nn);
add(r"^Entity$", PosTag::Nn);
add(r"^Example", PosTag::Nn);
add(r"^Except", PosTag::Nn);
add(r"^Fragments$", PosTag::Nn);
add(r"^With$", PosTag::Nn);
add(r"^Tick$", PosTag::Nn);
add(r"^Dynamic$", PosTag::Nn);
add(r"^Battery$", PosTag::Nn);
add(r"^Charger$", PosTag::Nn);
add(r"^Bugfixes?$", PosTag::Nn);
add(r"^Likes?$", PosTag::Nn);
add(r"^STA$", PosTag::Nn);
add(r"^Page$", PosTag::Nn);
add(r"^Todo/Under$", PosTag::Junk);
add(r"^Under$", PosTag::Nn);
add(r"^Interrupt$", PosTag::Nn);
add(r"^cleanups?$", PosTag::Junk);
add(r"^Tape$", PosTag::Nn);
add(r"^When$", PosTag::Nn);
add(r"^Specifications?$", PosTag::Nn);
add(r"^Final$", PosTag::Nn);
add(r"^Holds$", PosTag::Nn);
add(r"^Image", PosTag::Nn);
add(r"^Supplier", PosTag::Nn);
add(r"^Experimental$", PosTag::Nn);
add(r"^F2Wku$", PosTag::Nn);
add(r"^False$", PosTag::Nn);
add(r"^Highlight", PosTag::Nn);
add(r"^Line", PosTag::Nn);
add(r"^NPM[\.,]?", PosTag::Nn);
add(r"^Grunt[\.,]?", PosTag::Nn);
add(r"^Numbers?", PosTag::Nn);
add(r"^Fibonacci$", PosTag::Junk);
add(r"^FALSE$", PosTag::Nn);
add(r"^FAQ$", PosTag::Nn);
add(r"^Foreign$", PosTag::Nn);
add(r"^From$", PosTag::Nn);
add(r"^Full$", PosTag::Nn);
add(r"^Further", PosTag::Nn);
add(r"^Gaim$", PosTag::Nn);
add(r"^Generated", PosTag::Nn);
add(r"^Glib$", PosTag::Nn);
add(r"^GPLd?\.?$", PosTag::Nn);
add(r"^GPL'd$", PosTag::Nn);
add(r"^Gnome$", PosTag::Nn);
add(r"^Port$", PosTag::Nn);
add(r"^GnuPG$", PosTag::Nn);
add(r"^Government.", PosTag::Nnp);
add(r"^OProfile$", PosTag::Nnp);
add(r"^Government$", PosTag::Comp);
add(r"^Grant$", PosTag::Nnp);
add(r"^Grants?\.?,?$", PosTag::Nn);
add(r"^Header", PosTag::Nn);
add(r"^HylaFAX$", PosTag::Nn);
add(r"^IA64$", PosTag::Nn);
add(r"^IDEA$", PosTag::Nn);
add(r"^Id$", PosTag::Nn);
add(r"^king$", PosTag::Nnp);
add(r"^IDENTIFICATION?\.?$", PosTag::Nn);
add(r"^IEEE$", PosTag::Nn);
add(r"^If$", PosTag::Nn);
add(r"^[Ii]ntltool$", PosTag::Nn);
add(r"^Immediately$", PosTag::Nn);
add(r"^Implementation", PosTag::Nn);
add(r"^Improvement", PosTag::Nn);
add(r"^INCLUDING", PosTag::Nn);
add(r"^Indemnification", PosTag::Nn);
add(r"^Indemnified", PosTag::Nn);
add(r"^Unified$", PosTag::Nn);
add(r"^Cleaned$", PosTag::Junk);
add(r"^Information", PosTag::Nn);
add(r"^In$", PosTag::Nn);
add(r"^Intellij$", PosTag::Nn);
add(r"^ISC-LICENSE$", PosTag::Nn);
add(r"^IS$", PosTag::Nn);
add(r"^It$", PosTag::Nn);
add(r"^Java$", PosTag::Nn);
add(r"^JavaScript$", PosTag::Nn);
add(r"^JMagnetic$", PosTag::Nn);
add(r"^Joint$", PosTag::Nn);
add(r"^Jsunittest$", PosTag::Nn);
add(r"^List$", PosTag::Nn);
add(r"^Set$", PosTag::Nn);
add(r"^Legal$", PosTag::Nn);
add(r"^LegalTrademarks$", PosTag::Nn);
add(r"^Library$", PosTag::Nn);
add(r"^Liberation$", PosTag::Nn);
add(r"^Sans$", PosTag::Nn);
add(r"^Interview", PosTag::Nn);
add(r"^ProducerName", PosTag::Nn);
add(r"^Libraries$", PosTag::Nn);
add(r"^Initials$", PosTag::Nn);
add(r"^Licen[cs]e", PosTag::Nn);
add(r"^License-Alias\:?$", PosTag::Nn);
add(r"^Locker$", PosTag::Nn);
add(r"^Log$", PosTag::Nn);
add(r"^Logos?$", PosTag::Nn);
add(r"^Luxi$", PosTag::Nn);
add(r"^Lucene", PosTag::Nn);
add(r"^Mac$", PosTag::Nn);
add(r"^Mondrian", PosTag::Nn);
add(r"^Manager$", PosTag::Nn);
add(r"^Material$", PosTag::Nn);
add(r"^Mode$", PosTag::Nn);
add(r"^Modified$", PosTag::Nn);
add(r"^Mouse$", PosTag::Nn);
add(r"^Module$", PosTag::Nn);
add(r"^Natural$", PosTag::Nn);
add(r"^New$", PosTag::Nn);
add(r"^NEWS$", PosTag::Nn);
add(r"^Neither$", PosTag::Nn);
add(r"^Norwegian$", PosTag::Nn);
add(r"^Notes?$", PosTag::Nn);
add(r"^NOT$", PosTag::Nn);
add(r"^Nessus$", PosTag::Nn);
add(r"^NULL$", PosTag::Nn);
add(r"^Objects?$", PosTag::Nn);
add(r"^Open$", PosTag::Nn);
add(r"^Operating$", PosTag::Nn);
add(r"^OriginalFilename$", PosTag::Nn);
add(r"^Original$", PosTag::Nn);
add(r"^OR$", PosTag::Nn);
add(r"^OWNER", PosTag::Nn);
add(r"^Package$", PosTag::Nn);
add(r"^PACKAGE$", PosTag::Nn);
add(r"^Packaging$", PosTag::Nn);
add(r"^Patent", PosTag::Nn);
add(r"^Pentium$", PosTag::Nn);
add(r"^[Pp]ermission", PosTag::Junk);
add(r"^PERMISSIONS?", PosTag::Junk);
add(r"^PGP$", PosTag::Nn);
add(r"^Phrase", PosTag::Nn);
add(r"^Plugin", PosTag::Nn);
add(r"^POSIX$", PosTag::Nn);
add(r"^Possible", PosTag::Nn);
add(r"^Powered$", PosTag::Nn);
add(r"^defined?$", PosTag::Junk);
add(r"^Predefined$", PosTag::Nn);
add(r"^Promise$", PosTag::Nn);
add(r"^Products?\.?$", PosTag::Nn);
add(r"^PROFESSIONAL?\.?$", PosTag::Nn);
add(r"^Programming$", PosTag::Nn);
add(r"^PROOF", PosTag::Nn);
add(r"^PROVIDED$", PosTag::Nn);
add(r"^Public\.?$", PosTag::Nn);
add(r"^Qualified$", PosTag::Nn);
add(r"^RCSfile$", PosTag::Nn);
add(r"^README$", PosTag::Nn);
add(r"^Read$", PosTag::Nn);
add(r"^RECURSIVE$", PosTag::Nn);
add(r"^Redistribution", PosTag::Nn);
add(r"^Refactor$", PosTag::Nn);
add(r"^Records?$", PosTag::Nn);
add(r"^References?$", PosTag::Nn);
add(r"^Related$", PosTag::Nn);
add(r"^Release$", PosTag::Nn);
add(r"^Revisions?$", PosTag::Nn);
add(r"^Rule$", PosTag::Nn);
add(r"^RIGHT", PosTag::Nn);
add(r"^[Rr]espective", PosTag::Nn);
add(r"^SAX$", PosTag::Nn);
add(r"^Sections?$", PosTag::Nn);
add(r"^Send$", PosTag::Junk);
add(r"^Separa", PosTag::Nn);
add(r"^Service$", PosTag::Nn);
add(r"^Several$", PosTag::Nn);
add(r"^SIGN$", PosTag::Nn);
add(r"^Sink\.?$", PosTag::Nn);
add(r"^Site\.?$", PosTag::Nn);
add(r"^Statement", PosTag::Nn);
add(r"^software$", PosTag::Nn);
add(r"^SOFTWARE$", PosTag::Nn);
add(r"^So$", PosTag::Nn);
add(r"^Sort$", PosTag::Nn);
add(r"^Source$", PosTag::Nn);
add(r"^Signature$", PosTag::Nn);
add(r"^Standard$", PosTag::Nn);
add(r"^Std$", PosTag::Nn);
add(r"^Supplicant", PosTag::Nn);
add(r"^Support", PosTag::Nn);
add(r"^Tag[A-Z]", PosTag::Nn);
add(r"^Target$", PosTag::Nn);
add(r"^Technical$", PosTag::Nn);
add(r"^Termination$", PosTag::Nn);
add(r"^The$", PosTag::Nn);
add(r"^THE", PosTag::Nn);
add(r"^These$", PosTag::Nn);
add(r"^[tT]here$", PosTag::Nn);
add(r"^This$", PosTag::Nn);
add(r"^THIS$", PosTag::Nn);
add(r"^Those$", PosTag::Nn);
add(r"^Timer", PosTag::Nn);
add(r"^TODO$", PosTag::Nn);
add(r"^Tools?.?$", PosTag::Nn);
add(r"^Trademarks?$", PosTag::Nn);
add(r"^True$", PosTag::Nn);
add(r"^TRUE$", PosTag::Nn);
add(r"^[Tt]ext$", PosTag::Nn);
add(r"^Unicode$", PosTag::Nn);
add(r"^Updated", PosTag::Nn);
add(r"^Users?$", PosTag::Nn);
add(r"^VALUE$", PosTag::Nn);
add(r"^Various", PosTag::Nn);
add(r"^Vendor", PosTag::Nn);
add(r"^VIEW$", PosTag::Nn);
add(r"^Visit", PosTag::Nn);
add(r"^Wheel$", PosTag::Nn);
add(r"^Win32$", PosTag::Nn);
add(r"^Work", PosTag::Nn);
add(r"^WPA$", PosTag::Nn);
add(r"^Xalan$", PosTag::Nn);
add(r"^IP", PosTag::Nn);
add(r"^YOUR", PosTag::Nn);
add(r"^Your", PosTag::Nn);
add(r"^Date[A-Z]", PosTag::Nn);
add(r"^Create$", PosTag::Nn);
add(r"^Engine\.$", PosTag::Nn);
add(r"^While$", PosTag::Nn);
add(r"^Review", PosTag::Nn);
add(r"^Help", PosTag::Nn);
add(r"^Web", PosTag::Nn);
add(r"^Weld$", PosTag::Nn);
add(r"^Common[A-Z]", PosTag::Nn);
add(r"^MultiPart", PosTag::Nn);
add(r"^Upload", PosTag::Nn);
add(r"^PUT$", PosTag::Nn);
add(r"^POST$", PosTag::Nn);
add(r"^YUI$", PosTag::Nn);
add(r"^PicoModal$", PosTag::Nn);
add(r"^CodeMirror$", PosTag::Nn);
add(r"^They$", PosTag::Junk);
add(r"^Branched$", PosTag::Nn);
add(r"^Partial$", PosTag::Nn);
add(r"^Fixed$", PosTag::Nn);
add(r"^Later$", PosTag::Nn);
add(r"^Rear$", PosTag::Nn);
add(r"^Left$", PosTag::Nn);
add(r"^Improved$", PosTag::Nn);
add(r"^Designed$", PosTag::Nn);
add(r"^Organised$", PosTag::Nn);
add(r"^Re-organised$", PosTag::Nn);
add(r"^Swap$", PosTag::Nn);
add(r"^Adapted$", PosTag::Junk);
add(r"^Thumb$", PosTag::Nn);
add(r"^error_act$", PosTag::Nn);
add(r"^Free$", PosTag::Nn);
add(r"^am$", PosTag::Nn);
add(r"^pm$", PosTag::Nn);
add(r"^AM$", PosTag::Nn);
add(r"^PM$", PosTag::Nn);
add(r"^Name[\.,]?$", PosTag::Nn);
add(r"^Co-Author[\.,]?$", PosTag::Nn);
add(r"^Author's$", PosTag::Nn);
add(r"^Co-Author's$", PosTag::Nn);
add(r"^Convention[\.,]?$", PosTag::Nn);
add(r"^Paris[\.,]?$", PosTag::Nn);
add(
r"^([Jj]anuary|[Ff]ebruary|[Mm]arch|[Aa]pril|[Jj]uly|[Aa]ugust|[Ss]eptember|[Oo]ctober|[Nn]ovember|[Dd]ecember)$",
PosTag::Nn,
);
add(r"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun|May),?$", PosTag::Nn);
add(r"^[Dd]ebugging$", PosTag::Junk);
add(r"^[a-z]+ing$", PosTag::Nn);
add(r"^Flux$", PosTag::Nn);
add(r"^Modify$", PosTag::Nn);
add(r"^Creation[A-Z]", PosTag::Nn);
add(r"^Creator$", PosTag::Nn);
add(r"^Document$", PosTag::Nn);
add(r"^Emulation$", PosTag::Nn);
add(r"^Exposure$", PosTag::Nn);
add(r"^Time$", PosTag::Nn);
add(r"^CrdInfo$", PosTag::Nn);
add(r"^Device$", PosTag::Nn);
add(r"^Mfg$", PosTag::Nn);
add(r"^Comment$", PosTag::Nn);
add(r"^Frame$", PosTag::Nn);
add(r"^Size$", PosTag::Nn);
add(r"^Flag$", PosTag::Nn);
add(r"^Thumbnail$", PosTag::Nn);
add(r"^Angle$", PosTag::Nn);
add(r"^Duration$", PosTag::Nn);
add(r"^Override$", PosTag::Nn);
add(r"^Handler", PosTag::Nn);
add(r"^Compression$", PosTag::Nn);
add(r"^Letter$", PosTag::Nn);
add(r"^Moved$", PosTag::Nn);
add(r"^More$", PosTag::Nn);
add(r"^Phone$", PosTag::Nn);
add(r"^[Tt]ests?$", PosTag::Junk);
add(r"^Inputs?$", PosTag::Nn);
add(r"^Make[A-Z]", PosTag::Junk);
add(r"^Create[A-Z]", PosTag::Junk);
add(r"^Full[A-Z]", PosTag::Nn);
add(r"^Last[A-Z]", PosTag::Nn);
add(r"^Author[A-Z]", PosTag::Nn);
add(r"^Schema[A-Z]", PosTag::Junk);
add(r"^MessageOne", PosTag::Nnp);
add(r"^Message[A-Z]", PosTag::Junk);
add(r"^Short[a-z]*[A-Z]+[a-z]*", PosTag::Junk);
add(r"^[Ww]ebsites?[\.,]?", PosTag::Junk);
add(r"^.*\.java$", PosTag::Nn);
add(r"^knowledge[,\.]?$", PosTag::Junk);
add(r"^[\p{Lu}][\p{Ll}]{3,}\)\.?$", PosTag::Nnp);
add(r"^\([\p{Lu}][\p{Ll}]{3,}$", PosTag::Nnp);
add(r"^([A-Z]([a-z]|[A-Z])+/[A-Z][a-z]+[\.,]?)$", PosTag::Nnp);
add(r"communications", PosTag::Nnp);
add(
r"^\(?(?:Cambridge|Stockholm|Davis|Sweden[\)\.]?|Massachusetts|Oregon|California|Norway|UK|Berlin|CONCORD|Manchester|MASSACHUSETTS|Finland|Espoo|Munich|Germany|Italy|Spain|Europe|Lafayette|Indiana|Belgium|France|Sweden)[\),\.]*$",
PosTag::Nnp,
);
add(r"^Software,'\,$", PosTag::Nnp);
add(r"\(Royal$", PosTag::Nnp);
add(r"PARADIGM$", PosTag::Nnp);
add(r"vFeed$", PosTag::Nnp);
add(r"nexB$", PosTag::Nnp);
add(r"UserTesting$", PosTag::Nnp);
add(r"D\.T\.Shield\.?$", PosTag::Nnp);
add(r"Antill'\,$", PosTag::Nnp);
add(r"^ONeal['\,\.]?$", PosTag::Nnp);
add(r"^suzuki$", PosTag::Nnp);
add(r"toshiya\.?$", PosTag::Nnp);
add(r"leethomason$", PosTag::Nnp);
add(r"finney$", PosTag::Nnp);
add(r"sean$", PosTag::Nnp);
add(r"chris$", PosTag::Nnp);
add(r"ulrich$", PosTag::Nnp);
add(r"wadim$", PosTag::Nnp);
add(r"dziedzic$", PosTag::Nnp);
add(r"okunishinishi$", PosTag::Nnp);
add(r"yiminghe$", PosTag::Nnp);
add(r"daniel$", PosTag::Nnp);
add(r"wirtz$", PosTag::Nnp);
add(r"vonautomatisch$", PosTag::Nnp);
add(r"werkstaetten\.?$", PosTag::Nnp);
add(r"werken$", PosTag::Nnp);
add(r"various\.?$", PosTag::Nnp);
add(r"SuSE$", PosTag::Comp);
add(r"Suse$", PosTag::Comp);
add(r"\(Winbond\),?$", PosTag::Comp);
add(r"karsten$", PosTag::Nnp);
add(r"wiese$", PosTag::Nnp);
add(r"^[Aa]ttributable$", PosTag::Nnp);
add(r"^[A-Z]{3,6}-[A-Z]{3,6}/[A-Z]{3,6}", PosTag::Nnp);
add(r"^[A-Z]-[A-Z][a-z]{2,8}", PosTag::Nnp);
add(r"^Robert.*", PosTag::Nnp);
add(r"^AT\&T[\.,]?$", PosTag::Comp);
add(
r"^[A-Z][a-z]+[\.,]+(LTD|LTd|LtD|Ltd|ltd|lTD|lTd|ltD).?,?$",
PosTag::Comp,
);
add(r"^[Ii]nc[\.]?[,\.>]?\)?$", PosTag::Comp);
add(r"^Incorporated[,\.]?\)?$", PosTag::Comp);
add(r"^.+,Inc\.$", PosTag::Comp);
add(r"^[Cc]ompany[,\.]?\)?$", PosTag::Comp);
add(r"^Limited[,\.]?$", PosTag::Comp);
add(r"^LIMITED[,\.]?$", PosTag::Comp);
add(r"^COMPANY,LTD$", PosTag::Comp);
add(r"^INC[\.,\)]*$", PosTag::Comp);
add(r"^INCORPORATED[\.,\)]*$", PosTag::Comp);
add(r"^CORP[\.,\)]*$", PosTag::Comp);
add(r"^CORPORATION[\.,\)]*$", PosTag::Comp);
add(r"^FOUNDATION[\.,\)]*$", PosTag::Comp);
add(r"^GROUP[\.,\)]*$", PosTag::Comp);
add(r"^COMPANY[\.,\)]*$", PosTag::Comp);
add(r"^\(tm\)[\.,]?$", PosTag::Comp);
add(r"^[Ff]orum[\.,\)]*", PosTag::Comp);
add(r"^[Cc]orp[\.,\)]*$", PosTag::Comp);
add(r"^[Cc]orporation[\.,\)]*$", PosTag::Comp);
add(r"^[Cc][oO][\.,\)]*$", PosTag::Comp);
add(r"^[Cc]orporations?[\.,\)]*$", PosTag::Comp);
add(r"^[Cc]onsortium[\.,\)]*$", PosTag::Comp);
add(r"^[Ff]oundation[\.,\)]*$", PosTag::Comp);
add(r"^[Aa]lliance[\.,\)]*$", PosTag::Comp);
add(r"^Working$", PosTag::Comp);
add(r"^[Gg]roup[\.,\)]*$", PosTag::Comp);
add(r"^[Tt]echnolog(y|ies)[\.,\)]*$", PosTag::Comp);
add(r"^[Cc]ommunit(y|ies)[\.,\)]*$", PosTag::Comp);
add(r"^[Mm]icrosystems[\.,\)]*$", PosTag::Comp);
add(r"^[Pp]rojects?[\.,\)]*,?$", PosTag::Comp);
add(r"^[Tt]eams?[\.,\)']*$", PosTag::Comp);
add(r"^[Tt]ech[\.,\)]*$", PosTag::Comp);
add(r"^Limited'?[\.,\)]*$", PosTag::Comp);
add(r"^[Ll][Tt][Dd]\.?,?$", PosTag::Comp);
add(r"^[Ll]\.?[Ll]\.?[CcPp]\.?,?$", PosTag::Comp);
add(r"^L\.P\.?$", PosTag::Comp);
add(r"^[Ss]ubsidiary$", PosTag::Comp);
add(r"^[Ss]ubsidiaries\.?$", PosTag::Comp);
add(r"^[Ss]ubsidiary\(\-ies\)\.?$", PosTag::Comp);
add(
r"^(S\.?A\.?S?|Sas|sas|A/S|AG,?|AB|Labs?|[Cc][Oo]|Research|Center|INRIA|Societe|KG)[,\.]?$",
PosTag::Comp,
);
add(r"^(SARL|S\.A\.R\.L\.)[\.,\)]*$", PosTag::Comp);
add(r"^(a\.s\.|S\.r\.l\.?)$", PosTag::Comp);
add(r"^Vertriebsges\.m\.b\.H\.?,?$", PosTag::Comp);
add(r"^(ehf|hf|svf|ohf)\.,?$", PosTag::Comp);
add(r"^(SPRL|srl)[\.,]?$", PosTag::Comp);
add(r"^(sp\.|o\.o\.)$", PosTag::Comp);
add(r"^(e\.K\.|e\.Kfm\.|e\.Kfr\.)$", PosTag::Comp);
add(r"^AS", PosTag::Caps);
add(r"^ASF", PosTag::Caps);
add(r"^AS.$", PosTag::Comp);
add(r"^[Gg][Mm][Bb][Hh].?$", PosTag::Comp);
add(r"^[eV]\.[vV]\.?$", PosTag::Comp);
add(r"^[sS]\.[pP]\.[aA]\.?$", PosTag::Comp);
add(r"^ASA.?$", PosTag::Comp);
add(r"^s\.r\.o\.?$", PosTag::Comp);
add(
r"^(Labs?|Laboratory|Laboratories|Laboratoire)\.?,?$",
PosTag::Comp,
);
add(r"^[Bb]\.?[Vv]\.?|BVBA$", PosTag::Comp);
add(
r"^\(?[Uu]niv(?:[\.]|ersit(?:y|e|at?|ad?))[\.,\)]*$",
PosTag::Uni,
);
add(r"^UNIVERSITY$", PosTag::Uni);
add(r"^College$", PosTag::Uni);
add(r"^[Ac]cademi[ae]s?$", PosTag::Uni);
add(r"^[Ac]cademy[\.,\)]*$", PosTag::Uni);
add(r"^Partners.?$", PosTag::Comp);
add(r"INSTITUTE", PosTag::Comp);
add(
r"^\(?[Ii]nstitut(s|o|os|e|es|et|a|at|as|u|i)?\)?$",
PosTag::Comp,
);
add(r"Facility", PosTag::Comp);
add(r"Tecnologia", PosTag::Comp);
add(r"^ApS|A/S|IVS\.?,?$", PosTag::Comp);
add(r"^Abp\.?,?$", PosTag::Comp);
add(r"^[Aa]ffiliate(s|\(s\))?\.?$", PosTag::Nnp);
add(r"^FedICT$", PosTag::Comp);
add(r"^10gen$", PosTag::Comp);
add(r"^(District|Division)\)?[,\.]?$", PosTag::Comp);
add(r"^[Aa]uthors,$", PosTag::AuthDot);
add(r"^[Aa]uthor$", PosTag::Auth);
add(r"^[Aa]uthor\.$", PosTag::AuthDot);
add(r"^[Aa]uthors?\.$", PosTag::AuthDot);
add(r"^([Aa]uthors|author')$", PosTag::Auths);
add(r"^[Aa]uthor\(s\)$", PosTag::Auths);
add(r"^[Aa]uthor\(s\)\.?$", PosTag::AuthDot);
add(r"^@[Aa]uthors?:?$", PosTag::Auth);
add(r"^al\.$", PosTag::AuthDot);
add(r"^MODULEAUTHOR$", PosTag::Auth);
add(r"^[Cc]ontributors[,\.]?$", PosTag::Contributors);
add(r"^Contributor[,\.]?$", PosTag::Nn);
add(r"^Contributing$", PosTag::Nn);
add(r"^Licensor[,\.]?$", PosTag::Nn);
add(r"^[Cc]oded$", PosTag::Auth2);
add(r"^\(?[Rr]ecoded$", PosTag::Auth2);
add(r"^\(?[Mm]odified$", PosTag::Auth2);
add(r"^\(?[Cc]reated$", PosTag::Auth2);
add(r"^\(?[Ww]ritt?e[dn]$", PosTag::Auth2);
add(r"^\(?[Rr]ewritt?e[dn]$", PosTag::Auth2);
add(r"^\(?[Mm]aintained$", PosTag::Auth2);
add(r"^\(?[Dd]eveloped$", PosTag::Auth2);
add(r"^\(?[Au]thored$", PosTag::Auth2);
add(r"[Cc]ommitters\.?,?", PosTag::Commit);
add(r"^[Aa]dmins?$", PosTag::Maint);
add(r"^[Dd]evelopers?\.?$", PosTag::Maint);
add(r"^[Mm]aintainers?\.?$", PosTag::Maint);
add(r"^[Cc]o-maintainers?\.?$", PosTag::Maint);
add(r"^[A-Z][a-zA-Z]+\s?-\s?[A-Z]?[a-zA-Z]+[\.,]?$", PosTag::Nnp);
add(
r"^[\p{Lu}][\p{L}]+[-–][\p{Lu}]?[\p{L}]+[\.,]?$",
PosTag::Nnp,
);
add(r"^U\.S\.A\.?$", PosTag::Nnp);
add(r"^([A-Z]\.){1,3}$", PosTag::Nnp);
add(r"^\(?@[A-Za-z0-9_]{2,}[,\)]?$", PosTag::Nnp);
add(r"^LaTeX3$", PosTag::Nnp);
add(r"^Meridian'93$", PosTag::Nnp);
add(r"^Xiph.Org$", PosTag::Nnp);
add(r"^iClick,?$", PosTag::Nnp);
add(r"^electronics?$", PosTag::Nnp);
add(r"^([\p{Lu}][\p{Ll}0-9]+){1,2}[\.,]?$", PosTag::Nnp);
add(r"^[\p{Lu}][\p{Ll}]+'s$", PosTag::Nnp);
add(r"^([A-Z]+\.)+$", PosTag::Pn);
add(r"^[\p{Lu}]+\.[\p{Lu}][\p{Ll}]+,?$", PosTag::Nnp);
add(r"^[\p{Lu}][\p{Ll}]?'[\p{Lu}]?[\p{Ll}]+[,\.]?$", PosTag::Nnp);
add(r"^[\p{Ll}]'[\p{Lu}]?[\p{Ll}]+[,\.]?$", PosTag::Nnp);
add(r"^[A-Z]{3,4}[0-9]{4},?$", PosTag::Nn);
add(r"^MMC$", PosTag::Junk);
add(r"^[A-Z0-9]+,?$", PosTag::Caps);
add(r"^\([A-Z0-9]{2,}\)$", PosTag::Caps);
add(r"^[A-Z]{2,}'?$", PosTag::Caps);
add(r"^([\p{Lu}][\p{Ll}0-9]+){1,2}\.?,?$", PosTag::Nnp);
add(r"^<([a-zA-Z]+[a-zA-Z\.]){2,5}$", PosTag::EmailStart);
add(r"^[a-zA-Z\.]{2,5}>$", PosTag::EmailEnd);
add(r"^.*\.sh\.?$", PosTag::Junk);
add(
r"^(?:[A-Za-z])*[<(]?[a-zA-Z0-9]+[a-zA-Z0-9+_\-\.%]*(@|at)[a-zA-Z0-9][a-zA-Z0-9+_\-\.%]+\.[a-zA-Z]{2,3}[>)\.,]*$",
PosTag::Email,
);
add(r"^mailto:.{2,}@.{2,}\.[a-z]{2,3}", PosTag::Email);
add(
r"^<[a-zA-Z]+[a-zA-Z0-9\.]+@[a-zA-Z][a-zA-Z0-9]+\.[a-zA-Z]{2,5}>$",
PosTag::Email,
);
add(r"[<\(]https?:.*[>\)]", PosTag::Url);
add(
r"\s?[a-z0-9A-Z\-\.\_]+\.([Cc][Oo][Mm]|[Nn][Ee][Tt]|[Oo][Rr][Gg]|us|mil|io|edu|co\.[a-z][a-z]|eu|ch|fr|de|be|se|nl|au|biz|sy|dev)\s?[\.,]?$",
PosTag::Url2,
);
add(
r"[\(<]+\s?[a-z0-9A-Z\-\.\_]+\.(com|net|org|us|mil|io|edu|co\.[a-z][a-z]|eu|ch|fr|jp|de|be|se|nl|au|biz|sy|dev)\s?[\.\)>]+$",
PosTag::Url,
);
add(
r"<?a?.(href)?.\(?[a-z0-9A-Z\-\.\_]+\.(com|net|org|us|mil|io|edu|co\.[a-z][a-z]|eu|ch|fr|jp|de|be|se|nl|au|biz|sy|dev)[\.\)>]?$",
PosTag::Url,
);
add(
r"<?a?.(href)?.(?:(?:http|ftp|sftp)s?://[^\s<>\[\]]+|(?:www|ftp)\.[^\s<>\[\]]+)\.?>?",
PosTag::Url,
);
add(
r"^\(?<?https?://[a-zA-Z0-9_\-]+(\.([a-zA-Z0-9_\-])+)+.?\)?>?$",
PosTag::Url,
);
add(r"\(?https?:.*/", PosTag::Url);
add(r#"^\.\\"?$"#, PosTag::Junk);
add(
r"^[\p{Lu}][\p{Ll}]+[\p{Lu}][\p{Ll}]+[\.\,]?$",
PosTag::MixedCap,
);
add(r"\(?Massachusetts_Institute_of_Technology,?$", PosTag::Nnp);
add(
r"National_de_Recherche_en_Informatique_et_en_Automatique,?$",
PosTag::Nnp,
);
add(r"Keio_University\)?,?$", PosTag::Nnp);
add(r"__MyCompanyName__[\.,]?$", PosTag::Nnp);
add(
r"(?i:^[<\(][\w\.\-\+]+at[\w\.\-\+]+(dot)?[\w\.\-\+]+[/)>]$)",
PosTag::Email,
);
add(r"^.*(_.*)+$", PosTag::Junk);
add(r"^\!\$\?$", PosTag::Junk);
add(r"^[^\w\?\-\(\)]{3,10}$", PosTag::Junk);
add(r"^[abcdef0-9]{7}$", PosTag::Junk);
add(
r"^\W?([a-z0-9]{1,3}[\.,:;\x22\(\)!\\=%&@\#]+){3,}\W?$",
PosTag::Junk,
);
add(r"moment/moment$", PosTag::Nnp);
add(r"^(?:=>|->|<-|<=)$", PosTag::Junk);
add(r"^semiconductors?[\.,]?$", PosTag::Nnp);
add(r".+", PosTag::Nn);
patterns
}
#[cfg(test)]
#[path = "patterns_test.rs"]
mod tests;