-
Notifications
You must be signed in to change notification settings - Fork 0
2bjake/myPA5
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
README file for Programming Assignment 5 (C++ edition) ======================================================= Your directory should now contain the following files: Makefile -> [course dir]/assignments/PA5/Makefile README ast-lex.cc -> [course dir]/src/PA5/ast-lex.cc ast-parse.cc -> [course dir]/src/PA5/ast-parse.cc cgen-phase.cc -> [course dir]/src/PA5/cgen-phase.cc cgen.cc cgen.h cgen_supp.cc cool-tree.cc -> [course dir]/src/PA5/cool-tree.cc cool-tree.handcode.h dumptype.cc -> [course dir]/src/PA5/dumptype.cc emit.h example.cl handle_flags.cc -> [course dir]/src/PA5/handle_flags.cc mycoolc -> [course dir]/src/PA5/mycoolc* stringtab.cc -> [course dir]/src/PA5/stringtab.cc tree.cc -> [course dir]/src/PA5/tree.cc utilities.cc -> [course dir]/src/PA5/utilities.cc *.d The include (.h) files for this assignment can be found in [course dir]/include/PA5 The Makefile contains targets for compiling and running your program, as well as handing it in. DO NOT MODIFY. In example.cl you should write a correct Cool program which tests as many aspects of the code generator as possible. It should pass your code generator, and running spim on the generated output should run the program correctly. cgen.cc is the skeleton file for the code generator. This skeleton is much larger than the ones for previous assignments. The skeleton provides three components of the code generator: - functions to build the inheritance graph; (we supply this in case you didn't get this working for PA4) - functions to emit global data and constants; - functions to emit spim instructions; (we supply these last two to save you some tedious coding) You should work to understand this code, and it will help you write the rest of the code generator. cgen.h is the header file for the code generator. Feel free to add anything you need. cgen_supp.cc is general support code for the code generator. You can add functions as you see fit, but do not modify the 3 functions: o byte_mode o ascii_mode o emit_string_constant emit.h defines a bunch of macros which should come in handy when you actually want to emit code. Feel free to change anything here to suit your needs. cgen-phase.cc supplies the driver for the compiler. You should not modify this code. The script mycoolc can pass any of the standard flags to the code generator; for this assignment, -c (code generator debug) may be useful as it sets a global variable cgen_debug to true (1). If you want your code generator to print debug information when the option is set, write your debug code in the following format: if (cgen_debug) { ... } symtab.h contains a symbol table implementation. You may modify this file if you'd like. To do so, remove the link and copy `[course dir]/include/PA5/symtab.h' to your local directory. cool.h contains definitions that are used by almost all parts of the compiler. DO NOT MODIFY. tree.h contains the base class `tree_node' of the AST nodes. cool-tree.cc, cool-tree.h, and cool-tree.handcode.h contain the declarations and definitions of code generation AST nodes. You may add fields as you wish, but you shouldn't modify any of the methods already there except `code', which you may modify or remove as you wish. Note that cool-tree.handcode.h is different from the same file in PA4---this file contains function definitions needed for the cgen.cc skeleton. You may modify cool-tree.h or cool-tree.handcode.h, but don't modify cool-tree.cc. Place all method definitions in cgen.cc stringtab.h contains functions to manipulate the string table. DO NOT MODIFY. dumptype.cc contains functions for printing out an abstract syntax tree. DO NOT MODIFY. *.d dependency files, generated automatically by the makefile. Instructions ------------ To compile your compiler and code generator type: % make cgen To test your compiler, type: % ./mycoolc [-o output filename] <file1.cl> <file2.cl> ... This command parses all the cool files given on the command line, passes them through the semantic checker, and then hands the program AST to your code generator. To run your compiler on the file example.cl, type: % make dotest To run the produced code: % spim -file file1.s /* or the output filename you chose */ Instructions for turning in the assignment will be posted on the course web page. GOOD LUCK!
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published