1 21 22 package org.armedbear.j; 23 24 public final class TclSyntaxIterator extends DefaultSyntaxIterator 27 { 28 private static final int STATE_NEUTRAL = 0; 29 private static final int STATE_SINGLEQUOTE = 1; 30 private static final int STATE_DOUBLEQUOTE = 2; 31 32 public TclSyntaxIterator(Position pos) 33 { 34 super(pos); 35 } 36 37 public char[] hideSyntacticWhitespace(Line line) 38 { 39 return hideSyntacticWhitespace(line.getText()); 40 } 41 42 public char[] hideSyntacticWhitespace(String s) 45 { 46 final char[] chars = s.toCharArray(); 47 int state = STATE_NEUTRAL; 48 final int length = chars.length; 49 for (int i = 0; i < length; i++) { 50 char c = chars[i]; 51 if (c == '\\' && i < length-1) { 52 chars[i++] = ' '; 54 chars[i] = ' '; 55 continue; 56 } 57 if (state == STATE_SINGLEQUOTE) { 58 chars[i] = ' '; 59 if (c == '\'') 60 state = STATE_NEUTRAL; 61 continue; 62 } 63 if (state == STATE_DOUBLEQUOTE) { 64 chars[i] = ' '; 65 if (c == '"') 66 state = STATE_NEUTRAL; 67 continue; 68 } 69 if (c == '\'') { 71 chars[i] = ' '; 72 state = STATE_SINGLEQUOTE; 73 continue; 74 } 75 if (c == '"') { 76 chars[i] = ' '; 77 state = STATE_DOUBLEQUOTE; 78 continue; 79 } 80 if (c == '/') { 81 if (i < length-1) { 82 if (chars[i+1] == '/') { 83 for (int j = i; j < length; j++) 85 chars[j] = ' '; 86 return chars; 87 } 88 } 89 } 90 } 91 return chars; 92 } 93 } 94 | Popular Tags |