diff options
author | dos-reis <gdr@axiomatics.org> | 2012-05-21 04:22:23 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2012-05-21 04:22:23 +0000 |
commit | 174a15e2ab0bc2fd44e536f995111f706fe5d1f5 (patch) | |
tree | 99f8e717beca16cb358ab95301984a8417fa4c75 /src/interp/bootlex.lisp | |
parent | 43eb220cc23f10a7b597d0354ccd4e7e5ea5ffd1 (diff) | |
download | open-axiom-174a15e2ab0bc2fd44e536f995111f706fe5d1f5.tar.gz |
* interp/lexing.boot (getDecimalNumberToken): New.
(getIntegerInRadix): Likewise.
(getSpadIntegerToken): Likewise.
(getToken): Use it.
* interp/Makefile.in (bootlex.$(FASLEXT)): Remove rule.
(OBJS): Do not include it.
* interp/bootlex.lisp: Remove.
Diffstat (limited to 'src/interp/bootlex.lisp')
-rw-r--r-- | src/interp/bootlex.lisp | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/src/interp/bootlex.lisp b/src/interp/bootlex.lisp deleted file mode 100644 index b7a22269..00000000 --- a/src/interp/bootlex.lisp +++ /dev/null @@ -1,102 +0,0 @@ -;; Copyright (c) 1991-2002, The Numerical Algorithms Group Ltd. -;; All rights reserved. -;; Copyright (C) 2007-2012, Gabriel Dos Reis. -;; All rights reserved. -;; -;; Redistribution and use in source and binary forms, with or without -;; modification, are permitted provided that the following conditions are -;; met: -;; -;; - Redistributions of source code must retain the above copyright -;; notice, this list of conditions and the following disclaimer. -;; -;; - Redistributions in binary form must reproduce the above copyright -;; notice, this list of conditions and the following disclaimer in -;; the documentation and/or other materials provided with the -;; distribution. -;; -;; - Neither the name of The Numerical Algorithms Group Ltd. nor the -;; names of its contributors may be used to endorse or promote products -;; derived from this software without specific prior written permission. -;; -;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -;; IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -;; TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -;; PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER -;; OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -;; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -; NAME: BootLex.lisp -; PURPOSE: Parsing support routines for Boot and Spad code -; CONTENTS: -; -; 0. Global parameters -; 1. BOOT File Handling -; 2. BOOT Line Handling -; 3. BOOT Token Handling -; 4. BOOT Token Parsing Actions -; 5. BOOT Error Handling - -(import-module "sys-globals") -(IMPORT-MODULE "preparse") -(IMPORT-MODULE "macros") -(IMPORT-MODULE "nlib") -(in-package "BOOT") - -; *** 3. BOOT Token Handling *** - -;; -*- Parse an integer number -*- -;; The number may be written in plain format, where the radix -;; is implicitly taken to be 10. Or the spelling can explicitly -;; specify a radix. That radix can be anything in the range 2..36 - -;; Subroutine GET-NUMBER-TOKEN-MAYBE-WITH-RADIX. -;; Read a the characters of a decimal integer and returns its -;; value. -(defun get-decimal-number-token (buf) - (tagbody lp - (suffix (|currentChar|) buf) - (let ((next-chr (|nextChar|))) - (cond ((digitp next-chr) - (|advanceChar!|) - (go lp))))) - (parse-integer buf)) - -;; Subroutine of GET-NUMBER-TOKEN-MAYBE-WITH-RADIX. -;; We just read the radix of an integer number; parse the -;; digits forming that integer token. -(defun get-integer-in-radix (buf r) - (unless (> r 1) - (spad_syntax_error)) - (let ((mark (1+ (size buf)))) - (tagbody lp - (suffix (|currentChar|) buf) - (let* ((nxt (|nextChar|)) - (dig (|rdigit?| nxt))) - (when dig - (unless (< dig r) - (spad_syntax_error)) - (|advanceChar!|) - (go lp)))) - (parse-integer buf :start mark :radix r))) - -(defun is-radix-char (c) - (or (eql c #\r) - (eql c #\R))) - -;; Parse an integer token, written either implicitly in decimal form, -;; or explicitly specified radix. -(defun get-spad-integer-token (token) - (let* ((buf (make-adjustable-string 0)) - (val (get-decimal-number-token buf))) - (|advanceChar!|) - (when (is-radix-char (|currentChar|)) - (setq val (get-integer-in-radix buf val)) - (|advanceChar!|)) - (|tokenInstall| val 'number token (size buf)))) |