Skip to content

Commit ca13400

Browse files
committed
Rewrite token_kind parser without macros
1 parent 9bf667f commit ca13400

File tree

2 files changed

+11
-79
lines changed

2 files changed

+11
-79
lines changed

src/fallback.rs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -885,15 +885,17 @@ fn token_tree(input: Cursor) -> PResult<TokenTree> {
885885
Ok((rest, tt))
886886
}
887887

888-
named!(token_kind -> TokenTree, alt!(
889-
map!(group, |g| TokenTree::Group(crate::Group::_new_stable(g)))
890-
|
891-
map!(literal, |l| TokenTree::Literal(crate::Literal::_new_stable(l))) // must be before symbol
892-
|
893-
map!(op, TokenTree::Punct)
894-
|
895-
symbol
896-
));
888+
fn token_kind(input: Cursor) -> PResult<TokenTree> {
889+
if let Ok((input, g)) = group(input) {
890+
Ok((input, TokenTree::Group(crate::Group::_new_stable(g))))
891+
} else if let Ok((input, l)) = literal(input) { // must be before symbol
892+
Ok((input, TokenTree::Literal(crate::Literal::_new_stable(l))))
893+
} else if let Ok((input, p)) = op(input) {
894+
Ok((input, TokenTree::Punct(p)))
895+
} else {
896+
symbol(input)
897+
}
898+
}
897899

898900
fn group(input: Cursor) -> PResult<Group> {
899901
let input = skip_whitespace(input);

src/strnom.rs

Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -162,73 +162,3 @@ pub(crate) fn word_break(input: Cursor) -> PResult<()> {
162162
Some(_) | None => Ok((input, ())),
163163
}
164164
}
165-
166-
macro_rules! named {
167-
($name:ident -> $o:ty, $submac:ident!( $($args:tt)* )) => {
168-
fn $name<'a>(i: Cursor<'a>) -> $crate::strnom::PResult<'a, $o> {
169-
$submac!(i, $($args)*)
170-
}
171-
};
172-
}
173-
174-
macro_rules! alt {
175-
($i:expr, $e:ident | $($rest:tt)*) => {
176-
alt!($i, call!($e) | $($rest)*)
177-
};
178-
179-
($i:expr, $subrule:ident!( $($args:tt)*) | $($rest:tt)*) => {
180-
match $subrule!($i, $($args)*) {
181-
res @ Ok(_) => res,
182-
_ => alt!($i, $($rest)*)
183-
}
184-
};
185-
186-
($i:expr, $subrule:ident!( $($args:tt)* ) => { $gen:expr } | $($rest:tt)+) => {
187-
match $subrule!($i, $($args)*) {
188-
Ok((i, o)) => Ok((i, $gen(o))),
189-
Err(LexError) => alt!($i, $($rest)*)
190-
}
191-
};
192-
193-
($i:expr, $e:ident => { $gen:expr } | $($rest:tt)*) => {
194-
alt!($i, call!($e) => { $gen } | $($rest)*)
195-
};
196-
197-
($i:expr, $e:ident => { $gen:expr }) => {
198-
alt!($i, call!($e) => { $gen })
199-
};
200-
201-
($i:expr, $subrule:ident!( $($args:tt)* ) => { $gen:expr }) => {
202-
match $subrule!($i, $($args)*) {
203-
Ok((i, o)) => Ok((i, $gen(o))),
204-
Err(LexError) => Err(LexError),
205-
}
206-
};
207-
208-
($i:expr, $e:ident) => {
209-
alt!($i, call!($e))
210-
};
211-
212-
($i:expr, $subrule:ident!( $($args:tt)*)) => {
213-
$subrule!($i, $($args)*)
214-
};
215-
}
216-
217-
macro_rules! call {
218-
($i:expr, $fun:expr $(, $args:expr)*) => {
219-
$fun($i $(, $args)*)
220-
};
221-
}
222-
223-
macro_rules! map {
224-
($i:expr, $submac:ident!( $($args:tt)* ), $g:expr) => {
225-
match $submac!($i, $($args)*) {
226-
Err(LexError) => Err(LexError),
227-
Ok((i, o)) => Ok((i, call!(o, $g)))
228-
}
229-
};
230-
231-
($i:expr, $f:expr, $g:expr) => {
232-
map!($i, call!($f), $g)
233-
};
234-
}

0 commit comments

Comments
 (0)