2013-11-21 75 views
1

我需要編寫一個多進程前綴表達式解析器和評估器。計算前綴表達式unix

給定一個前綴表達式,如標準輸入 上的以下內容,例如:(+ (* (+ 2 4) 5) (- (- 6 7) 8))

程序應讀取分叉進程中的每個子表達式。

父進程必須等到子進程讀完子表達式後才繼續。

使用scanf或printf函數並不違法。

+2

你到目前爲止嘗試過什麼?什麼工作?什麼都沒有奏效?哦,你可能想閱讀[Stack Overflow問題清單](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist)。您可能還想了解[SSCCE](http://sscce.org/)是什麼。 –

+4

告訴你的教授,或者任何給你這個任務的人,這是非常不合理的。沒有人會分叉進程來讀取一個「子表達式」,在你的例子中,它可能只有一個十進制數字。真的很奇怪,即使是作業。 – unwind

+0

發送你的教授這張照片http://www.dumpaday.com/wp-content/uploads/2013/01/dog-chews-up-computer-funny-pictures1.jpg – nonsensickle

回答

0

完全沒用,但也許很有趣。

  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; 
}