int main(int argc, char ** argv) { FILE *input; if (argc > 1) { input = fopen(argv[1], "r"); if (!input) { fprintf(stderr, "Error opening input file.\n"); exit(1); } } else input = stdin; /* The default entry point is used. For other options see Parser.H */ Program *parse_tree = pProgram(input); if (parse_tree) { printf("\nParse Succesful!\n"); printf("\n[Abstract Syntax]\n"); ShowAbsyn *s = new ShowAbsyn(); printf("%s\n\n", s->show(parse_tree)); printf("[Linearized Tree]\n"); PrintAbsyn *p = new PrintAbsyn(); printf("%s\n\n", p->print(parse_tree)); return 0; } return 1; }
pProgram ProgramManager::get(const std::string& name) { for (auto& it : mProgramObjects) { if (it->mName == name) { return it->mProgram; } } FLOG_DEBUG("Program %s not found in manager. Returning empty pointer", name.c_str()); return pProgram(); }
int main(int argc, char ** argv) { FILE *input; FILE *output; Program parse_tree; char *str; char *fileName; if (argc > 1) { input = fopen(argv[1], "r"); if (!input) { fprintf(stderr, "Error opening input file.\n"); exit(1); } } else input = stdin; /* The default entry point is used. For other options see Parser.h */ parse_tree = pProgram(input); if (parse_tree) { printf("\nParse Succesful!\n"); printf("\n[Abstract Syntax]\n"); printf("%s\n\n", showProgram(parse_tree)); printf("Parsing AST for doge now...\n"); visitProgram(parse_tree); printf("Done!\n"); str = printProgram(parse_tree); if (input != stdin) { fileName = strdup(argv[1]); fileName = realloc(fileName, strlen(fileName) + 3); strcat(fileName, ".c"); output = fopen(fileName, "w"); fwrite(str, strlen(str), 1, output); printf("Wrote program to %s\n", fileName); free(fileName); } else { printf("[Linearized Tree]\n"); printf("%s\n\n", str); } if (str) free(str); return 0; } return 1; }
pProgram ProgramManager::add( const std::string& name, const std::vector<pShader>& shaders, GLboolean skipLinking) { for (auto& it : mProgramObjects) { if (it->mName == name) { return it->mProgram; } } ProgramObject* ptr = new ProgramObject(); ptr->mProgram = pProgram(new core::Program(shaders, skipLinking)); ptr->mName = name; mProgramObjects.push_back(puProgramObject(ptr)); return mProgramObjects.back()->mProgram; }
Program* Parser::Parse(FILE *inp) { return pProgram(inp); }