[plt-dev] parser macros

From: Jay McCarthy (jay.mccarthy at gmail.com)
Date: Wed Sep 16 09:51:32 EDT 2009

+1

On Wed, Sep 16, 2009 at 7:05 AM, Dave Herman <dherman at ccs.neu.edu> wrote:
> Floating an idea:
>
> I'd love to see an extension to the `parser' form that allows programmers to
> define grammar macros. Imagine if you could do something like this:
>
> (parser
>  (start Expr)
>  (end EOF)
>  (tokens Tokens)
>  (macros
>   (define-macro (List x)
>     [(LPAREN (ListTail x))
>      $2])
>   (define-macro (ListTail x)
>     [(RPAREN) '()]
>     [(x COMMA (ListTail x))
>      (cons $1 $3)]))
>  (grammar
>   (Expr
>     [(Expr (List Expr))
>      (make-app-expr $1 $2)]
>     [(LAMBDA ID (List ID))
>      (make-lambda-expr $2 $3)]
>     ;; etc...
>     )))
>
> and imagine the macros would be expanded away as part of the expansion of
> the `parser' form. This would give you the ability to define abstractions in
> the grammar language in a manner that results in code duplication rather
> than sharing. Obviously, it's a bit of a blunt instrument, but in an LALR
> framework this kind of duplication is sometimes necessary to avoid
> conflicts.
>
> Perhaps better yet, it'd be cool if these macros could be defined
> independently, like match-expanders:
>
>    (define-grammar-expander (ListTail x)
>      [(RPAREN) '()]
>      [(x COMMA (ListTail x))
>       (cons $1 $3)])
>
> Thoughts?
>
> BTW, who maintains the parser-tools these days?
>
> Dave
>
> _________________________________________________
>  For list-related administrative tasks:
>  http://list.cs.brown.edu/mailman/listinfo/plt-dev
>



-- 
Jay McCarthy <jay at cs.byu.edu>
Assistant Professor / Brigham Young University
http://teammccarthy.org/jay

"The glory of God is Intelligence" - D&C 93


Posted on the dev mailing list.