blob: db2228471b07f68d81d0c0ba32db24a45945a15d [file] [log] [blame]
David Tolnaye0824032017-12-27 15:25:56 -05001use proc_macro2::{TokenNode, TokenTree};
2use cursor::Cursor;
David Tolnay203557a2017-12-27 23:59:33 -05003use parse_error;
4use synom::PResult;
David Tolnaye0824032017-12-27 15:25:56 -05005
6#[cfg(feature = "full")]
7use proc_macro2::Delimiter;
8
9pub fn delimited(input: Cursor) -> PResult<TokenTree> {
10 match input.token_tree() {
11 Some((
12 rest,
13 token @ TokenTree {
14 kind: TokenNode::Group(..),
15 ..
16 },
17 )) => Ok((rest, token)),
18 _ => parse_error(),
19 }
20}
21
22#[cfg(feature = "full")]
23pub fn braced(input: Cursor) -> PResult<TokenTree> {
24 match input.token_tree() {
25 Some((
26 rest,
27 token @ TokenTree {
28 kind: TokenNode::Group(Delimiter::Brace, ..),
29 ..
30 },
31 )) => Ok((rest, token)),
32 _ => parse_error(),
33 }
34}
35
36#[cfg(feature = "full")]
37pub fn parenthesized(input: Cursor) -> PResult<TokenTree> {
38 match input.token_tree() {
39 Some((
40 rest,
41 token @ TokenTree {
42 kind: TokenNode::Group(Delimiter::Parenthesis, ..),
43 ..
44 },
45 )) => Ok((rest, token)),
46 _ => parse_error(),
47 }
48}