syntax: rewrite the regex-syntax crate · rust-lang/regex@715a807 (original) (raw)
1
1
`extern crate docopt;
`
2
2
`extern crate regex;
`
3
3
`extern crate regex_syntax as syntax;
`
``
4
`+
extern crate regex_syntax2;
`
4
5
`extern crate serde;
`
5
6
`#[macro_use]
`
6
7
`extern crate serde_derive;
`
`@@ -17,6 +18,8 @@ use syntax::{ExprBuilder, Expr, Literals};
`
17
18
`const USAGE: &'static str = "
`
18
19
`Usage:
`
19
20
` regex-debug [options] ast
`
``
21
`+
regex-debug [options] ast2
`
``
22
`+
regex-debug [options] hir2
`
20
23
` regex-debug [options] prefixes ...
`
21
24
` regex-debug [options] suffixes ...
`
22
25
` regex-debug [options] anchors
`
`@@ -51,6 +54,8 @@ Options:
`
51
54
`#[derive(Deserialize)]
`
52
55
`struct Args {
`
53
56
`cmd_ast: bool,
`
``
57
`+
cmd_ast2: bool,
`
``
58
`+
cmd_hir2: bool,
`
54
59
`cmd_prefixes: bool,
`
55
60
`cmd_suffixes: bool,
`
56
61
`cmd_anchors: bool,
`
`@@ -93,6 +98,10 @@ fn main() {
`
93
98
`fn run(args: &Args) -> Result<()> {
`
94
99
`if args.cmd_ast {
`
95
100
`cmd_ast(args)
`
``
101
`+
} else if args.cmd_ast2 {
`
``
102
`+
cmd_ast2(args)
`
``
103
`+
} else if args.cmd_hir2 {
`
``
104
`+
cmd_hir2(args)
`
96
105
`} else if args.cmd_prefixes {
`
97
106
`cmd_literals(args)
`
98
107
`} else if args.cmd_suffixes {
`
`@@ -109,7 +118,28 @@ fn run(args: &Args) -> Result<()> {
`
109
118
`}
`
110
119
``
111
120
`fn cmd_ast(args: &Args) -> Result<()> {
`
112
``
`-
println!("{:#?}", try!(args.parse_one()));
`
``
121
`+
let ast = try!(args.parse_one());
`
``
122
`+
println!("{:#?}", ast);
`
``
123
`+
Ok(())
`
``
124
`+
}
`
``
125
+
``
126
`+
fn cmd_ast2(args: &Args) -> Result<()> {
`
``
127
`+
use regex_syntax2::ast::parse::Parser;
`
``
128
+
``
129
`+
let mut parser = Parser::new();
`
``
130
`+
let ast = try!(parser.parse(&args.arg_pattern));
`
``
131
`+
println!("{:#?}", ast);
`
``
132
`+
Ok(())
`
``
133
`+
}
`
``
134
+
``
135
`+
fn cmd_hir2(args: &Args) -> Result<()> {
`
``
136
`+
use regex_syntax2::ParserBuilder;
`
``
137
+
``
138
`+
let mut parser = ParserBuilder::new()
`
``
139
`+
.allow_invalid_utf8(false)
`
``
140
`+
.build();
`
``
141
`+
let hir = try!(parser.parse(&args.arg_pattern));
`
``
142
`+
println!("{:#?}", hir);
`
113
143
`Ok(())
`
114
144
`}
`
115
145
``