8个版本

0.1.7 2024年7月26日
0.1.6 2024年7月14日
0.1.5 2023年4月29日
0.1.4 2023年3月19日
0.1.0 2019年2月23日

#43 in 进程宏

Download history • Rust 包仓库 27/week @ 2024-04-24 • Rust 包仓库 12/week @ 2024-05-01 • Rust 包仓库 408/week @ 2024-05-08 • Rust 包仓库 113/week @ 2024-05-15 • Rust 包仓库 26/week @ 2024-05-22 • Rust 包仓库 113/week @ 2024-05-29 • Rust 包仓库 9/week @ 2024-06-05 • Rust 包仓库 7/week @ 2024-06-12 • Rust 包仓库 85/week @ 2024-06-19 • Rust 包仓库 15/week @ 2024-06-26 • Rust 包仓库 106/week @ 2024-07-03 • Rust 包仓库 179/week @ 2024-07-10 • Rust 包仓库 59/week @ 2024-07-17 • Rust 包仓库 238/week @ 2024-07-24 • Rust 包仓库 49/week @ 2024-07-31 • Rust 包仓库 125/week @ 2024-08-07 • Rust 包仓库

480 每月下载量
3 个crate中使用 (2 直接)

MIT 许可证

62KB
1.5K SLoC

Build status Crates.io Version

实时演示 (代码)

适用于Firefox、Chrome和Edge的浏览器插件

一个用于生成Rust的macro_rules!()宏的语法("railroad")图的库。

图以可伸缩矢量图形的形式生成,布局细节由可定制的CSS控制。

例如,给定nom的method定义

macro_rules! method {
    ($name:ident<$a:ty>( $i:ty ) -> $o:ty, $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    ($name:ident<$a:ty,$i:ty,$o:ty,$e:ty>, $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    ($name:ident<$a:ty,$i:ty,$o:ty>, $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    ($name:ident<$a:ty,$o:ty>, $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    ($name:ident<$a:ty>, $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    (pub $name:ident<$a:ty>( $i:ty ) -> $o:ty, $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    (pub $name:ident<$a:ty,$i:ty,$o:ty,$e:ty>, $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    (pub $name:ident<$a:ty,$i:ty,$o:ty>, $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    (pub $name:ident<$a:ty,$o:ty>, $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    (pub $name:ident<$a:ty>, $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    ($name:ident<$a:ty>( $i:ty ) -> $o:ty, mut $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    ($name:ident<$a:ty,$i:ty,$o:ty,$e:ty>, mut $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    ($name:ident<$a:ty,$i:ty,$o:ty>, mut $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    ($name:ident<$a:ty,$o:ty>, mut $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    ($name:ident<$a:ty>, mut $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    (pub $name:ident<$a:ty>( $i:ty ) -> $o:ty, mut $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    (pub $name:ident<$a:ty,$i:ty,$o:ty,$e:ty>, mut $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    (pub $name:ident<$a:ty,$i:ty,$o:ty>, mut $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    (pub $name:ident<$a:ty,$o:ty>, mut $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
    (pub $name:ident<$a:ty>, mut $self_:ident, $submac:ident!( $($args:tt)* )) => { ... };
}

...该库生成一个SVG,使用默认CSS渲染为

Syntax diagram for nom::method


要生成这里显示的示例,请运行

cargo run --example various

这将输出一些HTML文件到/examples;请随意在/examples/various.rs中修改演示。

示例

依赖项

~0.7–1.7MB
~32K SLoC