Changeset 213


Ignore:
Timestamp:
11/06/02 17:11:43 (21 years ago)
Author:
piso
Message:

Skip over #|...|# comments.

File:
1 edited

Legend:

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

    r184 r213  
    6060                continue;
    6161            }
     62            if (c == '#' && pos.lookingAt("#|")) {
     63                pos.skip(2);
     64                skipComment(pos);
     65                continue;
     66            }
    6267            if (c == '\"') {
    6368                pos.skipQuote();
     
    8590                    state = NEUTRAL;
    8691                    continue;
    87                 } 
     92                }
    8893                if (state == OPEN_PAREN) {
    8994                    String preceding =
     
    108113        buffer.setTags(tags);
    109114    }
    110    
     115
    111116    private static final String[] tokens = new String[] {
    112117        "defun", "defvar", "defmacro", "defcustom", "defgroup", "defsubst"
    113118    };
    114    
     119
    115120    // pos points to first char after token.
    116121    private boolean isDefinitionStart(String token, Position pos)
     
    119124            if (Utilities.isOneOf(token, tokens))
    120125                return true;
    121        
     126
    122127        return false;
    123128    }
     
    135140        return sb.toString();
    136141    }
    137    
     142
    138143    // Advances pos past token.
    139144    private void skipToken(Position pos)
     
    144149        }
    145150    }
     151
     152    private void skipComment(Position pos)
     153    {
     154        while (!pos.atEnd()) {
     155            char c = pos.getChar();
     156            if (c == '\\') {
     157                // Escape.
     158                if (pos.getOffset() < pos.getLineLength()-1)
     159                    pos.skip(2);
     160                else {
     161                    Line nextLine = pos.getNextLine();
     162                    if (nextLine == null)
     163                        break;
     164                    pos.moveTo(nextLine, 0);
     165                }
     166                continue;
     167            }
     168            if (c == '|' && pos.lookingAt("|#")) {
     169                pos.skip(2);
     170                return;
     171            }
     172            pos.next();
     173        }
     174    }
    146175}
Note: See TracChangeset for help on using the changeset viewer.