• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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