tree literals can now be declared/defined with empty children (see examples/tmp/tree.lrx). note in lrm that parsing does not allow [] to act as an empty tree, thus tree literals will always be full trees (a full tree means that each node is defined with ALL children or NO children, not anything in between).
potential solution for print situation (and any other functions we want to define as polymorphic. in symtab, print is declared as taking an empty list of arguments. in check.ml, when we see the user trying to call print, we redefine print with the types of arguments they are calling it with --> this means that when we actually generate code to run the program, we will treat print as a user defined program in some sense?? not exactly sure what the implications are, but looking at occamldebugger, the output is perfect (use examples/tmp/tree.lrx as a test case to understand how functions are generally displayed)
added built in functions degree/root to symtab and semantic analysis. I am not completely happy with the implementation. It seems a bit hacky
added warning message for comparing trees of different datatypes -- warning only displays when tree atom types are different, not when degrees are different
trying to understand intermediate.ml; sketched out our versions of ir_variables but not sure about some of the return types
added comment to symtab to clarify built in function decls; corrected error in tests
untested. framework for output/intermediate
no bool type in c
next function to write sketched out
fixed last comment addition to allow compile
Merge pull request #9 from dmb2168/chris_kira_semantic_analysis

Code Generation Baseline working