On May 30, 2014, at 4:50 PM, Daniel Brady <dabr...@umail.iu.edu> wrote:

> Oh, nice! I didn't realize that, thanks.
> 
> After playing around with it, I realized it doesn't do everything I would 
> like it to do, however. For a couple of the macros that I provide in my #lang 
> language, I would like to provide some syntax rules such that Check Syntax 
> throws an error when a program breaks those rules. Is this possible?

Use syntax-parse. 


> For instance, say I have a macro in my language which provides a new form, 
> but a form that is only intended to be used with other macros and functions 
> provided by my language. That is to say, I would like to raise a syntax error 
> if the programmer tries to use procedures/macros not defined in my language 
> module inside a use of my macro, like this:
> 
> (restricted-begin  ; A form of begin whose body I would like to restrict to 
> expressions in my language.
>   (one-of-my-features '(1 2 3))
>   (car '(1 2 3)))  ; <-- since I do not define car in my language module, 
> disallow its use.  
> 
> Basically, I have some special forms whose bodies I would like to restrict to 
> containing only features of my language, and not of standard Racket, in 
> effect preventing the intermingling of my language features and those of 
> Racket.
> 
> I just realized that if this is at all possible, I would run into an issue on 
> the first line of that macro's body, where I use quote. Is it also possible, 
> given the possibility of the above, for me to allow certain Racket features 
> while restricting others, instead of just placing a blanket syntax rejection 
> of all things Racket?


Totally. You can add, subtract, override the meaning of Racket language 
features once you go the #lang route. 

The world is all yours 

-- Matthias



> 
> 
> On Fri, May 30, 2014 at 11:39 AM, Matthias Felleisen <matth...@ccs.neu.edu> 
> wrote:
> 
> On May 29, 2014, at 11:49 PM, Daniel Brady <dabr...@umail.iu.edu> wrote:
> 
> > Hi everyone,
> >
> > I just finished creating a small #lang language, and now I would like to 
> > start creating some static debugging tools for it. The first thing on my 
> > list is a basic syntax checker. I consulted the DrRacket documentation on 
> > creating tools and plugins, but honestly it went a bit over my head: this 
> > is my first foray into extending anything, and I don't really know where to 
> > start.
> >
> > So my question(s) boils down to this: how can I provide syntax checking for 
> > my little #lang language? My little language really just provides some new 
> > syntactic forms, and is built directly on top of Racket, so there's nothing 
> > fancy I need to do with this: I just need to provide some new rules to the 
> > built-in syntax checker so that it also recognizes my extensions. How can I 
> > do this?
> 
> 
> If that's all there is, DrRacket provides Check Syntax automatically for your 
> language. Part of the goal of the project is to specialize the IDE to new 
> languages automatically. (No we're not there yet in general.)
> 
> -- Matthias
> 
> 
> 
> 
> -- 
> SEE YOU SPACE COWBOY...


____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to