阅读这个C语言的BNF语法,我不理解其中的哪一部分:
| postfix_exp '(' argument_exp_list ')'
| postfix_exp '(' ')'
handle函数是否还支持像id(exp, exp)
和id()
这样的函数调用?在C语法中,这是唯一有效的组合吗?如果不是,为什么不只是:
| id '(' argument_exp_list ')'
| id '(' ')'
阅读这个C语言的BNF语法,我不理解其中的哪一部分:
| postfix_exp '(' argument_exp_list ')'
| postfix_exp '(' ')'
handle函数是否还支持像id(exp, exp)
和id()
这样的函数调用?在C语法中,这是唯一有效的组合吗?如果不是,为什么不只是:
| id '(' argument_exp_list ')'
| id '(' ')'
id '(' argument_exp_list ')'
这种 BNF 语法实际上等价于 postfix_exp '(' argument_exp_list ')'
,其中postfix_exp
可以是其左值所述的primary_exp
。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 ')'