/****************************************************************************** * Name: COS 126 Staff * NetID: cos126 * Precept: P00 * * Fall 15 Programming Exam 2, part 2 * Description: Client class that simulates a stack machine to create * languages. * * Started with code copied from Postfix.java in Lecture 12 slide 18: * http://www.cs.princeton.edu/courses/archive/fall15/cos126/lectures * /CS.12.StacksQueues.pdf * *****************************************************************************/ public class PostfixL { public static void main(String[] args) { Stack stack = new Stack(); while (!StdIn.isEmpty()) { String token = StdIn.readString(); if (token.equals("UNION")) stack.push(stack.pop().union(stack.pop())); else if (token.equals("CONCATENATE")) { Language top = stack.pop(); Language nextToTop = stack.pop(); stack.push(nextToTop.concatenate(top)); } else if (token.equals("CLOSURE")) { int n = StdIn.readInt(); stack.push(stack.pop().closure(n)); } else if (token.equals("PRINT")) { StdOut.println(stack.pop()); } else { // new language formed from string Language newLang = new Language(token); stack.push(newLang); } } } }