regast_syntax/print/
mod.rs1mod dot;
2mod json;
3mod sexpr;
4
5#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
6pub enum JsonShape {
7 #[default]
8 Tree,
9 Arena,
10}
11
12pub(super) fn kind_name(kind: &crate::AstKind) -> &'static str {
13 match kind {
14 crate::AstKind::Empty => "empty",
15 crate::AstKind::Anchor { .. } => "anchor",
16 crate::AstKind::Literal { .. } => "literal",
17 crate::AstKind::Dot => "dot",
18 crate::AstKind::Class { .. } => "class",
19 crate::AstKind::Group { .. } => "group",
20 crate::AstKind::Alt { .. } => "alt",
21 crate::AstKind::Concat { .. } => "concat",
22 crate::AstKind::Repeat { .. } => "repeat",
23 }
24}
25
26pub(super) fn rep_name(kind: crate::RepKind) -> String {
27 match kind {
28 crate::RepKind::ZeroOrOne => "zero_or_one".into(),
29 crate::RepKind::ZeroOrMore => "zero_or_more".into(),
30 crate::RepKind::OneOrMore => "one_or_more".into(),
31 crate::RepKind::Range { min, max } => max.map_or_else(
32 || format!("range_{min}_unbounded"),
33 |max| format!("range_{min}_{max}"),
34 ),
35 }
36}