计算前缀表达式unix

时间:2013-11-21 10:57:50

标签: c unix prefix

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

在标准输入上给出前缀表达式,例如以下内容 例如:(+ (* (+ 2 4) 5) (- (- 6 7) 8))

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

父进程必须等到子进程读完其子表达式后才能继续执行。

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

1 个答案:

答案 0 :(得分:0)

完全没用,但也许很有趣。

  1. 您首先只在一个过程中执行此操作。
  2. 添加多进程内容。
  3. 作为提示,我将向您展示如何在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;
    }