int step_cmd(Emulator *emul) { int flag = 0, r = 1; char *token = NULL; char usage[] = "Usage: step\n\tstep into"; // Analyse syntaxique r = get_last_token(emul->inter, &token); if(r == 0) // step into { if(strcmp(token, "into") == 0) flag = INTO; else { printf("%s\n", usage); return 11; } } else if(r != 1) // ni step ni step into { printf("%s\n", usage); return r; } step(flag, emul); return 0; }
void Parser::parse(const char *command) { // Calling Parse state machine in C with global values // Must be locked to avoid concurrent access // FIXME : LOCK if (getParseTrace() == true) { ParserSingleInstance::enableParseTrace(); } else { ParserSingleInstance::disableParseTrace(); } ParserSingleInstance::parse(command); this->setExitStatus(ParserSingleInstance::getExitStatus()); this->setControlStatus(ParserSingleInstance::getControlStatus()); if (getExitStatus() == Parser::Succeded) { this->setTree(ParserSingleInstance::getTree()); } else { this->setErrorMessage(ParserSingleInstance::getErrorMessage()); } if (getControlStatus() == AllControlClosed && get_last_token() != YYEOF) { //set parser last token to EOF scan_throw(YYEOF); } if (getExitStatus() != Parser::Succeded) { delete ParserSingleInstance::getTree(); ParserSingleInstance::setTree(nullptr); } // FIXME : UNLOCK }