Here are some thoughts from having done similar things:

1. Don't invent a syntax, as we already have lisp.  If the parens
intimidate people, just inserting the outermost set for each line will get
you a long way.  e.g.

(clojure.edn/read-string (str "(" line ")"))

2. Make a multimethod to dispatch the first element of the list.  (Not
eval, or apply, since security is a concern.)  If you want nested
expressions, a simple evaluator does essentially this, except evaluates
arguments first.

With a little finess, you could instead allow only public symbols from a
specific namespace in the first position, and call those functions in a
secure way.

3. JLine is the command-line editing library that's like readline for Java.




On Tue, Feb 16, 2016 at 8:06 AM, Nick Vargish <nickvarg...@gmail.com> wrote:

> My current project requires a command-line interpreter with limited
> functionality... For various non-technical reasons we can't expose bash to
> our users.
>
> Our plans call for writing a console shell that will accept some limited
> command set, and Clojure would be the natural implementation language,
> since much of our functionality has been implemented in a Clojure library.
> We even have a command-line tool that exposes a lot of the functionality to
> shell scripts, but the parsing/function routing is quite primitive...
>
> Any suggestions? Has anyone done work on a CLI implemented in Clojure?
>
> Thanks,
>
> Nick
>
>
>
> --
> 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.

Reply via email to