Where do I get grammars :P
ShalokShalom opened this issue ยท 7 comments
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 โ๏ธ
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.
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
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 +).
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. ๐
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.
- E.g. for Haskell, we use the
happy
parser generator which does not have lists built-in but you have to code them yourself as in https://haskell-happy.readthedocs.io/en/latest/using.html#parsing-sequences. - For the C-family (C, C++) we use
bison
which also only supports BNF and not EBNF: https://www.gnu.org/software/bison/manual/html_node/Rules-Syntax.html
There are feature requests, though, that ask for an extension of the LBNF formalism, e.g. for ?
:
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
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/