1#![allow(clippy::range_plus_one)]
11
12extern crate maplit;
13#[cfg(test)]
14#[macro_use]
15extern crate pest;
16#[cfg(not(test))]
17extern crate pest;
18
19use std::fmt::Display;
20
21pub mod ast;
22pub mod optimizer;
23pub mod parser;
24pub mod validator;
25
26pub fn unwrap_or_report<T, E>(result: Result<T, E>) -> T
27where
28 E: IntoIterator,
29 E::Item: Display,
30{
31 result.unwrap_or_else(|e| {
32 panic!(
33 "grammar error\n\n{}",
34 &e.into_iter()
35 .map(|error| format!("{}", error))
36 .collect::<Vec<_>>()
37 .join("\n\n")
38 )
39 })
40}
41
42#[doc(hidden)]
43pub static UNICODE_PROPERTY_NAMES: &[&str] = &[
44 "ALPHABETIC",
45 "BIDI_CONTROL",
46 "CASE_IGNORABLE",
47 "CASED",
48 "CHANGES_WHEN_CASEFOLDED",
49 "CHANGES_WHEN_CASEMAPPED",
50 "CHANGES_WHEN_LOWERCASED",
51 "CHANGES_WHEN_TITLECASED",
52 "CHANGES_WHEN_UPPERCASED",
53 "DASH",
54 "DEFAULT_IGNORABLE_CODE_POINT",
55 "DEPRECATED",
56 "DIACRITIC",
57 "EXTENDER",
58 "GRAPHEME_BASE",
59 "GRAPHEME_EXTEND",
60 "GRAPHEME_LINK",
61 "HEX_DIGIT",
62 "HYPHEN",
63 "IDS_BINARY_OPERATOR",
64 "IDS_TRINARY_OPERATOR",
65 "ID_CONTINUE",
66 "ID_START",
67 "IDEOGRAPHIC",
68 "JOIN_CONTROL",
69 "LOGICAL_ORDER_EXCEPTION",
70 "LOWERCASE",
71 "MATH",
72 "NONCHARACTER_CODE_POINT",
73 "OTHER_ALPHABETIC",
74 "OTHER_DEFAULT_IGNORABLE_CODE_POINT",
75 "OTHER_GRAPHEME_EXTEND",
76 "OTHER_ID_CONTINUE",
77 "OTHER_ID_START",
78 "OTHER_LOWERCASE",
79 "OTHER_MATH",
80 "OTHER_UPPERCASE",
81 "PATTERN_SYNTAX",
82 "PATTERN_WHITE_SPACE",
83 "PREPENDED_CONCATENATION_MARK",
84 "QUOTATION_MARK",
85 "RADICAL",
86 "REGIONAL_INDICATOR",
87 "SENTENCE_TERMINAL",
88 "SOFT_DOTTED",
89 "TERMINAL_PUNCTUATION",
90 "UNIFIED_IDEOGRAPH",
91 "UPPERCASE",
92 "VARIATION_SELECTOR",
93 "WHITE_SPACE",
94 "XID_CONTINUE",
95 "XID_START",
96 "CASED_LETTER",
97 "CLOSE_PUNCTUATION",
98 "CONNECTOR_PUNCTUATION",
99 "CONTROL",
100 "CURRENCY_SYMBOL",
101 "DASH_PUNCTUATION",
102 "DECIMAL_NUMBER",
103 "ENCLOSING_MARK",
104 "FINAL_PUNCTUATION",
105 "FORMAT",
106 "INITIAL_PUNCTUATION",
107 "LETTER",
108 "LETTER_NUMBER",
109 "LINE_SEPARATOR",
110 "LOWERCASE_LETTER",
111 "MARK",
112 "MATH_SYMBOL",
113 "MODIFIER_LETTER",
114 "MODIFIER_SYMBOL",
115 "NONSPACING_MARK",
116 "NUMBER",
117 "OPEN_PUNCTUATION",
118 "OTHER",
119 "OTHER_LETTER",
120 "OTHER_NUMBER",
121 "OTHER_PUNCTUATION",
122 "OTHER_SYMBOL",
123 "PARAGRAPH_SEPARATOR",
124 "PRIVATE_USE",
125 "PUNCTUATION",
126 "SEPARATOR",
127 "SPACE_SEPARATOR",
128 "SPACING_MARK",
129 "SURROGATE",
130 "SYMBOL",
131 "TITLECASE_LETTER",
132 "UNASSIGNED",
133 "UPPERCASE_LETTER",
134];