C # грамматика в BNF или EBNF Генератор парсера для F # - PullRequest
4 голосов
/ 12 сентября 2011

Я ищу грамматику BNF для C # v4, которую я могу передать в fsyacc, или если я не могу найти генератор синтаксического анализа на основе EBNF, который может выводить F #.

РЕДАКТИРОВАТЬ: Я не собираюсь писать анализатор для C #, но экспериментальный анализатор для очень похожей грамматики, и, поскольку между двумя грамматиками существует огромное буквальное совпадение, я считаю, что легче начать с грамматики C # и просто изменить биты, которые отклоняются.Однако единственная грамматика для C # v4, которую я нашел, - это EBNF

. Альтернативным ответом будет преобразование из EBNF в BNF

.

Ответы [ 3 ]

1 голос
/ 09 декабря 2011

Расширяя мой предыдущий комментарий - я не думаю, что есть какая-либо основательная грамматика для C #, которую можно было бы использовать напрямую. Есть несколько примеров, но они, вероятно, не будут охватывать все новые функции (например, LINQ) или не будут очень хорошо протестированы.

Лучший вариант, который я могу придумать, - это использовать парсер из компилятора C # в Mono. Это написано на C #, с открытым исходным кодом, включает в себя все последние функции (и также довольно солидно). Для получения дополнительной информации см. Mono C # compiler . Вы должны быть в состоянии скомпилировать это и использовать это из F # (или изменить его, чтобы сделать его более дружественным к F #).

1 голос
/ 10 января 2013

Я нашел несколько грамматик здесь ; кажется, они включают до C # 4.0.

1 голос
/ 16 сентября 2011

Согласно Википедии , Coco / R - это генератор синтаксических анализаторов на основе EBNF. И согласно их домашней странице , есть порт Fo Coco / R (хотя последнее обновление 2007-07-23, так что я ожидаю каких-то серьезных изменений). Если вы закончите проверять это, мне будет интересен ваш опыт.

Я нашел грамматику BNF для C # v2: http://www.devincook.com/GOLDParser/grammars/index.htm

...