mescc: Implement unary plus operator.
[mes.git] / module / mescc / compile.scm
index d94b3f726fc4756372c7c19e7e11b7fc14763a2e..a3393afff562df567c30f5104ebc6ee49c16606a 100644 (file)
       ((mod ,a ,b) (ast->type a info))
       ((mul ,a ,b) (ast->type a info))
       ((not ,a) (ast->type a info))
+      ((pos ,a) (ast->type a info))
       ((neg ,a) (ast->type a info))
       ((eq ,a ,b) (ast->type a info))
       ((ge ,a ,b) (ast->type a info))
                 (info (append-text info (wrap-as (as info 'r-negate)))))
            (append-text info (wrap-as (as info 'test-r))))) ;; hmm, use ast->info?
 
+        ((pos ,expr)
+         (expr->register expr info))
+
         ((neg ,expr)
          (let* ((info (expr->register expr info))
                 (info (allocate-register info))
   (pmatch o
     ((fixed ,a) (cstring->int a))
     ((p-expr ,expr) (expr->number info expr))
+    ((pos ,a)
+     (expr->number info a))
     ((neg ,a)
      (- (expr->number info a)))
     ((add ,a ,b)