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

``