0

我必须制作一个计算器,并且需要为此使用解析器。我的解析器输入是 std::istream* input ,我需要将计算器应用程序中的 QString 转换为解析器的输入,以便它进行数学运算并返回解决方案。你知道如何转换吗?感谢您的回答!:) 如果您想要解析器的完整代码,请点击此处 -> https://www.stroustrup.com/dc_except.c

这就是我通过控制台输入输入的主要地方

    #include <strstream.h>

int main(int argc, char* argv[])
{
    using namespace Driver;

    switch (argc) {
    case 1:          // read from standard input
        input = &cin;
        break;
    case 2:          // read argument string
        input = new istrstream(argv[1],strlen(argv[1]));
        break;
    default:
        cerr << "too many arguments\n";
        return 1;
    }

    // insert pre-defined names:
    Symbol_table::table["pi"] = 3.1415926535897932385;
    Symbol_table::table["e"]  = 2.7182818284590452354;

    while (*input) {
        cout<<"new expression:\n";
        try {
            Lexer::get_token();
            if (Lexer::curr_tok == Lexer::END) break;
            if (Lexer::curr_tok == Lexer::PRINT) continue;
            cout << Parser::expr(false) << '\n';
        }
        catch(Error::Zero_divide) {
            cerr << "attempt to divide by zero\n";
            skip();
        }
        catch(Error::Syntax_error e) {
            cerr << "syntax error:" << e.p << "\n";
            skip();
        }
    }

    if (input != &std::cin) delete input;
    return no_of_errors;
}
4

0 回答 0