diff options
author | Aleksey Kladov <[email protected]> | 2018-02-11 13:53:57 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2018-02-11 13:53:57 +0000 |
commit | 9e2c0564783aa91f6440e7cadcc1a4dfda785de0 (patch) | |
tree | 4a6ef12405bf0562f4875b48cc1c834195ce7920 /src/parser/token_set.rs | |
parent | 7a0ada860b57acd44b1d53e944ae621e438652da (diff) |
Separate parser API from implementation
Diffstat (limited to 'src/parser/token_set.rs')
-rw-r--r-- | src/parser/token_set.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/parser/token_set.rs b/src/parser/token_set.rs new file mode 100644 index 000000000..82558fa2e --- /dev/null +++ b/src/parser/token_set.rs | |||
@@ -0,0 +1,25 @@ | |||
1 | use SyntaxKind; | ||
2 | |||
3 | pub(crate) struct TokenSet { | ||
4 | pub tokens: &'static [SyntaxKind], | ||
5 | } | ||
6 | |||
7 | impl TokenSet { | ||
8 | pub fn contains(&self, kind: SyntaxKind) -> bool { | ||
9 | self.tokens.contains(&kind) | ||
10 | } | ||
11 | } | ||
12 | |||
13 | #[macro_export] | ||
14 | macro_rules! token_set { | ||
15 | ($($t:ident),*) => { | ||
16 | TokenSet { | ||
17 | tokens: &[$($t),*], | ||
18 | } | ||
19 | }; | ||
20 | |||
21 | ($($t:ident),* ,) => { | ||
22 | token_set!($($t),*) | ||
23 | }; | ||
24 | } | ||
25 | |||