В соответствии с грамматикой, первая строка может быть <Func Proto>
, если она заканчивается точкой с запятой:
<Func Proto> ::= <Func ID> '(' <Types> ')' ';'
| <Func ID> '(' <Params> ')' ';'
| <Func ID> '(' ')' ';'
Для синтаксического анализа объявления функции это произведение из указанной грамматики должно соответствоватьчасть между круглыми скобками:
<Param> ::= const <Type> ID
| <Type> ID
void
была в порядке для <Type>
, но ID
, которого требует грамматика, просто отсутствует.
Но грамматика также содержит эту подсказку:
! Note: This is an ad hoc version of the language. If there are any flaws,
! please visit the contact page and tell me.
, поэтому к ней, вероятно, не следует относиться слишком серьезно.