You may also be able to write an instaparse grammar for EBNF (a
grammar of grammars)—Loner contains a parser-combinator-style EBNF
parser, so it's certainly do-able.

Then you could use that parser to parse your grammar—presumably the
parsers yield trees on input-strings.

D. Ben Knoble

On Sun, Jul 18, 2021 at 8:06 AM Jakob Schöttl <jscho...@gmail.com> wrote:
>
> Thanks Ben, you understood me correctly.
>
> Your tool loner parses a dialect of EBNF and gives me the parse tree of that 
> EBNF grammar file in a scala representation, as I see at your demo page. That 
> is exactly what I need – however, instaparse has a slightly different dialect 
> of EBNF.
>
> I was hoping that the instaparse parser internally holds the EBNF 
> representation but I don't know how I can see or check that. Maybe your guess 
> is right and it throws away the parse tree... I probably have to look into 
> the source code of instaparse... Or I transform our EBNF to match your 
> specification and use loner...
>
> ben.k...@gmail.com schrieb am Sonntag, 18. Juli 2021 um 02:50:48 UTC+2:
>>
>> I haven't touched Clojure in a year or two, and I'm not familiar with 
>> instaparse.
>>
>> I can say, from a terminology stand-point, that a grammar (such as one in 
>> EBNF) can produce a parser, which then produces parse-trees of input 
>> strings. So, perhaps you mean that you want parse-trees of strings in the 
>> grammar of EBNF? It took me a few reads to come to this conclusion—the 
>> expression "get a parse tree of the EBNF" threw me off.
>>
>> It seems likely that instaparse is producing a parser, and may throw away 
>> the underlying graph (parse-tree) of the grammar.
>>
>> Regardless, I have a Scala tool that parses EBNF. I'm not sure about 
>> interop, but it's all JVM, right? https://github.com/benknoble/loner
>>
>> On Saturday, July 17, 2021 at 3:21:36 PM UTC-4 jsch...@gmail.com wrote:
>>>
>>>
>>> Hi all,
>>>
>>> I was hoping that I can call
>>>
>>> (instaparse.core/parser "my ::= 'ebnf' | 'grammar' ")
>>>
>>> to get a parse tree of the EBNF. I'd like to convert the EBNF to a 
>>> tree-sitter grammar.js.
>>>
>>> But when I evaluate the above expression, I only see a the original EBNF 
>>> input, reformatted, and without comments:
>>>
>>> => my = "ebnf" | "grammar"
>>>
>>> Is there a way to get hands on the underlying structure, i.e. the parse 
>>> tree?
>>>
>>> Best, Jakob
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to a topic in the Google 
> Groups "Clojure" group.
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/clojure/_n6YjUMCfNg/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to 
> clojure+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/clojure/603726f0-ed7a-4de3-b7f2-83a8effe23b6n%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/CALnO6CChoxZOCEHO_rE2jVeONQrjLCtACzjw4q87uQ-zXqa0iA%40mail.gmail.com.

Reply via email to