@@ -68,7 +68,6 @@ pub fn expand(cap: &[u8], params: &mut [Param], sta: &mut [Param], dyn: &mut [Pa
68
68
69
69
while i < cap. len ( ) {
70
70
cur = cap[ i] as char ;
71
- debug ! ( "current char: %c" , cur) ;
72
71
let mut old_state = state;
73
72
match state {
74
73
Nothing => {
@@ -134,43 +133,29 @@ pub fn expand(cap: &[u8], params: &mut [Param], sta: &mut [Param], dyn: &mut [Pa
134
133
(_, _) => return Err(~" non-numbers on stack with |")
135
134
},
136
135
'A' => match (stack.pop(), stack.pop()) {
137
- (Number(x), Number(y)) => {
138
- if x == 1 && y == 1 {
139
- stack.push(Number(1));
140
- } else {
141
- stack.push(Number(0));
142
- }
143
- },
144
- (_, _) => return Err(~" non-numbers on stack with logical and")
136
+ (Number(0), Number(_)) => stack.push(Number(0)),
137
+ (Number(_), Number(0)) => stack.push(Number(0)),
138
+ (Number(_), Number(_)) => stack.push(Number(1)),
139
+ _ => return Err(~" non-numbers on stack with logical and")
145
140
} ,
146
141
'O' => match ( stack. pop ( ) , stack. pop ( ) ) {
147
- ( Number ( x) , Number ( y) ) => {
148
- if x == 1 && y == 1 {
149
- stack. push ( Number ( 1 ) ) ;
150
- } else {
151
- stack. push ( Number ( 0 ) ) ;
152
- }
153
- } ,
154
- ( _, _) => return Err ( ~"non-numbers on stack with logical or")
142
+ ( Number ( 0 ) , Number ( 0 ) ) => stack. push ( Number ( 0 ) ) ,
143
+ ( Number ( _) , Number ( _) ) => stack. push ( Number ( 1 ) ) ,
144
+ _ => return Err ( ~"non-numbers on stack with logical or")
155
145
} ,
156
146
'!' => match stack. pop ( ) {
157
- Number ( x) => {
158
- if x == 1 {
159
- stack. push ( Number ( 0 ) )
160
- } else {
161
- stack. push ( Number ( 1 ) )
162
- }
163
- } ,
147
+ Number ( 0 ) => stack. push ( Number ( 1 ) ) ,
148
+ Number ( _) => stack. push ( Number ( 0 ) ) ,
164
149
_ => return Err ( ~"non-number on stack with logical not")
165
150
} ,
166
151
'~' => match stack. pop ( ) {
167
152
Number ( x) => stack. push ( Number ( !x) ) ,
168
153
_ => return Err ( ~"non-number on stack with %~")
169
154
} ,
170
155
'i' => match ( copy params[ 0 ] , copy params[ 1 ] ) {
171
- ( Number ( x) , Number ( y) ) => {
172
- params [ 0 ] = Number ( x + 1 ) ;
173
- params [ 1 ] = Number ( y + 1 ) ;
156
+ ( Number ( ref mut x) , Number ( ref mut y) ) => {
157
+ * x += 1 ;
158
+ * y += 1 ;
174
159
} ,
175
160
( _, _) => return Err ( ~"first two params not numbers with %i")
176
161
} ,
0 commit comments