package lectures.parsing_grammars;
import util.annotations.WebDocuments;
import java.util.Scanner;
import lectures.inheritance.abstract_classes.AFreshmanSeminar;
import lectures.inheritance.abstract_classes.ARegularCourse;
import lectures.inheritance.abstract_classes.Course;
import lectures.inheritance.abstract_classes.courselist.ACourseList;
import lectures.inheritance.abstract_classes.courselist.CourseList;
import lectures.main_consoleinput.Console;
@WebDocuments({"Lectures/ParsingGrammars.pptx", "Lectures/ParsingGrammars.pdf", "Videos/ParsingGrammars.avi"})
public class ACourseParser implements CourseParser {
Scanner scanner = new Scanner(System.in);
public CourseList parseCourseList() {
CourseList courseList = new ACourseList();
String nextToken;
while (true) {
nextToken = scanner.nextLine();
if (".".equals(nextToken)) {
break; } else {
courseList.addElement(parseCourse(nextToken));
}
}
return courseList;
}
public Course parseCourse (String firstToken) {
if ("FS".equals(firstToken.toUpperCase())) {
return parseFreshmanSeminar();
} else if ("RC".equals(firstToken.toUpperCase())) {
return parseRegularCourse();
} else {
return null; }
}
public Course parseFreshmanSeminar () {
String title = scanner.nextLine();
String dept = scanner.nextLine();
return new AFreshmanSeminar(title, dept);
}
public Course parseRegularCourse () {
String title = scanner.nextLine();
String dept = scanner.nextLine();
int number = Integer.parseInt(scanner.nextLine());
return new ARegularCourse (title, dept, number); }
}