In my experience, instaparse + defun is a good choice.

https://github.com/Engelberg/instaparse
https://github.com/killme2008/defun/

2017-08-15 22:02 GMT+08:00 Gary Trakhman <gary.trakh...@gmail.com>:

> I enjoyed working with clj-antlr recently, it's a wrapper over a java
> library, but gives you a fast feedback loop with an interpreter instead of
> generated java code.  The 'clojurey' part is that the output is a nested
> sequence, from there it's really effective to use tree zippers and
> core.match to transform the parse-tree into the data structure you need.
>
> Take a look at:
> https://github.com/clojure/core.match
> https://github.com/aphyr/clj-antlr
> https://www.ibm.com/developerworks/library/j-treevisit/
> https://github.com/akhudek/zip-visit
>
> On Tue, Aug 15, 2017 at 9:56 AM Laurens Van Houtven <_...@lvh.cc> wrote:
>
>> Hi,
>>
>>
>> Instaparse is a great parser generator, especially if you already have a
>> BNF.
>>
>> Sent from my iPhone
>>
>> On Aug 15, 2017, at 08:44, sventrax...@gmail.com wrote:
>>
>> Thanks for your input. LFE is quite an unexpected "thing".
>>
>> What I'm trying to do, is just a "lunch time project"; something that I
>> can target without corporate constrains just as a learning exercise.
>> Furthermore I can test the Clojure version against my old working Java
>> version.
>>
>> As I was saying, while experimenting with Instaparse, I'm having the
>> feeling it is not the correct Clojure tool for this type of development
>>
>>
>>
>> On Tuesday, August 15, 2017 at 2:17:50 PM UTC+1, adrians wrote:
>>>
>>> If you need the features of Erlang but would like that in a Lisp (not
>>> Common Lisp, though) environment, have you taken a look at LFE (Lisp
>>> Flavored Erlang)? I'm not trying to discourage you from looking at Clojure,
>>> but if you need/depend on some of the features of Erlang, LFE might be a
>>> closer fit.
>>>
>>> http://lfe.io
>>>
>>> On Tuesday, August 15, 2017 at 8:11:53 AM UTC-4, svent...@gmail.com
>>> wrote:
>>>>
>>>>
>>>> Hi
>>>>
>>>> Months ago I read a review that praised Clojure's clean approach and
>>>> use of JVM that is almost always available in my deployments.
>>>>
>>>> My background: started with 370 assembly ( so I'm not young!!!) and
>>>> during the last four years I've been using Erlang for network applications.
>>>> For my type of work the functional approach, concurrency and bit handling
>>>> of Erlang are life savings. Nonetheless I feel "the call" of Clojure. As an
>>>> exercise I would like to re implement something I did years ago in Java,
>>>> i.e. a sort of parser. What I have on my hands is a DSL like this
>>>>
>>>>             HeaderRule=hr-ftp
>>>>                Term=100
>>>>                   name="ftp"
>>>>                   From=1
>>>>                      networkPort="21"
>>>>                      Protocol=1
>>>>                         Tcp=1
>>>>                            up
>>>>                         up
>>>>                      up
>>>>                   Then=1
>>>>                      ProtocolInspection=1
>>>>                         ftpRuleSet="frs-ftp"
>>>>                         up
>>>>                      ServiceDataFlowId=1
>>>>                         payload=99
>>>>                         up
>>>>                      up
>>>>                   up
>>>>                up
>>>>             HeaderRule=hr-http
>>>>                   ......
>>>>
>>>> For my old Java implementation I used state machines to build an
>>>> internal representation, sort of an AST, that would be used to analyze pcap
>>>> files. In my Clojure challenge, I would like to have a different approach.
>>>> Googling around I've found many options: Parsley, Instaparse, cljcc and
>>>> more. Some mentioned on www.clojure-toolbox.com seem to be more
>>>> abandonware.
>>>> At the moment I'm focusing on Instaparse. However, maybe due to the
>>>> previous implementation, I feel that this is not the best approach with
>>>> Clojure. Certainly my rookie state is leading me the wrong way.
>>>>
>>>> Comments and feedback will be greatly appreciated
>>>>
>>>> Fred
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> --
>> 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/d/optout.
>>
>> --
>> 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/d/optout.
>>
> --
> 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/d/optout.
>



-- 
庄晓丹
Email:        killme2...@gmail.com
Site:           http://fnil.net

不学习,毋宁死

-- 
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/d/optout.

Reply via email to