X-Git-Url: http://git.hcoop.net/bpt/guile.git/blobdiff_plain/fbb857a472eb4e69c1cba05e86646b7004f32df6..1df515a077f26d59510e48fad3d45a33d2c90e0f:/module/language/elisp/spec.scm diff --git a/module/language/elisp/spec.scm b/module/language/elisp/spec.scm index 617e4e3c5..38a32c2df 100644 --- a/module/language/elisp/spec.scm +++ b/module/language/elisp/spec.scm @@ -1,62 +1,35 @@ ;;; Guile Emac Lisp -;; Copyright (C) 2001 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 ;;;; License as published by the Free Software Foundation; either ;;;; version 3 of the License, or (at your option) any later version. -;;;; +;;;; ;;;; This library is distributed in the hope that it will be useful, ;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;;;; Lesser General Public License for more details. -;;;; +;;;; ;;;; You should have received a copy of the GNU Lesser General Public ;;;; License along with this library; if not, write to the Free Software ;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ;;; Code: -(define-module (lang elisp spec) - #:use-module (system lang language) +(define-module (language elisp spec) + #:use-module (language elisp compile-tree-il) + #:use-module (language elisp parser) + #:use-module (system base language) + #:use-module (system base compile) #:export (elisp)) - -;;; -;;; Translator -;;; - -(define (translate x) - (if (pair? x) - (translate-pair x) - x)) - -(define (translate-pair x) - (let ((name (car x)) (args (cdr x))) - (case name - ((quote) `(@quote ,@args)) - ((defvar) `(@define ,@(map translate args))) - ((setq) `(@set! ,@(map translate args))) - ((if) `(@if ,(translate (car args)) - (@begin ,@(map translate (cdr args))))) - ((and) `(@and ,@(map translate args))) - ((or) `(@or ,@(map translate args))) - ((progn) `(@begin ,@(map translate args))) - ((defun) `(@define ,(car args) - (@lambda ,(cadr args) ,@(map translate (cddr args))))) - ((lambda) `(@lambda ,(car args) ,@(map translate (cdr args)))) - (else x)))) - - -;;; -;;; Language definition -;;; - (define-language elisp - #:title "Emacs Lisp" - #:version "0.0" - #:reader read - #:expander id - #:translator translate - ) + #:title "Emacs Lisp" + #:reader (lambda (port env) (read-elisp port)) + #:printer write + #:compilers `((tree-il . ,compile-tree-il))) + +(compile-and-load (%search-load-path "language/elisp/boot.el") + #:from 'elisp)