@@ -3,16 +3,16 @@ use nom::{
33 bytes:: complete:: { tag, take_while} ,
44 character:: complete:: { char, digit1, multispace0} ,
55 combinator:: { map, map_res, opt, value, verify} ,
6+ error:: Error ,
67 multi:: { fold_many0, separated_list0} ,
78 sequence:: { delimited, pair, preceded, tuple} ,
89 IResult ,
9- error:: Error ,
1010} ;
1111
1212use std:: str:: FromStr ;
1313
1414use crate :: ir:: ast:: Expression ;
15- use crate :: parser:: parser_common:: { identifier, keyword , is_string_char } ;
15+ use crate :: parser:: parser_common:: { identifier, is_string_char , keyword } ;
1616
1717use crate :: ir:: ast:: Function ;
1818use crate :: ir:: ast:: Type ;
@@ -81,10 +81,7 @@ fn parse_relational(input: &str) -> IResult<&str, Expression> {
8181fn parse_add_sub ( input : & str ) -> IResult < & str , Expression > {
8282 let ( input, init) = parse_term ( input) ?;
8383 fold_many0 (
84- pair (
85- alt ( ( operator ( "+" ) , operator ( "-" ) ) ) ,
86- parse_term
87- ) ,
84+ pair ( alt ( ( operator ( "+" ) , operator ( "-" ) ) ) , parse_term) ,
8885 move || init. clone ( ) ,
8986 |acc, ( op, val) | match op {
9087 "+" => Expression :: Add ( Box :: new ( acc) , Box :: new ( val) ) ,
@@ -97,10 +94,7 @@ fn parse_add_sub(input: &str) -> IResult<&str, Expression> {
9794fn parse_term ( input : & str ) -> IResult < & str , Expression > {
9895 let ( input, init) = parse_factor ( input) ?;
9996 fold_many0 (
100- pair (
101- alt ( ( operator ( "*" ) , operator ( "/" ) ) ) ,
102- parse_factor
103- ) ,
97+ pair ( alt ( ( operator ( "*" ) , operator ( "/" ) ) ) , parse_factor) ,
10498 move || init. clone ( ) ,
10599 |acc, ( op, val) | match op {
106100 "*" => Expression :: Mul ( Box :: new ( acc) , Box :: new ( val) ) ,
@@ -118,7 +112,11 @@ fn parse_factor(input: &str) -> IResult<&str, Expression> {
118112 parse_list,
119113 parse_function_call,
120114 parse_var,
121- delimited ( char:: <& str, Error <& str>>( '(' ) , parse_expression, char:: <& str, Error <& str>>( ')' ) ) ,
115+ delimited (
116+ char:: <& str, Error <& str>>( '(' ) ,
117+ parse_expression,
118+ char:: <& str, Error <& str>>( ')' ) ,
119+ ) ,
122120 ) ) ( input)
123121}
124122
@@ -136,7 +134,7 @@ fn parse_number(input: &str) -> IResult<&str, Expression> {
136134 opt ( char:: <& str, Error <& str>>( '-' ) ) ,
137135 digit1,
138136 char:: <& str, Error <& str>>( '.' ) ,
139- digit1
137+ digit1,
140138 ) ) ,
141139 |( _, _, _, _) | true ,
142140 ) ,
@@ -150,17 +148,14 @@ fn parse_number(input: &str) -> IResult<&str, Expression> {
150148 ) ;
151149
152150 let int_parser = map_res (
153- tuple ( (
154- opt ( char:: <& str, Error <& str>>( '-' ) ) ,
155- digit1
156- ) ) ,
151+ tuple ( ( opt ( char:: <& str, Error <& str>>( '-' ) ) , digit1) ) ,
157152 |( sign, digits) | {
158153 let s = match sign {
159154 Some ( _) => format ! ( "-{}" , digits) ,
160155 None => digits. to_string ( ) ,
161156 } ;
162157 i32:: from_str ( & s)
163- }
158+ } ,
164159 ) ;
165160
166161 alt ( (
@@ -201,29 +196,29 @@ pub fn parse_actual_arguments(input: &str) -> IResult<&str, Vec<Expression>> {
201196 char:: <& str, Error <& str>>( '(' ) ,
202197 separated_list0 (
203198 tuple ( ( multispace0, char:: <& str, Error <& str>>( ',' ) , multispace0) ) ,
204- parse_expression
199+ parse_expression,
205200 ) ,
206201 multispace0,
207- char:: <& str, Error <& str>>( ')' )
202+ char:: <& str, Error <& str>>( ')' ) ,
208203 ) ) ,
209- |( _, _, args, _, _) | args
204+ |( _, _, args, _, _) | args,
210205 ) ( input)
211206}
212207
213208fn parse_list ( input : & str ) -> IResult < & str , Expression > {
214209 let ( input, _) = multispace0 ( input) ?;
215210 let ( input, _) = char ( '[' ) ( input) ?;
216211 let ( input, _) = multispace0 ( input) ?;
217-
212+
218213 let ( input, elements) = separated_list0 (
219214 delimited ( multispace0, char ( ',' ) , multispace0) ,
220- parse_expression
215+ parse_expression,
221216 ) ( input) ?;
222-
217+
223218 let ( input, _) = multispace0 ( input) ?;
224219 let ( input, _) = char ( ']' ) ( input) ?;
225220 let ( input, _) = multispace0 ( input) ?;
226-
221+
227222 Ok ( ( input, Expression :: ListValue ( elements) ) )
228223}
229224
0 commit comments