1
我需要編寫一個多進程前綴表達式解析器和評估器。計算前綴表達式unix
給定一個前綴表達式,如標準輸入 上的以下內容,例如:(+ (* (+ 2 4) 5) (- (- 6 7) 8))
。
程序應讀取分叉進程中的每個子表達式。
父進程必須等到子進程讀完子表達式後才繼續。
使用scanf或printf函數並不違法。
我需要編寫一個多進程前綴表達式解析器和評估器。計算前綴表達式unix
給定一個前綴表達式,如標準輸入 上的以下內容,例如:(+ (* (+ 2 4) 5) (- (- 6 7) 8))
。
程序應讀取分叉進程中的每個子表達式。
父進程必須等到子進程讀完子表達式後才繼續。
使用scanf或printf函數並不違法。
完全沒用,但也許很有趣。
作爲一個提示,我告訴你如何在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;
}
你到目前爲止嘗試過什麼?什麼工作?什麼都沒有奏效?哦,你可能想閱讀[Stack Overflow問題清單](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist)。您可能還想了解[SSCCE](http://sscce.org/)是什麼。 –
告訴你的教授,或者任何給你這個任務的人,這是非常不合理的。沒有人會分叉進程來讀取一個「子表達式」,在你的例子中,它可能只有一個十進制數字。真的很奇怪,即使是作業。 – unwind
發送你的教授這張照片http://www.dumpaday.com/wp-content/uploads/2013/01/dog-chews-up-computer-funny-pictures1.jpg – nonsensickle