예제 #1
0
  public void processLine(String[] line) {
    switch (line[0]) {
      case "PRINT":
        print(line);
        break;

      case "FOR":
        forLoop(line);
        break;

      default:
        if (line[1].equals("=")) {
          assignment(line);

        } else if (line[1].equals("*=")) {
          doMath(line[0], line[2], "*");
        } else if (line[1].equals("-=")) {
          doMath(line[0], line[2], "-");
        } else if (line[1].equals("+=")) {
          if (!(vars.get(line[0]) instanceof String)) {
            doMath(line[0], line[2], "+");
          } else if (line[2].contains("\"")) {
            String s = line[2].substring(1);
            if (!line[3].equals(";")) {

              int i = 3;
              while (!line[i].contains("\"")) {
                s += " " + line[i];
                i++;
              }
              s += " " + line[i].substring(0, line[i].length() - 1);
              vars.put(line[0], vars.get(line[0]) + s);
            } else {
              vars.put(line[0], vars.get(line[0]) + s.substring(0, s.length() - 1));
            }
          } else {
            if (vars.get(line[2]) instanceof String) {
              vars.put(line[0], (String) vars.get(line[0]) + (String) vars.get(line[2]));
            } else {
              System.err.println("RUNTIME ERROR: LINE " + lineNum);
              System.exit(1);
            }
          }
        }
    }
  }