2014-06-17 2 views
3

lecture this C de la grammaire BNF Je ne comprends pas quelle partie ceci:Est-ce que les arguments d'appel de fonction sont définis dans la grammaire BNF?

| postfix_exp '(' argument_exp_list ')' 
| postfix_exp '('   ')' 

ne gère également un appel de fonction comme id(exp, exp) et id(). Est-ce la seule combinaison valide en syntaxe C ou il me manque quelque chose? si oui, pourquoi pas seulement:

| id '(' argument_exp_list ')' 
| id '('   ')' 
+3

Vous pouvez appeler une fonction via un pointeur de fonction, qui peut être une expression arbitraire complexe et non seulement 'id'. –

Répondre

4

La grammaire BNF id '(' argument_exp_list ')' est en fait équivalent à postfix_exp '(' argument_exp_list ')'postfix_exp peut être un primary_exp comme indiqué sur sa valeur 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 est:

primary_exp  : id 
       | const 
       | string 
       | '(' exp ')' 
Questions connexes