int S(void)
{
if(lookahead == 'x') {
match('x');
return 1;
}
else if(lookahead == '(') {
int n;
match('(');
n = L();
match(')');
return n;
}
else {
syntax_error();
return 0; /* Keep compiler happy */
}
}
int L(void)
{
if(lookahead == 'x' || lookahead == '(') {
int a = S();
int b = R();
return a + b;
}
else {
syntax_error();
return 0; /* Keep compiler happy */
}
}
int R(void)
{
if(lookahead == ',') {
match(',');
return L();
}
else if(lookahead == ')') {
return 0;
}
else {
syntax_error();
return 0; /* Keep compiler happy */
}
}