Changeset 8474


Ignore:
Timestamp:
02/05/05 19:53:44 (17 years ago)
Author:
piso
Message:

isInvalid(), checkInvalid()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/Readtable.java

    r8340 r8474  
    33 *
    44 * Copyright (C) 2003-2005 Peter Graves
    5  * $Id: Readtable.java,v 1.37 2005-01-11 17:45:35 piso Exp $
     5 * $Id: Readtable.java,v 1.38 2005-02-05 19:53:44 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    185185        return ATTR_CONSTITUENT;
    186186    }
    187    
     187
     188    public boolean isInvalid(char c)
     189    {
     190        switch (c) {
     191            case 8:
     192            case 9:
     193            case 10:
     194            case 12:
     195            case 13:
     196            case 32:
     197            case 127:
     198                return true;
     199            default:
     200                return false;
     201        }
     202    }
     203
    188204    public void checkInvalid(char c) throws ConditionThrowable
    189205    {
    190         if (c < CHAR_MAX && attributes[c] == ATTR_INVALID)
    191             signal(new ReaderError("Invalid character"));
     206        // "... no mechanism is provided for changing the constituent trait of
     207        // a character." (2.1.4.2)
     208        if (isInvalid(c)) {
     209            String name = LispCharacter.charToName(c);
     210            StringBuffer sb = new StringBuffer("Invalid character");
     211            if (name != null) {
     212                sb.append(" #\\");
     213                sb.append(name);
     214            }
     215            signal(new ReaderError(sb.toString()));
     216        }
    192217    }
    193218
Note: See TracChangeset for help on using the changeset viewer.