@@ -43,8 +43,10 @@ pub fn parse(filename: &Path) -> Result<ast::Program, String> {
4343pub fn parse_program ( source : & String ) -> Result < ast:: Program , String > {
4444 let lxr = lexer:: Lexer :: new ( & source) ;
4545 match python:: ProgramParser :: new ( ) . parse ( lxr) {
46- Err ( lalrpop_util:: ParseError :: UnrecognizedToken { token : None , expected : _} ) =>
47- Err ( String :: from ( "Unexpected end of input." ) ) ,
46+ Err ( lalrpop_util:: ParseError :: UnrecognizedToken {
47+ token : None ,
48+ expected : _,
49+ } ) => Err ( String :: from ( "Unexpected end of input." ) ) ,
4850 Err ( why) => Err ( String :: from ( format ! ( "{:?}" , why) ) ) ,
4951 Ok ( p) => Ok ( p) ,
5052 }
@@ -76,12 +78,7 @@ mod tests {
7678 fn test_parse_empty ( ) {
7779 let parse_ast = parse_program ( & String :: from ( "\n " ) ) ;
7880
79- assert_eq ! (
80- parse_ast,
81- Ok ( ast:: Program {
82- statements: vec![ ]
83- } )
84- )
81+ assert_eq ! ( parse_ast, Ok ( ast:: Program { statements: vec![ ] } ) )
8582 }
8683
8784 #[ test]
@@ -91,20 +88,16 @@ mod tests {
9188 assert_eq ! (
9289 parse_ast,
9390 ast:: Program {
94- statements: vec![
95- ast:: Statement :: Expression {
96- expression: ast:: Expression :: Call {
97- function: Box :: new( ast:: Expression :: Identifier {
98- name: String :: from( "print" ) ,
99- } ) ,
100- args: vec![
101- ast:: Expression :: String {
102- value: String :: from( "Hello world" ) ,
103- } ,
104- ] ,
105- } ,
91+ statements: vec![ ast:: Statement :: Expression {
92+ expression: ast:: Expression :: Call {
93+ function: Box :: new( ast:: Expression :: Identifier {
94+ name: String :: from( "print" ) ,
95+ } ) ,
96+ args: vec![ ast:: Expression :: String {
97+ value: String :: from( "Hello world" ) ,
98+ } , ] ,
10699 } ,
107- ] ,
100+ } , ] ,
108101 }
109102 ) ;
110103 }
@@ -116,21 +109,19 @@ mod tests {
116109 assert_eq ! (
117110 parse_ast,
118111 ast:: Program {
119- statements: vec![
120- ast:: Statement :: Expression {
121- expression: ast:: Expression :: Call {
122- function: Box :: new( ast:: Expression :: Identifier {
123- name: String :: from( "print" ) ,
124- } ) ,
125- args: vec![
126- ast:: Expression :: String {
127- value: String :: from( "Hello world" ) ,
128- } ,
129- ast:: Expression :: Number { value: 2 } ,
130- ] ,
131- } ,
112+ statements: vec![ ast:: Statement :: Expression {
113+ expression: ast:: Expression :: Call {
114+ function: Box :: new( ast:: Expression :: Identifier {
115+ name: String :: from( "print" ) ,
116+ } ) ,
117+ args: vec![
118+ ast:: Expression :: String {
119+ value: String :: from( "Hello world" ) ,
120+ } ,
121+ ast:: Expression :: Number { value: 2 } ,
122+ ] ,
132123 } ,
133- ] ,
124+ } , ] ,
134125 }
135126 ) ;
136127 }
@@ -143,26 +134,18 @@ mod tests {
143134 parse_ast,
144135 ast:: Statement :: If {
145136 test: ast:: Expression :: Number { value: 1 } ,
146- body: vec![
147- ast:: Statement :: Expression {
148- expression: ast:: Expression :: Number { value: 10 } ,
149- } ,
150- ] ,
151- orelse: Some ( vec![
152- ast:: Statement :: If {
153- test: ast:: Expression :: Number { value: 2 } ,
154- body: vec![
155- ast:: Statement :: Expression {
156- expression: ast:: Expression :: Number { value: 20 } ,
157- } ,
158- ] ,
159- orelse: Some ( vec![
160- ast:: Statement :: Expression {
161- expression: ast:: Expression :: Number { value: 30 } ,
162- } ,
163- ] ) ,
164- } ,
165- ] ) ,
137+ body: vec![ ast:: Statement :: Expression {
138+ expression: ast:: Expression :: Number { value: 10 } ,
139+ } , ] ,
140+ orelse: Some ( vec![ ast:: Statement :: If {
141+ test: ast:: Expression :: Number { value: 2 } ,
142+ body: vec![ ast:: Statement :: Expression {
143+ expression: ast:: Expression :: Number { value: 20 } ,
144+ } , ] ,
145+ orelse: Some ( vec![ ast:: Statement :: Expression {
146+ expression: ast:: Expression :: Number { value: 30 } ,
147+ } , ] ) ,
148+ } , ] ) ,
166149 }
167150 ) ;
168151 }
@@ -176,17 +159,16 @@ mod tests {
176159 Ok ( ast:: Statement :: Expression {
177160 expression: ast:: Expression :: Lambda {
178161 args: vec![ String :: from( "x" ) , String :: from( "y" ) ] ,
179- body:
180- Box :: new( ast:: Expression :: Binop {
181- a: Box :: new( ast:: Expression :: Identifier {
182- name: String :: from( "x" ) ,
183- } ) ,
184- op: ast:: Operator :: Mult ,
185- b: Box :: new( ast:: Expression :: Identifier {
186- name: String :: from( "y" ) ,
187- } )
162+ body: Box :: new( ast:: Expression :: Binop {
163+ a: Box :: new( ast:: Expression :: Identifier {
164+ name: String :: from( "x" ) ,
165+ } ) ,
166+ op: ast:: Operator :: Mult ,
167+ b: Box :: new( ast:: Expression :: Identifier {
168+ name: String :: from( "y" ) ,
188169 } )
189- }
170+ } )
171+ }
190172 } )
191173 )
192174 }
@@ -198,13 +180,11 @@ mod tests {
198180 parse_statement( & source) ,
199181 Ok ( ast:: Statement :: ClassDef {
200182 name: String :: from( "Foo" ) ,
201- body: vec![
202- ast:: Statement :: FunctionDef {
203- name: String :: from( "__init__" ) ,
204- args: vec![ String :: from( "self" ) ] ,
205- body: vec![ ast:: Statement :: Pass ] ,
206- }
207- ] ,
183+ body: vec![ ast:: Statement :: FunctionDef {
184+ name: String :: from( "__init__" ) ,
185+ args: vec![ String :: from( "self" ) ] ,
186+ body: vec![ ast:: Statement :: Pass ] ,
187+ } ] ,
208188 } )
209189 )
210190 }
0 commit comments