Re: Implementing a Scribble-like preprocessor for Clojure
For what it's worth, I've finished a draft implementation using reader API utilities from Clarity https://github.com/one-more-minute/clarity. The result can be seen on github https://github.com/Manticore/clojure-scribble, the example of syntax in testshttps://github.com/Manticore/clojure-scribble/blob/master/test/scribble/core_test.clj. This is my first ever Clojure project, so I'll gladly accept any comments (or push requests). I'm planning to push it on clojars when it's cleaned up, and the uncertainties in syntax are dealt with. -- -- 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.
Re: Implementing a Scribble-like preprocessor for Clojure
Hi bogdan, Sweet! On Saturday, September 7, 2013 5:38:03 PM UTC+2, Bogdan Opanchuk wrote: For what it's worth, I've finished a draft implementation using reader API utilities from Clarity https://github.com/one-more-minute/clarity. The result can be seen on githubhttps://github.com/Manticore/clojure-scribble, the example of syntax in testshttps://github.com/Manticore/clojure-scribble/blob/master/test/scribble/core_test.clj. This is my first ever Clojure project, so I'll gladly accept any comments (or push requests). I'm planning to push it on clojars when it's cleaned up, and the uncertainties in syntax are dealt with. -- -- 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.
Re: Implementing a Scribble-like preprocessor for Clojure
Hi Bogdan, That's a cool Idea ! I'm wondering if you wouldn't be better off with something like Instaparse https://github.com/Engelberg/instaparse. Cheers, Jeremys. On Friday, August 23, 2013 3:37:53 PM UTC+2, Bogdan Opanchuk wrote: Hi all, For those who are not familiar with Scribble, it is basically a preprocessor for Racket (a dialect of Lisp) which makes its syntax more concise when working with lots of text, effectively turning it into a template engine (see http://docs.racket-lang.org/scribble/reader.html for details). TLDR: a very small subset of Scribble would transform @func{text text @other-func{more text} final words.} to (func text text (other-func more text) final words.) I would like to implement it in Clojure as a learning project (say, the simple subset of it shown above, for a start). My question is, what should I use? Let's say for simplicity that the entry point is some function (load-file-scribble filename.scribble) that returns Clojure code same as (load-file filename.clj) does. As far as my general understanding of programming languages goes, I have to: 1. extend the tokenizer to support additional syntax; 2. extend the parser (?) to convert the new tokens into corresponding Clojure tokens; 3. feed the result to the Clojure parser (although I might be completely wrong). There is the ``tools.reader`` module, which seems more or less suitable, but I cannot find the hooks that would allow me to extend its functionality in the required way. Is it the right tool, or should I look some other way? -- -- 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.
Re: Implementing a Scribble-like preprocessor for Clojure
Hi Jeremy, Thank you for your suggestion, it's worth a try. It seems though that it might not be suitable for my more distant plans for this project, because: 1) The full Scribble syntax is not context-free: multiline text mode has to remember the starting indentation (although I'm not sure if this feature is necessary); 2) It would be very convenient to be able to write this pseudo-Scribble code with the full use of REPL, autocompletion etc (for example, in LightTable), and it requires a custom reader, and not just a separate parser. On Saturday, August 24, 2013 7:18:40 PM UTC+10, JeremyS wrote: Hi Bogdan, That's a cool Idea ! I'm wondering if you wouldn't be better off with something like Instaparse https://github.com/Engelberg/instaparse. Cheers, Jeremys. On Friday, August 23, 2013 3:37:53 PM UTC+2, Bogdan Opanchuk wrote: Hi all, For those who are not familiar with Scribble, it is basically a preprocessor for Racket (a dialect of Lisp) which makes its syntax more concise when working with lots of text, effectively turning it into a template engine (see http://docs.racket-lang.org/scribble/reader.htmlfor details). TLDR: a very small subset of Scribble would transform @func{text text @other-func{more text} final words.} to (func text text (other-func more text) final words.) I would like to implement it in Clojure as a learning project (say, the simple subset of it shown above, for a start). My question is, what should I use? Let's say for simplicity that the entry point is some function (load-file-scribble filename.scribble) that returns Clojure code same as (load-file filename.clj) does. As far as my general understanding of programming languages goes, I have to: 1. extend the tokenizer to support additional syntax; 2. extend the parser (?) to convert the new tokens into corresponding Clojure tokens; 3. feed the result to the Clojure parser (although I might be completely wrong). There is the ``tools.reader`` module, which seems more or less suitable, but I cannot find the hooks that would allow me to extend its functionality in the required way. Is it the right tool, or should I look some other way? -- -- 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.
Implementing a Scribble-like preprocessor for Clojure
Hi all, For those who are not familiar with Scribble, it is basically a preprocessor for Racket (a dialect of Lisp) which makes its syntax more concise when working with lots of text, effectively turning it into a template engine (see http://docs.racket-lang.org/scribble/reader.html for details). TLDR: a very small subset of Scribble would transform @func{text text @other-func{more text} final words.} to (func text text (other-func more text) final words.) I would like to implement it in Clojure as a learning project (say, the simple subset of it shown above, for a start). My question is, what should I use? Let's say for simplicity that the entry point is some function (load-file-scribble filename.scribble) that returns Clojure code same as (load-file filename.clj) does. As far as my general understanding of programming languages goes, I have to: 1. extend the tokenizer to support additional syntax; 2. extend the parser (?) to convert the new tokens into corresponding Clojure tokens; 3. feed the result to the Clojure parser (although I might be completely wrong). There is the ``tools.reader`` module, which seems more or less suitable, but I cannot find the hooks that would allow me to extend its functionality in the required way. Is it the right tool, or should I look some other way? -- -- 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.