}
int main(int argc, const char *argv[]) {
+ bool bypass(false);
+ bool debug(false);
+
FILE *fout(stdout);
rl_bind_key('\t', rl_insert);
if (!extra) {
extra = true;
if (line[0] == '\\') {
+ std::string data(line + 1);
+ if (data == "bypass") {
+ bypass = !bypass;
+ fprintf(fout, "bypass == %s\n", bypass ? "true" : "false");
+ fflush(fout);
+ } else if (data == "debug") {
+ debug = !debug;
+ fprintf(fout, "debug == %s\n", debug ? "true" : "false");
+ fflush(fout);
+ }
add_history(line);
goto restart;
}
command += line;
free(line);
- CYDriver driver("");
- cy::parser parser(driver);
+ std::string code;
+
+ if (bypass)
+ code = command;
+ else {
+ CYDriver driver("");
+ cy::parser parser(driver);
+
+ driver.data_ = command.c_str();
+ driver.size_ = command.size();
+
+ if (parser.parse() != 0 || !driver.errors_.empty()) {
+ for (CYDriver::Errors::const_iterator i(driver.errors_.begin()); i != driver.errors_.end(); ++i) {
+ cy::position begin(i->location_.begin);
+ if (begin.line != lines.size() || begin.column - 1 != lines.back().size()) {
+ std::cerr << i->message_ << std::endl;
+ add_history(command.c_str());
+ goto restart;
+ }
+ }
- driver.data_ = command.c_str();
- driver.size_ = command.size();
+ driver.errors_.clear();
- if (parser.parse() != 0 || !driver.errors_.empty()) {
- for (CYDriver::Errors::const_iterator i(driver.errors_.begin()); i != driver.errors_.end(); ++i) {
- cy::position begin(i->location_.begin);
- if (begin.line != lines.size() || begin.column - 1 != lines.back().size()) {
- std::cerr << i->message_ << std::endl;
- add_history(command.c_str());
- goto restart;
- }
+ command += '\n';
+ prompt = "cy> ";
+ goto read;
}
- driver.errors_.clear();
+ if (driver.source_ == NULL)
+ goto restart;
- command += '\n';
- prompt = "cy> ";
- goto read;
+ std::ostringstream str;
+ driver.source_->Show(str);
+ code = str.str();
}
- if (driver.source_ == NULL)
- goto restart;
-
add_history(command.c_str());
- std::ostringstream str;
- driver.source_->Show(str);
-
- std::string code(str.str());
- std::cout << code << std::endl;
+ if (debug)
+ std::cout << code << std::endl;
_pooled