<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Thanks for that Danny :)<BR>I'll try to do that.<br><BR>Although I think that readtables documentations aren't understandable.<BR>I mean, searching on Google I can find 3 or 4 questions about them and no one seems to understand them.<BR><br><div>&gt; From: dyoo@hashcollision.org<br>&gt; Date: Mon, 29 Apr 2013 12:44:54 -0600<br>&gt; Subject: Re: [racket] I just can't understand readtables<br>&gt; To: tomcoiro@hotmail.com<br>&gt; CC: users@racket-lang.org<br>&gt; <br>&gt; Hi Tomas,<br>&gt; <br>&gt; For this particular case, you might not even need to use readtables.<br>&gt; Since you're already dealing with making your own Clojure-style<br>&gt; language, you might be able to override the literal datum macro,<br>&gt; #%datum, to rewrite uses of byte strings to regexps.<br>&gt; <br>&gt; Here's what this might look like:<br>&gt; <br>&gt; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br>&gt; #lang racket/base<br>&gt; <br>&gt; (module my-custom-language racket/base<br>&gt;   ;; Example of overriding #%datum:<br>&gt;   (provide (except-out (all-from-out racket/base)<br>&gt;                        #%datum)<br>&gt;            (rename-out (#%my-datum #%datum)))<br>&gt; <br>&gt;   (require (for-syntax racket/base))<br>&gt; <br>&gt;   ;; Here is our substitute definition for processing raw datums in<br>&gt;   ;; our language:<br>&gt;   (define-syntax (#%my-datum stx)<br>&gt;     (syntax-case stx ()<br>&gt;       [(_ . bstring)<br>&gt;        (bytes? (syntax-e #'bstring))<br>&gt;        ;; If we see a raw byte string, translate it to a use of<br>&gt;        ;; a regexp.<br>&gt;        (with-syntax ([an-str (bytes-&gt;string/utf-8 (syntax-e #'bstring))])<br>&gt;          (syntax/loc stx<br>&gt;            (regexp an-str)))]<br>&gt;       [(_ . other)<br>&gt;        ;; Otherwise, delegate to the original definition of #%datum:<br>&gt;        (syntax/loc stx<br>&gt;          (#%datum . other))])))<br>&gt; <br>&gt; <br>&gt; ;; Here is an example use of that custom language:<br>&gt; (module test (submod ".." my-custom-language)<br>&gt;   (define r #"hello world, this should be a regexp")<br>&gt;   (printf "~v\n" r)<br>&gt;   (regexp? r))<br>&gt; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br></div>                                               </div></body>
</html>