BNFC / bnfc

BNF Converter
http://bnfc.digitalgrammars.com/
578 stars 163 forks source link

Where do I get grammars :P #435

Closed ShalokShalom closed 1 year ago

ShalokShalom commented 1 year ago

Hi there 👍🏻

I look for a FSharp ANTLR implementation. Your project seems to be promising, considering that it outouts ANTLR, and I also read that you have an OCaml backend.

I probably miss something, because I know about a treesitter and an ANTLR grammar repository. And there seems to be no such thing for LBNF, BNF, ABNF or EBNF.

I understand that you only parse from LBNF, but J haven't found a grammar collection of existing languages at all.

Do you know, where I can get a F# xBNF grammar, or alternatively one from OCaml?

Thanks a lot ☀️

andreasabel commented 1 year ago

Do you know, where I can get a F# xBNF grammar, or alternatively one from OCaml?

Sorry, I don't know anything off the top of my head, but I leave this issue open for a while so folks can chime in. If you find something, please let us know.

ShalokShalom commented 1 year ago

Well, I found a couple, and all of them were about a different implementation. How compatible is BNFC with BNF, EBNF and others? How much is the labeling required?

That list is huge and out of date since 2015: https://slebok.github.io/zoo/index.html And here is a list from EBNF files, that got translated from treesitter. https://github.com/mingodad/plgh

andreasabel commented 1 year ago

In labelled BNF (BNFC), each rule needs a distinct label. It does not cover all of EBNF, which also has * for lists etc. (and ? and +).

ShalokShalom commented 1 year ago

Aha. So I wont be able to convert EBNF files properly. But partly? Your website doesnt make this clear. Lots of BNF files are out there, and you dont seem to know about a lot of grammars for LBNF.

Does it seem to make sense, that full compatibility could raise the usefulness of this tool since we could produce a lot of grammars?

In terms of backends and overall maintenance seems this project to be one of the leading figures. 😄

andreasabel commented 1 year ago

BNFC's concept is to be a common front-end to YACC-like parser generators in different languages. So we are just serving the common feature set.

There are feature requests, though, that ask for an extension of the LBNF formalism, e.g. for ?:

ShalokShalom commented 1 year ago

Ok? I didnt know you are supporting Yacc either?

I am looking for a Yacc translator.

Can you help me to translate the FSharp grammar?

https://github.com/dotnet/fsharp/blob/main/src/Compiler/pars.fsy https://github.com/dotnet/fsharp/blob/main/src/Compiler/pppars.fsy

andreasabel commented 1 year ago

Can you help me to translate the FSharp grammar?

FSharp uses layout, so this does not fit into pure BNF or LBNF: https://fsharpforfunandprofit.com/posts/fsharp-syntax/