new Command.Pwd(),
new Command.Cd(),
new Command.Rm(),
+ new Command.Set(),
new Command.Help()
};
}
String line;
String buffer = "";
+ int countBraceOpen = 0, countBraceClose = 0;
+ int countBracketOpen = 0, countBracketClose = 0;
+ int countSQBracketOpen = 0, countSQBracketClose = 0;
while ((line = in.readLine()) != null) {
if (line.length() > 0) {
if (line.startsWith("exit")) return;
- if (line.charAt(line.length() - 1) == '\\') {
- buffer += line.substring(0, line.length() - 1);
- out.print('>');
- out.flush(); continue;
+
+ for (int i=0; i < line.length(); i++) {
+ switch (line.charAt(i)) {
+ case '{': countBraceOpen++; break;
+ case '}': countBraceClose++; break;
+ case '(': countBracketOpen++; break;
+ case ')': countBracketClose++; break;
+ case '[': countSQBracketOpen++; break;
+ case ']': countSQBracketClose++; break;
+ }
}
+ boolean nonendchar = line.charAt(line.length() - 1) == '\\';
+ if (nonendchar) line = line.substring(0, line.length() - 1);
buffer += line;
+
+ if (nonendchar ||
+ countBracketOpen != countBracketClose ||
+ countBraceOpen != countBraceClose ||
+ countSQBracketOpen != countSQBracketClose) {
+ out.print('>');
+ out.flush(); continue;
+ }
}
if (buffer.length() > 0) {