mescc.scm: print two strings.

This commit is contained in:
Jan Nieuwenhuizen 2016-08-14 09:06:09 +02:00
parent 2c7f26dbe6
commit 04eb0609cd
2 changed files with 7 additions and 5 deletions

3
main.c
View File

@ -1,5 +1,6 @@
int main () int main ()
{ {
puts ("Hello, [messi] world!"); puts ("Hi Mes!\n");
puts ("Hello, world!\n");
return 1; return 1;
} }

View File

@ -472,11 +472,12 @@
(string->list (cadr (caddr o)))) (string->list (cadr (caddr o))))
'())) '()))
(define (statement->text o) (define (statement->text data o)
(cond (cond
((and (pair? o) (eq? (car o) 'call)) ((and (pair? o) (eq? (car o) 'call))
(let ((string (cadr (caddr o)))) (let ((string (cadr (caddr o)))
(list (lambda (data) (i386:puts data (string-length string)))))) (offset (length data)))
(list (lambda (data) (i386:puts (+ data offset) (string-length string))))))
((and (pair? o) (eq? (car o) 'return)) ((and (pair? o) (eq? (car o) 'return))
(list (lambda (data) (i386:exit (cadr o))))) (list (lambda (data) (i386:exit (cadr o)))))
(else '()))) (else '())))
@ -500,5 +501,5 @@
(display statement (current-error-port)) (display statement (current-error-port))
(newline (current-error-port)) (newline (current-error-port))
(loop (cdr statements) (loop (cdr statements)
(append text (statement->text statement)) (append text (statement->text data statement))
(append data (statement->data statement))))))) (append data (statement->data statement)))))))