Changeset 4050


Ignore:
Timestamp:
Dec 17, 2008, 9:06:36 PM (12 years ago)
Author:
orlov
Message:
  • Merged changes from r4047 to trunk.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • to-imperative/trunk/java/java/org/refal/plus/Expr.java

    r4040 r4050  
    333333    }
    334334
     335    private static boolean isIdentifierStartChar (char c) {
     336        return ('A' <= c && c <= 'Z') || c == '_';
     337    }
     338
     339    private static boolean isIdentifierInternalChar (char c) {
     340        return isIdentifierStartChar(c) || ('a' <= c && c <= 'z') || ('0' <= c && c <= '9') || (c == '.');
     341    }
     342
     343    private static boolean isIdentifier (String str) {
     344        if (str.length() == 0)
     345            return false;
     346        if (!isIdentifierStartChar(str.charAt(0)))
     347            return false;
     348        for (int i = 1, l = str.length(); i < l; i++)
     349            if (!isIdentifierInternalChar(str.charAt(i)))
     350                return false;
     351        return true;
     352    }
     353
     354    private static void convertCharacter (StringBuffer strBuf, char c) {
     355        switch (c) {
     356            case '\t': strBuf.append("\\t"); break;
     357            case '\r': strBuf.append("\\r"); break;
     358            case '\n': strBuf.append("\\n"); break;
     359            case '\\': strBuf.append("\\\\"); break;
     360            case '\'': strBuf.append("\\\'"); break;
     361            case '\"': strBuf.append("\\\""); break;
     362            default: strBuf.append(c); break;
     363        }
     364    }
     365
    335366    public String toString () {
    336367        StringBuffer strBuf = new StringBuffer();
     
    340371
    341372    private void toString (StringBuffer strBuf) {
    342         boolean chars = false;
    343         boolean isNotFirst = false;
     373        boolean chars = false, isNotFirst = false;
    344374        for (Comparable<?> term : this) {
    345375            if (term instanceof Character) {
     
    351381                    isNotFirst = true;
    352382                }
    353                 switch (((Character) term).charValue()) {
    354                     case '\t':
    355                         strBuf.append("\\t");
    356                         continue;
    357                     case '\r':
    358                         strBuf.append("\\r");
    359                         continue;
    360                     case '\n':
    361                         strBuf.append("\\n");
    362                         continue;
    363                     case '\\':
    364                         strBuf.append("\\\\");
    365                         continue;
    366                     case '\'':
    367                         strBuf.append("\\\'");
    368                         continue;
    369                     case '\"':
    370                         strBuf.append("\\\"");
    371                         continue;
    372                     default:
    373                         strBuf.append(term);
    374                         continue;
    375                 }
     383                convertCharacter(strBuf, (Character) term);
     384                continue;
    376385            }
    377386            if (chars) {
     
    391400                else {
    392401                    strBuf.append('"');
    393                     for (int i = 0; i < w.length(); i++) {
    394                         char c = w.charAt(i);
    395                         switch (c) {
    396                             case '\t': strBuf.append("\\t"); continue;
    397                             case '\r': strBuf.append("\\r"); continue;
    398                             case '\n': strBuf.append("\\n"); continue;
    399                             case '\\': strBuf.append("\\\\"); continue;
    400                             case '\'': strBuf.append("\\\'"); continue;
    401                             case '\"': strBuf.append("\\\""); continue;
    402                             default: strBuf.append(c); continue;
    403                         }
    404                     }
     402                    for (int i = 0; i < w.length(); i++)
     403                        convertCharacter(strBuf, w.charAt(i));
    405404                    strBuf.append('"');
    406405                }
     
    425424                ((Expr) term).toChars(strBuf);
    426425                strBuf.append(')');
    427             } else if (term instanceof Reference && ((Reference) term).object instanceof org.refal.plus.objects.String)
    428                 ((org.refal.plus.objects.String) ((Reference) term).object).toExpr().toChars(strBuf);
     426            } else if (Symbol.isObject(term) instanceof org.refal.plus.objects.String)
     427                ((org.refal.plus.objects.String) Symbol.isObject(term)).toExpr().toChars(strBuf);
    429428            else
    430429                strBuf.append(term.toString());
    431     }
    432 
    433     private static boolean isIdentifier (String str) {
    434         if (str.length() == 0)
    435             return false;
    436         char c = str.charAt(0);
    437         if (!Character.isUpperCase(c) && c != '_')
    438             return false;
    439         for (int i = 1; i < str.length(); i++) {
    440             c = str.charAt(i);
    441             if (!Character.isLetterOrDigit(c) && c != '_' && c != '.')
    442                 return false;
    443         }
    444         return true;
    445430    }
    446431
Note: See TracChangeset for help on using the changeset viewer.