demjava -code -outputdir ./gen program Parsing program.cd... Building hashtable of classes... Expanding parameterized classes... Converting repetition classes... Filling in part names... Setting inheritance links... Parsing program.beh... Gathering methods... Expanding traversals... Expanding all... Expanding Get_Expected... Generating Java code to ./gen... Done. demjava -grammar -outputdir ./gen program Parsing program.cd... Building hashtable of classes... Expanding parameterized classes... Converting repetition classes... Filling in part names... Setting inheritance links... Generating grammar to ./gen/program.jack... Done. (cd ./gen; jack program.jack) Jack Version 0.5. Copyright (c) 1996 Sun Microsystems Inc. (type "jack" with no arguments for help) Reading from file program.jack . . . File "ParseError.java" does not exist. Will create one. File "Token.java" does not exist. Will create one. Parser generated successfully. CLASSPATH=./gen:$CLASSPATH javac -d ./gen gen/ASCII_UCodeESC_CharStream.java gen/AppendVisitor.java gen/Empty_SubClass.java gen/Expected.java gen/ExpectedVisitor.java gen/Expected_Wrapper.java gen/Expected_Wrapper_List.java gen/Last_SubClass.java gen/Main.java gen/Names.java gen/Nonempty_Expected_Wrapper_List.java gen/Nonempty_SubClass_List.java gen/ParseError.java gen/Parser.java gen/ParserConstants.java gen/ParserTokenManager.java gen/Root.java gen/SubClass.java gen/SubClass_List.java gen/Token.java CLASSPATH=./gen:$CLASSPATH java Main < program.input java.lang.ArrayIndexOutOfBoundsException: 0 at Main.main(Main.java:22)