Hi, what do you think about dsl version using map?
Nice Idea was proposed here 
http://www.reddit.com/r/Clojure/comments/1djbio/growing_a_lanugage_with_clojure_and_instaparse/c9qwv4d

On Tuesday, April 9, 2013 12:41:38 PM UTC+3, puzzler wrote:
>
> On Tue, Apr 9, 2013 at 1:33 AM, Tassilo Horn <ts...@gnu.org 
> <javascript:>>wrote:
>
>> Nice, but providing the grammar as a plain string looks somewhat
>> unnatural to me.  Why not something like this (parser being a macro)?
>>
>> (def as-and-bs
>>   (parser
>>     S  = AB* .
>>     AB = A B .
>>     A  = "a" + .
>>     B  = "b" + .))
>>
>> I.e., symbols denote non-terminals, strings denote terminals, and the
>> dot indicates the end of a rule.
>>
>> Bye,
>> Tassilo
>>
>
> I played around with that, but even if you suppress evaluation by using a 
> macro, Clojure's reader makes strong assumptions about certain symbols.  
> For example, it is standard in EBNF notation for {} to mean zero-or-more.  
> But if you include {A B C} in your grammar using the macro approach, 
> Clojure's reader will throw an error because it treats {} as a map and 
> expects an even number of forms to follow.  That was the main reason, but 
> it also makes the notation much more sensitive to whitespace (for example, 
> AB * versus AB*).  Gradually, those little issues start making it look less 
> and less like traditional notation.  There's something really nice about 
> just being able to copy and paste a grammar off of a website and have it 
> just work.
>
> I understand where you're coming from, though.  It definitely is part of 
> the Clojure culture to avoid string representations for many kinds of data 
> (e.g., SQL queries).  We do accept it for regular expressions, and for 
> things like #inst "2011-12-31T19:00:00.000-05:00", though, and that's the 
> kind of feel I was going for.  Would it be more psychologically palatable 
> to type:
> #insta/parser "S = 'a' 'b'"
> rather than
> (insta/parser "S = 'a' 'b'")
> ?
>
> What do you think would be gained by making it a macro?  From my 
> perspective, a macro is essentially just a string that is being processed 
> by the Clojure reader (and thus subject to its constraints).  If the 
> grammar were expressed in the way you propose, is it any easier to build up 
> a grammar programmatically?  Is it any easier to compose grammars?  If 
> anything, I think it might be harder.
>
> Thanks for the comments,
>
> Mark
>

-- 
-- 
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.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to