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