Changeset 4047
- Timestamp:
- Dec 17, 2008, 6:11:39 PM (12 years ago)
- Location:
- to-imperative
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
to-imperative/branches/java_expr_without_holes/Expr.java
r4017 r4047 296 296 } 297 297 298 private static boolean isIdentifierStartChar (char c) { 299 return ('A' <= c && c <= 'Z') || c == '_'; 300 } 301 302 private static boolean isIdentifierInternalChar (char c) { 303 return isIdentifierStartChar(c) || ('a' <= c && c <= 'z') || ('0' <= c && c <= '9') || (c == '.'); 304 } 305 306 private static boolean isIdentifier (String str) { 307 if (str.length() == 0) 308 return false; 309 if (!isIdentifierStartChar(str.charAt(0))) 310 return false; 311 for (int i = 1, l = str.length(); i < l; i++) 312 if (!isIdentifierInternalChar(str.charAt(i))) 313 return false; 314 return true; 315 } 316 317 private static void convertCharacter (StringBuffer strBuf, char c) { 318 switch (c) { 319 case '\t': strBuf.append("\\t"); break; 320 case '\r': strBuf.append("\\r"); break; 321 case '\n': strBuf.append("\\n"); break; 322 case '\\': strBuf.append("\\\\"); break; 323 case '\'': strBuf.append("\\\'"); break; 324 case '\"': strBuf.append("\\\""); break; 325 default: strBuf.append(c); break; 326 } 327 } 328 298 329 public String toString () { 299 330 StringBuffer strBuf = new StringBuffer(); … … 302 333 } 303 334 304 private void toString (StringBuffer strBuf) { 305 boolean chars = false; 306 boolean isNotFirst = false; 335 private void toString (StringBuffer strBuf) { 336 boolean chars = false, isNotFirst = false; 307 337 for (Comparable<?> term : this) { 308 338 if (term instanceof Character) { … … 310 340 if (isNotFirst) 311 341 strBuf.append(' '); 312 strBuf.append('\''); 342 strBuf.append('\''); 313 343 chars = true; 314 344 isNotFirst = true; 315 345 } 316 switch (((Character) term).charValue()) { 317 case '\t': strBuf.append("\\t"); continue; 318 case '\r': strBuf.append("\\r"); continue; 319 case '\n': strBuf.append("\\n"); continue; 320 case '\\': strBuf.append("\\\\"); continue; 321 case '\'': strBuf.append("\\\'"); continue; 322 case '\"': strBuf.append("\\\""); continue; 323 default: strBuf.append(term); continue; 324 } 346 convertCharacter(strBuf, (Character) term); 347 continue; 325 348 } 326 349 if (chars) { … … 340 363 else { 341 364 strBuf.append('"'); 342 for (int i = 0; i < w.length(); i++) { 343 char c = w.charAt(i); 344 switch (c) { 345 case '\t': strBuf.append("\\t"); continue; 346 case '\r': strBuf.append("\\r"); continue; 347 case '\n': strBuf.append("\\n"); continue; 348 case '\\': strBuf.append("\\\\"); continue; 349 case '\'': strBuf.append("\\\'"); continue; 350 case '\"': strBuf.append("\\\""); continue; 351 default: strBuf.append(c); continue; 352 } 353 } 365 for (int i = 0; i < w.length(); i++) 366 convertCharacter(strBuf, w.charAt(i)); 354 367 strBuf.append('"'); 355 368 } … … 374 387 ((Expr) term).toChars(strBuf); 375 388 strBuf.append(')'); 376 } else if ( term instanceof Reference && ((Reference) term).objectinstanceof org.refal.plus.objects.String)377 ((org.refal.plus.objects.String) ((Reference) term).object).toExpr().toChars(strBuf);389 } else if (Symbol.isObject(term) instanceof org.refal.plus.objects.String) 390 ((org.refal.plus.objects.String) Symbol.isObject(term)).toExpr().toChars(strBuf); 378 391 else 379 392 strBuf.append(term.toString()); 380 }381 382 private static boolean isIdentifier (String str) {383 if (str.length() == 0)384 return false;385 char c = str.charAt(0);386 if (!Character.isUpperCase(c) && c != '_')387 return false;388 for (int i = 1; i < str.length(); i++) {389 c = str.charAt(i);390 if (!Character.isLetterOrDigit(c) && c != '_' && c != '.')391 return false;392 }393 return true;394 393 } 395 394 … … 484 483 } 485 484 } 486 485 487 486 public static Concatenator getConcatenator () { 488 487 return new ListConcatenator(); … … 492 491 return new InplaceConcatenator(initialCapacity); 493 492 } 494 493 495 494 public interface Concatenator { 496 495 public Concatenator toRight (Comparable<?> obj); … … 512 511 } 513 512 } 514 513 515 514 public ListConcatenator () { 516 515 list = new ArrayList<Object>(16); … … 525 524 public ListConcatenator toRight (Expr expr) { 526 525 if (expr.length == 0) 527 return this; 526 return this; 528 527 list.add(expr); 529 528 length += expr.length; … … 550 549 private Comparable<?>[] terms; 551 550 private int length; 552 551 553 552 public InplaceConcatenator (int initialCapacity) { 554 553 assert initialCapacity >= 0; … … 571 570 assert expr != null; 572 571 if (expr.length == 0) 573 return this; 572 return this; 574 573 int newLength = length + expr.length; 575 574 if (terms.length < newLength) { -
to-imperative/trunk/java/java/org/refal/plus/RefalException.java
r3744 r4047 23 23 @Override 24 24 public String toString () { 25 return expr.to String();25 return expr.toChars(); 26 26 } 27 27 }
Note: See TracChangeset
for help on using the changeset viewer.