-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMain.java
More file actions
45 lines (38 loc) · 1.27 KB
/
Main.java
File metadata and controls
45 lines (38 loc) · 1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package ru.itmo.simplecli;
import ru.itmo.simplecli.executor.*;
import java.util.*;
/**
* Entry point. Loop: read - parse - execute.
*/
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
EnvironmentManager environment = new EnvironmentManager();
Parser parser = new Parser(environment);
while (true) {
System.out.print(">> ");
String input = scanner.nextLine();
if (input.trim().equals("")) {
continue;
}
parser.parse(input);
while (parser.hasUnclosedQuote()) {
System.out.print("> ");
input = input + scanner.nextLine();
parser.parse(input);
}
var command = PipedCommandFactory.construct(parser.getResult(), environment);
if (command == null) {
System.out.println("Can't construct command");
continue;
}
command.execute(null);
if (command.getEndStatus() == Executable.EndStatus.EXIT) {
break;
}
if (command.getOutput() != null) {
System.out.println(command.getOutput());
}
}
}
}