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