It’s important (critical, actually) that I be able to compile your source code so I test and grade your projects. To that end, here are some requests and advice. - -- - - -- - - - -- - - -- - - If you’re developing in Java place everything in a directory structure rooted at “src” (or “source” or whatever you like) and name the entry point Compiler.java. That means Compiler.java will contain static void main() { } and thus be the entry point. Test your config with the compilation command > javac compiler and the run command > java compiler Take input as a command line parameter, e.g., > java compiler exhaustiveTests.txt and write output to standard out. If you want to use a more creative name than “compiler” that’s fine -- encouraged even -- as long as it’s clear to me that it’s the thing that I’m supposed to compile/run. DO NOT name the entry point ‘Lexer' or ‘Parser' or any other phase, as they are all OF your compiler but not the compiler itself. - -- - - -- - - - -- - - -- - - If you’re developing in C or C++ your config should be much like the Java config except that I would appreciate a makefile or a shell script to compile. Be sure that you use g++ (since that’s what I’m going to use) and that you specify the C++ standard. I suggest C++17. In that case, the compile command would begin with > g++ -std=c++17 ... As with Java, you must take input via a command line parameter and write output to standard out. - -- - - -- - - - -- - - -- - - If you’re developing in TypeScript put the .ts TypeScript source files in a directory structure rooted at “source” or “src” or something similar. Put the .js JavaScript files (the output of the TypeScript compiler) in a directory called “distribution” or “dist” or something similar. You must keep the .ts and .js files separate. Be sure to place a tsconfig.json file in the source root so that your project can be compiled with just the “tsc” command. Here’s an example of tsconfig.json: { "compilerOptions": { "target" : "ES2017", "rootDir" : "source", "outDir" : "distrib", "sourceMap" : true, "extendedDiagnostics" : true }, "include": [ "source/**/*" ], } If you’re new to TypeScript you might find it useful to look at project 0 in my Operating Systems class. Check it out at https://github.com/AlanClasses/TSOS-2019 If you’re building a browser-based app (which is my preference if you use TypeScript) make sure that you refer to the “dist” directory when you reference your JavaScript files in index.html. Input and output should be done via text areas in the GUI. Here’s an ugly example I wrote a long time ago: https://www.labouseur.com/courses/compilers/compilers/alan/ If you’re building a command line app with Node, make sure that you take input via a command line parameter and write output to standard out. - -- - - -- - - - -- - - -- - -