我需要编写一个多进程前缀表达式解析器和赋值器。
在标准输入上给出前缀表达式,例如以下内容
例如:(+ (* (+ 2 4) 5) (- (- 6 7) 8))
。
程序应该在分叉的过程中读取每个子表达式。
父进程必须等到子进程读完其子表达式后才能继续执行。
使用scanf或printf函数并不违法。
答案 0 :(得分:0)
完全没用,但也许很有趣。
作为提示,我将向您展示如何在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;
}