Грамматика BNF, имитирующая объявления методов Java

Как написать BNF грамматику, имитирующую объявления методов Java?

Вот что у меня есть:

<call> ::= <return-type> <method-identifier>(<parameter-list>);
<return-type> ::= void | <type>
<type> ::= byte | short | int | long | float | double | boolean | char
<parameter-list> ::= <parameter> | <parameter>,<parameter-list>
<parameter> ::= <type> <parameter-identifier>

Правильно ли я понял? Это правильная форма для BNF? Это ни за что не будет реализовано, я просто пытаюсь обдумать идею.


person user1239843    schedule 29.02.2012    source источник
comment
Идея правильная, но кое-чего не хватает: список параметров тоже может быть пустым, а тип тоже может быть чем-то другим, кроме примитивного типа или void.   -  person Jesper    schedule 29.02.2012
comment
Разве вы не говорите здесь об объявлениях методов?   -  person yatima2975    schedule 29.02.2012


Ответы (1)


Я думаю, вы идете в правильном направлении. Однако type не разрешает имена классов (в Java вы можете передавать объекты в качестве параметров). И вам не хватает блока throws, и он не разрешает массивы.

Почему бы вам не сравнить с фактической грамматикой BNF для Java? ?

person Lukasz    schedule 29.02.2012