1extern crate utf_railroad;
2
3use utf_railroad::{Diagram, Terminal, NonTerminal, Optional, Repeat, Sequence};
4
5fn main() {
6 let diagram = Diagram::default()
7 .push(Box::new(Terminal::new("CREATE")))
8 .push(Box::new(Terminal::new("VIRTUAL")))
9 .push(Box::new(Terminal::new("TABLE")))
10 .push(Box::new(
11 Optional::new(Box::new(
12 Sequence::default()
13 .push(Box::new(Terminal::new("IF")))
14 .push(Box::new(Terminal::new("NOT")))
15 .push(Box::new(Terminal::new("EXISTS")))
16 ))
17 ))
18 .next_row()
19 .push(Box::new(
20 Optional::new(Box::new(
21 Sequence::default()
22 .push(Box::new(NonTerminal::new("schema-name")))
23 .push(Box::new(Terminal::new(".")))
24 ))
25 ))
26 .push(Box::new(NonTerminal::new("table-name")))
27 .next_row()
28 .push(Box::new(Terminal::new("USING")))
29 .push(Box::new(NonTerminal::new("module-name")))
30 .push(Box::new(
31 Optional::new(Box::new(
32 Sequence::default()
33 .push(Box::new(Terminal::new("(")))
34 .push(Box::new(
35 Repeat::new(Box::new(
36 NonTerminal::new("module-argument")
37 ))
38 ))
39 .push(Box::new(Terminal::new(")")))
40 ))
41 ));
42 println!("{}", diagram);
43}