title: function definition in BNF C grammar
body: <p>I'm reading <a href="https://cs.wmich.edu/~gupta/teaching/cs4850/sumII06/The%20syntax%20of%20C%20in%20Backus-Naur%20form.htm" rel="nofollow">this</a> C BNF grammar. I have the following questions:</p>
  
  <ol>
  <li>Is correct which it's <code>&lt;declarator&gt;</code> job to parse this syntax: <code>id(int a, int b)</code> (in <code>&lt;direct-declarator&gt;</code>) and so on to arrays in parameters of a function prototype/definition, etc;</li>
  <li>In <code>&lt;function-definition&gt;</code>, why is <code>&lt;declarator&gt;</code> followed by a <code>{&lt;declaration&gt;}*</code> ?
  from what I understood, it could make valid a type name or storage class followed by a function header like <code>id(int a, int b) int</code>. But I'm sure it isn't valid in C. What am I missing?</li>
  </ol>