阅读this C的BNF语法我不明白这个部分:
| postfix_exp '(' argument_exp_list ')'
| postfix_exp '(' ')'
还会处理id(exp, exp)
和id()
等函数调用。这是C语法中有效的单一组合还是我遗漏了什么?如果是这样,为什么不呢:
| id '(' argument_exp_list ')'
| id '(' ')'
答案 0 :(得分:4)
BNF语法id '(' argument_exp_list ')'
实际上相当于postfix_exp '(' argument_exp_list ')'
其中postfix_exp
可以是primary_exp
,如其l值所述。
postfix_exp : primary_exp
| postfix_exp '[' exp ']'
| postfix_exp '(' argument_exp_list ')'
| postfix_exp '(' ')'
| postfix_exp '.' id
| postfix_exp '->' id
| postfix_exp '++'
| postfix_exp '--'
其中primary_exp
是:
primary_exp : id
| const
| string
| '(' exp ')'