| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -49,6 +49,31 @@ func pop() (Expr, error) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					return res, nil
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				func popExpr() (Expr, error) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return Expr{}, e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					return a, nil
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				func pop2Expr() (Expr, Expr, error) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					b, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return Expr{}, Expr{}, e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return Expr{}, Expr{}, e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					return b, a, nil
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				func identifierToObj(c Expr, idx int, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					k, k_ok := c.Value.(string)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if k_ok {
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -360,7 +385,7 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if list.Tok == LIST {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{BOOLEAN, nil, len(list.Exprs) == 0, 0})
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							} else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `shatter` not a list @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `empty` not a list @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case COMPOSE:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							v, e := pop()
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -581,27 +606,21 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, math.Pow(a.Value.(float64), b.Value.(float64)), 0})
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case SQRT:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							angle, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if angle.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								angle = get(angle.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if angle.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, math.Sqrt(angle.Value.(float64)), 0})
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, math.Sqrt(a.Value.(float64)), 0})
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							} else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `sqrt` value is not number or float @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case ADD1:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, a.Value.(float64) + 1.0, 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -609,13 +628,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `add1` value is not a number @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case SUB1:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, a.Value.(float64) - 1.0, 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -623,13 +639,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `sub1` value is not a number  @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case SIN:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, math.Sin(a.Value.(float64)), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -637,13 +650,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `sin` values are not numbers or floats @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case COS:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, math.Cos(a.Value.(float64)), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -651,13 +661,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `cos` values are not numbers or floats @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case TAN:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, math.Tan(a.Value.(float64)), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -665,13 +672,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `tan` values are not numbers or floats @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case ATAN:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							den, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -687,13 +691,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `atan` values are not numbers or floats @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case LN:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, math.Log(a.Value.(float64)), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -701,13 +702,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `ln` values are not numbers or floats @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case LOG:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, math.Log10(a.Value.(float64)), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -715,13 +713,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `log` values are not numbers or floats @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case LOG3:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, math.Log(a.Value.(float64)) / math.Log(3.0), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -729,13 +724,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `log3` values are not numbers or floats @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case CLIP:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, math.Floor(a.Value.(float64)), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -743,13 +735,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `clip` values are not numbers or floats @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case SMOOTH:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, math.Round(a.Value.(float64)), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -757,13 +746,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `smooth` values are not numbers or floats @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case HOWMUCH:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, math.Abs(a.Value.(float64)), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -771,13 +757,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `howmuch` values are not numbers or floats @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case SETRAND:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								rand.Seed(int64(a.Value.(float64)))
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -785,13 +768,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `setrand` values are not numbers or floats @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case RAND:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								max := a.Value.(float64)
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -805,23 +785,17 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case E:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							push(Expr{NUMBER, nil, 2.71828182845904523536, 0})
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case ISINT:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							push(Expr{BOOLEAN, nil, a.Value.(float64) == float64(int64(a.Value.(float64))), 0})
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case ISNUMBER:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							push(Expr{BOOLEAN, nil, (a.Tok == NUMBER), 0})
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case NUMBERIZE:
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -840,21 +814,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							push(Expr{NUMBER, nil, num, 0})
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case ISOLATE:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, a, e := pop2Expr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if b.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								b = get(b.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER && b.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, float64(int64(a.Value.(float64)) & int64(b.Value.(float64))), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -862,21 +825,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `isolate` values are not numbers @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case MIX:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, a, e := pop2Expr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if b.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								b = get(b.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER && b.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, float64(int64(a.Value.(float64)) | int64(b.Value.(float64))), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -884,21 +836,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `mix` values are not numbers @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case CONTRADICT:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, a, e := pop2Expr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if b.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								b = get(b.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER && b.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, float64(int64(a.Value.(float64)) ^ int64(b.Value.(float64))), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -906,13 +847,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `contradict` values are not numbers @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case COMPL:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, float64(^int64(a.Value.(float64))), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -920,21 +858,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `compl` values are not numbers @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case SHIFTRIGHT:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, a, e := pop2Expr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if b.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								b = get(b.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER && b.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, float64(int64(a.Value.(float64)) >> int64(b.Value.(float64))), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -942,21 +869,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `shiftright` values are not numbers @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case SHIFTLEFT:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, a, e := pop2Expr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if b.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								b = get(b.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER && b.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{NUMBER, nil, float64(int64(a.Value.(float64)) << int64(b.Value.(float64))), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -964,21 +880,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `shiftleft` values are not numbers @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case GT:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, a, e := pop2Expr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if b.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								b = get(b.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER && b.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{BOOLEAN, nil, a.Value.(float64) > (b.Value.(float64)), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -986,21 +891,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `gt` values are not numbers @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case LT:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, a, e := pop2Expr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if b.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								b = get(b.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER && b.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{BOOLEAN, nil, a.Value.(float64) < (b.Value.(float64)), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -1009,21 +903,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `lt` values are not numbers @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case EQ:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, a, e := pop2Expr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if b.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								b = get(b.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER && b.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{BOOLEAN, nil, a.Value.(float64) == b.Value.(float64), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -1031,21 +914,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `eq` values are not numbers @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case GE:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, a, e := pop2Expr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if b.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								b = get(b.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER && b.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{BOOLEAN, nil, a.Value.(float64) >= (b.Value.(float64)), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -1053,21 +925,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `ge` values are not numbers @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case LE:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, a, e := pop2Expr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if b.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								b = get(b.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER && b.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{BOOLEAN, nil, a.Value.(float64) <= (b.Value.(float64)), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -1075,21 +936,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `le` values are not numbers @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case NE:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, a, e := pop2Expr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if b.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								b = get(b.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER && b.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{BOOLEAN, nil, a.Value.(float64) != (b.Value.(float64)), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -1097,22 +947,16 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `ne` values are not numbers @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case ISNULL:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							push(Expr{BOOLEAN, nil, (a.Tok == NULL || a.Value == nil), 0})
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case NEGATIVE:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == NUMBER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{BOOLEAN, nil, a.Value.(float64) < 0.0, 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -1120,21 +964,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `negative` values are not numbers @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case AND:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, a, e := pop2Expr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if b.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								b = get(b.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == BOOLEAN && b.Tok == BOOLEAN {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{BOOLEAN, nil, (a.Value.(bool) && b.Value.(bool)), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -1142,21 +975,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `and` values are not numbers @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case OR:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, a, e := pop2Expr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if b.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								b = get(b.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == BOOLEAN && b.Tok == BOOLEAN {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{BOOLEAN, nil, (a.Value.(bool) || b.Value.(bool)), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -1164,21 +986,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `or` values are not numbers @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case XOR:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							b, a, e := pop2Expr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if b.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								b = get(b.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == BOOLEAN && b.Tok == BOOLEAN {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								push(Expr{BOOLEAN, nil, (a.Value.(bool) != b.Value.(bool)), 0})
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -1212,13 +1023,10 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							push(Expr{STRING, nil, str, 0})
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case COMPLAIN:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							a, e := popExpr()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if e != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if a.Tok == IDENTIFIER {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								a = get(a.Value.(string))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							fmt.Fprintf(os.Stderr, "%v", a.Value)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case NEWLINE:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							fmt.Fprintf(w, "\n")
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -1262,7 +1070,7 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return e
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if str.Tok != STRING {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `servehttp` exptected a string for the port @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return fmt.Errorf("cannot `readall` @%v", idx)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							filedata, err := ioutil.ReadFile(str.Value.(string)) // the file is inside the local directory
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |