Add 'for-humans?' flag to <language> specifications.
[bpt/guile.git] / module / language / glil.scm
index 1202dbe..9c23854 100644 (file)
@@ -1,6 +1,6 @@
 ;;; Guile Low Intermediate Language
 
-;; Copyright (C) 2001, 2009 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2009, 2010 Free Software Foundation, Inc.
 
 ;;;; This library is free software; you can redistribute it and/or
 ;;;; modify it under the terms of the GNU Lesser General Public
    glil-std-prelude-nreq glil-std-prelude-nlocs glil-std-prelude-else-label
 
    <glil-opt-prelude> make-glil-opt-prelude glil-opt-prelude?
-   glil-opt-prelude-nreq glil-opt-prelude-nopt glil-opt-prelude-rest?
+   glil-opt-prelude-nreq glil-opt-prelude-nopt glil-opt-prelude-rest
    glil-opt-prelude-nlocs glil-opt-prelude-else-label
 
    <glil-kw-prelude> make-glil-kw-prelude glil-kw-prelude?
    glil-kw-prelude-nreq glil-kw-prelude-nopt glil-kw-prelude-kw
-   glil-kw-prelude-allow-other-keys? glil-kw-prelude-rest?
+   glil-kw-prelude-allow-other-keys? glil-kw-prelude-rest
    glil-kw-prelude-nlocs glil-kw-prelude-else-label
 
    <glil-bind> make-glil-bind glil-bind?
@@ -75,6 +75,8 @@
    <glil-mv-call> make-glil-mv-call glil-mv-call?
    glil-mv-call-nargs glil-mv-call-ra
 
+   <glil-prompt> make-glil-prompt glil-prompt? glil-prompt-label glil-prompt-escape-only?
+
    parse-glil unparse-glil))
 
 (define (print-glil x port)
@@ -84,8 +86,8 @@
   ;; Meta operations
   (<glil-program> meta body)
   (<glil-std-prelude> nreq nlocs else-label)
-  (<glil-opt-prelude> nreq nopt rest? nlocs else-label)
-  (<glil-kw-prelude> nreq nopt rest? kw allow-other-keys? nlocs else-label)
+  (<glil-opt-prelude> nreq nopt rest nlocs else-label)
+  (<glil-kw-prelude> nreq nopt rest kw allow-other-keys? nlocs else-label)
   (<glil-bind> vars)
   (<glil-mv-bind> vars rest)
   (<glil-unbind>)
   (<glil-label> label)
   (<glil-branch> inst label)
   (<glil-call> inst nargs)
-  (<glil-mv-call> nargs ra))
+  (<glil-mv-call> nargs ra)
+  (<glil-prompt> label escape-only?))
 
 \f
 
      (make-glil-program meta (map parse-glil body)))
     ((std-prelude ,nreq ,nlocs ,else-label)
      (make-glil-std-prelude nreq nlocs else-label))
-    ((opt-prelude ,nreq ,nopt ,rest? ,nlocs ,else-label)
-     (make-glil-opt-prelude nreq nopt rest? nlocs else-label))
-    ((kw-prelude ,nreq ,nopt ,rest? ,kw ,allow-other-keys? ,nlocs ,else-label)
-     (make-glil-kw-prelude nreq nopt rest? kw allow-other-keys? nlocs else-label))
+    ((opt-prelude ,nreq ,nopt ,rest ,nlocs ,else-label)
+     (make-glil-opt-prelude nreq nopt rest nlocs else-label))
+    ((kw-prelude ,nreq ,nopt ,rest ,kw ,allow-other-keys? ,nlocs ,else-label)
+     (make-glil-kw-prelude nreq nopt rest kw allow-other-keys? nlocs else-label))
     ((bind . ,vars) (make-glil-bind vars))
     ((mv-bind ,vars ,rest) (make-glil-mv-bind vars rest))
     ((unbind) (make-glil-unbind))
     ((branch ,inst ,label) (make-glil-branch inst label))
     ((call ,inst ,nargs) (make-glil-call inst nargs))
     ((mv-call ,nargs ,ra) (make-glil-mv-call nargs ra))
+    ((prompt ,label ,escape-only?)
+     (make-glil-prompt label escape-only?))
     (else (error "invalid glil" x))))
 
 (define (unparse-glil glil)
      `(program ,meta ,@(map unparse-glil body)))
     ((<glil-std-prelude> nreq nlocs else-label)
      `(std-prelude ,nreq ,nlocs ,else-label))
-    ((<glil-opt-prelude> nreq nopt rest? nlocs else-label)
-     `(opt-prelude ,nreq ,nopt ,rest? ,nlocs ,else-label))
-    ((<glil-kw-prelude> nreq nopt rest? kw allow-other-keys? nlocs else-label)
-     `(kw-prelude ,nreq ,nopt ,rest? ,kw ,allow-other-keys? ,nlocs ,else-label))
+    ((<glil-opt-prelude> nreq nopt rest nlocs else-label)
+     `(opt-prelude ,nreq ,nopt ,rest ,nlocs ,else-label))
+    ((<glil-kw-prelude> nreq nopt rest kw allow-other-keys? nlocs else-label)
+     `(kw-prelude ,nreq ,nopt ,rest ,kw ,allow-other-keys? ,nlocs ,else-label))
     ((<glil-bind> vars) `(bind ,@vars))
     ((<glil-mv-bind> vars rest) `(mv-bind ,vars ,rest))
     ((<glil-unbind>) `(unbind))
     ((<glil-label> label) `(label ,label))
     ((<glil-branch> inst label) `(branch ,inst ,label))
     ((<glil-call> inst nargs) `(call ,inst ,nargs))
-    ((<glil-mv-call> nargs ra) `(mv-call ,nargs ,ra))))
+    ((<glil-mv-call> nargs ra) `(mv-call ,nargs ,ra))
+    ((<glil-prompt> label escape-only?)
+     `(prompt ,label escape-only?))))