Я изучаю контекстно-свободные грамматики для курса компиляторов, который я посещаю. Я пытался определить грамматику для сигнатур функций. Примеры:
int a
int b, int c
Object a, Object d
...
Самое близкое, что я мог достичь к чему-то подобному, было:
Params -> Params, Param
| Param
| lambda
Param -> paramType paramName
Но это не то, чего я хочу. Эта грамматика допускает неправильную строку как , int a
. Я был здесь некоторое время, и я не могу придумать лучшего способа добраться до правильной грамматики.
Любая помощь будет оценена по достоинству.