c-计算前缀表达式unix



我需要编写一个多进程前缀表达式解析器和计算器。

给定前缀表达式,例如标准输入上的以下表达式例如:CCD_ 1。

程序应该读取分叉进程中的每个子表达式。

父进程必须等待,直到子进程完成读取其子表达式,然后再继续。

使用scanf或printf函数并不违法。

完全没用,但可能很有趣。

  1. 你只需要在一个过程中开始做这件事
  2. 再加上多进程的东西

作为提示,我将向您展示如何在C++中做到这一点。你必须自己把它翻译成C:

int read_sequence()
{
    int y;
    if ((cin>>ws).peek() == '('){
        cin.ignore( 1 );
        char op = cin.get();
        y = read_sequence();
        while ((cin>>ws).peek() != ')'){
            int b = read_sequence();
            y = op == '+' ? y + b
                : op == '-' ? y - b
                : op == '*' ? y*b
                : y / b;
        }
        cin.ignore( 1 );
    } else {
        cin >> y;
    }
    return y;
}

最新更新