parser: add PlusEqual and MinusEqual to Get expressions
This commit is contained in:
		
							parent
							
								
									8007f9e860
								
							
						
					
					
						commit
						a0808b54aa
					
				
					 2 changed files with 19 additions and 16 deletions
				
			
		|  | @ -54,9 +54,10 @@ fn main(a int) int { | ||||||
| 
 | 
 | ||||||
| 	str := 'hello'  | 	str := 'hello'  | ||||||
| 	len := str.len | 	len := str.len | ||||||
|  | 
 | ||||||
|  | 	// those should yield the same ast | ||||||
| 	str.len = str.len + 1 | 	str.len = str.len + 1 | ||||||
| 	x += 1 | 	str.len += 1 | ||||||
| 	// str.len += 1 |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn (v Typ) voidfunc() {} | fn (v Typ) voidfunc() {} | ||||||
|  |  | ||||||
|  | @ -751,21 +751,23 @@ pub const Parser = struct { | ||||||
|                         return Result.CompileError; |                         return Result.CompileError; | ||||||
|                     }, |                     }, | ||||||
| 
 | 
 | ||||||
|                     //.PlusEqual => { |                     .PlusEqual => { | ||||||
|                     //    var plus_op = try self.mkToken(.Plus, "+", op.line); |                         var new_op = try self.mkToken(.Plus, "+", op.line); | ||||||
|                     //    return try self.mkAssign( |                         return try self.mkSet( | ||||||
|                     //        expr.Variable, |                             get.struc, | ||||||
|                     //        try self.mkBinary(expr, plus_op, value), |                             get.name, | ||||||
|                     //    ); |                             try self.mkBinary(expr, new_op, value), | ||||||
|                     //}, |                         ); | ||||||
|  |                     }, | ||||||
| 
 | 
 | ||||||
|                     //.MinusEqual => { |                     .MinusEqual => { | ||||||
|                     //    var new_op = try self.mkToken(.Minus, "-", op.line); |                         var new_op = try self.mkToken(.Minus, "-", op.line); | ||||||
|                     //    return try self.mkSet( |                         return try self.mkSet( | ||||||
|                     //        get.struc, get.name, |                             get.struc, | ||||||
|                     //        try self.mkBinary(expr, new_op, value), |                             get.name, | ||||||
|                     //    ); |                             try self.mkBinary(expr, new_op, value), | ||||||
|                     //}, |                         ); | ||||||
|  |                     }, | ||||||
| 
 | 
 | ||||||
|                     .Equal => return try self.mkSet(get.struc, get.name, value), |                     .Equal => return try self.mkSet(get.struc, get.name, value), | ||||||
|                     else => unreachable, |                     else => unreachable, | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue