[plt-dev] parser macros
+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